

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon SES 電子郵件接收概念和使用案例
<a name="receiving-email-concepts"></a>

當您使用 Amazon SES 做為電子郵件接收者時，可告知服務如何處理您的郵件。執行電子郵件接收規則的主要方法透過利用*根據收件人執行控制*以指定要根據收件人採取的一組動作，讓您精細控制電子郵件接收。另一種方法是 IP 地址篩選條件，提供廣泛層級的*根據 IP 執行控制*以根據來源 IP 地址或地址範圍來封鎖或允許郵件。

本節將說明這兩種方法并提供 Amazon SES 如何處理所接收電子郵件的概觀，以及協助您在設定規則和篩選條件時考慮如何接收、篩選和處理電子郵件的使用案例。

**Topics**
+ [使用接收規則來執行基於收件人的控制](#receiving-email-concepts-rules)
+ [使用 IP 地址篩選條件的 IP 型控制](#receiving-email-concepts-ip-filters)
+ [接收電子郵件的程序](#receiving-email-process)
+ [Amazon SES 電子郵件接收的使用案例和限制](#receiving-email-consider-use-case)
+ [電子郵件接收身分驗證和惡意軟體掃描](#receiving-email-auth-and-scan)

## 使用接收規則來執行基於收件人的控制
<a name="receiving-email-concepts-rules"></a>

控制內送郵件的主要方式，是透過排序的動作清單針對您的任何已驗證身分 (包括網域、子網域或電子郵件地址)，來指定如何處理郵件；請注意，電子郵件地址必須屬於您的其中一個已驗證網域身分。這些動作在*規則集*內建立的*接收規則*中定義和排序

另一個選項即為新增收件人條件，指定只有傳入郵件的收件人與條件中指定的收件人身分相符時才採取動作。例如，如果您擁有 *example.com*，即可指定寄給 *user@example.com* 的郵件應退信，而其他所有寄至 *example.com* 及其子網域的郵件皆應遞送。

否則，如果您未新增任何收件人條件，則動作將會套用至所有項目 (屬於您已驗證網域的所有電子郵件地址、網域和子網域)。下列動作可套用至您的收件規則：
+ **新增標頭動作** - 將標頭加入至收到的電子郵件。此動作通常會與其他動作搭配使用。
+ **回傳退信回應動作—**將退信回應傳回給寄件者以封鎖該電子郵件，且可選擇是否透過 Amazon SNS 通知您。
+ **叫用 AWS Lambda 函數動作 -** 透過 Lambda 函數呼叫程式碼，並選擇性地透過 Amazon SNS 通知您。
+ **傳送至 S3 儲存貯體動作** - 傳送電子郵件至 Amazon S3 儲存貯體，且可選擇是否透過 Amazon SNS 通知您。
+ **發佈至 Amazon SNS 主題動作** - 將完整的電子郵件發佈至 Amazon SNS 主題。
**注意**  
SNS 動作會在 Amazon SNS 通知中包含電子郵件內容的完整副本。在此提及的其他 Amazon SNS 通知選項僅會通知您電子郵件遞送情形；內含電子郵件相關資訊而非電子郵件內容本身。
+ **停止規則集動作** - 終止評估接收規則集，且可選擇是否透過 Amazon SNS 通知您。
+ **與 Amazon WorkMail 動作整合** - 透過 Amazon WorkMail 處理郵件。您通常不會直接使用此動作，因為 Amazon WorkMail 會自動完成設定。

接收規則會分組編入*規則集*。如果您沒有現有的規則集，則必須先建立規則集，才能開始建立接收規則。您可以為 AWS 您的帳戶定義多個規則集，但隨時只有一個規則集處於作用中狀態。下方圖表顯示接收規則、規則集、以及兩者間的相關動作。

![傳入電子郵件概觀](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/images/inbound_overview_v2.png)


## 使用 IP 地址篩選條件的 IP 型控制
<a name="receiving-email-concepts-ip-filters"></a>

您可以設定 **IP 地址篩選條件**，以控制您的郵件流程。IP 地址篩選條件為選用功能，可讓您指定是否接受或封鎖來自一組 IP 地址或一系列 IP 地址的郵件。您的 IP 地址篩選條件可包含*封鎖清單*(來自您想要封鎖的傳入郵件 IP 地址)，以及*允許清單*(來自您想要每次接收的郵件 IP 位址)。

IP 地址篩選條件有助於封鎖垃圾郵件。Amazon SES 會維護一份自己的 IP 地址封鎖清單，列出已知會傳送垃圾郵件的 IP 地址，其中包括 Spamhaus 所列的地址。但是您也可以選擇接收來自這些 IP 地址的郵件，方法是將這些地址新增至您的允許清單中。由於沒有日誌顯示哪些 IP 地址遭到封鎖，因此遭封鎖的寄件者必須通知您。這也是一個很好的機會，可以幫助寄件者判定其 IP 地址是否在封鎖清單中，例如[Spamhaus](https://www.spamhaus.org/)，並建議他們請求取消列出。這樣做對您和寄件者都有好處，因為您不必為他們維護 IP 地址篩選條件，而且他們將提高自己的電子郵件可交付性。

**注意**  
與 IP 地址篩選條件組態無關，除非列在允許清單中，否則 Amazon EC2 會封鎖連接埠 25 (郵件傳送) 上的輸出流量。如需詳細資訊，請參閱這篇 [AWS re:Post 文章](https://repost.aws/knowledge-center/ec2-port-25-throttle)。
如果您只想要自已知 IP 地址的有限清單中接收郵件，請設定包含 `0.0.0.0/0` 的封鎖清單，然後再設定一組允許清單，其中包含您信任的 IP 地址。根據預設，此組態將封鎖所有 IP 地址，而且只允許接收明確指定的 IP 地址傳送的郵件。

## 接收電子郵件的程序
<a name="receiving-email-process"></a>

當 Amazon SES 收到一封寄至您網域的電子郵件時，會發生下列事件：

1. Amazon SES 首先查看寄件者的 IP 地址。除非發生以下情況，否則 Amazon SES 都會允許郵件通過此階段：
   + IP 地址在您的封鎖清單中。
   + IP 地址在 Amazon SES 封鎖清單中，但不在您的允許清單中。

1. Amazon SES 檢查您已啟用的規則集，判斷是否有任何接收規則包含收件人條件。
   + 如果有收件人條件且符合任何內送電子郵件的收件人，Amazon SES 會接受該電子郵件。如果沒有任何相符的收件人條件，Amazon SES 會封鎖該電子郵件。
   + 如果接收規則不包含收件人條件，Amazon SES 會接受郵件 - 所有規則的動作都會套用至您擁有的所有已驗證身分。

1. Amazon SES 會對電子郵件進行身分驗證，並且會掃描其內容來偵測垃圾郵件和惡意軟體：
   + 將電子郵件傳送至 Amazon SES 之遠端主機的 IP 地址，會由系統根據 SMTP 交易期間使用的 MAIL FROM 網域下指定的 SPF 政策來檢查。
   + 檢查電子郵件標題部分中存在的 DKIM 簽名。
   + 如果啟用了內容掃描，則會掃描電子郵件內容來偵測垃圾郵件和惡意軟體。
   + 系統會在接收規則評估期間將電子郵件身分驗證和內容掃描結果提供給您。

   如需詳細資訊，請參閱[電子郵件身分驗證和惡意軟體偵測](#receiving-email-auth-and-scan)。

1. 對於 Amazon SES 接受的電子郵件，作用中規則集中的所有接收規則都會依您定義的順序套用；而在每個接收規則中，這些動作會依您定義的順序執行。

## Amazon SES 電子郵件接收的使用案例和限制
<a name="receiving-email-consider-use-case"></a>

本節將討論 Amazon SES 電子郵件接收的一些一般考量與使用案例。以問答格式呈現，這些是常見問題和事實，有助於確定使用 Amazon SES 代表您擁有的一個或多個已驗證網域接收和管理電子郵件是否有益。

### 區域可用性
<a name="receiving-email-consider-use-case-regions"></a>

**Amazon SES 是否於您所在的區域支援電子郵件接收功能？**

Amazon SES 僅支援在特定 AWS 區域中接收電子郵件。如需支援電子郵件接收的區域完整清單，請參閱 AWS 一般參考中的 [Amazon Simple Email Service 端點和配額](https://docs.aws.amazon.com/general/latest/gr/ses.html)。

### POP 或 IMAP 型電子郵件用戶端
<a name="receiving-email-consider-use-case-clients"></a>

**Microsoft Outlook 可以用來接收內送電子郵件嗎？**

Amazon SES 不含用來接收內送電子郵件的 POP 或 IMAP 伺服器。這表示您無法使用 Microsoft Outlook 這類電子郵件用戶端來接收傳入電子郵件。若您需要一套解決方案，可透過電子郵件用戶端同時傳送及接收電子郵件，可考慮使用 [Amazon WorkMail](https://aws.amazon.com/workmail)。

### 使用其他 AWS 服務
<a name="receiving-email-consider-use-case-permissions"></a>

**您是否已設定適當的許可？**

如果您希望郵件遞送至 S3 儲存貯體、發佈至非您擁有的 Amazon SNS 主題、觸發 Lambda 函數、使用客戶受管金鑰，您需要提供存取這些資源的許可給 Amazon SES。若要授予 Amazon SES 存取權，您可以從主控台或 AWS 這些服務APIs 建立資源政策。如需詳細資訊，請參閱 [給予許可](receiving-email-permissions.md)。

### 電子郵件內容
<a name="receiving-email-consider-use-case-content"></a>

**您希望 Amazon SES 以何種方式傳遞您的電子郵件內容？**

Amazon SES 能以兩種方式提供電子郵件內容：可以將電子郵件存放在您指定的 S3 儲存貯體中，也可以傳送包含電子郵件副本的 Amazon SNS 通知給您。Amazon SES 會遞送原始、未修改的電子郵件給您，通常是以多用途網際網路郵件延伸 (MIME) 格式顯示。如需 MIME 格式的詳細資訊，請參閱 [RFC 2045](https://tools.ietf.org/html/rfc2045)。

**您收到的電子郵件會有多大？**

如果您將電子郵件存放到 S3 儲存貯體，電子郵件大小上限 (包含標題) 為 40 MB。當您透過 Amazon SNS 通知來接收電子郵件時，電子郵件大小的上限 (包含標頭) 為 150 KB。

**您想要以什麼方式觸發郵件處理？**

在您的郵件傳遞後，您會希望使用自己的程式碼來處理郵件。例如，您的應用程式可能會將基數 64 編碼的電子郵件轉換為可顯示格式，並透過電子郵件客戶端來提供給最終使用者使用。有幾種方法可開始處理程序：
+ 如果您的電子郵件已遞送至 Amazon S3，您的應用程式可接聽由 S3 動作產生的 Amazon SNS 通知、從通知擷取電子郵件的訊息 ID，接著使用訊息 ID 從 Amazon S3 擷取電子郵件。

  或者，您可以編寫 Lambda 函數來將電子郵件處理程序整合到您的接收規則中。在此情況下，您的接收規則應先將電子郵件寫入 Amazon S3，然後觸發 Lambda 函數。可透過同步或非同步執行來從接收規則中執行 Lambda 動作，取決於 Lambda 函數是否需要傳回可影響其他動作執行方式的結果。我們建議您使用非同步執行，除非您的使用案例必須使用同步執行。如需 的詳細資訊 AWS Lambda，請參閱 [AWS Lambda 開發人員指南](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)。
+ 如果您的電子郵件是使用 SNS 動作來透過 Amazon SES 遞送，則應用程式可接聽 Amazon SNS 通知，然後從通知中擷取電子郵件訊息。

**您想要加密電子郵件嗎？**

Amazon SES 與 AWS Key Management Service (AWS KMS) 整合，選擇性地加密寫入 S3 儲存貯體的郵件。將郵件寫入 Amazon S3 前，Amazon SES 會先使用用戶端加密方法來加密您的郵件。這表示從 Amazon S3 擷取郵件後，您必須自行解密內容。[適用於 Java 的 AWS SDK](https://aws.amazon.com/sdk-for-java/) 和 [適用於 Ruby 的 AWS SDK](https://aws.amazon.com/sdk-for-ruby/) 提供可為您處理解密的用戶端。只有在您選擇將電子郵件遞送至 S3 儲存貯體時，Amazon SES 才能為您加密電子郵件。

### 不想收到的郵件
<a name="receiving-email-consider-use-case-unwanted"></a>

**您想要在電子郵件接收程序中的哪個階段封鎖不想收到的郵件？**

寄件者嘗試傳送電子郵件給收件人時，寄件者的電子郵件伺服器會以一系列的命令與收件人伺服器交流。此系列稱為 *SMTP 對話*。

在電子郵件接收程序中，您有兩個時間點可以封鎖傳入的電子郵件：SMTP 對話期間，以及 SMTP 對話之後。您可使用 *IP 地址篩選條件*在 SMTP 對話期間封鎖訊息，並透過*接收規則*在 SMTP 對話之後封鎖電子郵件。

您可使用 IP 地址篩選條件以封鎖來自特定 IP 地址的電子郵件。使用 IP 地址篩選條件來封鎖不想收到的郵件的優點在於，我們不會向您收取在 SMTP 對話期間遭封鎖訊息的費用。使用 IP 地址篩選條件的缺點在於，這些條件會直接封鎖來自您指定之 IP 地址的電子郵件，不會實際分析訊息內容。如需 IP 地址篩選條件的詳細資訊，請參閱 [建立 IP 地址篩選條件主控台演練](receiving-email-ip-filtering-console-walkthrough.md)。

您可使用接收規則，依據接收訊息的地址 (或網域、子網域)，將退信通知傳送給電子郵件寄件者。使用接收規則的優點在於，您可針對傳入訊息執行額外分析，之後再傳送退信通知給寄件者。例如，您只能在訊息未通過 DKIM 身分驗證或識別為垃圾郵件時 AWS Lambda ，使用 傳送退信通知。使用接收規則的缺點在於，由於 SMTP 對話之後才會處理接收規則，因此我們將針對您接收的每則訊息收費。若您使用 Lambda 來分析傳入訊息的內容，可能也須支付費用。如需接收規則的詳細資訊，請參閱[建立接收規則主控台演練](receiving-email-receipt-rules-console-walkthrough.md)。如需使用 Lambda 來分析傳入電子郵件的詳細資訊，請參閱 [Lambda 函數範例](receiving-email-action-lambda-example-functions.md)。

### 郵件資料流
<a name="receiving-email-consider-use-case-streams"></a>

**您想要如何分配郵件資料流？**

您的網域很可能收到不同級別的郵件。例如，一些網域的郵件 (例如寄到 *user@example.com* 的電子郵件) 可能針對個人收件匣而設計。其他郵件 (例如寄到 *unsubscribe@example.com*) 則最好可導向自動化系統。您可以使用接收規則來分配傳入郵件，才可以不同方式來處理郵件。如需如何設定接收規則的資訊，請參閱 [建立接收規則](receiving-email-receipt-rules-console-walkthrough.md)。

## 電子郵件接收身分驗證和惡意軟體掃描
<a name="receiving-email-auth-and-scan"></a>

Amazon SES 會對收到的每封電子郵件進行身分驗證，並且會隨意掃描電子郵件內容來偵測垃圾郵件和惡意軟體。SES 不會根據電子郵件身分驗證或內容掃描的結果對接收的電子郵件執行任何動作；但是，這些操作的結果將以屬性的形式提供給您，讓您可以在 SES 接收規則動作 (例如 [Amazon SNS 通知](receiving-email-notifications-examples.md#receiving-email-notifications-examples-sns-action)) 中使用，或作為[傳送到 Amazon S3](receiving-email-action-s3.md)訊息中的標題來使用。

**電子郵件身分驗證**

Amazon SES 會使用 SPF、DKIM 和 DMARC 來對收到的每封電子郵件進行身分驗證。每個身分驗證機制的結果都會在 Amazon SNS 通知中提供，這些通知是 SES 在現用[接收規則集](receiving-email-action-sns.md)中評估規則所分派的一部分。此外，如果您選擇在 Amazon S3 中接收電子郵件的副本，則電子郵件身分驗證的結果會在 SES 加入電子郵件標題部分的 `Authentication-Results` 標題中擷取。

```
Authentication-Results: example.com;
spf=pass (spfCheck: 10.0.0.1 is permitted by domain of example.com) client-ip=10.0.0.1; envelope-from=example@example.com; helo=10.0.0.1;
dkim=pass header.i=example.com;
dkim=permerror header.i=some-example.com;
dmarc=pass header.from=example@example.com;
```

`Authentication-Results` 標題會在 [RFC 8601](https://datatracker.ietf.org/doc/html/rfc8601) 中描述

**掃描電子郵件內容來偵測垃圾郵件和惡意軟體**

Amazon SES 會根據 *ScanEnabled* (API) 的值或與電子郵件相符的收件人規則之*垃圾郵件和病毒掃描* (主控台) 屬性來掃描收到的電子郵件內容以偵測惡意軟體。根據預設，SES 會掃描收到的電子郵件內容來偵測惡意軟體。若要停用與特定接收規則相符的已接收電子郵件的內容掃描，您需要將接收規則的 *ScanEnabled* 旗標設定為 false (若[使用 API](https://docs.aws.amazon.com/ses/latest/APIReference/API_ReceiptRule.html))，或清除*垃圾郵件和病毒掃描*核取方塊 (若[使用主控台](receiving-email-receipt-rules-console-walkthrough.md#receipt-rules-create-rule-settings))。如果啟用了與電子郵件相符的接收規則，則系統會在 SES 分派的 Amazon SNS 通知中會提供內容掃描結果，作為評估現用[接收規則集](receiving-email-action-sns.md)中的規則的一部分。此外，如果您選擇在 Amazon S3 中接收電子郵件的副本，則內容掃描的結果會在 SES 加入電子郵件標題部分的 `X-SES-Spam-Verdict` 和 `X-SES-Virus-Verdict` 標題中擷取。

```
X-SES-Spam-Verdict: PASS
X-SES-Virus-Verdict: FAIL
```

以上標題的可能值會列於：
+ [垃圾郵件](receiving-email-notifications-contents.md#receiving-email-notifications-contents-spamverdict-object)
+ [病毒](receiving-email-notifications-contents.md#receiving-email-notifications-contents-virusverdict-object)

現在您已大致了解電子郵件接收的概念、運作方式，以及使用案例，可透過前往 [設定電子郵件接收](receiving-email-setting-up.md) 來開始使用。