

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

# 使用 Amazon SES 接收電子郵件
<a name="receiving-email"></a>

除了使用 Amazon SES 來管理電子郵件傳送之外，您還可以設定 SES 代表一個或多個網域接收電子郵件。作為電子郵件接收者，SES 會處理基礎電子郵件接收操作，例如與其他電子郵件伺服器通訊、掃描垃圾郵件和病毒、封鎖來自不信任來源 ([Spamhaus](https://www.spamhaus.org/) 或 SES 中封鎖清單上的地址) 的郵件，以及為您網域中的收件人接收電子郵件。

已接收電子郵件的處理程度取決於您指定的自訂指示。這些指示有兩種形式：
+ **接收規則** *(根據接收人執行控制)* 提供對內送電子郵件的最佳控制度。接收規則可執行進階處理，例如將內送郵件遞送至 Amazon S3 儲存貯體、發佈到 Amazon SNS 主題、傳送至 Amazon WorkMail，或是在傳送至特定電子郵件地址時自動傳送退信訊息等。
+ **IP 地址篩選條件** *(根據 IP 執行控制)* 提供廣泛的控制層級，並且易於設定。這些篩選條件可讓您明確封鎖或允許來自特定 IP 地址或 IP 地址範圍的所有郵件。

若要開始了解電子郵件接收、設定並使用*接收規則*或*IP 地址篩選條件*實作，請首先通讀 [電子郵件接收概念與使用案例](receiving-email-concepts.md) 以了解它的運作方式及其不同的使用方式。接下來，[設定電子郵件接收](receiving-email-setting-up.md) 會引導您完成電子郵件接收設定先決條件。然後，[電子郵件接收主控台演練](receiving-email-walkthroughs.md) 將引導您完成用於設定*接收規則*和 *IP 地址篩選條件*的精靈。

**注意**  
只有在您的帳戶位於 SES 支援電子郵件接收 AWS 區域 的 中時，才能使用電子郵件接收。中[電子郵件接收端點](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_inbound_endpoints)表格 AWS 一般參考 列出 SES AWS 區域 支援電子郵件接收的所有 。

**Topics**
+ [Amazon SES 電子郵件接收概念和使用案例](receiving-email-concepts.md)
+ [設定 Amazon SES 電子郵件接收](receiving-email-setting-up.md)
+ [Amazon SES 電子郵件接收主控台演練](receiving-email-walkthroughs.md)
+ [檢視 Amazon SES 電子郵件接收指標](receiving-email-metrics.md)

# 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) 來開始使用。

# 設定 Amazon SES 電子郵件接收
<a name="receiving-email-setting-up"></a>

本節說明您開始設定 Amazon SES 來接收郵件的必要條件。您必須已經閱讀 [電子郵件接收概念與使用案例](receiving-email-concepts.md) 以瞭解 Amazon SES 如何運作的概念，以及考慮您希望如何接收、篩選和處理電子郵件。

在可以透過建立*規則集*、*接收規則*，以及 *IP 地址篩選條件*以設定電子郵件接收之前，您必須先完成以下設定必要條件：
+ 透過發佈 DNS 記錄來證明您擁有該記錄，向 Amazon SES 驗證您的網域。
+ 透過發佈 MX 記錄，允許 Amazon SES 接收您網域的電子郵件。
+ 授予 Amazon SES 存取其他 AWS 資源的許可，以執行接收規則動作。

建立並驗證網域身分時，您會將記錄發佈至您的 DNS 設定以完成驗證程序，但僅此而言並不足以使用電子郵件接收。特定對於電子郵件接收，也需要發佈 MX 記錄，以指定自訂寄件人網域。此記錄會用於您網域的 DNS 設定，以允許 SES 接收您網域的電子郵件。必須提供許可，因為您在接收規則中選擇的動作將無法運作，除非 Amazon SES 有權使用這些動作所需的相應 AWS 服務。

**Topics**
+ [驗證您用於 Amazon SES 電子郵件接收的網域](receiving-email-verification.md)
+ [發佈用於 Amazon SES 電子郵件接收的 MX 記錄](receiving-email-mx-record.md)
+ [給予 Amazon SES 接收電子郵件的許可](receiving-email-permissions.md)

# 驗證您用於 Amazon SES 電子郵件接收的網域
<a name="receiving-email-verification"></a>

任何用於透過 Amazon SES 傳送或接收電子郵件的網域，您都必須先證明您擁有該網域。驗證程序包含如何使用 SES 起始網域驗證，然後根據您使用的驗證方法將 DNS 記錄 (CNAME 或 TXT) 發佈到您的 DNS 供應商。

透過主控台，您可以使用 [Easy DKIM](send-email-authentication-dkim-easy.md) 或者[使用自有 DKIM (BYODKIM)](send-email-authentication-dkim-bring-your-own.md) 來驗證您的網域，並輕鬆複製其 DNS 記錄以發佈到您的 DNS 提供商，若要瞭解如何執行此操作，請參閱[建立網域身分](creating-identities.md#verify-domain-procedure)。您也可以選擇使用 SES [https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainDkim.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainDkim.html) 或者 [https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html) API。

您可以查看 SES 主控台中的 [Verified identities](view-verified-domains.md) (已驗證身分) 或使用 SES [https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityVerificationAttributes.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityVerificationAttributes.html) 或 [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailIdentity.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailIdentity.html) API 來確認您的電子郵件地址或網域已經過驗證。

# 發佈用於 Amazon SES 電子郵件接收的 MX 記錄
<a name="receiving-email-mx-record"></a>

*郵件交換程式*記錄 (*MX 記錄*) 是一種組態，可指定哪些郵件伺服器可接受傳送到您的網域的電子郵件。

若要讓 Amazon SES 管理您的傳入電子郵件，需將 MX 記錄新增到您的網域 DNS 組態。您建立的 MX 記錄是指接收您使用 Amazon SES 之 AWS 區域電子郵件的端點。例如，美國西部 (奧勒岡) 區域的端點為 *inbound-smtp.us-west-2.amazonaws.com*。如需完整端點清單，請參閱 [SES 區域和端點](regions.md#region-endpoints)。

**注意**  
Amazon SES 接收電子郵件的端點並非 IMAP 或 POP3 電子郵件伺服器。您無法使用這些 URL 做為電子郵件用戶端的傳入郵件伺服器。若您需要一套解決方案，可透過電子郵件用戶端同時傳送及接收電子郵件，可考慮使用 [Amazon WorkMail](https://aws.amazon.com/workmail)。

下列程序包含建立 MX 記錄的一般步驟。*建立 MX 記錄的特定程序取決於您的 DNS 或託管供應商。*請參閱供應商的文件，以取得新增 MX 記錄至網域的 DNS 組態之相關資訊。

**注意**  


**將 MX 記錄新增至網域的 DNS 組態**

1. （先決條件） 若要完成這些程序，您需要修改網域的 DNS 記錄。如果您無法存取 DNS 記錄，或者您不放心這麼做，請聯絡您的系統管理員尋求協助。

1. 登入您的 DNS 提供者的管理主控台。

1. 建立新的 MX 記錄。

1. 在 MX 記錄 **Name** (名稱) 的部分，請輸入您的網域。例如，若您希望 Amazon SES 管理傳送至 *example.com* 網域的電子郵件，請輸入下列內容：

   ```
   example.com.
   ```
**注意**  
根據您的 DNS 提供者：1) 可能不需要`.`網域延伸結尾的結尾。2) **名稱**欄位可稱為**主機**、**網域**或**郵件網域**。

1. 在 **Type (類型)** 的部分，選擇 **MX**。
**注意**  
部分 DNS 提供者會將 **Type (類型)** 欄位稱為 **Record Type (記錄類型)** 或類似名稱。

1. 對於 **Value (值)**，請輸入下列內容：

   ```
   10 inbound-smtp.region.amazonaws.com
   ```

   在上述範例中，將 *region* 取代為您搭配 Amazon SES 使用之 AWS 區域接收電子郵件的端點地址。例如，如果您使用的是美國東部 (維吉尼亞北部) 區域，請以 `us-east-1` 取代 *region*。如需電子郵件接收端點的完整清單，請參閱 [SES 區域和端點](regions.md#region-endpoints)。
**注意**  
部分 DNS 供應商的管理主控台的記錄 **Value (值)** 和記錄 **Priority (優先順序)** 分屬不同欄位。如果您的 DNS 供應商是這種情況，**Priority (優先順序)**值請輸入 `10`，然後為 **Value (值)** 輸入傳入郵件端點 URL。

**重要**  
建立 MX 記錄的特定程序視您的 DNS 或託管提供者而有所不同。如需將 MX 記錄新增至網域 DNS 組態的相關資訊，請參閱供應商的文件或聯絡供應商。

## 針對各種供應商建立 MX 記錄的指示
<a name="receiving-email-mx-record-links"></a>

要建立您網域的 MX 記錄，程序取決於您使用的 DNS 供應商。本區段包含幾個常用 DNS 供應商的文件連結。這不是完整的供應商清單。若您的供應商未列於下方，也許仍可用於 Amazon SES。此清單並非為任何公司的產品背書或推薦其服務。


| DNS/託管供應商名稱 | 文件連結 | 
| --- | --- | 
|  Amazon Route 53  |  [使用 Amazon Route 53 主控台來建立記錄](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html)  | 
|  GoDaddy  |  [新增 MX 記錄](https://www.godaddy.com/help/add-an-mx-record-19234) (外部連結)  | 
|  DreamHost  |  [如何變更我的 MX 記錄？](https://help.dreamhost.com/hc/en-us/articles/215035328)(外部連結)  | 
|  Cloudflare  |  [設定電子郵件記錄](https://developers.cloudflare.com/dns/manage-dns-records/how-to/email-records/) (外部連結)  | 
|  HostGator  |  [變更 MX 記錄 - Windows](https://www.hostgator.com/help/article/changing-mx-records-windows) (外部連結)  | 
|  Namecheap  |  [如何設定電子郵件服務所需的 MX 記錄？](https://www.namecheap.com/support/knowledgebase/article.aspx/322/2237/how-can-i-set-up-mx-records-required-for-mail-service)(外部連結)  | 
|  Names.co.uk  |  [變更您網域的 DNS 設定](https://www.names.co.uk/support/domains/1156-changing_your_domains_dns_settings.html) (外部連結)  | 
|  Wix  |  [在您的 Wix 帳戶中新增或更新 MX 記錄](https://support.wix.com/en/article/adding-or-updating-mx-records-in-your-wix-account) (外部連結)  | 

# 給予 Amazon SES 接收電子郵件的許可
<a name="receiving-email-permissions"></a>

當您在 SES 中收到電子郵件時，您可以執行的一些任務需要特殊許可，例如傳送電子郵件到 Amazon Simple Storage Service (Amazon S3) 儲存貯體或呼叫 AWS Lambda 函數。本節說明多個常見使用案例的範例政策。

**Topics**
+ [設定交付至 S3 儲存貯體動作的 IAM 角色許可](#receiving-email-permissions-s3-iam-role)
+ [授予 SES 寫入 S3 儲存貯體的許可](#receiving-email-permissions-s3)
+ [授予 SES 許可以使用您的 AWS KMS 金鑰](#receiving-email-permissions-kms)
+ [授予 SES 叫用 AWS Lambda 函數的許可](#receiving-email-permissions-lambda)
+ [准許 SES 發佈至屬於不同 AWS 帳戶的 Amazon SNS 主題](#receiving-email-permissions-sns)

## 設定交付至 S3 儲存貯體動作的 IAM 角色許可
<a name="receiving-email-permissions-s3-iam-role"></a>

下列要點適用於此 IAM 角色：
+ 它只能用於 [傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)。
+ 如果想要寫入存在於[電子郵件接收](regions.md#region-receive-email)無法使用 SES 的區域中的 S3 儲存貯體，則必須使用它。

如果想要寫入 S3 儲存貯體，您可以為 IAM 角色提供存取 相關資源的許可[傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)。您也需要授予 SES 許可，以擔任該角色透過 [IAM 信任政策執行動作，如下一節所述](#receiving-email-permissions-s3-iam-role-trust)。

此許可政策必須貼到 IAM 角色的內嵌政策編輯器中，請參閱[傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)並遵循 **IAM 角色**項目中提供的步驟。（以下範例也包含選用許可，以防您想要使用 SNS 主題通知，或在 S3 動作中使用客戶受管金鑰。)

**注意**  
您可以選擇只允許 S3 儲存貯體政策中的 SES 服務，在不指定 IAM 角色的情況下設定 S3 動作，如下所示[授予 SES 寫入 S3 儲存貯體的許可](#receiving-email-permissions-s3)。這也適用於跨帳戶案例。
如果您為 S3 動作指定 IAM 角色，SES 會擔任 'PutObject' 操作的該角色，而此處指定的 IAM 許可將足以供相同的帳戶使用。不過，對於跨帳戶使用，您需要一個額外的儲存貯體政策，允許 IAM 角色在儲存貯體中「PutObject」。這是由授予跨帳戶儲存貯體許可的儲存貯體擁有者所指定，如[授予跨帳戶儲存貯體許可的儲存貯體擁有者](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)中所述。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3Access",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        },
        {
            "Sid": "SNSAccess",
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "arn:aws:sns:us-east-1:111122223333:my-topic"
        },
        {
            "Sid": "KMSAccess",
            "Effect": "Allow",
            "Action": "kms:GenerateDataKey*",
            "Resource": "arn:aws:kms:us-east-1::111122223333:key/key-id"
        }
    ]
}
```

------

在上述範例政策中進行下列變更：
+ 以您要寫入的 S3 儲存貯體名稱取代 *amzn-s3-demo-bucket*。
+ 將*區域*取代 AWS 區域 為您建立接收規則的 。
+ 將 *111122223333* 取代為您的 AWS 帳戶 ID。
+ 將 *my-topic* 取代為您要發佈通知的 SNS 主題名稱。
+ 以 KMS *金鑰的 ID 取代 key-id*。

### S3 動作 IAM 角色的信任政策
<a name="receiving-email-permissions-s3-iam-role-trust"></a>

下列信任政策應新增至 IAM 角色的*信任關係*中，以允許 SES 擔任該角色。

**注意**  
只有在您未使用[傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)工作流程的 IAM 角色項目中提供的步驟從 SES 主控台建立 **IAM** 角色時，才需要手動新增此信任政策。*當您從主控台建立 IAM 角色時，系統會自動產生此信任政策，並套用到角色，讓您不需要此步驟。*

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSESAssume",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                  "AWS:SourceAccount":"111122223333",
                  "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
                }
            }
        }
    ]
}
```

------

在上述範例政策中進行下列變更：
+ 將*區域*取代 AWS 區域 為您建立接收規則的 。
+ 將 *111122223333* 取代為您的 AWS 帳戶 ID。
+ 將 *rule\$1set\$1name* 替換為含有接收規則且該接收規則中含有傳送至 Amazon S3 儲存貯體動作的規則集名稱。
+ 將 *receipt\$1rule\$1name* 替換為含有傳送至 Amazon S3 儲存貯體動作的接收規則名稱。

## 授予 SES 寫入 S3 儲存貯體的許可
<a name="receiving-email-permissions-s3"></a>

當您將下列政策套用到 S3 儲存貯體時，只要該儲存貯體存在於可使用 SES [電子郵件接收](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_inbound_endpoints)的區域，它就會授予 SES 許可，如果您想要寫入*電子郵件接收*區域以外的儲存貯體，請參閱 [設定交付至 S3 儲存貯體動作的 IAM 角色許可](#receiving-email-permissions-s3-iam-role)。如需建立將傳入電子郵件傳輸到 Amazon S3 的接收規則相關資訊，請參閱「[傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)」。

如需 S3 儲存貯體原則的詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[使用儲存貯體政策和使用者政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AllowSESPuts",
      "Effect":"Allow",
      "Principal":{
        "Service":"ses.amazonaws.com"
      },
      "Action":"s3:PutObject",
      "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
        }
      }
    }
  ]
}
```

------

在上述範例政策中進行下列變更：
+ 以您要寫入的 S3 儲存貯體名稱取代 *amzn-s3-demo-bucket*。
+ 將*區域*取代為您建立接收規則 AWS 的區域。
+ 將 *111122223333* 取代為您的 AWS 帳戶 ID。
+ 將 *rule\$1set\$1name* 替換為含有接收規則且該接收規則中含有傳送至 Amazon S3 儲存貯體動作的規則集名稱。
+ 將 *receipt\$1rule\$1name* 替換為含有傳送至 Amazon S3 儲存貯體動作的接收規則名稱。

## 授予 SES 許可以使用您的 AWS KMS 金鑰
<a name="receiving-email-permissions-kms"></a>

為了讓 SES 加密您的電子郵件，它必須具有許可，才能使用您在設定接收規則時指定的 AWS KMS 金鑰。您可以使用帳戶中的預設 KMS 金鑰 (**aws/ses**)，或使用您建立的客戶受管金鑰。如果您使用預設 KMS 金鑰，則不需要執行任何其他步驟來授予 SES 使用它的許可。如果您使用客戶受管金鑰，您需要透過將陳述式新增至金鑰的政策來授予 SES 使用它的許可。

使用下列政策陳述式做為金鑰政策，允許 SES 在您的網域上收到電子郵件時使用您的客戶受管金鑰。

```
{
  "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", 
  "Effect": "Allow",
  "Principal": {
    "Service":"ses.amazonaws.com"
  },
  "Action": [
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
        }
      }
}
```

在上述範例政策中進行下列變更：
+ 將*區域*取代為您建立接收規則 AWS 的區域。
+ 將 *111122223333* 取代為您的 AWS 帳戶 ID。
+ 將 *rule\$1set\$1name* 替換為含有已與電子郵件接收相關聯之接收規則的規則集名稱。
+ 將 *receipt\$1rule\$1name* 替換為已與電子郵件接收相關聯的接收規則名稱。

如果您使用 AWS KMS 將加密的訊息傳送至已啟用伺服器端加密的 S3 儲存貯體，則需要新增政策動作 `"kms:Decrypt"`。使用上述範例，將此動作新增到您的政策中，將顯示如下：

```
{
  "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", 
  "Effect": "Allow",
  "Principal": {
    "Service":"ses.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
        }
      }
}
```

如需將政策連接至 AWS KMS 金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[在 中使用金鑰政策 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

## 授予 SES 叫用 AWS Lambda 函數的許可
<a name="receiving-email-permissions-lambda"></a>

若要讓 SES 呼叫 AWS Lambda 函數，您可以在 SES 主控台中建立接收規則時選擇函數。當您這麼做時，SES 會自動將必要的許可新增至函數。

或者也可使用 AWS Lambda API 中的 `AddPermission` 作業來將政策連接至函數。下列 API 呼叫`AddPermission`提供 SES 叫用 Lambda 函數的許可。如需將政策連接至 Lambda 函數的詳細資訊，請參閱 *AWS Lambda 開發人員指南*中的 [AWS Lambda 許可](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)。

```
{
  "Action": "lambda:InvokeFunction",
  "Principal": "ses.amazonaws.com",
  "SourceAccount": "111122223333",
  "SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name",
  "StatementId": "GiveSESPermissionToInvokeFunction"
}
```

在上述範例政策中進行下列變更：
+ 將*區域*取代為您建立接收規則 AWS 的區域。
+ 將 *111122223333* 取代為您的 AWS 帳戶 ID。
+ 將 *rule\$1set\$1name* 取代為包含在其中建立 Lambda 函數之接收規則的規則集名稱。
+ 將 *receipt\$1rule\$1name* 取代為包含 Lambda 函數之接收規則的名稱。

## 准許 SES 發佈至屬於不同 AWS 帳戶的 Amazon SNS 主題
<a name="receiving-email-permissions-sns"></a>

若要將通知發佈至個別 AWS 帳戶中的主題，您必須將政策連接至 Amazon SNS 主題。SNS 主題所在區域必須與網域和接收規則集所在區域相同。

下列政策提供 SES 許可，以發佈至不同 AWS 帳戶中的 Amazon SNS 主題。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "SNS:Publish",
            "Resource": "arn:aws:sns:us-east-1:111122223333:topic_name",
            "Condition": {
                "StringEquals": {
                "AWS:SourceAccount": "444455556666",
                "AWS:SourceArn": "arn:aws:ses:us-east-1:777788889999:receipt-rule-set/rule_set_name:receipt-rule/rule_name"
                }
            }
        }
    ]
}
```

------

在上述範例政策中進行下列變更：
+ 將 *topic\$1region* 取代為建立 Amazon SNS 主題 AWS 區域 的 。
+ 將 *sns\$1topic\$1account\$1id* 取代為擁有 Amazon SNS 主題的 AWS 帳戶 ID。
+ 將 *topic\$1name* 取代為您想要發佈通知的 Amazon SNS 主題名稱。
+ 將 *aws\$1account\$1id* 取代為設為接收電子郵件的 AWS 帳戶 ID。
+ 將 *receipt\$1region* 取代 AWS 區域 為您建立接收規則的 。
+ 將 *rule\$1set\$1name* 取代為包含您建立發佈至 Amazon SNS 主題動作的接收規則之規則集名稱。
+ 將 *receipt\$1rule\$1name* 取代為包含發佈至 Amazon SNS 主題動作的接收規則名稱。

如果您的 Amazon SNS 主題使用 AWS KMS 進行伺服器端加密，您必須將許可新增至 AWS KMS 金鑰政策。您可以將下列政策連接至 AWS KMS 金鑰政策來新增許可：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSESToUseKMSKey",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Amazon SES 電子郵件接收主控台演練
<a name="receiving-email-walkthroughs"></a>

本節說明電子郵件接收主控台精靈，這些精靈用於設定*接收規則*和 *IP 地址篩選條件*來管理您的電子郵件接收。在使用主控台精靈之前，請務必先閱讀 [電子郵件接收概念與使用案例](receiving-email-concepts.md) 以了解電子郵件接收運作方式的概念和 [設定電子郵件接收](receiving-email-setting-up.md)，以確定您已完成設定先決條件。

**Topics**
+ [建立接收規則主控台演練](receiving-email-receipt-rules-console-walkthrough.md)
+ [建立 IP 地址篩選條件主控台演練](receiving-email-ip-filtering-console-walkthrough.md)

# 建立接收規則主控台演練
<a name="receiving-email-receipt-rules-console-walkthrough"></a>

本節將引導您使用 Amazon SES 主控台建立和定義接收規則。了解接收規則如何運作的關鍵點是：
+ *規則集*包含一組有序的接收規則；*接收規則*包含一組有序的動作。
+ 接收規則告訴 Amazon SES 如何透過執行您指定的有序動作清單來處理內送郵件。
+ 此動作的排序清單可以選擇性地根據第一個相符的收件人條件進行；如果未指定，則動作會套用至屬於已驗證網域的所有身分。
+ 接收規則在稱為規則集的容器中建立和定義 - 雖然您可以建立多個規則集，但一次只能有一個作用中的規則集。
+ 作用中規則集內的接收規則會依您指定的順序執行。
+ 在您建立接收規則之前，您必須先建立*規則集*來包含它們。

作為選擇，您可使用 `CreateReceiptRuleSet` API 來建立空白接收規則集，如 [Amazon Simple Email Service API 參考資料](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRuleSet.html)所述。接著，可使用 Amazon SES 主控台或 `CreateReceiptRule` API 來將接收規則新增至規則集中。

繼續進行演練之前，請確定您已符合使用收件人型電子郵件接收所需的所有必要先決條件。

## 先決條件
<a name="receipt-rules-prerequisites"></a>

在使用接收規則設定收件人型電子郵件控制前，必須滿足以下先決條件：

1. 確保您的端點位於 中 AWS 區域 ，其中 Amazon SES 支援電子郵件接收。中的[電子郵件接收端點](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_inbound_endpoints)表格 AWS 一般參考 列出 SES AWS 區域 支援電子郵件接收的所有 的電子郵件接收端點。

1. 您首先需要在 Amazon SES 中[建立並驗證網域身分](verify-addresses-and-domains.md)。

1. 接下來，您需要指定哪些郵件服務器可以透過[發佈 MX 記錄](receiving-email-mx-record.md)至您網域的 DNS 設定來接受您網域的郵件。(MX 記錄應參考 Amazon SES 端點，該端點會接收您使用 Amazon SES 之 AWS 區域的郵件。)

1. 最後，您需要[授予 Amazon SES 存取其他資源的許可](receiving-email-permissions.md)，才能執行接收規則動作。 AWS 

## 建立規則集與接收規則
<a name="receipt-rules-create-rule-settings"></a>

此演練首先是建立規則集以包含您的規則，然後進入**建立規則**精靈來建立、定義及排序您的接收規則。精靈包含四個畫面，可定義規則設定、新增收件人條件、新增動作，以及檢閱所有設定。

**使用主控台建立規則集和接收規則**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)：// 開啟 Amazon SES 主控台。

1. 在導覽窗格中的 **Configuration** (組態) 下，選擇 **Email Receiving** (電子郵件接收)。
**注意**  
如果您的帳戶位於 SES 不支援電子郵件接收的 AWS 區域 ，則 SES 主控台左側導覽窗格中將不會顯示*電子郵件接收*。請參閱 [先決條件](#receipt-rules-prerequisites) 中列出的第一個項目。

1. 在 **Email receiving** (電子郵件接收) 窗格的 **Receipt rule sets** (接收規則集) 標籤下，選擇 **Create rule set** (建立規則集)。

1. 輸入規則集的唯一名稱，然後選擇 **Create rule set (建立規則集)**。

1. 選擇 **Create rule (建立規則)**，這將打開 **Create rule (建立規則)** 精靈。

1. 在 **Define rule settings (定義規則設定)**頁面的 **Receipt rule details (接收規則詳細資訊)** 下，輸入 **Rule name (規則名稱)**。

1. 對於 **Status (狀態)**，只清除 **Enabled (已啟用)** 核取方塊 (如果您不希望 Amazon SES 在建立後執行此規則)；否則，請保持選取此選項。

1. (選用) 在 **Security and protection options (安全性與保護選項)** 下，對於 **Transport Layer Security (TLS)**，如果您希望 Amazon SES 拒絕未透過安全連線傳送的內送訊息，則選擇 **Required (必要)**。

1. (選用) 對於 **Spam and virus scanning (垃圾郵件和病毒掃描)**，若希望 Amazon SES 掃描內送訊息是否含有垃圾郵件與病毒，請選取 **Enabled (已啟用)**。

1. 選擇 **Next (下一步)** 以繼續下一個步驟。

1. (選用) 在 **Add recipient conditions (新增收件人條件)** 頁面上，使用下列程序來指定一或多個收件人條件。每個接收規則最多可以有 100 個收件人條件。

   1. 在 **Recipient conditions (收件人條件)** 下，選擇 **Add new recipient condition (新增收件人條件)** 以指定您想要套用接收規則的接收電子郵件地址或網域。下表使用地址 *user@example.com* 來說明如何指定收件人條件。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/receiving-email-receipt-rules-console-walkthrough.html)
**重要**  
如果多個 Amazon SES 帳戶在一般網域上接收電子郵件 (例如，如果同一間公司中的多個團隊各有不同的 Amazon SES 帳戶)，Amazon SES 會同時為每個帳戶處理所有相符的接收規則。此行為可能導致一個帳戶產生退信，而另一個帳戶接受電子郵件的情況。  
建議您與組織中的其他使用 Amazon SES 的團隊協調，以確保每個帳戶皆使用唯一的接收規則，且這些規則不重疊。在這些情況下，最好將接收規則設定為使用專屬您的群組或團隊的電子郵件或網域。

   1. 針對每位想要新增的收件人條件重複此步驟。完成新增收件人條件後，選擇 **Next (下一步)**。

1. 在 **Add actions (新增動作)** 頁面上，請使用下列步驟來新增一或多個動作至接收規則。

   1. 開啟 **Add new action (新增動作)** 選單，然後選擇下列其中一種動作類型：
      + **[新增標頭](receiving-email-action-add-header.md)** - 此動作會新增自訂標頭至收到的電子郵件。
      + **[傳回退信回應](receiving-email-action-bounce.md)** - 此動作會傳回退信回應給寄件人以拒絕接收到的郵件。
      + **[呼叫 Lambda 函數](receiving-email-action-lambda.md)** - 此動作會透過 AWS Lambda 函數呼叫您的程式碼。
      + **[傳送至 S3 儲存貯體](receiving-email-action-s3.md)** - 此動作會將接收到的郵件存放在 Amazon Simple Storage Service (S3) 儲存貯體中。
      + **[發佈至 Amazon SNS 主題](receiving-email-action-sns.md)** - 此動作會將完整的電子郵件發佈到 Amazon Simple Notification Service (SNS) 主題。
      + **[停止規則集](receiving-email-action-stop.md)** - 此動作會終止接收規則集的評估。
      + **[與 Amazon WorkMail 整合](receiving-email-action-workmail.md)** - 此動作與 Amazon WorkMail 整合。

      如需每個這些動作的詳細資訊，請參閱 [動作選項](receiving-email-action.md)。

   1. 針對每個想要定義的動作重複此步驟。如果您定義了多個動作，則可以使用動作容器中的向上/向下箭頭重新排序它們。選擇 **Next (下一步)** 以前往 **Review (檢閱)** 頁面。

1. 在 **Review (檢閱)** 頁面上，檢閱規則的設定和動作。如果需要進行變更，請選擇 **Edit (編輯)**選項，或者使用頁面左側的導覽區段，直接前往其中包含您要編輯的內容的步驟。您可以使用 **Reorder** (重新排列順序) 欄中的向上/向下箭頭，選擇性地變更 **Review** (檢閱) 頁面的 **Actions** (動作) 資料表中列出之動作的順序。

1. 準備好繼續時，請選擇 **Create rule (建立規則)**。

1. 如需立即強制執行規則集，請在規則集的確認頁面上選擇 **Set as active** (設定為作用中)。

### 建立後的規則修改
<a name="receipt-rules-post-modifications"></a>

建立規則集之後，您可以編輯規則集及其包含的接收規則。不僅可以對其進行編輯，還可以選擇複製規則集或其規則，以便快速建立新規則集。下列清單顯示規則集與接收規則的可用修改：
+ **規則集**在列出時會附帶其名稱、狀態和建立日期。規則集的修改選項包括：
  + **Set as active/inactive (設定為作用中/非作用中)** 切換按鈕將在設置狀態之間切換。
  + **Duplicate (複製)** 按鈕會複製規則集。系統會提示您提供唯一的名稱。
  + **Delete (刪除)** 按鈕將刪除規則集。系統會提示您確認此無法還原的動作。
+ **Receipt rules (接收規則)** 會在列出時附帶其名稱、狀態、安全性和順序。接收規則的修改選項包括：
  + **向上/向下鍵頭**，以重新排序規則集內的規則執行。
  + **Duplicate (複製)** 按鈕會建立所選規則的複本。系統會提示您提供唯一的名稱。
  + **Edit (編輯)** 按鈕會開啟選取的規則，以便編輯其任何參數，例如規則設定、收件人條件和動作。
  + **Delete (刪除)** 按鈕將刪除選取的規則。系統會提示您確認此無法還原的動作。
  + **Create rule (建立規則)** 按鈕可讓您建立新規則並新增至目前規則集。

# 動作選項
<a name="receiving-email-action"></a>

每個用於 Amazon SES 電子郵件接收的接收規則皆包含動作的排序清單。本節說明每個動作類型的特定選項。

動作類型如下：
+ [新增標頭動作](receiving-email-action-add-header.md)
+ [傳回退信回應動作](receiving-email-action-bounce.md)
+ [呼叫 Lambda 函數動作](receiving-email-action-lambda.md)
+ [傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)
+ [發佈至 Amazon SNS 主題動作](receiving-email-action-sns.md)
+ [停止規則集動作](receiving-email-action-stop.md)
+ [與 Amazon WorkMail 整合動作](receiving-email-action-workmail.md)

# 新增標頭動作
<a name="receiving-email-action-add-header"></a>

**Add Header (新增標頭)** 動作會新增自訂標頭至收到的電子郵件。此動作通常只會與另一個動作搭配使用。此動作有下列選項。
+ **Header name (標頭名稱)** - 要新增的標頭名稱。名稱必須介於 1 和 50 個字元間 (包含 50 個字元)，且僅可包含英數字元 (a-z、A-Z、0-9) 以及連字號。
+ **Header value (標頭值)** - 要新增的標頭值。標題值必須小於 2048 個字元，而且不可包含換行字元 (「\$1r」或「\$1n」)。

# 傳回退信回應動作
<a name="receiving-email-action-bounce"></a>

**退信**動作會傳回退信回應給寄件者，以拒收該封電子郵件，且可選擇是否透過 Amazon SNS 通知您。此動作有下列選項。
+ **SMTP Reply Code (SMTP 回應程式碼) – **SMTP 回應程式碼，如 [RFC 5321](https://tools.ietf.org/html/rfc5321) 中所定義。
+ **SMTP Status Code (SMTP 狀態程式碼) - **SMTP 強化狀態程式碼，如 [RFC 3463](https://tools.ietf.org/html/rfc3463) 中所定義。
+ **Message (訊息) - **包含在退信電子郵件中可供閱讀的文字。
+ **回覆寄件者** - 遭退信電子郵件之寄件者的電子郵件地址。此為將送出退信電子郵件的地址。須透過 Amazon SES 驗證。
**注意**  
退信訊息不會透過您的自訂「寄件人」網域傳送，但是由 SES 在內部產生，並僅以 `amazonses.com` DKIM 簽章簽署。作為解決方法，請使用**回覆寄件者**選項來設定退信訊息的電子郵件地址。如需詳細資訊，請參閱此[AWS re:Post 文章](https://repost.aws/questions/QURvN-26L_SJOcY9JoSFgCdg/ses-receiving-return-bounce-response-action-not-sending-bounce)。
+ **SNS 主題** - Amazon SNS 主題的名稱或 ARN，可選擇是否在送出退信電子郵件時通知。Amazon SNS 主題 ARN 的範例為 *arn:aws:sns:us-east-1:123456789012:MyTopic*。選擇 **Create SNS Topic** (建立 SNS 主題) 來設定動作時，也可以建立 Amazon SNS 主題。如需 Amazon SNS 主題的詳細資訊，請參閱 [Amazon Simple Notification Service 開發人員指南](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。
**注意**  
您選擇的 Amazon SNS 主題必須與您用來接收電子郵件的 Amazon SES 端點位於相同的 AWS 區域。

您可以在這些欄為中輸入您自訂的值，或者可選擇根據退信原因而產生的範本值來填入 SMTP Reply Code (SMTP 回應程式碼)、SMTP Status Code (SMTP 狀態程式碼) 以及 Message (訊息) 欄位。可使用以下範本：
+ **Mailbox Does Not Exist (信箱不存在) - **SMTP Reply Code = 550、SMTP Status Code = 5.1.1
+ **Message Too Large (訊息過大) - **SMTP Reply Code = 552、SMTP Status Code = 5.3.4
+ **信箱已滿** - SMTP Reply Code = 552、SMTP Status Code = 5.2.2
+ **Message Content Rejected (訊息內容遭拒) - **SMTP Reply Code = 500、SMTP Status Code = 5.6.1
+ **Unknown Failure (未知的失敗原因) - **SMTP Reply Code = 554、SMTP Status Code = 5.0.0
+ **Temporary Failure (暫時性失敗) - **SMTP Reply Code = 450、SMTP Status Code = 4.0.0

如需其他可能在欄位中輸入自訂值來使用的退信代碼，請參閱 [RFC 3463](https://tools.ietf.org/html/rfc3463)。

# 呼叫 Lambda 函數動作
<a name="receiving-email-action-lambda"></a>

Lambda 動作透過 Lambda 函數來呼叫您的程式碼，且可選擇是否透過 Amazon SNS 通知您。此規則動作具有下列選項和需求：

**選項**
+ **Lambda 函數** -Lambda 函數的 ARN。Lambda 函數 ARN 的範例為 *arn:aws:lambda:us-east-1:account-id:function:MyFunction*。
+ **叫用類型** - Lambda 函數的叫用類型。叫用類型 **RequestResponse** 表示函數執行結果為立即回應。叫用類型 **Event** 表示函數為非同步叫用。建議您使用 **Event** 叫用類型，除非您的使用案例必須使用非同步執行。

  **RequestResponse** 呼叫有 30 秒的逾時。

  如需詳細資訊，請參閱 *AWS Lambda 開發人員指南*中的[叫用 Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html)。
+ **SNS Topic** (SNS 主題) - Amazon SNS 主題的名稱或 ARN，用來於指定的 Lambda 函數觸發時通知。Amazon SNS 主題 ARN 的範例為 *arn:aws:sns:us-east-1:123456789012:MyTopic*。如需詳細資訊，請參閱《Amazon Simple Notification Service 開發人員指南》**中的[建立 Amazon SNS 主題](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。

**要求**
+ 您選擇的 Lambda 函數必須與您用來接收電子郵件的 Amazon SES 端點位於相同的 AWS 區域。
+ 您選擇的 Amazon SNS 主題必須與您用來接收電子郵件的 Amazon SES 端點位於相同的 AWS 區域。

## 編寫您的 Lambda 函數
<a name="receiving-email-action-lambda-function"></a>

若要處理您的電子郵件，可以非同步方式叫用 Lambda 函數 (也就是使用 `Event` 叫用類型)。傳送到 Lambda 函數的事件物件將包含關於傳入電子郵件事件的中繼資料。您也可以使用中繼資料存取來自 Amazon S3 儲存貯體的訊息內容。

如果您想要實際控制郵件流程，必須以非同步方式叫用您的 Lambda 函數 (也就是使用 `RequestResponse` 叫用類型)，而您的 Lambda 函數必須以兩個引數來呼叫 `callback` 方法：第一個引數為 `null`，第二個引數是 `disposition` 屬性 (設為 `STOP_RULE`、`STOP_RULE_SET` 或 `CONTINUE`)。如果第二個引數是 `null` 或沒有有效的 `disposition` 屬性，郵件流程將持續，且將處理其他動作和規則，與 `CONTINUE` 相同。

例如，您可以在 Lambda 函數程式碼末端編寫下列行，以停止接收規則集：

```
callback( null, { "disposition" : "STOP_RULE_SET" });
```

如需 AWS Lambda 程式碼範例，請參閱 [Lambda 函數範例](receiving-email-action-lambda-example-functions.md)。如需高階使用案例的範例，請參閱 [使用案例範例](receiving-email-action-lambda-example-use-cases.md)。

### 輸入格式
<a name="receiving-email-action-lambda-input"></a>

Amazon SES 以 JSON 格式傳遞資訊至 Lambda 函數。最上層物件包含 `Records` 陣列，以屬性 `eventSource`、`eventVersion` 以及 `ses` 所填入。`ses` 物件包含 `receipt` 與 `mail` 物件，與「[通知內容](receiving-email-notifications-contents.md)」中所述 Amazon SNS 通知的格式完全相同。

Amazon SES 傳遞給 Lambda 的資料包括訊息的中繼資料，以及數個電子郵件標頭。不過其中不包含訊息的內文。

以下為 Amazon SES 提供給 Lambda 函數之輸入結構的高階檢視。

```
{
   "Records": [
      {
        "eventSource": "aws:ses",
        "eventVersion": "1.0",
        "ses": {
           "receipt": {
               <same contents as SNS notification>
            },
           "mail": {
               <same contents as SNS notification>
           }
         }
     }
   ]
}
```

### 傳回值
<a name="receiving-email-action-lambda-function-return-values"></a>

您的 Lambda 函數可藉由傳回下列其中一個值來控制郵件流程：
+ `STOP_RULE` - 將不會處理目前接收規則中的其他動作，但是將處理其他接收規則。
+ `STOP_RULE_SET` - 不會處理其他動作或接收規則。
+ `CONTINUE` 或任何其他無效的值 - 這表示可以處理其他動作和接收規則。

**Topics**
+ [編寫您的 Lambda 函數](#receiving-email-action-lambda-function)
+ [傳入電子郵件事件範例](receiving-email-action-lambda-event.md)
+ [使用案例範例](receiving-email-action-lambda-example-use-cases.md)
+ [Lambda 函數範例](receiving-email-action-lambda-example-functions.md)

# 傳入電子郵件事件範例
<a name="receiving-email-action-lambda-event"></a>

有兩種方式可將傳入的電子郵件事件傳送到 Lambda 函數。第一種方法是在接收規則中使用 Lambda 動作，將事件記錄直接傳送到函數。第二種方法是在接收規則中使用 Amazon SNS 動作，將事件記錄傳送到 Amazon SNS，然後新增 Lambda 函數做為 Amazon SNS 主題的訂閱端點。

本節包含 Amazon SES 可以傳送到 Lambda 的事件記錄範例。您可以使用這些範例來建立及測試 Lambda 函數。

**注意**  
本節中的範例包含分行符號以方便閱讀。如果您複製本節中的範例，您應該移除額外的分行符號來產生有效的 JSON 物件。

## Lambda 動作提供的事件記錄
<a name="receiving-email-action-lambda-event-lambdaaction"></a>

當您將 Lambda 動作新增至接收規則時，Amazon SES 會在每次收到傳入訊息時傳送事件記錄給 Lambda。此事件包含有關傳入訊息的幾個電子郵件標頭的資訊，以及對傳入訊息 Amazon SES 執行的多個測試結果。不過，它會省略傳入電子郵件的內文。

下列範例顯示這些事件記錄通常包含的值。

```
{
  "Records": [{
    "eventSource": "aws:ses",
    "eventVersion": "1.0",
    "ses": {
      "mail": {
        "timestamp": "2019-08-05T21:30:02.028Z",
        "source": "prvs=144d0cba7=sender@example.com",
        "messageId": "EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000",
        "destination": ["recipient@example.com"],
        "headersTruncated": false,
        "headers": [{
          "name": "Return-Path",
          "value": "<prvs=144d0cba7=sender@example.com>"
        }, {
          "name": "Received",
          "value": "from smtp.example.com [203.0.113.0]) by inbound-smtp.us-east-1.amazonaws.com 
                    with SMTP id bsvpsoklfhu7u50iur7h0kk9a2ou0r7iexample for recipient@example.com;
                    Mon, 05 Aug 2019 21:30:02 +0000 (UTC)"
        }, {
          "name": "X-SES-Spam-Verdict",
          "value": "PASS"
        }, {
          "name": "X-SES-Virus-Verdict",
          "value": "PASS"
        }, {
          "name": "Received-SPF",
          "value": "pass (spfCheck: domain of example.com designates 203.0.113.0 as permitted sender) 
                    client-ip=203.0.113.0; envelope-from=prvs=144d0cba42=sender@example.com; helo=
                    smtp.example.com;"
        }, {
          "name": "Authentication-Results",
          "value": "amazonses.com; spf=pass (spfCheck: domain of example.com designates 203.0.113.0
                    as permitted sender) client-ip=203.0.113.0; envelope-from=prvs=144d0cba42=
                    sender@example.com; helo=smtp.example.com; dkim=pass header.i=@example.com; 
                    dmarc=none header.from=example.com;"
        }, {
          "name": "X-SES-RECEIPT",
          "value": "AEFBQUFBQUFBQUFHbFo0VU81VzVuYmRDNm51nhTVWpabDh6J4V2l5cG5PSHFtNzlBeUk90example"
        }, {
          "name": "X-SES-DKIM-SIGNATURE",
          "value": "a=rsa-sha256; q=dns/txt; b=Cm1emU30VcD6example=; c=relaxed/simple; s=6gbrjpgwjs
                    5zn6fwqknexample; d=amazonses.com; t=1567719002; v=1; bh=DSofsjAoUvyZj6YsBDP5en
                    pRO1otGb7Nes0Qexample=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:
                    Content-Type:X-SES-RECEIPT;"
        }, {
          "name": "DKIM-Signature",
          "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; i=@example.com; q=dns/txt; 
                    s=example12345; t=1567719001; x=1599255001; h=from:to:subject:date:message-id:
                    references:in-reply-to:mime-version; bh=sjAoUvyZj6YsBDP5enpRO1otGb7s0Qexample=; 
                    b=EQw2D4RLOW2IHE9OgfEA4WXp+AENJtaD2+63wmd5J+d+t/xoaiKUGClOS7WhpyOmlipryOz+iOhxU
                    v350xJIHjLTi9Jsnlw76mRK8o4770TaUz620joCVN21n4cxsrRZpv+1kS0EcAxaF30pmwlni+XT4ems
                    Vxn7zO0I8example=;"
        }, {
          "name": "Received",
          "value": "from mail.example.com (mail.example.com [203.0.113.0]) by email-inbound-relay-
                    1d-9ec21598.us-east-1.example.com (Postfix) with ESMTPS id 57F83A2042 for 
                    <recipient@example.com>; Mon, 5 Aug 2019 21:29:58 +0000 (UTC)"
        }, {
          "name": "From",
          "value": "\"Doe, John\" <sender@example.com>"
        }, {
          "name": "To",
          "value": "\"recipient@example.com\" <recipient@example.com>"
        }, {
          "name": "Subject",
          "value": "This is a test"
        }, {
          "name": "Thread-Topic",
          "value": "This is a test"
        }, {
          "name": "Thread-Index",
          "value": "AQHVZDAaQ58yKI8q7kaAjkhC5stGexample"
        }, {
          "name": "Date",
          "value": "Mon, 5 Aug 2019 21:29:57 +0000"
        }, {
          "name": "Message-ID",
          "value": "<F8098FDD-49A3-442D-9935-F6112example@example.com>"
        }, {
          "name": "References",
          "value": "<1FCED16B-F6B0-4506-A6F0-594DFexample@example.com>"
        }, {
          "name": "In-Reply-To",
          "value": "<1FCED16B-F6B0-4506-A6F0-594DFexample@example.com>"
        }, {
          "name": "Accept-Language",
          "value": "en-US"
        }, {
          "name": "Content-Language",
          "value": "en-US"
        }, {
          "name": "X-MS-Has-Attach",
          "value": ""
        }, {
          "name": "X-MS-TNEF-Correlator",
          "value": ""
        }, {
          "name": "x-ms-exchange-messagesentrepresentingtype",
          "value": "1"
        }, {
          "name": "x-ms-exchange-transport-fromentityheader",
          "value": "Hosted"
        }, {
          "name": "x-originating-ip",
          "value": "[203.0.113.0]"
        }, {
          "name": "Content-Type",
          "value": "multipart/alternative; boundary=\"_000_F8098FDD49A344F6112B195BDAexamplecom_\""
        }, {
          "name": "MIME-Version",
          "value": "1.0"
        }, {
          "name": "Precedence",
          "value": "Bulk"
        }],
        "commonHeaders": {
          "returnPath": "prvs=144d0cba7=sender@example.com",
          "from": ["\"Doe, John\" <sender@example.com>"],
          "date": "Mon, 5 Aug 2019 21:29:57 +0000",
          "to": ["\"recipient@example.com\" <recipient@example.com>"],
          "messageId": "<F8098FDD-49A3-442D-9935-F6112B195BDA@example.com>",
          "subject": "This is a test"
        }
      },
      "receipt": {
        "timestamp": "2019-08-05T21:30:02.028Z",
        "processingTimeMillis": 1205,
        "recipients": ["recipient@example.com"],
        "spamVerdict": {
          "status": "PASS"
        },
        "virusVerdict": {
          "status": "PASS"
        },
        "spfVerdict": {
          "status": "PASS"
        },
        "dkimVerdict": {
          "status": "PASS"
        },
        "dmarcVerdict": {
          "status": "GRAY"
        },
        "action": {
          "type": "Lambda",
          "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:IncomingEmail",
          "invocationType": "Event"
        }
      }
    }
  }]
}
```

## Amazon SNS 動作提供的事件記錄
<a name="receiving-email-action-lambda-event-snsaction"></a>

當您新增 Amazon SNS 動作到接收規則時，通知會包含電子郵件的全部內容。如果您想要讓 Lambda 函數處理電子郵件內文，應將 Amazon SNS 動作新增至接收規則，然後在 Amazon SNS 中，將您的 Lambda 函數捐贈至 Amazon SNS 函數。此組態會在收到來自 Amazon SNS 主題的通知時啟用您的 Lambda 函數。

```
{
    'Records': [
        {
            'EventSource': 'aws:sns',
            'EventVersion': '1.0',
            'EventSubscriptionArn': 'arn:aws:sns:us-east-1:123456789012:IncomingEmail:12345678',
            'Sns': {
                'Type': 'Notification',
                'MessageId': 'EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000',
                'TopicArn': 'arn:aws:sns:us-east-1:123456789012:IncomingEmail',
                'Subject': 'Amazon SES Email Receipt Notification',
                'Message': <message content—see below>,
                'Timestamp': '2019-09-06T18:52:16.076Z',
                'SignatureVersion': '1',
                'Signature': '012345678901example==',
                'SigningCertUrl': 'https://sns.us-east-1.amazonaws.com/SimpleNotificationService
                                   -01234567890123456789012345678901.pem',
                'UnsubscribeUrl': 'https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&
                                   SubscriptionArn=arn:aws:sns:us-east-1:0123456789012:IncomingEmail:
                                   0b863538-3f32-462e-9c89-8d8e0example',
                'MessageAttributes': {}
            }
        }
    ]
}
```

`Message` 屬性包含 JSON 編碼的字串。此字串包含訊息的標頭和內容。訊息內文本身使用 base64 編碼。如果你想在你的 Lambda 函數中使用訊息內文，首先必須解碼 `Message` 屬性，然後解碼 `Content` 物件。

以下範例顯示 `Message` 屬性中包含的值。

```
{
  "notificationType": "Received",
  "mail": {
    "timestamp": "2019-09-06T18:52:14.965Z",
    "source": "0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@amazonses.com",
    "messageId": "12345678901example",
    "destination": ["recipient@example.com"],
    "headersTruncated": false,
    "headers": [{
      "name": "Return-Path",
      "value": "<0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@amazonses.com>"
    }, {
      "name": "Received",
      "value": "from a1-23.smtp-out.amazonses.com (a1-23.smtp-out.amazonses.com [203.0.113.0]) by
                inbound-smtp.us-east-1.amazonaws.com with SMTP id
                12345678901example for recipient@example.com; Fri, 06 Sep 2019
                18:52:14 +0000 (UTC)"
    }, {
      "name": "X-SES-Spam-Verdict",
      "value": "PASS"
    }, {
      "name": "X-SES-Virus-Verdict",
      "value": "PASS"
    }, {
      "name": "Received-SPF",
      "value": "pass (spfCheck: domain of amazonses.com designates 203.0.113.0 as permitted sender)
                client-ip=203.0.113.0; envelope-from=0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example
                -000000@amazonses.com; helo=a1-23.smtp-out.amazonses.com;"
    }, {
      "name": "Authentication-Results",
      "value": "amazonses.com; spf=pass (spfCheck: domain of amazonses.com designates 203.0.113.0
                as permitted sender) client-ip=203.0.113.0; envelope-from=0100016d07eb7477-8e1938ce
                -475e-4e4b-89cb-example-000000@amazonses.com; helo=a1-23.smtp-out.amazonses.com;
                dkim=pass header.i=@amazonses.com; dmarc=none header.from=example.com;"
    }, {
      "name": "X-SES-RECEIPT",
      "value": "AEFBQUFBQUFBQUFFQkx0QUJZZENEXAMPLE="
    }, {
      "name": "X-SES-DKIM-SIGNATURE",
      "value": "a=rsa-sha256; q=dns/txt; b=d5azwgA2iBqAjA4NBm1ARzjJ95raRmy4G84iVdd3x2JzSHeUnQuTuLmJ
                AqRrYY3WpMIVRFy01hITaguCVjUPWBR0xF6fCEXH85cf3RNeFQyLfWZqoXKfBdjFRV+13troDterH2MxBUL
                8rjzcvdHetl0ImwlaK2PGmePTexample=; c=relaxed/simple; s=EXAMPLE7c191be45-e9aedb9a-02
                f9-4d12-a87d-dd0099a07f8a-000000; d=amazonses.com; t=1567795935; v=1; bh=CZ1SghsYaA
                6SSCbitzsLISeFoNlpdtH1Pyiexample=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-
                Version:Content-Type:X-SES-RECEIPT;"
    }, {
      "name": "DKIM-Signature",
      "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=EXAMPLE7c191be45-e9aedb9a-02f9-
                4d12-a87d-dd0099a07f8a-000000; d=amazonses.com; t=1567795934; h=From:To:Subject:
                MIME-Version:Content-Type:Message-ID:Date:Feedback-ID; bh=CZ1SghsYaA6SSCbitzsLISeFo
                NlpdtH1Pyiexample=; b=L6VXqR1PSN/FYqJI/VAfPRKFgtakcHCYJvuJqVYbuJT8I3FOhqOvkbcgHxOgs
                woxPfvGrL6S53H8Er5Do/CPvOM4Tx3ilE+a0GTYVLjKmwltNeN09YWlJAoqG5KMQPZUxRYaNvYPInLzUdGi
                rdjkbSIgZEnrvq5MzaMWexample="
    }, {
      "name": "From",
      "value": "sender@example.com"
    }, {
      "name": "To",
      "value": "recipient@example.com"
    }, {
      "name": "Subject",
      "value": "Amazon SES Test"
    }, {
      "name": "MIME-Version",
      "value": "1.0"
    }, {
      "name": "Content-Type",
      "value": "multipart/alternative;  boundary=\"----=_Part_869787_396523212.15677example\""
    }, {
      "name": "Message-ID",
      "value": "<0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@email.amazonses.com>"
    }, {
      "name": "Date",
      "value": "Fri, 6 Sep 2019 18:52:14 +0000"
    }, {
      "name": "X-SES-Outgoing",
      "value": "2019.09.06-203.0.113.0"
    }, {
      "name": "Feedback-ID",
      "value": "1.us-east-1.ZitRoTk0xziun8WEJevt+cSJ17QNuCwulg2D2v3nrT0=:AmazonSES"
    }],
    "commonHeaders": {
      "returnPath": "0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@amazonses.com",
      "from": ["sender@example.com"],
      "date": "Fri, 6 Sep 2019 18:52:14 +0000",
      "to": ["recipient@example.com"],
      "messageId": "<0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@email.amazonses.com>",
      "subject": "Amazon SES Test"
    }
  },
  "receipt": {
    "timestamp": "2019-09-06T18:52:14.965Z",
    "processingTimeMillis": 1098,
    "recipients": ["recipient@example.com"],
    "spamVerdict": {
      "status": "PASS"
    },
    "virusVerdict": {
      "status": "PASS"
    },
    "spfVerdict": {
      "status": "PASS"
    },
    "dkimVerdict": {
      "status": "GRAY"
    },
    "dmarcVerdict": {
      "status": "GRAY"
    },
    "action": {
      "type": "SNS",
      "topicArn": "arn:aws:sns:us-east-1:123456789012:IncomingEmail",
      "encoding": "BASE64"
    }
  },
  "content": "UmV0dXJuLVBhdGg6IDwwMTAwMDE2ZDA3ZWI3NDc3LThlMTkzOGNlLTQ3NWUtNGU0Yi04OWNiLWV4YW1wbGUtM
              DAwMDAwQGFtYXpvbnNlcy5jb20+ClJlY2VpdmVkOiBmcm9tIGExLTIzLnNtdHAtb3V0LmFtYXpvbnNlcy5jb2
              0gKGExLTIzLnNtdHAtb3V0LmFtYXpvbnNlcy5jb20gWzIwMy4wLjExMy4wXSkKIGJ5IGluYm91bmQtc210cC5
              1cy1lYXN0LTEuYW1hem9uYXdzLmNvbSB3aXRoIFNNVFAgaWQgZW5xMTBpYW1lMXFjdTMxamg1ZGEyZ244OWlt
              dm90Mms2ZXhhbXBsZQogZm9yIHJlY2lwaWVudEBleGFtcGxlLmNvbTsKIEZyaSwgMDYgU2VwIDIwMTkgMTg6N
              TI6MTQgKzAwMDAgKFVUQykKWC1TRVMtU3BhbS1WZXJkaWN0OiBQQVNTClgtU0VTLVZpcnVzLVZlcmRpY3Q6IF
              BBU1MKUmVjZWl2ZWQtU1BGOiBwYXNzIChzcGZDaGVjazogZG9tYWluIG9mIGFtYXpvbnNlcy5jb20gZGVzaWd
              uYXRlcyAyMDMuMC4xMTMuMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKSBjbGllbnQtaXA9MjAzLjAuMTEzLjA7IGVu
              dmVsb3BlLWZyb209MDEwMDAxNmQwN2ViNzQ3Ny04ZTE5MzhjZS00NzVlLTRlNGItODljYi1leGFtcGxlLTAwM
              DAwMEBhbWF6b25zZXMuY29tOyBoZWxvPWExLTIzLnNtdHAtb3V0LmFtYXpvbnNlcy5jb207CkF1dGhlbnRpY2
              F0aW9uLVJlc3VsdHM6IGFtYXpvbnNlcy5jb207CiBzcGY9cGFzcyAoc3BmQ2hlY2s6IGRvbWFpbiBvZiBhbWF
              6b25zZXMuY29tIGRlc2lnbmF0ZXMgMjAzLjAuMTEzLjAgYXMgcGVybWl0dGVkIHNlbmRlcikgY2xpZW50LWlw
              PTIwMy4wLjExMy4wOyBlbnZlbG9wZS1mcm9tPTAxMDAwMTZkMDdlYjc0NzctOGUxOTM4Y2UtNDc1ZS00ZTRiL
              Tg5Y2ItZXhhbXBsZS0wMDAwMDBAYW1hem9uc2VzLmNvbTsgaGVsbz1hMS0yMy5zbXRwLW91dC5hbWF6b25zZX
              MuY29tOwogZGtpbT1wYXNzIGhlYWRlci5pPUBhbWF6b25zZXMuY29tOwogZG1hcmM9bm9uZSBoZWFkZXIuZnJ
              vbT1leGFtcGxlLmNvbTsKWC1TRVMtUkVDRUlQVDogQUVGQlFVRkJRVUZCUVVGRlFreDBRVUpaWkVORVhBTVBM
              RT0KWC1TRVMtREtJTS1TSUdOQVRVUkU6IGE9cnNhLXNoYTI1NjsgcT1kbnMvdHh0OyBiPWQ1YXp3Z0EyaUJxQ
              WpBNE5CbTFBUnpqSjk1cmFSbXk0Rzg0aVZkZDN4Mkp6U0hlVW5RdVR1TG1KQXFScllZM1dwTUlWUkZ5MDFoSV
              RhZ3VDVmpVUFdCUjB4RjZmQ0VYSDg1Y2YzUk5lRlF5TGZXWnFvWEtmQmRqRlJWKzEzdHJvRHRlckgyTXhCVUw
              4cmp6Y3ZkSGV0bDBJbXdsYUsyUEdtZVBUZXhhbXBsZT07IGM9cmVsYXhlZC9zaW1wbGU7IHM9RVhBTVBMRTdj
              MTkxYmU0NS1lOWFlZGI5YS0wMmY5LTRkMTItYTg3ZC1kZDAwOTlhMDdmOGEtMDAwMDAwOyBkPWFtYXpvbnNlc
              y5jb207IHQ9MTU2Nzc5NTkzNTsgdj0xOyBiaD1DWjFTZ2hzWWFBNlNTQ2JpdHpzTElTZUZvTmxwZHRIMVB5aW
              V4YW1wbGU9OyBoPUZyb206VG86Q2M6QmNjOlN1YmplY3Q6RGF0ZTpNZXNzYWdlLUlEOk1JTUUtVmVyc2lvbjp
              Db250ZW50LVR5cGU6WC1TRVMtUkVDRUlQVDsKREtJTS1TaWduYXR1cmU6IHY9MTsgYT1yc2Etc2hhMjU2OyBx
              PWRucy90eHQ7IGM9cmVsYXhlZC9zaW1wbGU7CglzPUVYQU1QTEU3YzE5MWJlNDUtZTlhZWRiOWEtMDJmOS00Z
              DEyLWE4N2QtZGQwMDk5YTA3ZjhhLTAwMDAwMDsgZD1hbWF6b25zZXMuY29tOyB0PTE1Njc3OTU5MzQ7CgloPU
              Zyb206VG86U3ViamVjdDpNSU1FLVZlcnNpb246Q29udGVudC1UeXBlOk1lc3NhZ2UtSUQ6RGF0ZTpGZWVkYmF
              jay1JRDsKCWJoPUNaMVNnaHNZYUE2U1NDYml0enNMSVNlRm9ObHBkdEgxUHlpTWV4YW1wbGU9OwoJYj1leGFt
              cGxlPQpGcm9tOiBzZW5kZXJAZXhhbXBsZS5jb20KVG86IHJlY2lwaWVudEBleGFtcGxlLmNvbQpTdWJqZWN0O
              iBBbWF6b24gU0VTIFRlc3QKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZX
              JuYXRpdmU7IAoJYm91bmRhcnk9Ii0tLS09X1BhcnRfODY5Nzg3XzM5NjUyMzIxMi4xNTY3N2V4YW1wbGUiCk1
              lc3NhZ2UtSUQ6IDwwMTAwMDE2ZDA3ZWI3NDc3LThlMTkzOGNlLTQ3NWUtNGU0Yi04OWNiLWV4YW1wbGUtMDAw
              MDAwQGVtYWlsLmFtYXpvbnNlcy5jb20+CkRhdGU6IEZyaSwgNiBTZXAgMjAxOSAxODo1MjoxNCArMDAwMApYL
              VNFUy1PdXRnb2luZzogMjAxOS4wOS4wNi0yMDMuMC4xMTMuMApGZWVkYmFjay1JRDogMS51cy1lYXN0LTEuWm
              l0Um9UazB4eml1bjhXRUpldnQrZXhhbXBsZT06QW1hem9uU0VTCgotLS0tLS09X1BhcnRfODY5Nzg3XzM5NjU
              yMzIxMi4xNTY3N2V4YW1wbGUKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl
              bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKCkFtYXpvbiBTRVMgVGVzdApUaGlzIGVtYWlsIHdhcyBzZW50I
              HdpdGggQW1hem9uIFNFUy4KLS0tLS0tPV9QYXJ0Xzg2OTc4N18zOTY1MjMyMTIuMTU2NzdleGFtcGxlCkNvbn
              RlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDd
              iaXQKCjxodG1sPgo8aGVhZD48L2hlYWQ+Cjxib2R5PgogIDxoMT5BbWF6b24gU0VTIFRlc3Q8L2gxPgogIDxw
              PlRoaXMgZW1haWwgd2FzIHNlbnQgd2l0aCBBbWF6b24gU0VTLjwvcD4KPGltZyBhbHQ9IiIgc3JjPSJodHRwO
              i8vZXhhbXBsZS5yLnVzLWVhc3QtMS5hd3N0cmFjay5tZS9JMC8wMTAwMDE2ZDA3ZWI3NDc3LThlMTkzOGNlLT
              Q3NWUtNGU0Yi04OWNiLWV4YW1wbGUtMDAwMDAwL3UtWUphaHRkTTJTclhZQ2QiIHN0eWxlPSJkaXNwbGF5OiB
              ub25lOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsiPgo8L2JvZHk+CjwvaHRtbD4KICAgICAgICAgICAgCi0t
              LS0tLT1fUGFydF84Njk3ODdfMzk2NTIzMjEyLjE1Njc3ZXhhbXBsZS0tCg=="
}
```

# 使用案例範例
<a name="receiving-email-action-lambda-example-use-cases"></a>

以下範例概述部分可設定的規則，以使用 Lambda 函數結果來控制郵件流程。為達示範目的，許多範例皆使用 S3 動作做為結果。

## 使用案例 1：捨棄所有網域上的垃圾郵件
<a name="receiving-email-action-lambda-example-use-cases-1"></a>

此範例採用全域規則，將捨棄所有網域上的垃圾郵件。包含規則 2 和 3，以示範在所有網域上捨棄垃圾郵件後可針對網域套用規則。

### 規則 1
<a name="receiving-email-action-lambda-example-use-cases-1-rule-1"></a>

*收件人名單：*空白。因此，此規則將套用到所有已驗證網域下的所有收件人。

 *動作* 

1. Lambda 動作 (同步) 將於電子郵件為垃圾郵件時傳回 `STOP_RULE_SET`。否則會傳回 `CONTINUE`。請參閱「[Lambda 函數範例](receiving-email-action-lambda-example-functions.md)」中關於捨棄垃圾郵件的 Lambda 函數範例。

### 規則 2
<a name="receiving-email-action-lambda-example-use-cases-1-rule-2"></a>

*收件人名單：*example1.com

 *動作* 

1. 任何動作。

### 規則 3
<a name="receiving-email-action-lambda-example-use-cases-1-rule-3"></a>

*收件人名單：*example2.com

 *動作* 

1. 任何動作。

## 使用案例 2：退回所有網域上的垃圾郵件
<a name="receiving-email-action-lambda-example-use-cases-2"></a>

此範例採用全域規則，將退回所有網域上的垃圾郵件。包含規則 2 和 3，以示範在所有網域上退回垃圾郵件後可針對網域套用規則。

### 規則 1
<a name="receiving-email-action-lambda-example-use-cases-2-rule-1"></a>

*收件人名單：*空白。因此，此規則將套用到所有已驗證網域下的所有收件人。

 *動作* 

1. Lambda 動作 (同步) 將於電子郵件為垃圾郵件時傳回 `CONTINUE`。否則會傳回 `STOP_RULE`。

1. 退信動作 (「500 5.6.1。Message content rejected (訊息內容遭拒)」)。

1. 停止動作。

### 規則 2
<a name="receiving-email-action-lambda-example-use-cases-2-rule-2"></a>

*收件人名單：*example1.com

 *動作* 

1. 任何動作

### 規則 3
<a name="receiving-email-action-lambda-example-use-cases-2-rule-3"></a>

*收件人名單：*example2.com

 *動作* 

1. 任何動作

## 使用案例 3：套用最明確的規則
<a name="receiving-email-action-lambda-example-use-cases-3"></a>

此範例示範如何使用停止動作，以防止電子郵件經多個規則處理。在這個範例中，特定地址將適用一個規則，而另一個規則適用於網域下所有電子郵件地址。使用「停止」動作，符合特定電子郵件地址規則的訊息將不會由該網域所套用之較一般性的規則處理。

### 規則 1
<a name="receiving-email-action-lambda-example-use-cases-3-rule-1"></a>

*收件人名單：*user@example.com

 *動作* 

1. Lambda 動作 (非同步)。

1. 停止動作。

### 規則 2
<a name="receiving-email-action-lambda-example-use-cases-3-rule-2"></a>

*收件人名單：*example.com

 *動作* 

1. 任何動作。

## 使用案例 4：將郵件事件記錄到 CloudWatch
<a name="receiving-email-action-lambda-example-use-cases-4"></a>

此範例示範如何在將郵件儲存至 Amazon SES 前，保留往返系統之所有郵件的稽核記錄。

### 規則 1
<a name="receiving-email-action-lambda-example-use-cases-4-rule-1"></a>

*收件人名單：*example.com

 *動作* 

1. Lambda 動作 (非同步)，會將事件物件寫入 CloudWatch 記錄。[Lambda 函數範例](receiving-email-action-lambda-example-functions.md) 中記錄至 CloudWatch的 Lambda 函數範例。

1. S3 動作。

## 使用案例 5：捨棄未通過 DKIM 的郵件
<a name="receiving-email-action-lambda-example-use-cases-5"></a>

此範例示範如何將所有傳入的電子郵件儲存至 Amazon S3 儲存貯體，但是只有送往特定電子郵件地址並已通過 DKIM 的電子郵件，才可傳送至您的自動化電子郵件應用程式。

### 規則 1
<a name="receiving-email-action-lambda-example-use-cases-5-rule-1"></a>

*收件人名單：*example.com

 *動作* 

1. S3 動作。

1. Lambda 動作 (同步) 將在訊息未通過 DKIM 時傳回 `STOP_RULE_SET`。否則會傳回 `CONTINUE`。

### 規則 2
<a name="receiving-email-action-lambda-example-use-cases-5-rule-2"></a>

*收件人名單：*support@example.com

 *動作* 

1. 觸發自動化應用程式的 Lambda 動作 (非同步)。

## 使用案例 6：根據主旨行篩選郵件
<a name="receiving-email-action-lambda-example-use-cases-6"></a>

此範例示範如何捨棄網域中所有主旨行包含字詞「折扣」的傳入郵件，接著以一種方法處理用於自動化系統的郵件，並以不同方法來處理寄送給網域中所有其他收件人的郵件。

### 規則 1
<a name="receiving-email-action-lambda-example-use-cases-6-rule-1"></a>

*收件人名單：*example.com

 *動作* 

1. Lambda 動作 (同步) 會在主旨行包含字詞「折扣」時傳回 `STOP_RULE_SET`。否則會傳回 `CONTINUE`。

### 規則 2
<a name="receiving-email-action-lambda-example-use-cases-6-rule-2"></a>

*收件人名單：*support@example.com

 *動作* 

1. 使用儲存貯體 1 的 S3 動作。

1. 觸發自動化應用程式的 Lambda 動作 (非同步)。

1. 停止動作。

### 規則 3
<a name="receiving-email-action-lambda-example-use-cases-6-rule-3"></a>

*收件人名單：*example.com

 *動作* 

1. 使用儲存貯體 2 的 S3 動作。

1. 處理網域其他部分的電子郵件的 Lambda 動作 (非同步)。

# Lambda 函數範例
<a name="receiving-email-action-lambda-example-functions"></a>

此主題包含可控制郵件流程的 Lambda 函數範例。

## 範例 1：捨棄垃圾郵件
<a name="receiving-email-action-lambda-example-functions-1"></a>

此範例會停止處理至少包含一項垃圾郵件指標的訊息。

```
export const handler = async (event, context, callback) => {
    console.log('Spam filter');
    
    const sesNotification = event.Records[0].ses;
    console.log("SES Notification:\n", JSON.stringify(sesNotification, null, 2));
    
    // Check if any spam check failed
    if (sesNotification.receipt.spfVerdict.status === 'FAIL'
            || sesNotification.receipt.dkimVerdict.status === 'FAIL'
            || sesNotification.receipt.spamVerdict.status === 'FAIL'
            || sesNotification.receipt.virusVerdict.status === 'FAIL') {
                
        console.log('Dropping spam');

        // Stop processing rule set, dropping message
        callback(null, {'disposition':'STOP_RULE_SET'});
    } else {
        callback(null, {'disposition':'CONTINUE'});   
    }
};
```

## 範例 2：若找到特定標頭則繼續
<a name="receiving-email-action-lambda-example-functions-2"></a>

此範例將在電子郵件包含特定標題值時僅繼續處理目前規則。

```
export const handler = async (event, context, callback) => {
    console.log('Header matcher');
 
    const sesNotification = event.Records[0].ses;
    console.log("SES Notification:\n", JSON.stringify(sesNotification, null, 2));
    
    // Iterate over the headers
    for (let index in sesNotification.mail.headers) {
        const header = sesNotification.mail.headers[index];
        
        // Examine the header values
        if (header.name === 'X-Header' && header.value === 'X-Value') {
            console.log('Found header with value.');
            callback(null, {'disposition':'CONTINUE'});
            return;
        }
    }
    
    // Stop processing the rule if the header value wasn't found
    callback(null, {'disposition':'STOP_RULE'});
};
```

## 範例 3：從 Amazon S3 擷取電子郵件
<a name="receiving-email-action-lambda-example-functions-3"></a>

此範例從 Amazon S3 取得電子郵件原始碼和處理其內容。

**注意**  
必須先使用 S3 動作來將電子郵件寫入 Amazon S3。
確保 Lambda 函數具有從 S3 儲存貯體擷取物件的 IAM 許可 - 如需詳細資訊，請參閱此 [AWS re：Post 文章](https://repost.aws/knowledge-center/lambda-execution-role-s3-bucket)。
預設 Lambda 執行逾時可能對您的工作流程太短，請考慮增加它們。

```
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"; 
const bucketName = '<Your Bucket Name>';

export const handler = async (event, context, callback) => {
    const client = new S3Client();
    console.log('Process email');
  
    var sesNotification = event.Records[0].ses;
    console.log("SES Notification:\n", JSON.stringify(sesNotification, null, 2));
    console.log("MessageId: " + sesNotification.mail.messageId)
  
    const getObjectCommand = new GetObjectCommand({
        Bucket: bucketName,
        Key: sesNotification.mail.messageId
    });
  
    try {
        const response = await client.send(getObjectCommand);
        const receivedMail = await response.Body.transformToString();
        console.log(receivedMail);
        callback(null, {'disposition':'CONTINUE'})
    } catch (e) {
        // Perform error handling here
        console.log("Encountered S3 client error: "+ e, e.stack);
        callback(null, {'disposition':'STOP_RULE_SET'})
    }
};
```

## 範例 4：DMARC 身分驗證失敗的退信訊息
<a name="receiving-email-action-lambda-example-functions-4"></a>

如果傳入的電子郵件未通過 DMARC 身分驗證，此範例將傳送退信訊息。

**注意**  
當您使用這個範例中，將 `emailDomain` 環境變數設定為您的電子郵件接收網域。
確保 Lambda 函數具有傳送退信訊息之 SES 身分的`ses:SendBounce`許可。

```
import { SESClient, SendBounceCommand } from "@aws-sdk/client-ses";
const sesClient = new SESClient();
// Assign the emailDomain environment variable to a constant.
const emailDomain = process.env.emailDomain;

export const handler = async (event, context, callback) => {
    console.log('Spam filter starting');

    const sesNotification = event.Records[0].ses;
    const messageId = sesNotification.mail.messageId;
    const receipt = sesNotification.receipt;

    console.log('Processing message:', messageId);

    // If DMARC verdict is FAIL and the sending domain's policy is REJECT
    // (p=reject), bounce the email.
    if (receipt.dmarcVerdict.status === 'FAIL' 
        && receipt.dmarcPolicy.status === 'REJECT') {
        // The values that make up the body of the bounce message.
        const sendBounceParams = {
            BounceSender: `mailer-daemon@${emailDomain}`,
            OriginalMessageId: messageId,
            MessageDsn: {
                ReportingMta: `dns; ${emailDomain}`,
                ArrivalDate: new Date(),
                ExtensionFields: [],
            },
            // Include custom text explaining why the email was bounced.
            Explanation: "Unauthenticated email is not accepted due to the sending domain's DMARC policy.",
            BouncedRecipientInfoList: receipt.recipients.map((recipient) => ({
                Recipient: recipient,
                // Bounce with 550 5.6.1 Message content rejected
                BounceType: 'ContentRejected',
            })),
        };

        console.log('Bouncing message with parameters:');
        console.log(JSON.stringify(sendBounceParams, null, 2));
        
        const sendBounceCommand = new SendBounceCommand(sendBounceParams);
        
        // Try to send the bounce. 
        try {
          const response = await sesClient.send(sendBounceCommand);
          console.log(response);
          console.log(`Bounce for message ${messageId} sent, bounce message ID: ${response.MessageId}`);
          // Stop processing additional receipt rules in the rule set.
          callback(null, {disposition: 'STOP_RULE_SET'});
        } catch (e) {
          // If something goes wrong, log the issue.
          console.log(`An error occurred while sending bounce for message: ${messageId}`, e);
          // Perform any additional error handling here
          callback(e)
        }
        
    // If the DMARC verdict is anything else (PASS, QUARANTINE or GRAY), accept
    // the message and process remaining receipt rules in the rule set.
    } else {
        console.log('Accepting message:', messageId);
        callback(null, {disposition: 'CONTINUE'});
    }
};
```

# 傳送至 S3 儲存貯體動作
<a name="receiving-email-action-s3"></a>

**交付至 S3 儲存貯體**動作會將郵件交付至 S3 儲存貯體，並可選擇性地透過 SNS 等方式通知您。此動作有下列選項。
+ **S3 儲存貯**體 – 儲存接收電子郵件的 S3 儲存貯體名稱。您也可以選擇建立 S3 儲存貯體，在設定動作時**建立新的 S3 儲存貯體**。Amazon SES 提供您原始、未修改的電子郵件，通常是以多用途網際網路郵件延伸 (MIME) 格式顯示。如需 MIME 格式的詳細資訊，請參閱 [RFC 2045](https://tools.ietf.org/html/rfc2045)。
**重要**  
Amazon S3 儲存貯體必須存在於[電子郵件接收](regions.md#region-receive-email)可使用 SES 的區域；否則，您必須使用下方說明的 IAM 角色選項。
當您將電子郵件儲存至 S3 儲存貯體時，預設的電子郵件大小上限 （包括標頭） 為 40 MB。
SES 不支援上傳到已啟用物件鎖定且已設定預設保留期的 S3 儲存貯體的接收規則。
如果指定自己的 KMS 金鑰來為 S3 儲存貯體加密，請確保使用完整合格的 KMS 金鑰 ARN，而不是 KMS 金鑰別名；使用別名可能會導致系統使用屬於申請者 (而不是儲存貯體管理員) 的 KMS 金鑰來加密資料。請參閱[對跨帳戶操作使用加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html#bucket-encryption-update-bucket-policy)。
+ **物件金鑰字首** – 要在 S3 儲存貯體中使用的選用金鑰名稱字首。金鑰名稱字首可讓您在資料夾結構中組織 S3 儲存貯體。例如，如果您使用*電子郵件*做為**物件金鑰字首**，您的電子郵件會出現在名為 *Email* 的資料夾中的 S3 儲存貯體中。
+ **訊息加密** – 將收到的電子郵件訊息交付至 S3 儲存貯體之前，用來加密這些訊息的選項。
+ **KMS 加密金鑰** – （如果選取*訊息加密*，則可用。) SES 在將電子郵件儲存至 S3 儲存貯體之前，應該用來加密電子郵件的 AWS KMS 金鑰。您可以使用預設 KMS 金鑰或您在 KMS 中建立的客戶受管金鑰。
**注意**  
您選擇的 KMS 金鑰必須與您用來接收電子郵件的 SES 端點位於相同的 AWS 區域。
  + 若要使用預設 KMS 金鑰，請在 SES 主控台中設定接收規則時選擇 **aws/ses**。如果您使用 SES API，您可以透過提供 形式的 ARN 來指定預設 KMS 金鑰`arn:aws:kms:REGION:AWSACCOUNTID:alias/aws/ses`。例如，如果 AWS 您的帳戶 ID 為 123456789012，而您想要在 us-east-1 區域中使用預設 KMS 金鑰，則預設 KMS 金鑰的 ARN 會是 `arn:aws:kms:us-east-1:123456789012:alias/aws/ses`。如果您使用預設 KMS 金鑰，則不需要執行任何額外步驟來授予 SES 使用金鑰的許可。
  + 若要使用您在 KMS 中建立的客戶受管金鑰，請提供 KMS 金鑰的 ARN，並確保將陳述式新增至金鑰的政策，以授予 SES 使用它的許可。如需提供權限的詳細資訊，請參閱 [給予 Amazon SES 接收電子郵件的許可](receiving-email-permissions.md)。

  如需搭配 SES 使用 KMS 的詳細資訊，請參閱 [AWS Key Management Service 開發人員指南](https://docs.aws.amazon.com/kms/latest/developerguide/services-ses.html)。如果您未在主控台或 API 中指定 KMS 金鑰，SES 將不會加密您的電子郵件。
**重要**  
在將郵件提交至 S3 進行儲存之前，SES 會使用 S3 加密用戶端來加密您的郵件。 S3 它不會使用 S3 伺服器端加密進行加密。這表示從 S3 擷取電子郵件之後，您必須使用 S3 加密用戶端來解密電子郵件，因為服務無法存取您的 KMS 金鑰進行解密。此加密用戶端提供 [適用於 Java 的 AWS SDK](https://aws.amazon.com/sdk-for-java/) 和 [適用於 Ruby 的 AWS SDK](https://aws.amazon.com/sdk-for-ruby/) 版本。如需詳細資訊，請參閱 [Amazon Simple Storage Service 使用者指南](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html)。
+ **IAM 角色** – SES 用來存取*交付至 S3* 動作 (Amazon S3 儲存貯體、SNS 主題和 KMS 金鑰） 中資源的 IAM 角色。如果未提供，您將需要明確授予 SES 個別存取每個資源的許可，請參閱 [給予 Amazon SES 接收電子郵件的許可](receiving-email-permissions.md)。

  如果您想要寫入存在於無法使用 SES *電子郵件接收*的區域中的 S3 儲存貯體，您必須使用具有寫入 S3 許可政策的 IAM 角色作為角色的內嵌政策。您可以直接從主控台套用此動作的許可政策：

  1. 在 **IAM ****角色**欄位中選擇建立新角色，然後輸入名稱，後面接著**建立角色**。（此角色的 IAM 信任政策會自動在背景產生。)

  1. 由於 IAM 信任政策是自動產生的，您只需將動作的許可政策新增至角色 - 選取 IAM 角色欄位下的**檢視**角色以開啟 IAM 主控台。 ****

  1. 在**許可**索引標籤下，選擇**新增許可**，然後選取**建立內嵌政策**。

  1. 在**指定許可**頁面上，選取**政策編輯器**中的 **JSON**。

  1. 將許可政策從 複製並貼[S3 動作的 IAM 角色許可](receiving-email-permissions.md#receiving-email-permissions-s3-iam-role)到**政策編輯器**中，並以您自己的紅色文字取代資料。（請務必刪除編輯器中的任何範例程式碼。)

  1. 選擇**下一步**。

  1. 選擇建立政策，以檢閱並建立 IAM 角色的許可**政策**。

  1. 選取瀏覽器的索引標籤，在其中開啟 SES **Create rule**–**Add action** page，然後繼續建立規則的其餘步驟。
+ **SNS 主題** – 電子郵件儲存至 S3 儲存貯體時要通知的 Amazon SNS 主題名稱或 ARN。SNS 主題 ARN 的範例為 *arn：aws：sns：us-east-1：123456789012：MyTopic*。您也可以選擇建立 SNS 主題，在設定動作時**建立 SNS 主題**。如需 SNS 主題的詳細資訊，請參閱《[Amazon Simple Notification Service 開發人員指南](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)》。
**注意**  
您選擇的 SNS 主題必須與您用來接收電子郵件的 SES 端點位於相同的 AWS 區域。
僅使用*客戶受*管 KMS 金鑰加密搭配與 SES 接收規則相關聯的 SNS 主題，因為您必須編輯 KMS 金鑰政策，才能允許 SES 發佈至 SNS。這與設計無法編輯的*AWS 受管* KMS 金鑰政策相反。

# 發佈至 Amazon SNS 主題動作
<a name="receiving-email-action-sns"></a>

**SNS** 動作使用 Amazon SNS 通知來發佈郵件。通知包含完整的電子郵件內容。此動作有下列選項。
+ **SNS Topic (SNS 主題)** - Amazon SNS 主題的名稱或 ARN，用於發佈電子郵件。Amazon SNS 通知提供您原始、未修改的電子郵件副本，通常是以多用途網際網路郵件延伸 (MIME) 格式顯示。如需 MIME 格式的詳細資訊，請參閱 [RFC 2045](https://tools.ietf.org/html/rfc2045)。
**重要**  
當您選擇透過 Amazon SNS 通知來接收電子郵件時，電子郵件大小上限 (包含標頭) 為 150 KB。大於此規定的電子郵件將被退信。如果您預期電子郵件大於此上限，請將電子郵件儲存到 Amazon S3 儲存貯體。

  Amazon SNS 主題 ARN 的範例為 *arn:aws:sns:us-east-1:123456789012:MyTopic*。選擇 **Create SNS Topic** (建立 SNS 主題) 來設定動作時，也可以建立 Amazon SNS 主題。如需 Amazon SNS 主題的詳細資訊，請參閱 [Amazon Simple Notification Service 開發人員指南](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。
**注意**  
您選擇的 Amazon SNS 主題必須與您用來接收電子郵件的 Amazon SES 端點位於相同的 AWS 區域。
僅使用*客戶受*管 KMS 金鑰加密搭配與 SES 接收規則相關聯的 SNS 主題，因為您必須編輯 KMS 金鑰政策，才能允許 SES 發佈至 SNS。這與設計無法編輯的*AWS 受管* KMS 金鑰政策相反。
+ **Encoding (編碼) - **用於 Amazon SNS 通知內電子郵件的編碼。UTF-8 較易於使用，但是當訊息以不同的編碼格式完成編碼時，可能無法保留所有特殊字元。Base64 會保留所有特殊字元。如需 UTF-8 和 Base64 的資訊，請分別參閱 [RFC 3629](https://tools.ietf.org/html/rfc3629) 和 [RFC 4648](https://tools.ietf.org/html/rfc4648)。

當您收到電子郵件時，Amazon SES 會執行作用中接收規則集中的規則。您可以設定接收規則來使用 Amazon SNS 傳送通知給自己。您的接收規則可以傳送兩種不同類型的通知：
+ **自 SNS 動作傳送的通知** - 將 [SNS](#receiving-email-action-sns) 動作新增至接收規則時，系統會傳送關於電子郵件的資訊以及電子郵件的內容。如果訊息為 150 KB 或較小，此通知類型也包含完整的電子郵件 MIME 本文。
+ **自其他動作類型傳送的通知** - 將任何其他動作類型 (包括 [退信](receiving-email-action-bounce.md)、[Lambda](receiving-email-action-lambda.md)、[停止規則集](receiving-email-action-stop.md)、或者 [WorkMail](receiving-email-action-workmail.md) 動作) 新增至規則集時，您可以選擇是否指定 Amazon SNS 主題。若您這麼做，將會在這些動作執行時收到通知。這些通知包含關於電子郵件的資訊，但不會包含電子郵件的內容。

**Topics**
+ [用於 Amazon SES 電子郵件接收的通知內容](receiving-email-notifications-contents.md)
+ [Amazon SES 電子郵件接收通知的範例](receiving-email-notifications-examples.md)

# 用於 Amazon SES 電子郵件接收的通知內容
<a name="receiving-email-notifications-contents"></a>

所有電子郵件接收的通知，都會以 JavaScript 物件標記法 (JSON) 格式發佈到 Amazon Simple Notification Service (Amazon SNS) 主題。

如需範例通知，請參閱 [通知範例](receiving-email-notifications-examples.md)。

**Contents**
+ [最上層 JSON 物件](#receiving-email-notifications-contents-top-level-json-object)
+ [接收物件](#receiving-email-notifications-contents-receipt-object)
  + [動作物件](#receiving-email-notifications-contents-action-object)
  + [dkimVerdict 物件](#receiving-email-notifications-contents-dkimverdict-object)
  + [dmarcVerdict 物件](#receiving-email-notifications-contents-dmarcverdict-object)
  + [spamVerdict 物件](#receiving-email-notifications-contents-spamverdict-object)
  + [spfVerdict 物件](#receiving-email-notifications-contents-spfverdict-object)
  + [virusVerdict 物件](#receiving-email-notifications-contents-virusverdict-object)
+ [郵件物件](#receiving-email-notifications-contents-mail-object)
  + [commonHeaders 物件](#receiving-email-notifications-contents-mail-object-commonHeaders)

## 最上層 JSON 物件
<a name="receiving-email-notifications-contents-top-level-json-object"></a>

最上層 JSON 物件包含下列欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  notificationType  |  通知類型。針對這一類通知，值一律為 `Received`。  | 
|  [`receipt`](#receiving-email-notifications-contents-receipt-object)  |  包含有關電子郵件傳遞資訊的物件。  | 
|  [`mail`](#receiving-email-notifications-contents-mail-object)  |  包含與通知建立關聯之電子郵件資訊的物件。  | 
|  content  |  包含原始、未修改的電子郵件之字串，通常是以多用途網際網路郵件延伸 (MIME) 格式顯示。如需 MIME 格式的詳細資訊，請參閱 [RFC 2045](https://tools.ietf.org/html/rfc2045)。  此欄位只有在通知由 SNS 動作觸發時才會顯示。由所有其他動作觸發的通知不會包含此欄位。   | 

## 接收物件
<a name="receiving-email-notifications-contents-receipt-object"></a>

`receipt` 物件包含以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  [`action`](#receiving-email-notifications-contents-action-object)  |  封裝關於執行的動作之資訊的物件。如需可能值的清單，請參閱 [動作物件](#receiving-email-notifications-contents-action-object)。  | 
|  [`dkimVerdict`](#receiving-email-notifications-contents-dkimverdict-object)  |  指出網域金鑰識別郵件 (DKIM) 檢查是否通過的物件。如需可能值的清單，請參閱 [dkimVerdict 物件](#receiving-email-notifications-contents-dkimverdict-object)。  | 
| dmarcPolicy | 指出傳送網域的網域型訊息驗證、回報與遵循 (DMARC) 設定。訊息未通過 DMARC 驗證時，此欄位才會出現。 此欄位可能的值為：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/receiving-email-notifications-contents.html) | 
| [`dmarcVerdict`](#receiving-email-notifications-contents-dmarcverdict-object) | 指出是否通過網域型訊息驗證、回報與遵循 (DMARC) 檢查之物件。如需可能值的清單，請參閱 [dmarcVerdict 物件](#receiving-email-notifications-contents-dmarcverdict-object)。 | 
|  processingTimeMillis  |  此字串指出從 Amazon SES 收到訊息到觸發動作的期間範圍，單位為毫秒。  | 
|  recipients  |  由作用中[接收規則](receiving-email-receipt-rules-console-walkthrough.md)匹配的收件人 (特別是信封收件人地址)。此處列出的地址可能與 `destination` 中的 [郵件物件](#receiving-email-notifications-contents-mail-object) 欄位列出之地址不同。  | 
|  [`spamVerdict`](#receiving-email-notifications-contents-spamverdict-object)  |  指出訊息是否為垃圾郵件的物件。如需可能值的清單，請參閱 [spamVerdict 物件](#receiving-email-notifications-contents-spamverdict-object)。  | 
|  [`spfVerdict`](#receiving-email-notifications-contents-spfverdict-object)  |  指出寄件者政策架構 (SPF) 檢查是否通過的物件。如需可能值的清單，請參閱 [spfVerdict 物件](#receiving-email-notifications-contents-spfverdict-object)。  | 
|  timestamp  |  此字串以 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 格式顯示，指出動作觸發的日期與時間。  | 
|  [virusVerdict](#receiving-email-notifications-contents-virusverdict-object)  |  指出訊息是否包含病毒的物件。如需可能值的清單，請參閱 [virusVerdict 物件](#receiving-email-notifications-contents-virusverdict-object)。  | 

### 動作物件
<a name="receiving-email-notifications-contents-action-object"></a>

`action` 物件包含以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  type  |  表示執行的動作類型之字串。可能值為 `S3`、`SNS`、`Bounce`、`Lambda`、`Stop` 以及 `WorkMail`。  | 
|  topicArn  |  此字串中包含 Amazon SNS 主題的 Amazon Resource Name (ARN)，該主題為通知發佈的位置。  | 
|  bucketName  |  此字串中包含 Amazon S3 儲存貯體的名稱，該儲存貯體為訊息發佈的位置。只會為 S3 動作類型顯示。  | 
|  objectKey  |  此字串中包含可唯一識別 Amazon S3 儲存貯體中電子郵件的名稱。這與 `messageId` 中的 [郵件物件](#receiving-email-notifications-contents-mail-object) 相同。只會為 S3 動作類型顯示。  | 
|  smtpReplyCode  |  包含 SMTP 回覆程式碼的字串，如 [RFC 5321](https://tools.ietf.org/html/rfc5321) 中所定義。只會為退信動作類型顯示。  | 
|  statusCode  |  包含 SMTP 強化狀態程式碼的字串，如 [RFC 3463](https://tools.ietf.org/html/rfc3463) 中所定義。只會為退信動作類型顯示。  | 
|  message  |  包含人物的字串 - 可讀文字，包含在退信訊息中。只會為退信動作類型顯示。  | 
|  sender  |  其中包含的遭退信的電子郵件之寄件者電子郵件的地址字串。此為送出退信訊息的地址。只會為退信動作類型顯示。  | 
|  functionArn  |  此字串中包含被觸發的 Lambda 函數之 ARN。只會為 Lambda 動作類型顯示。  | 
|  invocationType  |  此字串中包含 Lambda 函數的叫用類型。可能值為 `RequestResponse` 和 `Event`。只會為 Lambda 動作類型顯示。  | 
|  organizationArn  |  其中包含 Amazon WorkMail 組織 ARN 的字串。只會為 WorkMail 動作類型顯示。  | 

### dkimVerdict 物件
<a name="receiving-email-notifications-contents-dkimverdict-object"></a>

`dkimVerdict` 物件包含以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  status  |  包含 DKIM verdict 的字串。可能值為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/receiving-email-notifications-contents.html)  | 

### dmarcVerdict 物件
<a name="receiving-email-notifications-contents-dmarcverdict-object"></a>

`dmarcVerdict` 物件包含以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  status  |  包含 DMARC verdict 的字串。可能值為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/receiving-email-notifications-contents.html)  | 

### spamVerdict 物件
<a name="receiving-email-notifications-contents-spamverdict-object"></a>

`spamVerdict` 物件包含以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  status  |  其中包含垃圾郵件掃描結果的字串。可能值為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/receiving-email-notifications-contents.html)  | 

### spfVerdict 物件
<a name="receiving-email-notifications-contents-spfverdict-object"></a>

`spfVerdict` 物件包含以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  status  |  包含 SPF verdict 的字串。可能值為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/receiving-email-notifications-contents.html)  | 

### virusVerdict 物件
<a name="receiving-email-notifications-contents-virusverdict-object"></a>

`virusVerdict` 物件包含以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  status  |  其中包含病毒掃描結果的字串。可能值為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/receiving-email-notifications-contents.html)  | 

## 郵件物件
<a name="receiving-email-notifications-contents-mail-object"></a>

`mail` 物件包含以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|   destination  |  來自傳入郵件的 MIME 標題之所有收件人地址的完整清單 (包括「收件人：」與「副本：」收件人)。  | 
|  messageId  |  此字串中包含 Amazon SES 指派給電子郵件的唯一 ID。如果電子郵件是遞送至 Amazon S3，訊息 ID 同時也是用來將訊息寫入 Amazon S3 儲存貯體的 Amazon S3 物件金鑰。  | 
|  source  |  包含寄出電子郵件的電子郵件地址字串 (特別是信封的寄件人地址)。  | 
|  timestamp  |  其中包含收到電子郵件時間的字串，以 ISO8601 格式顯示。  | 
|  headers  |  Amazon SES 標頭和您的自訂標頭。每個標頭包含以下欄位：`name` 和 `value`。  | 
|  [`commonHeaders`](#receiving-email-notifications-contents-mail-object-commonHeaders)  |  所有電子郵件常用的標頭。每個標頭包含以下欄位：`name` 和 `value`。  | 
|  headersTruncated  |  此字串說明通知中的標頭是否被截斷，會在標頭大於 10 KB 時顯示。可能值為 `true` 和 `false`。  | 

### commonHeaders 物件
<a name="receiving-email-notifications-contents-mail-object-commonHeaders"></a>

`commonHeaders` 物件可具有下表所示的欄位。此物件中存在的欄位，取決於傳入電子郵件中存在的欄位。


| 欄位名稱 | Description | 
| --- | --- | 
| messageId | 原始訊息的 ID。 | 
| date | Amazon SES 收到訊息的日期和時間。 | 
| to | 電子郵件的 To 標頭。 | 
| cc | 電子郵件的 CC 標頭。 | 
| bcc | 電子郵件的 BCC 標頭。 | 
| from | 電子郵件的 From 標頭。 | 
| sender | 電子郵件的 Sender 標頭。 | 
| returnPath | 電子郵件的 Return-Path 標頭。 | 
| replyTo | 電子郵件的 Reply-To 標頭。 | 
| subject | 電子郵件的 Subject 標頭。 | 

# Amazon SES 電子郵件接收通知的範例
<a name="receiving-email-notifications-examples"></a>

此章節包含下列類型的通知範例：
+ [因 SNS 動作而傳送的通知。](#receiving-email-notifications-examples-sns-action)
+ [做為其他動作類型結果傳出的通知](#receiving-email-notifications-examples-alert) (*提醒通知*)。

## SNS 動作的通知
<a name="receiving-email-notifications-examples-sns-action"></a>

本節包含 SNS 動作通知的範例。與之前顯示的提醒通知不同，此通知包含內有電子郵件的 `content` 部分，通常是多用途網際網路郵件延伸 (MIME) 格式。

```
{
  "notificationType":"Received",
  "receipt":{
    "timestamp":"2015-09-11T20:32:33.936Z",
    "processingTimeMillis":222,
    "recipients":[
      "recipient@example.com"
    ],
    "spamVerdict":{
      "status":"PASS"
    },
    "virusVerdict":{
      "status":"PASS"
    },
    "spfVerdict":{
      "status":"PASS"
    },
    "dkimVerdict":{
      "status":"PASS"
    },
    "action":{
      "type":"SNS",
      "topicArn":"arn:aws:sns:us-east-1:012345678912:example-topic"
    }
  },
  "mail":{
    "timestamp":"2015-09-11T20:32:33.936Z",
    "source":"61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com",
    "messageId":"d6iitobk75ur44p8kdnnp7g2n800",
    "destination":[
      "recipient@example.com"
    ],
    "headersTruncated":false,
    "headers":[
      {
        "name":"Return-Path",
        "value":"<0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com>"
      },
      {
        "name":"Received",
        "value":"from a9-183.smtp-out.amazonses.com (a9-183.smtp-out.amazonses.com [54.240.9.183]) by inbound-smtp.us-east-1.amazonaws.com with SMTP id d6iitobk75ur44p8kdnnp7g2n800 for recipient@example.com; Fri, 11 Sep 2015 20:32:33 +0000 (UTC)"
      },
      {
        "name":"DKIM-Signature",
        "value":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1442003552; h=From:To:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID:Feedback-ID; bh=DWr3IOmYWoXCA9ARqGC/UaODfghffiwFNRIb2Mckyt4=; b=p4ukUDSFqhqiub+zPR0DW1kp7oJZakrzupr6LBe6sUuvqpBkig56UzUwc29rFbJF hlX3Ov7DeYVNoN38stqwsF8ivcajXpQsXRC1cW9z8x875J041rClAjV7EGbLmudVpPX 4hHst1XPyX5wmgdHIhmUuh8oZKpVqGi6bHGzzf7g="
      },
      {
        "name":"From",
        "value":"sender@example.com"
      },
      {
        "name":"To",
        "value":"recipient@example.com"
      },
      {
        "name":"Subject",
        "value":"Example subject"
      },
      {
        "name":"MIME-Version",
        "value":"1.0"
      },
      {
        "name":"Content-Type",
        "value":"text/plain; charset=UTF-8"
      },
      {
        "name":"Content-Transfer-Encoding",
        "value":"7bit"
      },
      {
        "name":"Date",
        "value":"Fri, 11 Sep 2015 20:32:32 +0000"
      },
      {
        "name":"Message-ID",
        "value":"<61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>"
      },
      {
        "name":"X-SES-Outgoing",
        "value":"2015.09.11-54.240.9.183"
      },
      {
        "name":"Feedback-ID",
        "value":"1.us-east-1.Krv2FKpFdWV+KUYw3Qd6wcpPJ4Sv/pOPpEPSHn2u2o4=:AmazonSES"
      }
    ],
    "commonHeaders":{
      "returnPath":"0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com",
      "from":[
        "sender@example.com"
      ],
      "date":"Fri, 11 Sep 2015 20:32:32 +0000",
      "to":[
        "recipient@example.com"
      ],
      "messageId":"<61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>",
      "subject":"Example subject"
    }
  },
  "content":"Return-Path: <61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>\r\nReceived: from a9-183.smtp-out.amazonses.com (a9-183.smtp-out.amazonses.com [54.240.9.183])\r\n by inbound-smtp.us-east-1.amazonaws.com with SMTP id d6iitobk75ur44p8kdnnp7g2n800\r\n for recipient@example.com;\r\n Fri, 11 Sep 2015 20:32:33 +0000 (UTC)\r\nDKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;\r\n\ts=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1442003552;\r\n\th=From:To:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID:Feedback-ID;\r\n\tbh=DWr3IOmYWoXCA9ARqGC/UaODfghffiwFNRIb2Mckyt4=;\r\n\tb=p4ukUDSFqhqiub+zPR0DW1kp7oJZakrzupr6LBe6sUuvqpBkig56UzUwc29rFbJF\r\n\thlX3Ov7DeYVNoN38stqwsF8ivcajXpQsXRC1cW9z8x875J041rClAjV7EGbLmudVpPX\r\n\t4hHst1XPyX5wmgdHIhmUuh8oZKpVqGi6bHGzzf7g=\r\nFrom: sender@example.com\r\nTo: recipient@example.com\r\nSubject: Example subject\r\nMIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\nDate: Fri, 11 Sep 2015 20:32:32 +0000\r\nMessage-ID: <61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>\r\nX-SES-Outgoing: 2015.09.11-54.240.9.183\r\nFeedback-ID: 1.us-east-1.Krv2FKpFdWV+KUYw3Qd6wcpPJ4Sv/pOPpEPSHn2u2o4=:AmazonSES\r\n\r\nExample content\r\n"
}
```

## 提醒通知
<a name="receiving-email-notifications-examples-alert"></a>

本節包含可由 S3 動作觸發的 Amazon SNS 通知範例。Lambda 動作、退信動作、停止動作與 WorkMail 動作所觸發的通知皆類似。雖然通知包含關於電子郵件的資訊，但不會包含電子郵件本身的內容。

```
{
     "notificationType": "Received",
	   "receipt": {
	     "timestamp": "2015-09-11T20:32:33.936Z",
	     "processingTimeMillis": 406,
	     "recipients": [
	       "recipient@example.com"
	     ],
	     "spamVerdict": {
	       "status": "PASS"
	     },
	     "virusVerdict": {
	       "status": "PASS"
	     },
	     "spfVerdict": {
	       "status": "PASS"
	     },
	     "dkimVerdict": {
	       "status": "PASS"
	     },
	     "action": {
	       "type": "S3",
	       "topicArn": "arn:aws:sns:us-east-1:012345678912:example-topic",
	       "bucketName": "my-S3-bucket",
	       "objectKey": "\email"
	     }
	   },
	   "mail": {
	     "timestamp": "2015-09-11T20:32:33.936Z",
	     "source": "0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com",
	     "messageId": "d6iitobk75ur44p8kdnnp7g2n800",
	     "destination": [
	       "recipient@example.com"
	     ],
	     "headersTruncated": false,
	     "headers": [
	       {
	         "name": "Return-Path",
	         "value": "<0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com>"
	       },
	       {
	         "name": "Received",
	         "value": "from a9-183.smtp-out.amazonses.com (a9-183.smtp-out.amazonses.com [54.240.9.183]) by inbound-smtp.us-east-1.amazonaws.com with SMTP id d6iitobk75ur44p8kdnnp7g2n800 for recipient@example.com; Fri, 11 Sep 2015 20:32:33 +0000 (UTC)"
	       },
	       {
	         "name": "DKIM-Signature",
	         "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1442003552; h=From:To:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID:Feedback-ID; bh=DWr3IOmYWoXCA9ARqGC/UaODfghffiwFNRIb2Mckyt4=; b=p4ukUDSFqhqiub+zPR0DW1kp7oJZakrzupr6LBe6sUuvqpBkig56UzUwc29rFbJF hlX3Ov7DeYVNoN38stqwsF8ivcajXpQsXRC1cW9z8x875J041rClAjV7EGbLmudVpPX 4hHst1XPyX5wmgdHIhmUuh8oZKpVqGi6bHGzzf7g="
	       },
	       {
	         "name": "From",
	         "value": "sender@example.com"
	       },
	       {
	         "name": "To",
	         "value": "recipient@example.com"
	       },
	       {
	         "name": "Subject",
	         "value": "Example subject"
	       },
	       {
	         "name": "MIME-Version",
	         "value": "1.0"
	       },
	       {
	         "name": "Content-Type",
	         "value": "text/plain; charset=UTF-8"
	       },
	       {
	         "name": "Content-Transfer-Encoding",
	         "value": "7bit"
	       },
	       {
	         "name": "Date",
	         "value": "Fri, 11 Sep 2015 20:32:32 +0000"
	       },
	       {
	         "name": "Message-ID",
	         "value": "<61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>"
	       },
	       {
	         "name": "X-SES-Outgoing",
	         "value": "2015.09.11-54.240.9.183"
	       },
	       {
	         "name": "Feedback-ID",
	         "value": "1.us-east-1.Krv2FKpFdWV+KUYw3Qd6wcpPJ4Sv/pOPpEPSHn2u2o4=:AmazonSES"
	       }
	     ],
	     "commonHeaders": {
	       "returnPath": "0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com",
	       "from": [
	         "sender@example.com"
	       ],
	       "date": "Fri, 11 Sep 2015 20:32:32 +0000",
	       "to": [
	         "recipient@example.com"
	       ],
	       "messageId": "<61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>",
	       "subject": "Example subject"
	     }
	   }
	 }
```

# 停止規則集動作
<a name="receiving-email-action-stop"></a>

**停止**動作會終止接收規則集的判斷，且可選擇是否透過 Amazon SNS 通知您。此動作有下列選項。
+ **SNS Topic (SNS 主題)** - Amazon SNS 主題的名稱或 ARN，用以於執行停止動作時通知。Amazon SNS 主題 ARN 的範例為 *arn:aws:sns:us-east-1:123456789012:MyTopic*。選擇 **Create SNS Topic** (建立 SNS 主題) 來設定動作時，也可以建立 Amazon SNS 主題。如需 Amazon SNS 主題的詳細資訊，請參閱 [Amazon Simple Notification Service 開發人員指南](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。
**注意**  
您選擇的 Amazon SNS 主題必須與您用來接收電子郵件的 Amazon SES 端點位於相同的 AWS 區域。

# 與 Amazon WorkMail 整合動作
<a name="receiving-email-action-workmail"></a>

**WorkMail** 動作與 Amazon WorkMail 整合。如果 Amazon WorkMail 執行所有電子郵件處理，因為 Amazon WorkMail 會自動完成設定，所以您通常不會直接使用此動作。此動作有下列選項。
+ **Organization ARN (組織 ARN)** - Amazon WorkMail 組織的 ARN。Amazon WorkMail 組織 ARN 的格式為 `arn:aws:workmail:region:account_ID:organization/organization_ID`，其中：
  + `region` 是您使用 Amazon SES 和 Amazon WorkMail 的區域 (您必須從同一區域使用)，例如 us-east-1。
  + `account_ID` 是 AWS 帳戶 ID。您可以在 AWS 管理主控台的帳戶[https://console.aws.amazon.com/billing/home?#/account](https://console.aws.amazon.com/billing/home?#/account)頁面上找到您的帳戶 AWS ID。
  + 當您建立組織時，`organization_ID` 為 Amazon WorkMail 產生的唯一識別符。您可以在 Amazon WorkMail 主控台中您組織的 Organization Settings (組織設定) 頁面上找到組織 ID。

  完整 Amazon WorkMail 組織 ARN 的範例為 *arn:aws:workmail:us-east-1:123456789012:organization/m-68755160c4cb4e29a2b2f8fb58f359d7*。如需 Amazon WorkMail 組織的資訊，請參閱 [Amazon WorkMail 管理員指南](https://docs.aws.amazon.com/workmail/latest/adminguide/organizations_overview.html)。
+ **SNS Topic (SNS 主題)** - Amazon SNS 主題的名稱或 ARN，用來於執行 Amazon WorkMail 動作時通知。Amazon SNS 主題 ARN 的範例為 *arn:aws:sns:us-east-1:123456789012:MyTopic*。選擇 **Create SNS Topic** (建立 SNS 主題) 來設定動作時，也可以建立 Amazon SNS 主題。如需 Amazon SNS 主題的詳細資訊，請參閱 [Amazon Simple Notification Service 開發人員指南](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。
**注意**  
您選擇的 Amazon SNS 主題必須與您用來接收電子郵件的 Amazon SES 端點位於相同的 AWS 區域。

**注意**  
Amazon SES 僅在提供 WorkMail 的地區支援 WorkMail 動作。請參閱 AWS 一般參考中的 [Amazon WorkMail 端點和配額](https://docs.aws.amazon.com/general/latest/gr/workmail.html)。

# 建立 IP 地址篩選條件主控台演練
<a name="receiving-email-ip-filtering-console-walkthrough"></a>

本節將引導您使用 Amazon SES 主控台設定 IP 地址篩選條件。IP 地址篩選可讓您提供廣泛的控制層級。這些 IP 篩選條件可讓您明確封鎖或允許來自特定 IP 地址或 IP 地址範圍的所有郵件。

或者，您也可以使用 `CreateReceiptFilter` API 來建立 IP 地址篩選條件，如 [Amazon Simple Storage Service API 參考資料](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptFilter.html)中所述。

**注意**  
如果您只想要自已知 IP 地址的有限清單中接收郵件，請設定包含 `0.0.0.0/0` 的封鎖清單，然後再設定一組允許清單，其中包含您信任的 IP 地址。根據預設，此組態將封鎖所有 IP 地址，而且只允許接收明確指定的 IP 地址傳送的郵件。

## 先決條件
<a name="ip-filtering-prerequisites"></a>

在繼續使用 IP 地址篩選條件設定收件人型電子郵件控制之前，必須符合下列先決條件：

1. 您首先需要在 Amazon SES 中[建立並驗證網域身分](verify-addresses-and-domains.md)。

1. 接下來，您需要指定哪些郵件服務器可以透過[發佈 MX 記錄](receiving-email-mx-record.md)至您網域的 DNS 設定來接受您網域的郵件。(MX 記錄應參考 Amazon SES 端點，該端點會接收您使用 Amazon SES 之 AWS 區域的郵件。)

## 建立 IP 地址篩選條件
<a name="receipt-rules-create-ip-filters"></a>

**若要建立 IP 地址篩選條件 (主控台)**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)：// 開啟 Amazon SES 主控台。

1. 在左側導覽窗格中，選擇 **Email Receiving (電子郵件接收)**。

1. 選取 **IP address filters (IP 地址篩選條件)** 索引標籤。

1. 選擇 **Create Filter** (建立篩選條件)。

1. 輸入篩選條件的唯一名稱 - 欄位的圖例會指出語法要求。(名稱必須少於 64 英數、連字號 (-)、底線 (\$1) 和句點 (.) 等字元。名稱必須以字母或數字開頭和結尾。)

1. 輸入 IP 地址或 IP 地址範圍 - 欄位的圖例會提供無類別網域間路由 (CIDR) 語法指定的範例。(單一 IP 地址的範例為 10.0.0.1。 IP 地址範圍的範例為 10.0.0.1/24。如需 CIDR 表示法的詳細資訊，請參閱 [RFC 2317](https://tools.ietf.org/html/rfc2317)。)

1. 選擇 **Policy type (政策類型)**，方法是選取 **Block (封鎖)** 或 **Allow (允許)** 選項按鈕。

1. 選擇 **Create filter (建立篩選條件)**。

1. 如果您想要新增另一個 IP 篩選條件，請選擇 **Create filter (建立篩選條件)**，然後針對您要新增的每個額外篩選條件重複上述步驟。

1. 如果您要移除 IP 地址篩選條件，請選取該篩選條件，然後選擇 **Delete (刪除)** 按鈕。

# 檢視 Amazon SES 電子郵件接收指標
<a name="receiving-email-metrics"></a>

如果您已在 Amazon SES 中啟用電子郵件接收功能，並且已建立電子郵件接收規則，則可以使用 Amazon CloudWatch 檢視這些接收規則設定和規則的指標。

在 CloudWatch 主控台中，您可以在 **指標** > **所有指標** > **SES** > **接收規則集指標** 和 **接收規則指標** 找到指標。

**注意**  
如果您尚未執行以下操作，則 **接收規則集指標** 和 **接收規則指標** 不會出現在 **SES** 下：  
[啟用電子郵件接收](receiving-email-setting-up.md)
[建立任何接收規則](receiving-email-receipt-rules-console-walkthrough.md)
收到任何符合接收規則的電子郵件。

下列訊息指標可供使用：
+ **訊息接收**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/receiving-email-metrics.html)
+ **訊息發布**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/receiving-email-metrics.html)

**注意**  
在上述表格中，術語*套用*表示寄件者未列入 IP 篩選器封鎖清單或在 SES 的內部封鎖清單中，而且該規則具有相符的收件人條件和相符的 TLS 政策。
如果您刪除或撤回使用某個 Amazon S3 儲存貯體、Amazon SNS 主題或 Lambda 函數的許可，且已設定讓其中一個接收規則的動作使用該許可，便可能導致發布錯誤。
由於一次只能有一個規則設定處於啟用狀態，因此 SES 會針對您在 CloudWatch 中選取的時間範圍內處於啟用狀態的所有規則設定，發布為顯示*規則名稱：[啟用]* 的彙總指標。這樣做的好處是讓您可以自由更改規則設定，而無需對警報設定進行任何更改。

**重要**  
您所做的修復使用規則集變更將只適用於 Amazon SES 在更新後所收到的電子郵件。將永遠根據收到電子郵件時已設定好的接收規則集來評估電子郵件。

SES *接收規則設定*的指標顯示於 CloudWatch 主控台中。

![\[CloudWatch 中的接收規則設定指標。\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/images/inbound_cloudwatch_rule_set_metrics.png)


SES *接收規則*的指標顯示於 CloudWatch 主控台中。

![\[CloudWatch 中的接收規則指標。\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/images/inbound_cloudwatch_rule_metrics.png)
