

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

# 在 Amazon SES 中設定身分
<a name="configure-identities"></a>

Amazon Simple Email Service (Amazon SES) 使用簡易郵件傳輸協定 (SMTP) 來傳送電子郵件。由於 SMTP 不提供任何身分驗證功能，垃圾郵件發信者可以隱藏真正的原始伺服器，並傳送聲稱由他人寄出的電子郵件訊息。垃圾郵件發信者偽造電子郵件標題和冒充的來源 IP 地址，用以誤導收件人相信自己收到的電子郵件訊息是可信的。

大多數轉發電子郵件流量的 ISP 將採取措施來評估電子郵件是否具真實性。ISP 採取的其中一項措施是判斷電子郵件是否經身分*身分驗證*。身分驗證要求寄件者確認他們是傳出電子郵件之帳戶的持有者。在某些情況下，ISP 將拒絕轉發未經身分驗證的電子郵件。為確保最佳可交付性，我們建議您驗證電子郵件身分。

以下章節說明 ISP 所使用的兩種身分驗證機制 (寄件者政策架構 (SPF) 和網域金鑰識別郵件 (DKIM))，並提供透過 Amazon SES中使用這些標準的方法說明。
+ SPF 提供回溯追蹤傳出電子郵件訊息的系統之方法，若需了解詳細資訊，請參閱 [在 Amazon SES 中透過 SPF 驗證電子郵件](send-email-authentication-spf.md)。
+ DKIM 是一種可讓您簽署電子郵件訊息的標準，讓 ISP 得知您的訊息真實性，且確認在傳輸過程中未經篡改，若需了解詳細資訊，請參閱 [在 Amazon SES 中透過 DKIM 驗證電子郵件](send-email-authentication-dkim.md)。
+ 若要了解如何遵守倚賴 SPF 和 DKIM 執行的網域型訊息驗證、回報與遵循 (DMARC) 之詳細資訊，請參閱 [遵守 Amazon SES 中的 DMARC 身份驗證協議](send-email-authentication-dmarc.md)。

# 電子郵件身分驗證方法
<a name="email-authentication-methods"></a>

Amazon Simple Email Service (Amazon SES) 使用簡易郵件傳輸協定 (SMTP) 來傳送電子郵件。由於 SMTP 本身不提供任何身分驗證功能，垃圾郵件發信者可以隱藏真正的原始伺服器，並傳送聲稱由他人寄出的電子郵件訊息。垃圾郵件發信者偽造電子郵件標題和冒充的來源 IP 地址，用以誤導收件人相信自己收到的電子郵件訊息是可信的。

大多數轉發電子郵件流量的 ISP 將採取措施來評估電子郵件是否具真實性。ISP 採取的其中一項措施是判斷電子郵件是否經身分身分驗證。身分驗證要求寄件者確認他們是傳出電子郵件之帳戶的持有者。在某些情況下，ISP 將拒絕轉發未經身分驗證的電子郵件。為確保最佳可交付性，我們建議您驗證電子郵件身分。

**Topics**
+ [在 Amazon SES 中透過 DKIM 驗證電子郵件](send-email-authentication-dkim.md)
+ [在 Amazon SES 中透過 SPF 驗證電子郵件](send-email-authentication-spf.md)
+ [使用自訂「寄件人」網域](mail-from.md)
+ [遵守 Amazon SES 中的 DMARC 身份驗證協議](send-email-authentication-dmarc.md)
+ [在 Amazon SES 中使用 BIMI](send-email-authentication-bimi.md)

# 在 Amazon SES 中透過 DKIM 驗證電子郵件
<a name="send-email-authentication-dkim"></a>

*網域金鑰識別郵件* (*DKIM*) 是一項電子郵件安全性標準，旨在確保聲稱來自特定網域的電子郵件確實是由該網域的擁有者授權傳送。它使用公有金鑰加密法來使用私密金鑰簽署電子郵件。接著，收件人伺服器可以使用發佈至網域 DNS 的公有金鑰來確認電子郵件的各個部分在傳輸期間未被修改。

DKIM 簽章可選用。您可以決定是否使用 DKIM 簽章來簽署電子郵件，以於透過符合 DKIM 規範的電子郵件供應商提升遞送度。Amazon SES 提供兩種選項來使用 DKIM 簽章簽署您的訊息：
+ **Easy DKIM**：SES 會產生公有-私有金鑰對，並自動將 DKIM 簽章新增至您由此身分傳送的每個訊息，請參閱 [Amazon SES 中的 Easy DKIM](send-email-authentication-dkim-easy.md)。
+ **確定性 Easy DKIM (DEED)**：透過 AWS 區域 建立可自動繼承 DKIM 簽署屬性作為使用 Easy DKIM 之父系身分的複本身分，可讓您跨多個 維持一致的 DKIM 簽署，請參閱 [在 Amazon SES 中使用確定性 Easy DKIM (DEED)](send-email-authentication-dkim-deed.md)。
+ **BYODKIM (使用自有 DKIM)**：提供自有公有-私有金鑰對，以便讓 SES 新增 DKIM 簽章至您由此身分傳送的每封郵件，請參閱 [在 Amazon SES 中提供您自己的 DKIM 身分驗證字符 (BYODKIM)](send-email-authentication-dkim-bring-your-own.md)。
+ **手動新增 DKIM 簽章**：將您自己的 DKIM 簽章新增至使用 `SendRawEmail` API 傳送的電子郵件，請參閱 [在 Amazon SES 中手動執行 DKIM 簽署](send-email-authentication-dkim-manual.md)。

## DKIM 簽署金鑰長度
<a name="send-email-authentication-dkim-1024-2048"></a>

由於許多 DNS 供應商現在完全支援 DKIM 2048 位元 RSA 加密，Amazon SES 也支援 DKIM 2048 以實現更安全的電子郵件身分驗證，因此在從 API 或主控台設定 Easy DKIM 時使用它作為預設的金鑰長度。也可在「使用自有 DKIM (BYODKIM)」中設定和使用 2048 位元金鑰，其中您的簽署金鑰長度必須至少為 1024 位元且不超過 2048 位元。

為了安全性以及您的電子郵件的傳遞能力，當設定為 Easy DKIM 時，您可以選擇使用 1024 和 2048 位元金鑰長度，以及在發生由仍然不支援 2048 的 DNS 供應商所造成的任何問題時靈活地回復到 1024 位元。*建立新的身分時，除非您指定 1024，否則會預設 DKIM 2048 來建立身分。*

為了保留傳輸電子郵件的可交付性，您變更 DKIM 金鑰長度的頻率有一定限制。限制包括：
+ 無法切換到已設定的金鑰長度。
+ 無法在 24 小時內多次切換到不同的金鑰長度 (除非這是該期間的第一次降級到 1024)。

當您的電子郵件在傳輸過程中時，DNS 會使用您的公有金鑰來驗證電子郵件；因此，如果您變更金鑰太快或過於頻繁，DNS 可能無法對您的電子郵件進行 DKIM 驗證，因為之前的金鑰可能已經失效。因此，這些限制可以防範上述問題。

## DKIM 考量因素
<a name="send-email-authentication-dkim-easy-considerations"></a>

當您使用 DKIM 來驗證電子郵件時，會套用以下規則：
+ 您只需要針對 "From" 地址中使用的網域設定 DKIM。您不需要針對 "Return-Path" 或 "Reply-to" 地址中使用的網域設定 DKIM。
+ Amazon SES 可在數個 AWS 區域使用。如果您使用多個 AWS 區域來傳送電子郵件，則必須完成每個區域的 DKIM 設定程序，以確保所有電子郵件均有 DKIM 簽章。
+ 由於 DKIM 屬性是繼承自父系網域，因此當您使用 DKIM 身分驗證來驗證網域時：
  + DKIM 身分驗證也將套用到該網域的所有子網域。
    + 如果您不希望子網域使用 DKIM 身分驗證以及稍後要重新啟用的功能，則可以透過停用繼承讓子網域的 DKIM 設定覆寫父系網域的設定。
  + DKIM 驗證也將套用到所有從參考其地址中 DKIM 身分驗證網域的電子郵件身分發送的電子郵件。
    + 如果您希望發送郵件而不進行 DKIM 身分驗證，可以透過停用繼承來讓電子郵件地址的 DKIM 設定覆寫子網域 (如果適用) 和父系網域的設定，以及以後要重新啟用的功能。

## 了解繼承的 DKIM 簽署屬性
<a name="dkim-easy-setup-email-key-points"></a>

首先必須了解，如果使用 DKIM 設定父系網域，電子郵件地址身分會從父系網域繼承其 DKIM 簽署屬性，不論是否使用 Easy DKIM 或 BYODKIM。因此，停用或啟用電子郵件地址身分上的 DKIM 簽署，實際上是根據以下重要事實覆寫網域的 DKIM 簽署屬性：
+ 如果您已設定電子郵件地址所屬網域的 Easy DKIM，即不需要一併為電子郵件地址身分啟用 DKIM 簽署。
  + 當您為某個網域設定 DKIM 時，Amazon SES 會自動透過從父系網域繼承的 DKIM 屬性驗證來自該網域每個地址的每封電子郵件。
+ 特定電子郵件地址身分的 DKIM 設定會*自動覆寫該地址所屬父系網域或子網域 (如適用) 的設定*。

由於電子郵件地址身分的 DKIM 簽署屬性是繼承自父系網域，因此如果您打算覆寫這些屬性，您必須牢記覆寫的階層規則，如下表所述。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/send-email-authentication-dkim.html)

通常不建議停用 DKIM 簽署，因為有可能會損害寄件者評價，而且會增加將您傳送的郵件送往垃圾郵件資料夾或網域遭到假冒的風險。

不過，可以因應任何特定使用案例或異常業務決策，而覆寫電子郵件地址身分上的網域繼承 DKIM 簽署屬性，以永久或暫時停用 DKIM 簽署，或稍後再重新啟用。請參閱[覆寫電子郵件地址身分上的繼承 DKIM 簽署](send-email-authentication-dkim-easy-managing.md#send-email-authentication-dkim-easy-setup-email)。

# Amazon SES 中的 Easy DKIM
<a name="send-email-authentication-dkim-easy"></a>

當您為某個網域身分設定 Easy DKIM 時，Amazon SES 會自動為該身分傳送的每封電子郵件新增一個 2048 位元 DKIM 金鑰。您可以使用 Amazon SES 主控台或 API 來設定 Easy DKIM。

**注意**  
若要設定 Easy DKIM，您必須修改您網域的 DNS 設定。如果您使用 Route 53 做為 DNS 供應商，Amazon SES 可自動為您建立適當的記錄。如果您使用其他 DNS 供應商，請參閱您的供應商文件以進一步了解如何變更網域的 DNS 設定。

**警告**  
如果您目前已啟用 BYODKIM 並正在轉移到 Easy DKIM，請注意，在設定 Easy DKIM 且您的 DKIM 狀態處於待定狀態時，Amazon SES 不會使用 BYODKIM 登入您的電子郵件。從您呼叫啟用 Easy DKIM(透過 API 或主控台)到 SES 可以確認您的 DNS 組態的那一刻，您的電子郵件可能會由 SES 傳送，而無需 DKIM 簽章。因此，建議使用中繼步驟從一種 DKIM 簽署方法遷移到另一種方法(例如，使用啟用了 BYODKIM 的子網域，然後在 Easy DKIM 驗證通過後將其刪除)，或者在應用程式停機期間執行此活動(如果有)。

## 為已驗證網域身分設定 Easy DKIM
<a name="send-email-authentication-dkim-easy-setup-domain"></a>

本節中的過程經過簡化，只顯示在已建立的網域身分上設定 Easy DKIM 所需的步驟。若您尚未建立網域身分，或想要查看自訂網域身分的所有可用選項，例如使用預設組態集、自訂的「寄件人」網域和標籤，請參閱 [建立網域身分](creating-identities.md#verify-domain-procedure)。

建立 Easy DKIM 網域身分的一部分任務是設定其 DKIM 型驗證，其中可以選擇接受 Amazon SES 預設值 2048 位元，或透過選取 1024 位元來覆蓋預設值。請參閱 [DKIM 簽署金鑰長度](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)，深入了解 DKIM 簽署金鑰長度以及如何變更金鑰長度。

**為網域設定 Easy DKIM**

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

1. 在導覽窗格中的**組態**下，選擇**身分**。

1. 在身分清單中，選擇 **Identity type (身分類型)** 是 *Domain (網域)* 的身分。
**注意**  
如果您需要建立或驗證網域，請參閱 [建立網域身分](creating-identities.md#verify-domain-procedure)。

1. 在 **Authentication (身分驗證)** 索引標籤下方的 **網域金鑰識別郵件 (DKIM)** 容器中，選擇 **Edit (編輯)**。

1. 在 **Advanced DKIM settings (進階 DKIM 設定)** 容器中，選擇 **Identity type (身分類型)** 欄位中的 **Easy DKIM** 按鈕。

1. 在 **DKIM signing key length (DKIM 簽署金鑰長度)** 欄位中，選擇 [**RSA\$12048\$1BIT** 或 **RSA\$11024\$1BIT**](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)。

1. 在 **DKIM signatures (DKIM 簽章)** 欄位中，選中 **Enabled (已啟用)** 方塊。

1. 選擇**儲存變更**。

1. 現在您已使用 Easy DKIM 設定了網域身分，您必須透過 DNS 提供者完成驗證程序：繼續執行 [透過 DNS 提供者驗證 DKIM 網域身分](creating-identities.md#just-verify-domain-proc)，然後按照 Easy DKIM 的 DNS 身分驗證程序。

## 變更身分的 Easy DKIM 簽署金鑰長度
<a name="send-email-authentication-dkim-easy-managing-change-key-length"></a>

本節中的程序顯示如何輕鬆變更簽署演算法所需的 Easy DKIM 位元。雖然由於其提供的增強安全性，始終優先使用 2048 位元的簽署長度，但在某些情況下可能需要使用 1024 位元長度，例如必須使用只支援 DKIM 1024 的 DNS 供應商。

為了保留傳輸電子郵件的交付能力，您可以變更或翻轉 DKIM 金鑰長度的頻率有一定限制。

當您的電子郵件在傳輸過程中時，DNS 會使用您的公有金鑰來驗證電子郵件；因此，如果您變更金鑰太快或過於頻繁，DNS 可能無法對您的電子郵件進行 DKIM 身分驗證，因為之前的金鑰可能已經失效。因此，下列限制可防範此問題：
+ 您無法切換到與已設定的金鑰長度相同的金鑰長度。
+ 您無法在 24 小時內多次切換至不同的金鑰長度 (除非是該期間的第一次降級至 1024)。

在使用以下程序變更您的金鑰長度時，如果您刪除其中一個限制，主控台將返回一個錯誤橫幅，指出*您提供的輸入無效*以及無效的原因。

**若要變更 DKIM 簽署金鑰長度位元**

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

1. 在導覽窗格中的 **Configuration (組態)** 下，選擇 **Verified identities (已驗證身分)**。

1. 在身分清單中，選擇您希望變更 DKIM 簽署金鑰長度的身分。

1. 在 **Authentication (身分驗證)** 索引標籤下方的 **網域金鑰識別郵件 (DKIM)** 容器中，選擇 **Edit (編輯)**。

1. 在 **Advanced DKIM settings** (進階 DKIM 設定) 容器的 **DKIM signing key length** (DKIM 簽署金鑰長度) 欄位中，選擇 [**RSA\$12048\$1BIT** 或 **RSA\$11024\$1BIT**](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)。

1. 選擇**儲存變更**。

# 在 Amazon SES 中使用確定性 Easy DKIM (DEED)
<a name="send-email-authentication-dkim-deed"></a>

確定性 Easy DKIM (DEED) 提供跨多個 管理 DKIM 組態的解決方案 AWS 區域。透過簡化 DNS 管理並確保一致的 DKIM 簽署，DEED 可協助您簡化多區域電子郵件傳送操作，同時維持強大的電子郵件身分驗證實務。

## 什麼是確定性 Easy DKIM (DEED)？
<a name="what-is-deed"></a>

確定性 Easy DKIM (DEED) 是一種功能， AWS 區域 可根據使用 [Easy DKIM 設定的父系網域，在所有 中產生一致的 DKIM](send-email-authentication-dkim-easy.md) 字符。這可讓您複寫不同 中的身分 AWS 區域 ，以自動繼承和維護與目前使用 Easy DKIM 設定之父系身分相同的 DKIM 簽署組態。使用 DEED，您只需發佈父身分的 DNS 記錄一次，複本身分將使用相同的 DNS 記錄來驗證網域擁有權和管理 DKIM 簽署。

透過簡化 DNS 管理並確保一致的 DKIM 簽署，DEED 可協助您簡化多區域電子郵件傳送操作，同時維持最佳的電子郵件身分驗證實務。

討論 DEED 時使用的術語：
+ **父系身分** – 使用 Easy DKIM 設定的已驗證身分，做為複本身分的 DKIM 組態來源。
+ **複本身分** – 共用相同 DNS 設定和 DKIM 簽署組態的父身分複本。
+ **父區域** – AWS 區域 設定父身分的 。
+ **複本區域** – AWS 區域 設定複本身分的 。
+ **DEED 身分** – 用作父身分或複本身分的任何身分。（建立新身分時，一開始會將其視為一般 （非 DEED) 身分。 不過，建立複本後，身分就會被視為 DEED 身分。)

使用 DEED 的主要優點包括：
+ **簡化 DNS 管理** – 僅發佈父系身分的 DNS 記錄一次。
+ **更輕鬆的多區域操作** – 簡化將電子郵件傳送操作擴展到新區域的程序。
+ **降低管理開銷** – 從父系身分集中管理 DKIM 組態。

## 確定性 Easy DKIM (DEED) 的運作方式
<a name="how-deed-works"></a>

當您建立複本身分時，Amazon SES 會自動將 DKIM 簽署金鑰從父身分複寫至複本身分。對父身分所做的任何後續 DKIM 金鑰輪換或金鑰長度變更都會自動傳播到所有複本身分。

此程序涉及下列工作流程：

1.  AWS 區域 使用 Easy DKIM 在 中建立父系身分。

1. 設定父系身分所需的 DNS 記錄。

1. 在其他 中建立複本身分 AWS 區域，指定父身分的網域名稱和 DKIM 簽署區域。

1. Amazon SES 會自動將父系的 DKIM 組態複寫至複本身分。

重要考量：
+ 您無法建立已經是複本之身分的複本。
+ 父身分必須啟用 [Easy DKIM](send-email-authentication-dkim-easy.md) - 您無法建立 BYODKIM 複本或手動簽署的身分。
+ 在刪除所有複本身分之前，無法刪除父身分。

## 使用 DEED 設定複本身分
<a name="setting-up-replica-identity"></a>

本節將提供範例，示範如何使用 DEED 以及必要的許可來建立和驗證複本身分。

**Topics**
+ [建立複本身分](#creating-replica-identity)
+ [驗證複本身分組態](#verifying-replica-identity)
+ [使用 DEED 所需的許可](#required-permissions)

### 建立複本身分
<a name="creating-replica-identity"></a>

若要建立複本身分：

1. 在您要建立複本身分 AWS 區域 的 中，開啟位於 https：//[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/) 的 SES 主控台。

   （在 SES 主控台中，複本身分稱為*全域身分*。)

1. 在導覽窗格中，選擇**身分**。

1. 選擇 **Create identity** (建立身分)。

1. 選取**身分類型**下的**網域**，然後輸入您要複寫並做為父系的 Easy DKIM 所設定之現有身分的網域名稱。

1. 展開**進階 DKIM 設定**，然後選取**確定性 Easy DKIM**。

1. 從**父區域**下拉式功能表中，選取父區域，其中具有與您為全域 （複本） 身分輸入之相同名稱的 Easy DKIM 簽署身分所在的父區域。（您的複本區域預設為您登入 SES 主控台的區域。)

1. 確保已啟用 **DKIM 簽章**。

1. （選用） 將一或多個**標籤**新增至您的網域身分。

1. 檢閱組態，然後選擇**建立身分**。

使用 AWS CLI：

若要根據使用 Easy DKIM 設定的父系身分建立複本身分，您需要指定父系的網域名稱、要建立複本身分的區域，以及父系的 DKIM 簽署區域，如此範例所示：

```
aws sesv2 create-email-identity --email-identity example.com --region us-west-2 --dkim-signing-attributes '{"DomainSigningAttributesOrigin": "AWS_SES_US_EAST_1"}'
```

在上述範例中：

1. 將 *example.com* 取代為複寫的父系網域身分。

1. 將 *us-west-2* 取代為要建立複本網域身分的區域。

1. 將 *AWS\$1SES\$1US\$1EAST\$11* 取代為父系的 DKIM 簽署區域，代表其將複寫至複本身分的 Easy DKIM 簽署組態。
**注意**  
`AWS_SES_` 字首表示已使用 Easy DKIM 為父系身分設定 DKIM，且 `US_EAST_1`是其建立 AWS 區域 所在的 。

### 驗證複本身分組態
<a name="verifying-replica-identity"></a>

建立複本身分之後，您可以驗證其已使用父身分的 DKIM 簽署組態正確設定。

**若要驗證複本身分：**

1. 在您 AWS 區域 建立複本身分的 中，開啟位於 https：//[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/) 的 SES 主控台。

1. 在導覽窗格中，選擇**身分**，然後從身分資料表中選取您要驗證**的身分**。

1. 在**身分驗證**索引標籤下，**DKIM 組態**欄位會指出狀態，而**父區域**欄位會指出使用 DEED 進行身分 DKIM 簽署組態的區域。

使用 AWS CLI：

使用 `get-email-identity`命令指定複本的網域名稱和區域：

```
aws sesv2 get-email-identity --email-identity example.com --region us-west-2
```

回應會在 `SigningAttributesOrigin` 參數中包含父區域的值，表示複本身分已成功使用父身分的 DKIM 簽署組態設定：

```
{
  "DkimAttributes": {
    "SigningAttributesOrigin": "AWS_SES_US_EAST_1"
  }
}
```

### 使用 DEED 所需的許可
<a name="required-permissions"></a>

若要使用 DEED，您需要：

1. 在複本區域中建立電子郵件身分的標準許可。

1. 從父區域複寫 DKIM 簽署金鑰的許可。

#### DKIM 複寫的 IAM 政策範例
<a name="example-iam-policy"></a>

下列政策允許 DKIM 簽署金鑰從父身分複寫到指定的複本區域：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDKIMReplication",
      "Effect": "Allow",
      "Action": "ses:ReplicateEmailIdentityDKIMSigningKey",
      "Resource": "arn:aws:ses:us-east-1:123456789124:identity/example.com",
      "Condition": {
        "ForAllValues:StringEquals": {
           "ses:ReplicaRegion": ["us-east-1", "us-east-1"]
        }
      }
    }
  ]
}
```

------

## 最佳實務
<a name="deed-best-practices"></a>

建議使用下列最佳實務：
+ **規劃您的父系和複本區域** – 考慮您選擇的父系區域，因為它將成為複本區域中所用 DKIM 組態的真實來源。
+ **使用一致的 IAM 政策** – 確保您的 IAM 政策允許跨所有預期區域的 DKIM 複寫。
+ **保持父身分為作用中** – 請記住，您的複本身分會繼承父身分的 DKIM 簽署組態，因為此相依性，您必須先刪除所有複本身分，才能刪除父身分。

## 疑難排解
<a name="troubleshooting"></a>

如果您遇到 DEED 問題，請考慮下列事項：
+ **驗證錯誤** – 確保您具有 DKIM 複寫的必要許可。
+ **複寫延遲** – 複寫需要一些時間才能完成，尤其是在建立新的複本身分時。
+ **DNS 問題** – 確認父身分的 DNS 記錄已正確設定並傳播。

# 在 Amazon SES 中提供您自己的 DKIM 身分驗證字符 (BYODKIM)
<a name="send-email-authentication-dkim-bring-your-own"></a>

做為使用 [Easy DKIM](send-email-authentication-dkim-easy.md) 的替代方案，您可以改用您自己的公開/私密金鑰對來設定 DKIM 驗證。此程序稱為*使用自有 DKIM* (*BYODKIM*)。

使用 BYODKIM，您可以使用單一 DNS 記錄來為您的網域設定 DKIM 驗證，而不是 Easy DKIM，後者需要您發佈三個個別的 DNS 記錄。此外，使用 BYODKIM 可讓您為網域輪換 DKIM 金鑰 (以您想要的頻率)。

**Topics**
+ [步驟 1：建立金鑰對](#send-email-authentication-dkim-bring-your-own-create-key-pair)
+ [步驟 2：將選擇器和公有金鑰新增到 DNS 供應商的網域組態](#send-email-authentication-dkim-bring-your-own-update-dns)
+ [步驟 3：將網域設定為使用 BYODKIM 並進行驗證](#send-email-authentication-dkim-bring-your-own-configure-identity)

**警告**  
如果您目前已啟用 Easy DKIM 並正在轉移到 BYODKIM，請注意，在設定 BYODKIM 且您的 DKIM 狀態處於待定狀態時，Amazon SES 不會使用 Easy DKIM 簽署您的電子郵件。從您呼叫啟用 BYODKIM(透過 API 或主控台)到 SES 可以確認您的 DNS 組態的那一刻，您的電子郵件可能會由 SES 傳送，而無需 DKIM 簽章。因此，建議使用中繼步驟從一種 DKIM 簽署方法遷移到另一種方法(例如，使用啟用了 Easy DKIM 的子網域，然後在 BYODKIM 驗證通過後將其刪除)，或者在應用程式停機期間執行此活動(如果有)。

## 步驟 1：建立金鑰對
<a name="send-email-authentication-dkim-bring-your-own-create-key-pair"></a>

若要運用「使用自有 DKIM」功能，您必須先建立 RSA 金鑰對。

您產生的公有金鑰必須採用 PKCS \$11 或 PKCS \$18 格式、必須至少使用 1024 位元 RSA 加密且最高可達 2048 位元，並使用 base64 [(PEM)](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) 編碼方式進行編碼。請參閱 [DKIM 簽署金鑰長度](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)，深入了解 DKIM 簽署金鑰長度以及如何變更金鑰長度。

**注意**  
只要產生的私有金鑰至少使用 1024 位元 RSA 加密 (最高可達 2048 位元)，並使用 base64 [(PEM)](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) 進行編碼，您可以使用第三方應用程式和工具來產生 RSA 金鑰對。

在下列程序中，使用內建於大部分 Linux、macOS 或 Unix 作業系統的 `openssl genrsa` 命令來建立金鑰對的範例程式碼，將自動使用 base64 [(PEM)](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) 編碼。

**從 Linux、macOS 或 Unix 命令列建立金鑰對**

1. 在命令列輸入下列命令來產生私有金鑰，其中將 *nnnn* 取代為至少為 1024 位元的長度，最多為 2048 位元：

   ```
   openssl genrsa -f4 -out private.key nnnn
   ```

1. 在命令列輸入下列命令來產生公有金鑰：

   ```
   openssl rsa -in private.key -outform PEM -pubout -out public.key
   ```

## 步驟 2：將選擇器和公有金鑰新增到 DNS 供應商的網域組態
<a name="send-email-authentication-dkim-bring-your-own-update-dns"></a>

現在您已建立金鑰對，您必須將公有金鑰新增至網域的 DNS 組態，做為 TXT 記錄。

**將公有金鑰新增至網域的 DNS 組態**

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

1. 將新文字記錄新增至網域的 DNS 組態。記錄應該使用下列格式：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/send-email-authentication-dkim-bring-your-own.html)

   在上述範例中，進行下列變更：
   + 以可識別金鑰的唯一名稱取代 *selector*。
**注意**  
少數 DNS 供應商不允許您在記錄名稱中包含底線 (\$1)。不過，DKIM 記錄名稱必須使用底線。如果您的 DNS 供應商不允許您在記錄名稱中輸入底線，請聯絡供應商的客戶支援團隊以尋求協助。
   + 以您的網域取代 *example.com*。
   + 使用您稍早建立的公開金鑰取代 *yourPublicKey*，並包含 `p=` 字首，如上方 *Value* (值) 欄位所示。
**注意**  
將公有金鑰發佈 (新增) 到 DNS 供應商時，格式必須如下：  
您必須刪除所產生公開金鑰的第一行和最後一行 (分別為 `-----BEGIN PUBLIC KEY-----` 和 `-----END PUBLIC KEY-----`)。此外，您必須移除所產生公開金鑰中的換行符號。產生的值是字元的字串，不帶空格或換行符號。
您必須包含 `p=` 字首，如上表中 *Value* (值) 欄位所示。

   不同供應商有不同的 DNS 記錄更新程序。下表包括幾個最常採用的 DNS 供應商的文件連結。這不是完整詳盡的清單，且不提供任何背書；同樣，若您的 DNS 供應商未列入清單，也不表示您無法搭配 Amazon SES 使用該網域。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/send-email-authentication-dkim-bring-your-own.html)

## 步驟 3：將網域設定為使用 BYODKIM 並進行驗證
<a name="send-email-authentication-dkim-bring-your-own-configure-identity"></a>

您可以透過使用主控台或 AWS CLI為新網域 (即您目前未用來透過 Amazon SES 傳送電子郵件的網域) 和現有網域 (即您已設定要搭配 Amazon SES 使用的網域) 設定 BYODKIM。在使用本節中的 AWS CLI 程序之前，您必須先安裝和設定 AWS CLI。如需詳細資訊，請參閱 [AWS Command Line Interface 使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/)。

### 選項 1：建立使用 BYODKIM 的新網域身分
<a name="send-email-authentication-dkim-bring-your-own-configure-identity-new-domain"></a>

本節包含建立使用 BYODKIM 的新網域身分的程序。新的網域身分是您先前未設定要使用 Amazon SES 來傳送電子郵件的網域。

如果您想要將現有的網域設定為使用 BYODKIM，請改為完成 [選項 2：設定現有的網域身分](#send-email-authentication-dkim-bring-your-own-configure-identity-existing-domain) 中的程序。

**若要從主控台使用 BYODKIM 建立身分**
+ 請遵循 [建立網域身分](creating-identities.md#verify-domain-procedure) 的程序，當您進入步驟 8 時，請按照 BYODKIM 的具體說明進行操作。

**從 使用 BYODKIM 建立身分 AWS CLI**

若要設定新網域，請使用 Amazon SES API 中的 `CreateEmailIdentity` 作業。

1. 在文字編輯器中，貼上以下程式碼：

   ```
   {
       "EmailIdentity":"example.com",
       "DkimSigningAttributes":{
           "DomainSigningPrivateKey":"privateKey",
           "DomainSigningSelector":"selector"
       }
   }
   ```

   在上述範例中，進行下列變更：
   + 以您要建立的網域取代 *example.com*。
   + 以您的私密金鑰取代 *privateKey*。
**注意**  
您必須刪除所產生私有金鑰的第一行和最後一行 (分別為 `-----BEGIN PRIVATE KEY-----` 和 `-----END PRIVATE KEY-----`)。此外，您必須移除所產生私有金鑰中的換行符號。產生的值是字元的字串，不帶空格或換行符號。
   + 以您在網域的 DNS 組態中建立 TXT 記錄時所指定的唯一選取器取代 *selector*。

   完成後，請將檔案儲存為 `create-identity.json`。

1. 在命令列中輸入以下命令：

   ```
   aws sesv2 create-email-identity --cli-input-json file://path/to/create-identity.json
   ```

   在上述命令中，將 *path/to/create-identity.json* 取代為您在上一個步驟中建立的檔案的完整路徑。

### 選項 2：設定現有的網域身分
<a name="send-email-authentication-dkim-bring-your-own-configure-identity-existing-domain"></a>

本節包含更新現有網域身分以使用 BYODKIM 的程序。現有的網域身分是您已設定要使用 Amazon SES 來傳送電子郵件的網域。

**若要從主控台使用 BYODKIM 更新網域身分**

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

1. 在導覽窗格中的 **Configuration (組態)** 下，選擇 **Verified identities (已驗證身分)**。

1. 在身分清單中，選擇 **Identity type (身分類型)** 是 *Domain (網域)* 的身分。
**注意**  
如果您需要建立或驗證網域，請參閱 [建立網域身分](creating-identities.md#verify-domain-procedure)。

1. 在 **Authentication** (身分驗證) 索引標籤下方的 **DomainKeys Identified Mail (DKIM)** (網域金鑰識別郵件 (DKIM)) 窗格中，選擇 **Edit** (編輯)。

1. 在 **Advanced DKIM settings (進階 DKIM 設定)** 窗格中，選擇 **Identity type** (身分類型) 欄位中的 **Provide DKIM authentication token (BYODKIM)** (提供 DKIM 身分驗證字符 (BYODKIM)) 按鈕。

1. 針對**私有金鑰**，請貼上您稍早產生的私有金鑰。
**注意**  
您必須刪除所產生私有金鑰的第一行和最後一行 (分別為 `-----BEGIN PRIVATE KEY-----` 和 `-----END PRIVATE KEY-----`)。此外，您必須移除所產生私有金鑰中的換行符號。產生的值是字元的字串，不帶空格或換行符號。

1. 對於 **Selector name (選取器名稱)**，輸入您在網域 DNS 設定中指定的選擇器名稱。

1. 在 **DKIM signatures (DKIM 簽章)** 欄位中，選中 **Enabled (已啟用)** 方塊。

1. 選擇**儲存變更**。

**從 使用 BYODKIM 更新網域身分 AWS CLI**

若要設定現有的網域，請在 Amazon SES API 中使用 `PutEmailIdentityDkimSigningAttributes` 作業。

1. 在文字編輯器中，貼上以下程式碼：

   ```
   {
       "SigningAttributes":{
           "DomainSigningPrivateKey":"privateKey",
           "DomainSigningSelector":"selector"
       },
       "SigningAttributesOrigin":"EXTERNAL"
   }
   ```

   在上述範例中，進行下列變更：
   + 以您的私密金鑰取代 *privateKey*。
**注意**  
您必須刪除所產生私有金鑰的第一行和最後一行 (分別為 `-----BEGIN PRIVATE KEY-----` 和 `-----END PRIVATE KEY-----`)。此外，您必須移除所產生私有金鑰中的換行符號。產生的值是字元的字串，不帶空格或換行符號。
   + 以您在網域的 DNS 組態中建立 TXT 記錄時所指定的唯一選取器取代 *selector*。

   完成後，請將檔案儲存為 `update-identity.json`。

1. 在命令列中輸入以下命令：

   ```
   aws sesv2 put-email-identity-dkim-signing-attributes --email-identity example.com --cli-input-json file://path/to/update-identity.json
   ```

   在上述命令中，進行下列變更：
   + 以您在上一個步驟中建立的檔案的完整路徑取代 *path/to/create-identity.json*。
   + 以您要更新的網域取代 *example.com*。

### 驗證使用 BYODKIM 的網域的 DKIM 狀態
<a name="send-email-authentication-dkim-bring-your-own-configure-identity-check"></a>

**從主控台驗證網域的 DKIM 狀態**

將網域設定為使用 BYODKIM 之後，您可以使用 SES 主控台來驗證已正確設定 DKIM。

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

1. 在導覽窗格中的 **Configuration** (組態) 下，選擇 **Verified identities** (已驗證身分)。

1. 在身分清單中，選擇您要驗證 DKIM 狀態的身分。

1. 對 DNS 設定的變更最多可能需要 72 小時才會傳播。當 Amazon SES 在您網域的 DNS 設定中偵測到所有必需的 DKIM 記錄時，驗證程序即完成。若所有內容都已正確設定，在 **DomainKeys Identified Mail (DKIM)** (網域金鑰識別郵件 (DKIM)) 窗格中，您網域的 **DKIM configuration** (DKIM 設定) 欄位將顯示為 **Successful** (成功)，並且 **Summary** (摘要) 窗格中的 **Identity status** (身分狀態) 欄位將顯示為 **Verified** (已驗證)。

**使用 驗證網域的 DKIM 狀態 AWS CLI**

將網域設定為使用 BYODKIM 之後，您可以使用 GetEmailIdentity 操作來驗證已正確設定 DKIM。
+ 在命令列中輸入以下命令：

  ```
  aws sesv2 get-email-identity --email-identity example.com
  ```

  在上述命令中，將 *example.com* 取代為您的網域。

  此命令會傳回 JSON 物件，其中包含類似下列範例的區段。

  ```
  {
      ...
      "DkimAttributes": { 
          "SigningAttributesOrigin": "EXTERNAL",
          "SigningEnabled": true,
          "Status": "SUCCESS",
          "Tokens": [ ]
      },
      ...
  }
  ```

  如果下列各項成立，則已正確為網域設定 BYODKIM：
  + `SigningAttributesOrigin` 屬性的值為 `EXTERNAL`。
  + `SigningEnabled` 的值為 `true`。
  + `Status` 的值為 `SUCCESS`。

# 管理 Easy DKIM 和 BYODKIM
<a name="send-email-authentication-dkim-easy-managing"></a>

對於已透過 Easy DKIM 或 BYODKIM 驗證的身分，您可以使用基於 Web 的 Amazon SES 主控台或使用 Amazon SES API 來管理這些身分的 DKIM 設定。您可以使用其中任一種方法來取得身分的 DKIM 記錄，或是啟用或停用身分的 DKIM 簽署。

## 取得身分的 DKIM 記錄
<a name="send-email-authentication-dkim-easy-managing-obtain-records"></a>

您可以隨時使用 Amazon SES 主控台，取得網域或電子郵件地址的 DKIM 記錄。

**使用主控台取得身分的 DKIM 記錄**

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

1. 在導覽窗格中的 **Configuration** (組態) 下，選擇 **Verified identities** (已驗證身分)。

1. 在身分清單中，選擇您希望取得哪種身分的\$1 DKIM 記錄。

1. 在身分詳細資訊頁面的 **Authentication **(身分驗證) 索引標籤上，展開 **View DNS records** (檢視 DNS 記錄)。

1. 複製顯示在本區段的三個 CNAME 記錄 (如果您使用 Easy DKIM)，或複製 TXT 記錄 (如果您使用 BYODKIM)。或者，您可以選擇 **Download .csv record set** (下載 .csv 記錄集)，將記錄複本儲存到您的電腦。

   下圖顯示展開的 **View DNS records** (檢視 DNS 記錄) 區段範例，其中顯示了與 Easy DKIM 相關聯的 CNAME 記錄。  
![\[\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/images/dkim_existing_dns.png)

您也可以使用 Amazon SES API 取得身分的 DKIM 記錄。使用 AWS CLI是與 API 互動的常見方法。

**使用 取得身分的 DKIM 記錄 AWS CLI**

1. 在命令列中輸入以下命令：

   ```
   aws ses get-identity-dkim-attributes --identities "example.com"
   ```

   在上述範例中，將 *example.com* 取代為您想要取得其 DKIM 記錄的身分。您可以指定電子郵件地址或網域。

1. 此命令的輸出包含 `DkimTokens` 區段，如以下範例所示：

   ```
   {
       "DkimAttributes": {
           "example.com": {
               "DkimEnabled": true,
               "DkimVerificationStatus": "Success",
               "DkimTokens": [
                   "hirjd4exampled5477y22yd23ettobi",
                   "v3rnz522czcl46quexamplek3efo5o6x",
                   "y4examplexbhyhnsjcmtvzotfvqjmdqoj"
               ]
           }
       }
   }
   ```

   您可以使用字符來建立 CNAME 記錄，以新增到網域的 DNS 設定。若要建立 CNAME 記錄，請使用下列範本：

   ```
   token1._domainkey.example.com CNAME token1.dkim.amazonses.com
   token2._domainkey.example.com CNAME token2.dkim.amazonses.com
   token3._domainkey.example.com CNAME token3.dkim.amazonses.com
   ```

   將每個執行個體的 *token1* 取代為當您執行 `get-identity-dkim-attributes` 命令時收到清單中的第一個字符，將所有執行個體的 *token2* 取代為清單中的第二個字符，並將所有執行個體的 *token3* 取代為清單中的第三個字符。

   例如，將此範本套用到上述範例所示的字符時，會產生以下記錄：

   ```
   hirjd4exampled5477y22yd23ettobi._domainkey.example.com CNAME hirjd4exampled5477y22yd23ettobi.dkim.amazonses.com
   v3rnz522czcl46quexamplek3efo5o6x._domainkey.example.com CNAME v3rnz522czcl46quexamplek3efo5o6x.dkim.amazonses.com
   y4examplexbhyhnsjcmtvzotfvqjmdqoj._domainkey.example.com CNAME y4examplexbhyhnsjcmtvzotfvqjmdqoj.dkim.amazonses.com
   ```

**注意**  
並非所有 都 AWS 區域 使用預設 SES DKIM 網域，`dkim.amazonses.com`若要查看您的區域是否使用區域特定的 DKIM 網域，請檢查 中的 [DKIM 網域資料表](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_dkim_domains)*AWS 一般參考*。

## 停用身分的 Easy DKIM
<a name="send-email-authentication-dkim-easy-managing-disabling"></a>

您可以使用 Amazon SES 主控台，快速為身分停用 DKIM 驗證。

**停用身分的 DKIM**

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

1. 在導覽窗格中的 **Configuration** (組態) 下，選擇 **Verified identities** (已驗證身分)。

1. 在身分清單中，選擇您希望停用哪種身分的 DKIM。

1. 在 **Authentication** (身分驗證) 索引標籤下方的 **DomainKeys Identified Mail (DKIM)** (網域金鑰識別郵件 (DKIM)) 容器中，選擇 **Edit** (編輯)。

1. 在 **Advanced DKIM settings** (進階 DKIM 設定) 中，清除 **DKIM signatures** (DKIM 簽章) 欄位中的 **Enabled** (已啟用) 方塊。

您也可以使用 Amazon SES API 為身分停用 DKIM。使用 AWS CLI是與 API 互動的常見方法。

**使用 停用身分的 DKIM AWS CLI**
+ 在命令列中輸入以下命令：

  ```
  aws ses set-identity-dkim-enabled --identity example.com --no-dkim-enabled
  ```

  在上述範例中，將 *example.com* 取代為您想要停用 DKIM 的身分。您可以指定電子郵件地址或網域。

## 啟用身分的 Easy DKIM
<a name="send-email-authentication-dkim-easy-managing-enabling"></a>

如果您之前已為某個身分停用 DKIM，您可以使用 Amazon SES 主控台再次啟用。

**啟用身分的 DKIM**

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

1. 在導覽窗格中的 **Configuration** (組態) 下，選擇 **Verified identities** (已驗證身分)。

1. 在身分清單中，選擇您希望啟用哪種身分的 DKIM。

1. 在 **Authentication (身分驗證)** 索引標籤下方的 **網域金鑰識別郵件 (DKIM)** 容器中，選擇 **Edit (編輯)**。

1. 在 **Advanced DKIM settings (進階 DKIM 設定)** 中，選中 **DKIM signatures (DKIM 簽章)** 欄位中的 **Enabled (已啟用)** 方塊。

您也可以使用 Amazon SES API 為身分啟用 DKIM。使用 AWS CLI是與 API 互動的常見方法。

**使用 為身分啟用 DKIM AWS CLI**
+ 在命令列中輸入以下命令：

  ```
  aws ses set-identity-dkim-enabled --identity example.com --dkim-enabled
  ```

  在上述範例中，將 *example.com* 取代為您想要啟用 DKIM 的身分。您可以指定電子郵件地址或網域。

## 覆寫電子郵件地址身分上的繼承 DKIM 簽署
<a name="send-email-authentication-dkim-easy-setup-email"></a>

本節說明如何在已使用 Amazon SES 驗證的特定電子郵件地址身分上覆寫 (停用或啟用) 從父系網域繼承的 DKIM 簽署屬性。您只能針對屬於您已擁有之網域的電子郵件地址身分執行此動作，因為 DNS 設定是在網域層級設定的。

**重要**  
您無法在以下網域為電子郵件地址身分停用/啟用 DKIM 簽署…  
非您擁有的網域。例如，您無法為 *gmail.com* 或 *hotmail.com* 地址切換 DKIM 簽署設定，
您所擁有的網域，但尚未在 Amazon SES 中完成驗證，
您所擁有的網域，但尚未在網域上啟用 DKIM 簽署。

本節包含下列主題：
+ [了解繼承的 DKIM 簽署屬性](#dkim-easy-setup-email-key-points-mng)
+ [覆寫電子郵件地址身分上的 DKIM 簽署 (主控台)](#override-dkim-email-console-mng)
+ [覆寫電子郵件地址身分上的 DKIM 簽署 (AWS CLI)](#override-dkim-email-cli-mng)

### 了解繼承的 DKIM 簽署屬性
<a name="dkim-easy-setup-email-key-points-mng"></a>

首先必須了解，如果使用 DKIM 設定父系網域，電子郵件地址身分會從父系網域繼承其 DKIM 簽署屬性，不論是否使用 Easy DKIM 或 BYODKIM。因此，停用或啟用電子郵件地址身分上的 DKIM 簽署，實際上是根據以下重要事實覆寫網域的 DKIM 簽署屬性：
+ 如果您已設定電子郵件地址所屬網域的 Easy DKIM，即不需要一併為電子郵件地址身分啟用 DKIM 簽署。
  + 當您為某個網域設定 DKIM 時，Amazon SES 會自動透過從父系網域繼承的 DKIM 屬性驗證來自該網域每個地址的每封電子郵件。
+ 特定電子郵件地址身分的 DKIM 設定會*自動覆寫該地址所屬父系網域或子網域 (如適用) 的設定*。

由於電子郵件地址身分的 DKIM 簽署屬性是繼承自父系網域，因此如果您打算覆寫這些屬性，您必須牢記覆寫的階層規則，如下表所述。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/send-email-authentication-dkim-easy-managing.html)

通常不建議停用 DKIM 簽署，因為有可能會損害寄件者評價，而且會增加將您傳送的郵件送往垃圾郵件資料夾或網域遭到假冒的風險。

不過，可以因應任何特定使用案例或異常業務決策，而覆寫電子郵件地址身分上的網域繼承 DKIM 簽署屬性，以永久或暫時停用 DKIM 簽署，或稍後再重新啟用。

### 覆寫電子郵件地址身分上的 DKIM 簽署 (主控台)
<a name="override-dkim-email-console-mng"></a>

下列 SES 主控台程序說明如何在已使用 Amazon SES 驗證的特定電子郵件地址身分上覆寫 (停用或啟用) 從父系網域繼承的 DKIM 簽署屬性。

**使用主控台停用/啟用電子郵件地址身分上的 DKIM 簽署**

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

1. 在導覽窗格中的 **Configuration** (組態) 下，選擇 **Verified identities** (已驗證身分)。

1. 在身分清單中，選擇 **Identity type** (身分類型) 為*電子郵件地址*且屬於其中一個已驗證網域的身分。

1. 在 **Authentication** (身分驗證) 索引標籤下方的 **DomainKeys Identified Mail (DKIM)** (網域金鑰識別郵件 (DKIM)) 容器中，選擇 **Edit** (編輯)。
**注意**  
唯有在所選的電子郵件地址身分屬於已由 SES 驗證的網域的情況下，**Authentication** (身分驗證) 索引標籤才會顯示。如果您尚未驗證網域，請參閱 [建立網域身分](creating-identities.md#verify-domain-procedure)。

1. 在 **Advanced DKIM settings** (進階 DKIM 設定) 下的 **DKIM signatures** (DKIM 簽章) 欄位中，清除 **Enabled** (已啟用) 核取方塊來停用 DKIM 簽章，或勾選此核取方塊來重新啟用 DKIM 簽章 (若簽章先前已被覆寫)。

1. 選擇**儲存變更**。

### 覆寫電子郵件地址身分上的 DKIM 簽署 (AWS CLI)
<a name="override-dkim-email-cli-mng"></a>

下列範例使用 AWS CLI 搭配 SES API 命令和參數，這些命令會覆寫 （停用或啟用） 已透過 SES 驗證之特定電子郵件地址身分上父系網域繼承的 DKIM 簽署屬性。

**使用 停用/啟用電子郵件地址身分的 DKIM 簽署 AWS CLI**
+  假設您擁有 *example.com* 網域，而且您想要為該網域的其中一個電子郵件地址停用 DKIM 簽署，請在命令列中輸入下列命令：

  ```
  aws sesv2 put-email-identity-dkim-attributes --email-identity marketing@example.com --no-signing-enabled
  ```

  1. 以您想要停用 DKIM 簽署的電子郵件地址身分取代 *marketing@example.com*。

  1. `--no-signing-enabled` 將停用 DKIM 簽署。若要重新啟用 DKIM 簽署，請使用 `--signing-enabled`。

# 在 Amazon SES 中手動執行 DKIM 簽署
<a name="send-email-authentication-dkim-manual"></a>

做為使用 Easy DKIM 的替代方案，您可以改為手動將 DKIM 簽章新增到您的訊息，然後使用 Amazon SES 傳送那些訊息。若您選擇手動簽署您的訊息，您必須先建立 DKIM 簽章。在您建立訊息及 DKIM 簽章後，您可以使用 [SendRawEmail](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendRawEmail.html) API 來傳送它。

若您決定手動簽署您的電子郵件，請考慮下列要素：
+ 您使用 Amazon SES *傳送的每則訊息都包含 DKIM 標頭，該標頭會參考 amazonses.com* 的簽署網域 (即包含以下字串：`d=amazonses.com`)。因此，若您手動簽署訊息，則此訊息應包含*兩個* DKIM 標頭：一個用於您的網域，另一個則是 Amazon SES 自動為 *amazonses.com* 建立的標頭。
+ Amazon SES 不會驗證您手動新增到訊息的 DKIM 簽章。若訊息中的 DKIM 簽章發生錯誤，便可能會遭到電子郵件提供者拒絕。
+ 當您簽署訊息時，建議您使用至少 1024 位元的位元長度。
+ 請不要簽署以下欄位：訊息 ID (Message-ID)、日期 (Date)、傳回路徑 (Return-Path) 和退信至 (Bounces-To)。
**注意**  
若您使用電子郵件用戶端來透過 Amazon SES SMTP 界面傳送電子郵件，您的用戶端可能會自動執行訊息的 DKIM 簽署。有些用戶端可能會簽署一部分的欄位。請參閱您電子郵件用戶端的文件，了解根據預設會簽署哪些欄位的資訊。

# 在 Amazon SES 中透過 SPF 驗證電子郵件
<a name="send-email-authentication-spf"></a>

*寄件人政策架構 *(SPF) 是一種電子郵件驗證標準，專為防止電子郵件詐騙而設計。網域擁有者可使用 SPF 來告知電子郵件提供者，允許哪些伺服器從其網域傳送電子郵件。SPF 定義在 [RFC 7208](https://tools.ietf.org/html/rfc7208) 中。

您透過 Amazon SES 傳送的訊息會自動使用 `amazonses.com` 子網域做為預設「寄件人」網域。SPF 身分驗證功能成功驗證這些訊息，因為預設的「寄件人」網域符合傳送電子郵件伺服器的應用程式，在此情況下指的是 SES。因此，在 SES 中，會隱含地為您設定 SPF。

不過，如果您不想使用 SES 預設「寄件人」網域，且寧願使用您擁有之網域的子網域，則這在 SES 中稱為使用*自訂*「寄件人」網域。若要這麼做，它會要求您為自訂「寄件人」網域發佈您自己的 SPF 記錄。此外，SES 也會要求您設定 MX 記錄，您的自訂「寄件人」網域才能接收電子郵件提供者傳送給您的退信和投訴通知。

**了解如何設定 SPF 身分驗證**  
提供使用 SPF 設定網域以及如何在 中發佈 MX 和 SPF （類型 TXT) 記錄的說明[使用自訂「寄件人」網域](mail-from.md)。

# 使用自訂「寄件人」網域
<a name="mail-from"></a>

當電子郵件傳送時，有兩個地址指出其來源：顯示給訊息收件人的寄件人地址：以及指出訊息來源位置的 MAIL FROM 地址。「寄件人」地址有時稱為*信封寄件者*、*信封寄自*、*退信地址*或*傳回路徑*地址。郵件伺服器會使用 MAIL FROM 地址來傳回退信訊息和其他錯誤通知。通常只在收件人檢視訊息的來源碼時，才能檢視 MAIL FROM 地址。

Amazon SES 會將您所傳送訊息的「寄件人」網域設定為預設值，除非您指定自己的 (自訂) 網域。本節討論設定自訂 MAIL FROM 網域的好處，以及包含設定程序。

## 為何使用自訂「寄件人」網域？
<a name="mail-from-overview"></a>

您透過 Amazon SES 傳送的訊息會自動使用 `amazonses.com` 子網域做為預設「寄件人」網域。寄件者政策架構 (SPF) 身分驗證功能成功驗證這些訊息，因為預設的「寄件人」網域符合傳送電子郵件伺服器的應用程式，在此情況下指的是 SES。

如果您不想使用 SES 預設郵件 FLOR 域，而想使用您擁有的網域的子網域，必須在 SES 中使用*自訂*「寄件人」網域。若要這麼做，它會要求您為自訂「寄件人」網域發佈您自己的 SPF 記錄。此外，SES 也會要求您設定 MX 記錄，您的網域才能接收電子郵件提供者傳送給您的退信和投訴通知。

透過使用自訂「寄件人」網域，您可以彈性使用 SPF、DKIM 或兩者來達成[網域型訊息驗證、回報與遵循 (DMARC)](send-email-authentication-dmarc.md) 驗證。DMARC 可讓寄件者的網域指出，從該網域傳送的電子郵件受到一或多個身分驗證系統的保護。有兩種方式可完成 DMARC 驗證：[透過 SPF 來遵循 DMARC](send-email-authentication-dmarc.md#send-email-authentication-dmarc-spf) 和 [透過 DKIM 來遵循 DMARC](send-email-authentication-dmarc.md#send-email-authentication-dmarc-dkim)。

## 選擇自訂「寄件人」網域
<a name="mail-from-requirements"></a>

在下文中，*「寄件人」網域*一詞一律是指您擁有之網域的子網域 - 您用於自訂寄件人網域的此子網域不得用於任何其他項目，且必須符合下列要求：
+ MAIL FROM 網域必須是已驗證身分之父系網域的子網域 （電子郵件地址或網域）。
+ MAIL FROM 網域不應是您亦用於傳送電子郵件的子網域。
+ MAIL FROM 網域不應是您用來接收電子郵件的子網域。

## 使用 SPF 與自訂「寄件人」網域
<a name="send-email-authentication-spf-cmfd"></a>

*寄件人政策架構 *(SPF) 是一種電子郵件驗證標準，專為防止電子郵件詐騙而設計。您可以使用 SPF 設定自訂「寄件人」網域，以告訴電子郵件提供商允許哪些伺服器從您的自訂「寄件人」網域寄出電子郵件。SPF 定義在 [RFC 7208](https://tools.ietf.org/html/rfc7208) 中。

若要設定 SPF 記錄，需將 TXT 記錄發佈到自訂「寄件人」網域的 DNS 組態。此記錄包含您授權使用您的自訂「寄件人」網域傳送電子郵件的伺服器清單。當電子郵件提供者從您的自訂「寄件人」網域接收訊息時，它會檢查網域的 DNS 記錄，以確保電子郵件是從授權的伺服器傳送而來的。

如果您想要使用此 SPF 記錄來遵循 DMARC，寄件人地址中的網域必須與「寄件人」網域相符。請參閱 [透過 SPF 來遵循 DMARC](send-email-authentication-dmarc.md#send-email-authentication-dmarc-spf)。

下一節 [設定自訂「寄件人」網域](#mail-from-set) 說明如何為您的自訂「寄件人」網域設定 SPF。

## 設定自訂「寄件人」網域
<a name="mail-from-set"></a>

設定自訂 MAIL FROM 網域的程序需要您將記錄新增到網域的 DNS 組態。SES 要求您發佈 MX 記錄，讓您的網域可以接收電子郵件提供者傳送給您的退信和投訴通知。您也必須發佈 SPF (TXT 類型) 記錄，以證明 Amazon SES 已獲授權可從您的網域傳送電子郵件。

您可以為整個網域或子網域以及個別電子郵件地址設定自訂「寄件人」網域。下列程序展示如何使用 Amazon SES 主控台來設定自訂「寄件人」網域。您也可以使用 [SetIdentityMailFromDomain](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityMailFromDomain.html) API 操作，來設定自訂 MAIL FROM 網域。

### 為已驗證網域設定自訂「寄件人」網域
<a name="mail-from-setup-procedure-domain"></a>

這些程序說明如何為整個網域或子網域設定自訂「寄件人」網域，以便從該網域上的地址傳送的所有訊息都會使用此自訂「寄件人」網域。

**設定已驗證網域以使用指定的自訂「寄件人」網域**

1. 開啟 Amazon SES 主控台，網址為 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在左側導覽面板的**組態**下，選擇**身分**。

1. 在身分清單中，選擇您要設定的身分，其中 **Identity type** (身分類型) 是 **Domain** (網域)，**Status** (狀態) 是 *Verified* (已驗證)。

   1. 如果 **Status** (狀態) 是 *Unverified* (未驗證)，請完成[透過 DNS 提供者驗證 DKIM 網域身分](creating-identities.md#just-verify-domain-proc)的程序，以驗證電子郵件地址的網域。

1. 在**自訂寄件人網域**窗格的畫面底部，選擇**編輯** 。

1. 在 **General details** (一般詳細資訊) 窗格中，執行下列動作：

   1. 選取 **Use a custom MAIL FROM domain** (使用自訂「寄件人」網域) 核取方塊。

   1. 針對 **MAIL FROM domain (「寄件人」網域)**，輸入您要用作「寄件人」網域的子網域。

   1. 針對 **Behavior on MX failure** (MX 故障時的行為)，選擇以下其中一個選項：
      + **Use default MAIL FROM domain** (使用預設「寄件人」網域) - 若自訂「寄件人」網域的 MX 記錄未正確設定，Amazon SES 將使用 `amazonses.com` 子網域。子網域會根據您使用 Amazon SES AWS 區域 的 而有所不同。
      + **拒絕訊息** - 如果自訂「寄件人」網域的 MX 記錄未正確設定，Amazon SES 將傳回 `MailFromDomainNotVerified` 錯誤。嘗試自此網域送出的電子郵件被自動拒收。

   1. 選擇 **Save changes** (儲存變更) - 您將返回到上一個畫面。

1. 發佈 MX 和 SPF (TXT 類型) 記錄到自訂「寄件人」網域的 DNS 伺服器：

   在 **Custom MAIL FROM domain** (自訂的「寄件人」網域) 窗格中，**Publish DNS records** (發佈 DNS 記錄) 表現在會顯示您必須發佈 (新增) 到網域 DNS 設定中的 MX 和 SPF (TXT 類型) 記錄。這些記錄使用下表所示的格式。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/mail-from.html)

   在上述記錄中,
   + *subdomain*.*domain*.*com* (子網域.網域.com) 將填入您的「寄件人」子網域
   + *區域*會填入 AWS 區域 您要驗證「寄件人」網域的 名稱 （例如 `us-west-2`、 `us-east-1`或 `eu-west-1`等）。
   + 與 MX 值一併列出的數字 *10* 是郵件伺服器的首選順序，需要輸入至 DNS 供應商的 GUI 所指定的個別值欄位。
   + SPF 的 TXT 記錄值通常必須包含引號，但某些 DNS 供應商不需要。

   從 **Publish DNS records** (發佈 DNS 記錄) 表，選擇每個值旁邊的複製圖示來複製 MX 和 SPF (TXT 類型) 記錄，然後將它們貼到 DNS 供應商的 GUI 中的相應欄位。或者，您可以選擇 **Download .csv record set** (下載 .csv 記錄集)，將記錄複本儲存到您的電腦。
**重要**  
發佈 MX 和 SPF （類型 TXT) 記錄的特定程序取決於您的 DNS 或託管供應商。如需將這些記錄新增至網域 DNS 組態的相關資訊，請參閱供應商的文件或聯絡供應商。
若要透過 Amazon SES 成功設定自訂「寄件人」網域，您必須發佈一個 MX 記錄到「寄件人」網域的 DNS 伺服器。如果「寄件人」網域包含多個 MX 記錄，Amazon SES 的自訂「寄件人」設定將會失敗。

   如果 Route 53 為您的「寄件人」網域提供 DNS 服務，且您在用於 Route 53 的相同帳戶 AWS 管理主控台 下登入 ，則選擇**使用 Route 53 發佈記錄**。DNS 記錄會自動套用到您網域的 DNS 組態。

   如果您使用不同的 DNS 供應商，則必須手動將 DNS 記錄發佈至「寄件人」網域的 DNS 伺服器。將 DNS 記錄新增到您網域之 DNS 伺服器的程序，會根據您的 Web 託管服務或 DNS 供應商而有所不同。

   為您的網域發佈 DNS 記錄的程序，取決於您使用的 DNS 供應商。下表包括幾個最常採用的 DNS 供應商的文件連結。這不是完整詳盡的清單，且不提供任何背書；同樣，若您的 DNS 供應商未列入清單，也不表示不支援「寄件人」網域設定。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/mail-from.html)

   當 Amazon SES 偵測到記錄就位時，您會收到一封電子郵件，通知您已成功設定自訂「寄件人」網域。視您的 DNS 供應商而定，在 Amazon SES 偵測到 MX 記錄之前，延遲可能會長達 72 小時。

### 為已驗證電子郵件地址設定自訂「寄件人」網域
<a name="mail-from-setup-procedure-email-address"></a>

您也可以為特定電子郵件地址設定自訂「寄件人」網域。若要為電子郵件地址設定自訂「寄件人」網域，您必須能夠修改與電子郵件地址相關聯之網域的 DNS 記錄。

**注意**  
您無法為非您擁有之網域上的地址設定自訂「寄件人」網域 (例如，您無法為 `gmail.com` 網域上的地址建立自訂「寄件人」網域，因為您無法將必要的 DNS 記錄新增至該網域)。

**若要設定已驗證電子郵件地址來使用指定的「寄件人」網域**

1. 開啟 Amazon SES 主控台，網址為 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在左側導覽面板的**組態**下，選擇**身分**。

1. 在身分清單中，選擇您要設定的身分，其中 **Identity type** (身分類型) 是 **Email address** (電子郵件地址)，**Status** (狀態) 是 *Verified* (已驗證)。

   1. 如果 **Status** (狀態) 是 *Unverified* (未驗證)，請完成[驗證電子郵件地址身分](creating-identities.md#just-verify-email-proc)的程序，以驗證電子郵件地址的網域。

1. 在 **MAIL FROM Domain** (「寄件人」網域) 索引標籤下，選擇 **Custom MAIL FROM domain** (自訂「寄件人」網域) 窗格中的 **Edit** (編輯)。

1. 在 **General details** (一般詳細資訊) 窗格中，執行下列動作：

   1. 選取 **Use a custom MAIL FROM domain** (使用自訂「寄件人」網域) 核取方塊。

   1. 針對 **MAIL FROM domain (「寄件人」網域)**，輸入您要用作「寄件人」網域的子網域。

   1. 針對 **Behavior on MX failure** (MX 故障時的行為)，選擇以下其中一個選項：
      + **Use default MAIL FROM domain** (使用預設「寄件人」網域) - 若自訂「寄件人」網域的 MX 記錄未正確設定，Amazon SES 將使用 `amazonses.com` 子網域。子網域會根據您使用 Amazon SES AWS 區域 的 而有所不同。
      + **拒絕訊息** - 如果自訂「寄件人」網域的 MX 記錄未正確設定，Amazon SES 將傳回 `MailFromDomainNotVerified` 錯誤。嘗試自此電子郵件地址送出的電子郵件被自動拒收。

   1. 選擇 **Save changes** (儲存變更) - 您將返回到上一個畫面。

1. 發佈 MX 和 SPF (TXT 類型) 記錄到自訂「寄件人」網域的 DNS 伺服器：

   在 **Custom MAIL FROM domain** (自訂的「寄件人」網域) 窗格中，**Publish DNS records** (發佈 DNS 記錄) 表現在會顯示您必須發佈 (新增) 到網域 DNS 設定中的 MX 和 SPF (TXT 類型) 記錄。這些記錄使用下表所示的格式。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/mail-from.html)

   在上述記錄中,
   + *subdomain*.*domain*.*com* (子網域.網域.com) 將填入您的「寄件人」子網域
   + *區域*會填入 AWS 區域 您要驗證「寄件人」網域的 名稱 （例如 `us-west-2`、 `us-east-1`或 `eu-west-1`等）。
   + 與 MX 值一併列出的數字 *10* 是郵件伺服器的首選順序，需要輸入至 DNS 供應商的 GUI 所指定的個別值欄位。
   + 請注意，SPF 的 TXT 記錄值必須包含引號

   從 **Publish DNS records** (發佈 DNS 記錄) 表，選擇每個值旁邊的複製圖示來複製 MX 和 SPF (TXT 類型) 記錄，然後將它們貼到 DNS 供應商的 GUI 中的相應欄位。或者，您可以選擇 **Download .csv record set** (下載 .csv 記錄集)，將記錄複本儲存到您的電腦。
**重要**  
若要透過 Amazon SES 成功設定自訂「寄件人」網域，您必須發佈一個 MX 記錄到「寄件人」網域的 DNS 伺服器。如果「寄件人」網域包含多個 MX 記錄，Amazon SES 的自訂「寄件人」設定將會失敗。

   如果 Route 53 為您的「寄件人」網域提供 DNS 服務，且您在用於 Route 53 的相同帳戶 AWS 管理主控台 下登入 ，則選擇**使用 Route 53 發佈記錄**。DNS 記錄會自動套用到您網域的 DNS 組態。

   如果您使用不同的 DNS 供應商，則必須手動將 DNS 記錄發佈至「寄件人」網域的 DNS 伺服器。將 DNS 記錄新增到您網域之 DNS 伺服器的程序，會根據您的 Web 託管服務或 DNS 供應商而有所不同。

   為您的網域發佈 DNS 記錄的程序，取決於您使用的 DNS 供應商。下表包括幾個最常採用的 DNS 供應商的文件連結。這不是完整詳盡的清單，且不提供任何背書；同樣，若您的 DNS 供應商未列入清單，也不表示不支援「寄件人」網域設定。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/mail-from.html)

   當 Amazon SES 偵測到記錄就位時，您會收到一封電子郵件，通知您已成功設定自訂「寄件人」網域。視您的 DNS 供應商而定，在 Amazon SES 偵測到 MX 記錄之前，延遲可能會長達 72 小時。

## 透過 Amazon SES 設定的自訂「寄件人」網域設定狀態
<a name="mail-from-states"></a>

在您設定身分來使用自訂「寄件人」網域後，Amazon SES 將嘗試偵測 DNS 設定中所需的 MX 記錄，此時設定的狀態為「待定」。接下來，狀態會根據 Amazon SES 是否偵測到 MX 記錄而改變。下表說明電子郵件傳送行為以及與各個狀態相關的 Amazon SES 動作。每次狀態變更時，Amazon SES 都會傳送通知至與您的 相關聯的電子郵件地址 AWS 帳戶。


****  

| State | 電子郵件傳送行為 | Amazon SES 動作 | 
| --- | --- | --- | 
|  待定  |  使用自訂「寄件人」後援設定  |  Amazon SES 將連續 72 小時嘗試偵測所需的 MX 記錄。如果失敗，狀態將變更為「失敗」。  | 
|  成功  |  使用自訂的「寄件人」網域  |  Amazon SES 持續檢查所需的 MX 記錄是否就位。  | 
|  TemporaryFailure  |  使用自訂「寄件人」後援設定  |  Amazon SES 將連續 72 小時嘗試偵測所需的 MX 記錄。如果失敗，狀態將變更為「失敗」；如果成功，狀態將變更為「成功」。  | 
|  失敗  |  使用自訂「寄件人」後援設定  |  Amazon SES 將不再繼續嘗試偵測所需的 MX 記錄。若要使用自訂 MAIL FROM 網域，須在 [設定自訂「寄件人」網域](#mail-from-set) 中重新啟動設定程序。  | 

# 遵守 Amazon SES 中的 DMARC 身份驗證協議
<a name="send-email-authentication-dmarc"></a>

以網域為基礎的訊息身分驗證、報告和一致性 (DMARC) 是一種電子郵件身分驗證通訊協定，使用寄件者政策架構 (SPF) 和 DomainKeys 識別郵件 (DKIM) 來偵測電子郵件詐騙和網路釣魚。為了符合 DMARC，訊息必須透過 SPF 或 DKIM 進行驗證，但理想情況下，當兩者都與 DMARC 搭配使用時，您將確保電子郵件傳送盡可能獲得最高層級的保護。

讓我們簡單地檢閱每個 執行哪些操作，以及 DMARC 如何將它們串連在一起：
+  **SPF** – 識別允許哪些郵件伺服器透過 DNS TXT 使用的 DNS TXT 記錄，代表您自訂的「寄件人」網域傳送郵件。收件人郵件系統參考 SPF TXT 記錄，以判斷來自自訂網域的訊息是否來自授權的訊息伺服器。基本上，SPF 旨在協助防止詐騙，但有一些詐騙技巧在實務上容易受到 SPF 影響，因此您還需要使用 DKIM 和 DMARC。
+  **DKIM** – 將數位簽章新增至電子郵件標頭中的傳出訊息。接收電子郵件系統可以使用此數位簽章來協助驗證傳入電子郵件是否由網域擁有的金鑰簽署。不過，當接收電子郵件系統轉送訊息時，訊息的信封會以使 SPF 身分驗證失效的方式變更。由於數位簽章會保留電子郵件訊息，因為它是電子郵件標頭的一部分，因此即使訊息已在郵件伺服器之間轉送 （只要訊息內容尚未修改），DKIM 仍會運作。
+  **DMARC** – 確保網域與至少一個 SPF 和 DKIM 一致。單獨使用 SPF 和 DKIM 不會確保寄件者地址已驗證 （這是收件人在其電子郵件用戶端中看到的電子郵件地址）。SPF 只會檢查「寄件人」地址中指定的網域 （收件人看不到）。DKIM 只會檢查 DKIM 簽章中指定的網域 （收件者也不會看到）。DMARC 透過要求 SPF 或 DKIM 上的網域對齊正確來解決這兩個問題：
  + 若要讓 SPF 傳遞 DMARC 對齊，寄件人地址中的網域必須與「寄件人」地址中的網域相符 （也稱為「傳回路徑」和「信封」地址）。這在轉送的郵件中很少可行，因為它會被剔除，或透過第三方大量電子郵件供應商傳送電子郵件時，因為退信路徑 (MAIL FROM) 用於供應商 (SES) 使用他們擁有的地址追蹤的退信和投訴。
  + 若要讓 DKIM 傳遞 DMARC 對齊，DKIM 簽章中指定的網域必須與寄件人地址中的網域相符。如果您使用代您傳送郵件的第三方寄件者或服務，這可以透過確保第三方寄件者已正確設定 DKIM 簽署，且您已在網域中新增適當的 DNS 記錄來完成。然後，接收郵件伺服器將能夠驗證第三方傳送給他們的電子郵件，就好像是由獲授權使用網域內地址的人員所傳送的電子郵件一樣。

**全部與 DMARC 整合**  
我們上述討論的 DMARC 對齊檢查顯示 SPF、DKIM 和 DMARC 如何一起運作，以提高對網域的信任，並將您的電子郵件交付至收件匣。DMARC 透過確保收件人看到的寄件者地址通過 SPF 或 DKIM 驗證來完成此操作：
+ 如果其中一個或兩個所描述的 SPF 或 DKIM 檢查通過，則訊息會傳遞 DMARC。
+ 如果所述的 SPF 或 DKIM 檢查都失敗，則訊息會失敗 DMARC。

因此，對於 DMARC 而言，SPF 和 DKIM 都是必要的，才能有最佳機會為您的已傳送電子郵件進行身分驗證，而透過利用這三種方法，您將協助確保您擁有完全受保護的傳送網域。

DMARC 也可讓您指示電子郵件伺服器在透過您設定的政策進行 DMARC 身分驗證失敗時，如何處理電子郵件。這將在下一節中說明，[對您的網域設定 DMARC 政策](#send-email-authentication-dmarc-dns)其中包含如何設定 SES 網域的相關資訊，以便您傳送的電子郵件同時透過 SPF 和 DKIM 遵守 DMARC 身分驗證通訊協定。

## 對您的網域設定 DMARC 政策
<a name="send-email-authentication-dmarc-dns"></a>

若要設定 DMARC，您必須修改您網域的 DNS 設定。您網域的 DNS 設定應該包含指定網域 DMARC 設定的 TXT 記錄。將 TXT 記錄新增到您 DNS 組態的程序取決於您使用的 DNS 或託管提供者。如果您使用 Route 53，請參閱 *Amazon Route 53 開發人員指南*中的[使用記錄](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/rrsets-working-with.html)。如果使用其他提供者，請參閱您提供者的 DNS 組態文件。

您建立的 TXT 記錄名稱應該是 `_dmarc.example.com`，其中 `example.com` 為您的網域。TXT 記錄的值包含套用到您網域的 DMARC 政策。以下為包含 DMARC 政策的 TXT 記錄範例：


| 名稱 | 類型 | Value | 
| --- | --- | --- | 
| \$1dmarc.example.com | TXT | "v=DMARC1;p=quarantine;rua=mailto:my\$1dmarc\$1report@example.com" | 

在上述 DMARC 政策範例中，此政策會指示電子郵件供應商執行下列動作：
+ 對於身分驗證失敗的任何訊息，請將其傳送到政策參數 指定的垃圾郵件資料夾`p=quarantine`。其他選項包括使用 不採取任何動作`p=none`，或使用 直接拒絕訊息`p=reject`。
  + 下一節討論如何使用和何時使用這三個政策設定 - *在錯誤的時間使用錯誤的政策設定可能會導致您的電子郵件無法交付，*請參閱 [實作 DMARC 的最佳實務](#send-email-authentication-dmarc-implement)。
+ 依報告參數 (*rua* 代表報告彙總報告的 URI) 所指定，傳送摘要中身分驗證失敗的所有電子郵件報告 `rua=mailto:my_dmarc_report@example.com`（亦即彙總特定期間內資料的報告，而不是傳送每個事件的個別報告）。電子郵件提供者通常每天會傳送一次這些彙總報告，但這些政策因提供者而異。

若要進一步了解為您的網域設定 DMARC，請參閱 DMARC 網站的 [概觀](https://dmarc.org/overview/)。

如需 DMARC 系統的完整規格，請參閱[網際網路工程任務小組 (IETF) DMARC 草稿](https://datatracker.ietf.org/doc/draft-ietf-dmarc-dmarcbis/)。

## 實作 DMARC 的最佳實務
<a name="send-email-authentication-dmarc-implement"></a>

最好以漸進和分階段的方式實作 DMARC 政策強制執行，以免中斷郵件流程的其餘部分。建立並實作遵循這些步驟的推展計劃。請先使用每個子網域執行這些步驟，最後使用組織中的最上層網域，再繼續進行下一個步驟。

1. 監控實作 DMARC 的影響 (p=無）。
   + 從子網域或網域的簡單監控模式記錄開始，該記錄會請求郵件接收組織將他們使用該網域看到的訊息統計資料傳送給您。監控模式記錄是 DMARC TXT 記錄，其政策設為無 `p=none`。
   + 透過 DMARC 產生的報告將提供通過這些檢查的訊息數量和來源，而不是未通過這些檢查的訊息。您可以輕鬆查看它們涵蓋或未涵蓋多少合法流量。您將會看到轉送的跡象，因為如果修改內容，轉送的訊息將會失敗 SPF 和 DKIM。您也會開始看到有多少詐騙訊息正在傳送，以及它們的傳送來源。
   +  此步驟的目標是了解當您實作以下兩個步驟之一時，哪些電子郵件會受到影響，並讓任何第三方或授權寄件者使其 SPF 或 DKIM 政策保持一致。
   + 最適合現有網域。

1. 請求外部郵件系統隔離未通過 DMARC 的郵件 (p=隔離）。
   + 當您認為所有或大部分的合法流量傳送的網域都與 SPF 或 DKIM 一致，而且您了解實作 DMARC 的影響時，您可以實作隔離政策。隔離政策是 DMARC TXT 記錄，其政策設定為隔離 `p=quarantine`。透過這樣做，您要求 DMARC 接收者將失敗 DMARC 的網域訊息放入垃圾郵件資料夾的本機對等資料夾中，而不是客戶的收件匣。
   + 最適合在步驟 1 期間轉換已分析 DMARC 報告的網域。

1. 請求外部郵件系統不接受失敗 DMARC (p=reject) 的訊息。
   + 實作拒絕政策通常是最後一個步驟。拒絕政策是 DMARC TXT 記錄，其政策設定為拒絕 `p=reject`。當您這樣做時，您要求 DMARC 接收者不要接受未通過 DMARC 檢查的訊息，這表示他們甚至不會被隔離到垃圾郵件或垃圾郵件資料夾，但將被直接拒絕。
   + 使用拒絕政策時，您會確切知道哪些訊息未通過 DMARC 政策，因為拒絕會導致 SMTP 退信。透過隔離，彙總資料會提供電子郵件傳遞或失敗 SPF、DKIM 和 DMARC 檢查百分比的相關資訊。
   + 最適合經過前兩個步驟的新網域或現有網域。

## 透過 SPF 來遵循 DMARC
<a name="send-email-authentication-dmarc-spf"></a>

若要讓電子郵件遵循以 SPF 為基礎的 DMARC 驗證，需符合下列條件：
+ 訊息必須根據要發佈至自訂「寄件人」網域 DNS 組態的有效 SPF （類型 TXT) 記錄，傳遞 SPF 檢查。
+ 電子郵件標頭的寄件者地址中的網域必須與 MAIL FROM 地址中指定的網域或子網域對齊 （符合）。為了讓 SPF 與 SES 保持一致，網域的 DMARC 政策不得指定嚴格的 SPF 政策 (aspf=s)。

為了符合這些要求，請完成以下步驟：
+ 完成 [使用自訂「寄件人」網域](mail-from.md) 中的步驟以設定自訂的「寄件人」網域。
+ 請確任您的傳送網域對 SPF 採取寬鬆政策。如果您尚未變更網域的政策對齊，預設會使用寬鬆政策，SES 也是如此。
**注意**  
若要判定網域對於 SPF 採取的 DMARC 符合度，可於命令列輸入下列命令，以 `example.com` 取代您的網域：  

  ```
  dig TXT _dmarc.example.com
  ```
在此命令輸出檔的 **Non-authoritative answer (非授權答案)** 下，尋找以 `v=DMARC1` 開頭的記錄。若此記錄包含 `aspf=r` 字串，或如果 `aspf` 字串完全未顯示，那麼您的網域就是對於 SPF 採取寬鬆的符合度。若記錄包含 `aspf=s` 字串，那麼您的網域就是對於 SPF 採取嚴格的符合度。您的系統管理員將需自網域中 DNS 組態的 DMARC TXT 記錄移除此標籤。  
或者，您可以使用 Web 型 DMARC 查詢工具，例如來自 dmarcian 網站的 [DMARC Inspector](https://dmarcian.com/dmarc-inspector/)，或來自 MxToolBox 網站的 [DMARC Check Tool](https://mxtoolbox.com/dmarc.aspx)，來判斷您網域的 SPF 政策一致性。

## 透過 DKIM 來遵循 DMARC
<a name="send-email-authentication-dmarc-dkim"></a>

若要讓電子郵件遵循以 DKIM 為基礎的 DMARC 驗證，需符合下列條件：
+ 訊息必須具有有效的 DKIM 簽章，並通過 DKIM 檢查。
+ DKIM 簽章中指定的網域必須與寄件者地址中的網域對齊 （相符）。如果網域的 DMARC 政策指定 DKIM 的嚴格一致性，這些網域必須完全相符 (SES 預設使用嚴格的 DKIM 政策）。

為了符合這些要求，請完成以下步驟：
+ 請完成 [Amazon SES 中的 Easy DKIM](send-email-authentication-dkim-easy.md) 中的程序以設定 Easy DKIM。使用 Easy DKIM 時，Amazon SES 自動簽署電子郵件。
**注意**  
除了使用 Easy DKIM 外，您也可以[手動簽署郵件](send-email-authentication-dkim-manual.md)。不過，若您選擇採取此方法，則必須謹慎處理，因為 Amazon SES 不會驗證您所建構的 DKIM 簽章。因此，我們強烈建議您使用 Easy DKIM。
+ 確保 DKIM 簽章中指定的網域與寄件者地址中的網域對齊。或者，如果從寄件者地址中的網域子網域傳送，請確定您的 DMARC 政策設定為寬鬆對齊。
**注意**  
若要判定網域對於 DKIM 採取的 DMARC 符合度，可於命令列輸入下列命令，以 `example.com` 取代您的網域：  

  ```
  dig TXT _dmarc.example.com
  ```
在此命令輸出檔的 **Non-authoritative answer (非授權答案)** 下，尋找以 `v=DMARC1` 開頭的記錄。若此記錄包含 `adkim=r` 字串，或如果 `adkim` 字串完全未顯示，那麼您的網域就是對於 DKIM 採取寬鬆的符合度。若記錄包含 `adkim=s` 字串，那麼您的網域就是對於 DKIM 採取嚴格的符合度。您的系統管理員將需自網域中 DNS 組態的 DMARC TXT 記錄移除此標籤。  
或者，您可以使用 Web 型 DMARC 查詢工具，例如來自 dmarcian 網站的 [DMARC Inspector](https://dmarcian.com/dmarc-inspector/) 或來自 MxToolBox 網站的 [DMARC Check Tool](https://mxtoolbox.com/dmarc.aspx)，來判斷網域的 DKIM 政策一致性。

# 在 Amazon SES 中使用 BIMI
<a name="send-email-authentication-bimi"></a>

適用於訊息識別的品牌指標 (BIMI) 是一種電子郵件規格，可以在支援的電子郵件用戶端內，讓通過品牌身分驗證的電子郵件訊息旁邊顯示品牌標誌。

BIMI 是直接與身分驗證連接的電子郵件規格，但它不是獨立的電子郵件身分驗證協議，因為它要求您的所有電子郵件都遵守 [DMARC](send-email-authentication-dmarc.md) 身份驗證。

雖然 BIMI 需要 DMARC，但 DMARC 要求您的網域必須擁有 SPF 或 DKIM 記錄以對齊，但最好同時包含 SPF 和 DKIM 記錄以提高安全性，因為某些電子郵件服務提供者 (ESP) 在使用 BIMI 時需要同時包含兩者。以下部分將介紹在 Amazon SES 中實作 BIMI 的步驟。

## 在 SES 中設定 BIMI
<a name="bimi-setup-procedure"></a>

您可以為您自己的電子郵件網域設定 BIMI — 在 SES 中稱為*自訂* MAIL FROM 網域。完成設定後，從該網域傳送的所有訊息都將在[支援 BIMI 的電子郵件用戶端中顯示您的 BIMI 標誌](https://bimigroup.org/bimi-infographic/)。

若要讓您的電子郵件顯示 BIMI 標誌，您必須在 SES 中設定一些先決條件 —在下列程序中，將概括這些先決條件，並將引用專門的部分來詳細介紹這些主題。此處將詳細介紹 BIMI 的特定步驟以及在 SES 中設定時的必要條件。

**若要設定自訂 MAIL FROM 網域**

1. 您必須在 SES 中設定自訂 MAIL FROM 網域，並針對該網域發布 SPF (類型 TXT) 和 MX 記錄。如果您還沒有自訂 MAIL FROM 網域，或想要建立新的網域用於 BIMI 標誌，請參閱 [使用自訂「寄件人」網域](mail-from.md)。

1. 使用簡易 DKIM 設定您的網域。請參閱 [Amazon SES 中的 Easy DKIM](send-email-authentication-dkim-easy.md)。

1. 使用 DMARC 來設定您的網域，方法是使用下列 BIMI 所需的強制執行政策詳細資訊，向 DNS 供應商發佈 TXT 記錄，類似於下列兩個範例之一：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/send-email-authentication-bimi.html)

   在上述的 DMARC 政策範例中，BIMI 需要：
   + 應該將 `example.com` 以您的網域或子網域名稱取代。
   + `p=` 值可以是：
     + 如圖所示，將*百分比*值設為 *100* 的*隔離*，或
     + *拒絕*，如圖所示。
   + 如果您是從子網域傳送，則 BIMI 要求父網域也必須具有此強制執行政策。子網域將受到父網域的政策約束。但是，如果您在父網域發布的內容之外還為您的子網域新增 DMARC 記錄，則子網域也必須具有相同的強制政策，才有資格使用 BIMI。
   + 如果您從未為您的網域設定 DMARC 政策，請參閱 [遵守 Amazon SES 中的 DMARC 身份驗證協議](send-email-authentication-dmarc.md) 確保僅使用特定於 BIMI 的 DMARC 政策值，如下所示。

1. 將您的 BIMI 標誌製作為可縮放向量圖形 (SVG) `.svg` 檔案—BIMI 所需的特定 SVG 設定檔定義為 SVG 便攜式/安全 (SVG P/S)。為了讓您的標誌能顯示於電子郵件用戶端中，必須完全符合這些規格。請參閱 [BIMI Group](https://bimigroup.org/) 有關[建立 SVG 標誌檔案](https://bimigroup.org/creating-bimi-svg-logo-files/)的指南和推薦的 [SVG 轉換工具](https://bimigroup.org/svg-conversion-tools-released/)。

1. (選用) 取得驗證標誌憑證 (VMC)。某些 ESP (例如 Gmail 和 Apple) 要求提供 VMC 證明您擁有 BIMI 標誌的商標和內容。雖然這不是在網域上實作 BIMI 的要求，但如果您向強制 VMC 合規性的 ESP 用戶端傳送郵件，您的 BIMI 標誌將不會顯示在電子郵件用戶端中。請參閱 BIMI Group 對[參與憑證授權單位](https://bimigroup.org/verified-mark-certificates-vmc-and-bimi/)的參考資料，以取得您標誌的 VMC。

1. 將您 BIMI 標誌的 SVG 檔案託管在您擁有存取權的伺服器上，以便透過 HTTPS 公開存取。例如，您可以將其上傳到 [Amazon S3 儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)。

1. 建立並發布包含導向您標誌 URL 的 BIMI DNS 記錄。當[支援 BIMI 的 ESP](https://bimigroup.org/bimi-infographic/) 檢查您的 DMARC 記錄時，它也會尋找包含您標誌 `.svg` 檔案 URL 的 BIMI 記錄，以及您 VMC `.pem` 檔案的 URL (若已設定)。如果記錄符合，將顯示您的 BIMI 標誌。

   透過 DNS 提供者搭配下列顯示的值發布 TXT 記錄，使用 BIMI 設定您的網域—從網域傳送顯示於第一個範例中；從子網域傳送顯示於第二個範例中。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/send-email-authentication-bimi.html)

   在上述 BIMI 記錄中的範例：
   + 名稱值應直接指定 `default._bimi.` 為子網域，`example.com` 或 `marketing.example.com` 應該以您的網域或子網域名稱取代。
   + `v=` 值是 BIMI 記錄的*版本*。
   + `l=` 值是代表指向圖像 `.svg` 文件 URL 的*標誌*。
   + `a=` 值是代表指向憑證 `.pem` 檔案 URL 的*授權單位*。

   您可以使用 BIMI Group 的 [BIMI Inspector](https://bimigroup.org/bimi-generator/) 之類的工具驗證您的 BIMI 記錄。

此過程的最後一步是定期向支援 BIMI 標誌放置的 ESP 傳送模式。您的網域應該具備定期的傳送規律，並且在傳送的 ESP 中應具有良好信譽。若您沒有建立信譽或傳送規律，BIMI 標誌放置需要一些時間才能增加至 ESP。

您可以通過 [BIMI Group](https://bimigroup.org/) 組織找到更多與 BIMI 有關的資訊和資源。

# 設定 Amazon SES 的事件通知
<a name="monitor-sending-activity-using-notifications"></a>

若要使用 Amazon SES 傳送電子郵件，您必須擁有用於管理退信和投訴的系統。Amazon SES 可以透過三種方式通知您發生退信或投訴：傳送電子郵件、通知 Amazon SNS 主題，或是發佈傳送事件。本節包含設定 Amazon SES 來透過電子郵件或通知 Amazon SNS 主題，傳送特定類型通知的資訊。如需發佈傳送事件的詳細資訊，請參閱 [使用 Amazon SES 事件發佈監控電子郵件傳送](monitor-using-event-publishing.md)。

您可以使用 Amazon SES 主控台或 Amazon SES API 來設定通知。

**Topics**
+ [重要考量](#monitor-sending-activity-using-notifications-considerations)
+ [透過電子郵件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)
+ [使用 Amazon SNS 接收 Amazon SES 通知](monitor-sending-activity-using-notifications-sns.md)

## 重要考量
<a name="monitor-sending-activity-using-notifications-considerations"></a>

設定 Amazon SES 傳送通知時，有幾點重要的考量事項：
+ 電子郵件和 Amazon SNS 通知會套用到個別身分 (經驗證的電子郵件地址或您用來傳送電子郵件的網域)。當您啟用身分的通知時，Amazon SES 只會針對從該身分傳送的電子郵件傳送通知，而且只會在您設定通知的 AWS 區域中傳送通知。
+ 您必須啟用一種接收退信或抱怨通知的方法。您可以將通知傳送到產生退信或投訴的網域或電子郵件地址，或是 Amazon SNS 主題。您也可以使用[事件發佈](monitor-using-event-publishing.md)，將多種不同類型事件 （包括退信、投訴、交付等） 的通知傳送至 Amazon SNS 主題或 Firehose 串流。

  若您沒有設定其中一種接收退信或投訴通知的方法，Amazon SES 會自動將退信和投訴通知轉送到導致退信或投訴事件電子郵件中的傳回路徑地址 (或是若您沒有指定傳回路徑地址的話，則為來源地址)，即使您停用電子郵件回饋轉送也一樣。

  若您停用電子郵件回饋並啟用事件發佈，您必須將包含事件發佈規則的組態集套用到所有您傳送的電子郵件。在此情況下，若您沒有使用組態集，Amazon SES 會自動將退信和投訴通知傳送到導致退信或投訴事件電子郵件中的傳回路徑或來源地址。
+ 若您使用一種以上的方法設定 Amazon SES 傳送退信和投訴事件 (例如透過傳送電子郵件通知和透過使用傳送事件)，您便會針對相同的事件收到一個以上的通知。

# 透過電子郵件接收 Amazon SES 通知
<a name="monitor-sending-activity-using-notifications-email"></a>

當您收到退信和投訴時，Amazon SES 可以使用稱為*電子郵件意見回饋轉送*的程序向您傳送電子郵件。

若要使用 Amazon SES 傳送電子郵件，您必須使用下列其中一種方法，將其設定為傳送退信和投訴通知：
+ 啟用電子郵件意見轉送。本節包含設定此類通知的程序。
+ 將通知傳送至 Amazon SNS 主題。如需詳細資訊，請參閱[使用 Amazon SNS 接收 Amazon SES 通知](monitor-sending-activity-using-notifications-sns.md)。
+ 發佈事件通知。如需詳細資訊，請參閱「[使用 Amazon SES 事件發佈監控電子郵件傳送](monitor-using-event-publishing.md)」。

**重要**  
關於通知的數項要點，請參閱 [設定 Amazon SES 的事件通知](monitor-sending-activity-using-notifications.md)。

**Topics**
+ [啟用電子郵件意見回饋轉送](#monitor-sending-activity-using-notifications-email-enabling)
+ [停用電子郵件意見回饋轉送](#monitor-sending-activity-using-notifications-email-disabling)
+ [電子郵件意見回饋轉送目的地](#monitor-sending-activity-using-notifications-email-destination)

## 啟用電子郵件意見回饋轉送
<a name="monitor-sending-activity-using-notifications-email-enabling"></a>

根據預設，將啟用電子郵件意見轉送功能。若您之前已停用該功能，可依照本節中說明之程序來啟用。

**使用 Amazon SES 主控台來啟用透過電子郵件轉送退信與投訴的功能**

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

1. 在導覽窗格中的 **Configuration** (組態) 下，選擇 **Verified identities** (已驗證身分)。

1. 在已驗證電子郵件地址或網域清單中，選擇您想要設定退信與抱怨通知的電子郵件地址或網域。

1. 在詳細資訊窗格中，展開 **Notifications (通知)** 區段。

1. 選擇 **Edit Configuration (編輯組態)**。

1. 在 **Email Feedback Forwarding** (電子郵件意見回饋轉送) 下，選擇 **Enabled (已啟用)**。
**注意**  
您對此頁面進行的變更可能需要幾分鐘才會生效。

您也可以使用 [SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html) API 操作來啟用透過電子郵件接收退信和抱怨通知功能。

## 停用電子郵件意見回饋轉送
<a name="monitor-sending-activity-using-notifications-email-disabling"></a>

如果您設定其他提供退信和抱怨通知的方法，您可以停用電子郵件回饋轉送功能，在發生退信或抱怨事件時您即不會收到多次通知。

**使用 Amazon SES 主控台來停用透過電子郵件轉送退信與投訴的功能**

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

1. 在導覽窗格中的 **Configuration** (組態) 下，選擇 **Verified identities** (已驗證身分)。

1. 在已驗證電子郵件地址或網域清單中，選擇您想要設定退信與抱怨通知的電子郵件地址或網域。

1. 在詳細資訊窗格中，展開 **Notifications (通知)** 區段。

1. 選擇 **Edit Configuration (編輯組態)**。

1. 在 **Email Feedback Forwarding (電子郵件意見轉送)** 下，選擇 **Disabled (已停用)**。
**注意**  
您必須至少設定一種接收退信和投訴通知的方法，才能透過 Amazon SES 傳送電子郵件。如果您停用電子郵件意見回饋轉送，則必須啟用 Amazon SNS 傳送的通知，或使用事件發佈將退信和投訴事件發佈至 Amazon SNS 主題或 Firehose [使用 Amazon SES 事件發佈監控電子郵件傳送](monitor-using-event-publishing.md)串流。如果您使用事件發佈，您也必須將包含事件發佈規則的設定集套用於您傳送的每一封電子郵件。如果您未設定接收退信和投訴通知的方法，Amazon SES 會自動將意見回饋通知轉送到導致退信或投訴事件之訊息的傳回路徑欄位 (如果您沒有指定傳回路徑地址，則為來源欄位)。在此情況下，即使您停用電子郵件意見回饋通知，Amazon SES 也會轉送退信和投訴通知。

1. 選擇 **Save Config (儲存組態)** 以儲存您的通知組態。
**注意**  
您對此頁面進行的變更可能需要幾分鐘才會生效。

您也可以停用 [SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html) API 操作來停用透過電子郵件接收退信和抱怨通知功能。

## 電子郵件意見回饋轉送目的地
<a name="monitor-sending-activity-using-notifications-email-destination"></a>

當您透過電子郵件接收通知時，Amazon SES 會重新編寫 `From` 標頭並傳送通知給您。接收 Amazon SES 所轉送通知的地址取決於傳送原始訊息的地址。

若您使用 SMTP 介面來傳送訊息，則會根據以下規則傳送通知：
+ 若您在 `SMTP DATA` 區段中指定 `Return-Path` 標頭，則通知就會傳送至該地址。
+ 否則，通知會傳送至您發出 MAIL FROM 命令時指定的地址。

若您使用 `SendEmail` API 操作來傳送訊息，將根據以下規則傳送通知：
+ 若您在對 `SendEmail` API 的呼叫中指定選用 `ReturnPath` 參數，則通知將寄往該地址。
+ 否則，通知將寄往 `SendEmail` 的 `Source` 參數中指定的地址。

若您使用 `SendRawEmail` API 操作來傳送訊息，將根據以下規則傳送通知：
+ 若您在原始訊息中指定 `Return-Path` 標頭，則通知就會傳送至該地址。
+ 否則，若您在對 `SendRawEmail` API 的呼叫中指定 `Source` 參數，通知就會傳送至該地址。
+ 否則，通知將寄往原始訊息的「`From`」標題中的地址。

**注意**  
您在電子郵件中指定 `Return-Path` 地址時，您就會在該地址收到通知。不過，收件人接收的訊息版本會包含 `Return-Path` 標題，其中包含匿名的電子郵件地址 (如 *a0b1c2d3e4f5a6b7-c8d9e0f1-a2b3-c4d5-e6f7-a8b9c0d1e2f3-000000@amazonses.com*)。不論您傳送電子郵件的方式為何，此匿名處理都會發生。

# 使用 Amazon SNS 接收 Amazon SES 通知
<a name="monitor-sending-activity-using-notifications-sns"></a>

您可以將 Amazon SES 設定為在收到退信、投訴或電子郵件遞送時通知 Amazon SNS 主題。Amazon SNS 通知以 [ JavaScript Object Notation (JSON)](http://www.json.org) 格式顯示，可讓您以程式設計方式處理通知。

若要使用 Amazon SES 傳送電子郵件，您必須使用下列其中一種方法，將其設定為傳送退信和投訴通知：
+ 將通知傳送至 Amazon SNS 主題。本節包含設定此類通知的程序。
+ 啟用電子郵件意見轉送。如需詳細資訊，請參閱[透過電子郵件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)。
+ 發佈事件通知。如需詳細資訊，請參閱[使用 Amazon SES 事件發佈監控電子郵件傳送](monitor-using-event-publishing.md)。

**重要**  
請參閱[設定 Amazon SES 的事件通知](monitor-sending-activity-using-notifications.md)以取得關於通知的重要資訊。

**Topics**
+ [設定 Amazon SES 的 Amazon SNS 通知](configure-sns-notifications.md)
+ [Amazon SES 的 Amazon SNS 通知內容](notification-contents.md)
+ [Amazon SES 的 Amazon SNS 通知範例](notification-examples.md)

# 設定 Amazon SES 的 Amazon SNS 通知
<a name="configure-sns-notifications"></a>

Amazon SES 可透過 [Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns) 來通知您退信、投訴與遞送訊息。

您可以在 Amazon SES 主控台中或使用 Amazon SES API 設定通知。

**Topics**
+ [先決條件](#configure-feedback-notifications-prerequisites)
+ [使用 Amazon SES 主控台設定通知](#configure-feedback-notifications-console)
+ [使用 Amazon SES API 設定通知](#configure-feedback-notifications-api)
+ [意見回饋通知疑難排解](#configure-feedback-notifications-troubleshooting)

## 先決條件
<a name="configure-feedback-notifications-prerequisites"></a>

在 Amazon SES 中設定 Amazon SNS 通知前，請完成下列步驟：

1. 在 Amazon SNS 中建立一個主題。如需詳細資訊，請參閱 *Amazon Simple Notification Service 開發人員指南*中的[建立主題](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。
**重要**  
使用 Amazon SNS 建立主題時，針對 **Type (類型)**，請只選擇 **Standard (標準)**。(SES 不支援 FIFO 類型的主題。)

   無論您建立新的 SNS 主題還是選取現有主題，都必須授與 SES 的存取權，才能將通知發佈至主題。

   若要授予 Amazon SES 將通知發佈到主題的許可，請在 SNS 主控台的 **Edit topic (編輯主題)** 畫面中，展開 **Access policy (存取政策)**，並在 **JSON editor (JSON 編輯器)** 下新增下列許可政策：

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "notification-policy",
       "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": "111122223333",
                       "AWS:SourceArn": "arn:aws:ses:topic_region:111122223333:identity/identity_name"
                   }
               }
           }
       ]
   }
   ```

------

   在上述範例政策中進行下列變更：
   + 將 *topic\$1region* 取代為您建立 SNS 主題 AWS 的區域。
   + 將 *111122223333* 取代為您的 AWS 帳戶 ID。
   + 將 *topic\$1name* 取代為您的 SNS 主題名稱。
   + 將 *identity\$1name* 取代為您訂閱 SNS 主題的已驗證身分 (電子郵件地址或網域)。

1. 需至少訂閱一個端點至該主題。例如，如果您想要透過文字訊息接收通知，請訂閱 SMS 端點 (也就是行動電話號碼) 至主題。要透過電子郵件接收通知，請訂閱電子郵件端點 (電子郵件地址) 至該主題。

   如需詳細資訊，請參閱 *Amazon Simple Notification Service 開發人員指南*中的[入門](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. （選用） 如果您的 Amazon SNS 主題使用 AWS Key Management Service (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="configure-feedback-notifications-console"></a>

**使用 Amazon SES 主控台來設定通知**

1. 開啟 Amazon SES 主控台，網址為 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在導覽窗格中的**組態**下，選擇**身分**。

1. 在 **Identities** (身分) 容器中，選取您要接收意見回饋通知的已驗證身分 (於從此身分傳送的郵件產生退信、投訴或遞送結果時收到通知)。
**重要**  
驗證網域通知設定適用於所有由位於該網域中之電子郵件地址所寄出的郵件，*除了*已驗證的電子郵件地址。

1. 在您選取的已驗證身分的詳細資訊畫面中，選擇 **Notifications** (通知) 索引標籤，並選取 **Feedback notifications** (意見回饋通知) 容器中的 **Edit** (編輯)。

1. 展開您要接收通知的每種意見回饋類型的 SNS 主題清單方塊，然後選取您擁有的 SNS 主題、**No SNS topic** (無 SNS 主題) 或 **SNS topic you don’t own** (您未擁有的 SNS 主題)。

   1. 如果您選擇 **SNS topic you don’t own** (您未擁有的 SNS 主題)，則會顯示 **SNS topic ARN** (SNS 主題 ARN) 欄位，您必須輸入委派寄件者與您分享的 SNS 主題 ARN。(只有您的委派寄件者會收到這些通知，因為他們擁有 SNS 主題。 若要進一步了解委派傳送，請參閱 [傳送授權概觀](sending-authorization-overview.md)。)
**重要**  
您用於退信、投訴和交付通知的 Amazon SNS 主題必須 AWS 區域 與您使用 Amazon SES 的相同。  
此外，您必須為一或多個端點訂閱主題才能接收通知。例如，如果您想要將通知傳送到電子郵件地址，則必須訂閱將電子郵件端點訂閱至主題。如需詳細資訊，請參閱 *Amazon Simple Notification Service 開發人員指南*中的[入門](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. (選用) 如果您希望主題通知包含原始電子郵件的標頭，請在各種意見回饋類型的 SNS 主題名稱正下方勾選 **Include original email headers** (包含原始電子郵件標頭) 方塊。此選項僅適用於您將 Amazon SNS 主題指派至相關聯通知類型的情況。如需有關原始電子郵件標題內容的詳細資訊，請參閱 [通知內容](notification-contents.md) 中的 `mail` 物件。

1. 選擇**儲存變更**。您對通知設定所作的變動可能需要幾分鐘的時間才會生效。

1. (選用) 如果您選擇退信和投訴兩種 Amazon SNS 主題通知，可完全停用電子郵件通知，這樣您就不會同時透過電子郵件和 SNS 通知收到雙重通知。若要停用退信和投訴的電子郵件通知，請在 **Notifications** (通知) 索引標籤下進入已驗證身分詳細資訊畫面上的 **Email Feedback Forwarding** (電子郵件意見轉送) 容器中，然後依序選擇 **Edit** (編輯)、取消勾選 **Enabled** (已啟用) 方塊、選擇 **Save changes** (儲存變更)。

設定完成後，將開始接收退信、投訴和/或遞送通知到 Amazon SNS 主題。這些通知會以 JavaScript 物件符號 (JSON) 格式顯示，並遵循 [通知內容](notification-contents.md) 中所述之結構。

您將需針對退信、投訴和遞送通知支付標準 Amazon SNS 費率。如需詳細資訊，請參閱 [Amazon SNS 定價頁面](https://aws.amazon.com/sns/pricing)。

**注意**  
如果因為主題已刪除或 AWS 帳戶 不再具有發佈許可而嘗試發佈至 Amazon SNS 主題失敗，則如果該主題已設定為退信或投訴 （非交付 - 對於交付通知，SES 不會刪除 SNS 主題組態設定），則 Amazon SES 會移除該主題的組態。此外，Amazon SES 會重新啟用身分的退信和投訴電子郵件通知，而且您會透過電子郵件收到變更通知。如果將多個身分設定為使用主題，則每個身分發佈到主題失敗時，都會變更每個身分的主題組態。

## 使用 Amazon SES API 設定通知
<a name="configure-feedback-notifications-api"></a>

您也可以使用 Amazon SES API 來設定退信、投訴和遞送通知。使用以下操作來設定通知：
+ [SetIdentityNotificationTopic](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityNotificationTopic.html)
+ [SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html)
+ [GetIdentityNotificationAttributes](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityNotificationAttributes.html)
+ [SetIdentityHeadersInNotificationsEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityHeadersInNotificationsEnabled.html)

您可以使用這些 API 動作來為通知撰寫自訂的前端應用程式。如需關於通知相關 API 動作的完整說明，請參閱 [Amazon Simple Email Service API 參考資料](https://docs.aws.amazon.com/ses/latest/APIReference/)。

## 意見回饋通知疑難排解
<a name="configure-feedback-notifications-troubleshooting"></a>

**未接收通知**  
如果您沒有收到通知，請確定您已訂閱端點至透過傳送通知的主題。當您訂閱電子郵件端點至主題時，您會收到一封電子郵件，要求您確認訂閱。您必須先確認訂閱，才能開始接收電子郵件通知。如需詳細資訊，請參閱 *Amazon Simple Notification Service 開發人員指南*中的[入門](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

**選擇主題時出現 `InvalidParameterValue` 錯誤**  
如果您收到錯誤，指出發生 `InvalidParameterValue` 錯誤，請查看 Amazon SNS 主題確認是否已使用 AWS KMS加密。如果是，您必須修改 AWS KMS 金鑰的政策。請參閱 [先決條件](#configure-feedback-notifications-prerequisites) 獲得更多範例政策。

# Amazon SES 的 Amazon SNS 通知內容
<a name="notification-contents"></a>

退信、投訴和遞送通知會以 JavaScript 物件標記法 (JSON) 格式發佈到 [Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns) 主題。最上層 JSON 物件包含一個 `notificationType` 字串、`mail` 物件，或者 `bounce` 物件、`complaint` 物件或 `delivery` 物件。

請參閱以下章節以了解不同類型物件的說明：
+ [最上層 JSON 物件](#top-level-json-object)
+ [`mail` 物件](#mail-object)
+ [`bounce` 物件](#bounce-object)
+ [`complaint` 物件](#complaint-object)
+ [`delivery` 物件](#delivery-object)

以下幾點重要備註與 Amazon SES 的 Amazon SNS 通知內容相關：
+ 使用指定通知類型時，您可能會收到針對多個收件人的 Amazon SNS 通知，或者針對每個收件人各收到單一 Amazon SNS 通知。您的程式碼應該能夠剖析 Amazon SNS 通知並處理這兩種情況；SES 不會對透過 Amazon SNS 傳送的通知進行排序或批次處理保證。但是，不同 Amazon SNS 通知類型 (例如退信與投訴) 不會合併為單一通知。
+ 您可能會收到針對一個收件人的多種 Amazon SNS 通知類型。例如，接收郵件伺服器可能會接受電子郵件 (觸發傳遞通知)，但在處理電子郵件後，接收郵件伺服器可能會判斷電子郵件是否確實導致退信 (觸發退信通知)。但是，由於這些通知屬於不同類型，因此會一律以個別通知顯示。
+ SES 保留將其他欄位新增至通知的權利。因此，剖析這些通知的應用程式必須具備足夠的彈性，以處理未知欄位。
+ SES 會在傳送電子郵件時覆寫訊息的標頭。您可以從 `headers` 物件的 `commonHeaders` 與 `mail` 欄位擷取原始訊息標題。

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

SES 通知中的最上層 JSON 物件包含下列欄位。


| 欄位名稱 | Description | 
| --- | --- | 
| notificationType |  擁有由 JSON 物件呈現的通知類型之字串。可能值為 `Bounce`、`Complaint` 或 `Delivery`。 如果您[設定事件發佈](monitor-sending-using-event-publishing-setup.md)，此欄位名稱為 `eventType`。  | 
| mail |  其中包含與通知相關之原始電子郵件資訊的 JSON 物件。如需詳細資訊，請參閱「[郵件物件](#mail-object)」。  | 
| bounce |  此欄位只會在 `notificationType` 為 `Bounce` 並包含有關於退信資訊的 JSON 物件時才會顯示。如需詳細資訊，請參閱「[退信物件](#bounce-object)」。  | 
| complaint |  此欄位只會在 `notificationType` 為 `Complaint` 並包含有關於投訴資訊的 JSON 物件時才會顯示。如需詳細資訊，請參閱[投訴物件](#complaint-object)。  | 
| delivery |  此欄位只會在 `notificationType` 為 `Delivery` 並包含有關於傳遞資訊的 JSON 物件時才會顯示。如需詳細資訊，請參閱[交付物件](#delivery-object)。  | 

## 郵件物件
<a name="mail-object"></a>

每個退信、投訴和傳遞通知包含原始電子郵件的 `mail` 物件相關資訊。其中包含 `mail` 物件相關資訊的 JSON 物件有下列欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  timestamp  |  原始訊息傳送的時間 (以 ISO8601 格式顯示)。  | 
|  messageId  |  SES 指派給訊息的唯一 ID。當您傳送訊息時，SES 會傳回此值給您。  此訊息 ID 是由 SES 指派。您可以在 `mail` 物件的 `headers` 欄位中找到原始電子郵件的訊息 ID。   | 
|  source  |  傳送出原始訊息的電子郵件地址 (信封的「寄件人」地址)。  | 
|  sourceArn  |  用以傳送電子郵件之身分的 Amazon Resource Name (ARN)。在傳送授權的情況下，`sourceArn` 為身分持有者授權給委託寄件者之身分的 ARN，用以傳送電子郵件。如需關於傳送授權的詳細資訊，請參閱 [電子郵件身分驗證方法使用傳送授權](sending-authorization.md)。  | 
|  sourceIp  |  用戶端對 SES 執行電子郵件傳送請求的原始公有 IP 地址。  | 
|  sendingAccountId  |  用來傳送電子郵件的帳戶 AWS 帳戶 ID。在傳送授權的情況下，`sendingAccountId` 為委託寄件者的帳戶 ID。  | 
|  callerIdentity  |  傳送電子郵件的 SES 使用者的 IAM 身分。  | 
|  destination  |  原始郵件收件人的電子郵件地址清單。  | 
|  headersTruncated  |  只有在您設定通知設定，使其包含原始電子郵件的標頭時，此物件才會存在。 指出通知中的標頭是否截斷。當原始訊息的標頭大小為 10 KB 或更大時，SES 會截斷通知中的標頭。可能值為 `true` 和 `false`。  | 
|  headers  |  只有在您設定通知設定，使其包含原始電子郵件的標頭時，此物件才會存在。 電子郵件原始標題的清單。清單中的每項標題都有 `name` 欄位與 `value` 欄位。  `headers` 物件內的任何訊息 ID 都是來自您傳遞給 SES 的原始訊息。SES 隨後指派給訊息的訊息 ID 位於 `mail` 物件的 `messageId` 欄位中。   | 
|  commonHeaders  |  只有在您設定通知設定，使其包含原始電子郵件的標頭時，此物件才會存在。 包含原始電子郵件常見電子郵件標頭的相關資訊，包括寄件人、收件人及主旨欄位。在此物件中，每個標頭都是一個鍵。寄件人和收件人欄位都會以可包含多個值的陣列呈現。  針對事件，`commonHeaders` 欄位內的任何訊息 ID，就是 Amazon SES 後續指派給郵件物件的 `messageId` 欄位中之訊息的訊息 ID。通知會包含原始電子郵件的訊息 ID。   | 

以下為包含原始電子郵件標題的 `mail` 物件範例。未將此通知類型設定為包含原始電子郵件標題時，`mail` 物件不會包含 `headersTruncated`、`headers` 與 `commonHeaders` 欄位。

```
{
   "timestamp":"2018-10-08T14:05:45 +0000",
   "messageId":"000001378603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000",
   "source":"sender@example.com",
   "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
   "sourceIp": "127.0.3.0",
   "sendingAccountId":"123456789012",
   "destination":[
      "recipient@example.com"
   ],
   "headersTruncated":false,
   "headers":[ 
      { 
         "name":"From",
         "value":"\"Sender Name\" <sender@example.com>"
      },
      { 
         "name":"To",
         "value":"\"Recipient Name\" <recipient@example.com>"
      },
      { 
         "name":"Message-ID",
         "value":"custom-message-ID"
      },
      { 
         "name":"Subject",
         "value":"Hello"
      },
      { 
         "name":"Content-Type",
         "value":"text/plain; charset=\"UTF-8\""
      },
      { 
         "name":"Content-Transfer-Encoding",
         "value":"base64"
      },
      { 
         "name":"Date",
         "value":"Mon, 08 Oct 2018 14:05:45 +0000"
      }
   ],
   "commonHeaders":{ 
      "from":[ 
         "Sender Name <sender@example.com>"
      ],
      "date":"Mon, 08 Oct 2018 14:05:45 +0000",
      "to":[ 
         "Recipient Name <recipient@example.com>"
      ],
      "messageId":" custom-message-ID",
      "subject":"Message sent using SES"
   }
}
```

## 退信物件
<a name="bounce-object"></a>

JSON 物件，其中包含具有以下欄位的退信相關資訊。


| 欄位名稱 | Description | 
| --- | --- | 
|  bounceType  |  退信的類型，由 SES 決定。如需詳細資訊，請參閱[退信類型](#bounce-types)。  | 
|  bounceSubType  |  退信的子類型，由 SES 決定。如需詳細資訊，請參閱[退信類型](#bounce-types)。  | 
|  bouncedRecipients  |  其中包含遭退信的原始郵件收件人之相關資訊的清單。如需詳細資訊，請參閱[退信的收件人](#bounced-recipients)。  | 
|  timestamp  |  退信傳送的日期與時間 (以 ISO8601 格式顯示)。請注意，這是 ISP 傳送通知的時間，而不是 SES 收到通知的時間。  | 
|  feedbackId  |  退信的唯一 ID。  | 

如果 SES 能夠聯絡遠端訊息傳輸授權機構 (MTA)，則也會出現下列欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  remoteMtaIp  |  SES 嘗試傳送電子郵件的 MTA IP 地址。  | 

若退信有連接遞送狀態通知 (DSN)，則也會顯示以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  reportingMTA  |  來自 DSN 的 `Reporting-MTA` 欄位數值。這是嘗試執行傳遞、轉傳或閘道操作的 MTA 值，如 DSN 中所述。  | 

下列為 `bounce` 物件的範例。

```
{
   "bounceType":"Permanent",
   "bounceSubType": "General",
   "bouncedRecipients":[
      {
         "status":"5.0.0",
         "action":"failed",
         "diagnosticCode":"smtp; 550 user unknown",
         "emailAddress":"recipient1@example.com"
      },
      {
         "status":"4.0.0",
         "action":"delayed",
         "emailAddress":"recipient2@example.com"
      }
   ],
   "reportingMTA": "example.com",
   "timestamp":"2012-05-25T14:59:38.605Z",
   "feedbackId":"000001378603176d-5a4b5ad9-6f30-4198-a8c3-b1eb0c270a1d-000000",
   "remoteMtaIp":"127.0.2.0"
}
```

### 退信的收件人
<a name="bounced-recipients"></a>

退信通知可能與單一收件人或多個收件人相關。`bouncedRecipients` 欄位包含物件清單 (每個與退信通知相關的收件人各一個)，並且一律會包含以下欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  emailAddress  |  收件人的電子郵件地址。若有可用的 DSN，此為來自 DSN 的 `Final-Recipient` 欄位值。  | 

或者，如果 DSN 連接到退信，也可能會顯示下列欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  action  |  來自 DSN 的 `Action` 欄位數值。這表示回報 MTA 所執行的動作為嘗試傳送訊息給此收件人的結果。  | 
|  status  |  來自 DSN 的 `Status` 欄位數值。此為每個收件人的獨立傳輸狀態碼，表示訊息的傳遞狀態。  | 
|  diagnosticCode  |  由回報 MTA 發出的狀態碼。此為來自 DSN 的 `Diagnostic-Code` 欄位數值。此欄位可能不會在 DSN 中顯示 (因而也不會在 JSON 中顯示)。  | 

以下可能會在 `bouncedRecipients` 清單中的物件範例。

```
{
    "emailAddress": "recipient@example.com",
    "action": "failed",
    "status": "5.0.0",
    "diagnosticCode": "X-Postfix; unknown user"
}
```

### 退信類型
<a name="bounce-types"></a>

退信物件包含退信類型 `Undetermined`、 `Permanent`*（硬）* 或 `Transient`*（軟）*。`Permanent` *（硬）* 和 `Transient`*（軟）* 退信類型也可以包含多種退信子類型之一。

當您收到退信類型為 `Transient`*（軟體）* 的退信通知時，如果導致退信的問題已解決，您未來可能會傳送電子郵件給該收件人。

當您收到退信類型為 `Permanent`*（硬）* 的退信通知時，您不太可能能夠在未來傳送電子郵件給該收件人。因此，建議您立即從電子郵件清單中移除造成此種退信的收件人地址。

**注意**  
發生*軟退信 *（與暫時問題相關的退信，例如收件人的收件匣已滿） 時，SES 會嘗試在一段時間內重新傳送電子郵件。在該期間結束時，如果 SES 仍然無法傳送電子郵件，則會停止嘗試。  
SES 提供硬退信的通知，以及停止嘗試傳遞的軟退信通知。若您希望每次出現軟退信時都收到通知，請[啟用事件發佈](monitor-sending-using-event-publishing-setup.md)，並將之設定為在傳送延遲事件出現時傳送通知。


| bounceType | bounceSubType | Description | 
| --- | --- | --- | 
|  Undetermined  |  Undetermined  |  收件人的電子郵件提供者傳送退信訊息。退信訊息未包含足夠的 SES 資訊，無法判斷退信的原因。傳送到造成退信電子郵件傳回路徑標頭中地址的退信電子郵件，可能包含造成電子郵件退信問題的額外資訊。  | 
|  Permanent  |  General  |  收件人的電子郵件提供者傳送了硬退信訊息。  當您收到這類退信通知時，建議您立即從電子郵件清單中移除收件人的電子郵件地址。傳送訊息到產生硬退信的地址，可能會對您做為寄件者的評價產生負面影響。若您繼續傳送電子郵件到產生硬退信的地址，我們可能會暫停您傳送其他電子郵件的能力。請參閱 [使用 Amazon SES 帳戶層次禁止名單](sending-email-suppression-list.md)。   | 
|  Permanent  |  NoEmail  |  無法從退信訊息中擷取收件人電子郵件地址。  | 
|  Permanent  |  Suppressed  |  收件人的電子郵件地址位於 SES 禁止名單中，因為它最近有產生硬退信的歷史記錄。若要複寫全域禁止名單，請參閱 [使用 Amazon SES 帳戶層次禁止名單](sending-email-suppression-list.md)。  | 
|  Permanent  |  OnAccountSuppressionList  | SES 已禁止傳送到此地址，因為它位於[帳戶層級禁止名單](sending-email-suppression-list.md)中。這不會計入您的退信率指標。  | 
|  Permanent  |  UnsubscribedRecipient  | 當收件人聯絡人取消訂閱主題，並使用[清單管理選項](sending-email-list-management.md#configuring-list-management-list-contacts)將郵件傳送給他們時，就會發生此退信類型。SES 遵守聯絡偏好設定，不會嘗試傳遞。此外，由於未嘗試交付，因此此退信不會影響寄件者評價，而且收件人聯絡人也不會因為退信而新增至禁止名單。  建議您訂閱UnsubscribedRecipient事件，以避免繼續傳送至取消訂閱的收件人。考慮 [使用清單管理功能](sending-email-list-management.md)。清單管理應該是訂閱者清單的事實來源。從 SES 強制執行的角度來看，如果您繼續傳送給隱藏或取消訂閱的收件人，您將享有不遵守電子郵件傳送最佳實務的評價。   | 
|  Transient  |  General  |  收件人的電子郵件提供者傳送了一般退信訊息。若造成訊息退信的問題解決，您可能可以在未來傳送訊息到相同的收件人。  若您傳送電子郵件到具有作用中自動回應規則 (例如「不在辦公室」訊息) 的收件人，您便可能會收到這類通知。即使回應的通知類型為 `Bounce`，SES 也不會在計算您帳戶的退信率時計算自動回應。   | 
|  Transient  |  MailboxFull  |  收件人的電子郵件提供者傳送了退信訊息，因為收件人的收件匣已滿。信箱釋出空間後，您便可能可以在未來傳送給相同的收件人。  | 
|  Transient  |  MessageTooLarge  |  收件人的電子郵件提供者傳送了退信訊息，因為您傳送的訊息過大。若您減少訊息的大小，您便可能可以傳送訊息給相同的收件人。  | 
|  Transient  |  ContentRejected  |  收件人的電子郵件提供者傳送了退信訊息，因為您傳送的訊息包含提供者不允許的內容。若您變更訊息的內容，您便可能可以傳送訊息給相同的收件人。  | 
|  Transient  |  AttachmentRejected  |  收件人的電子郵件提供者傳送了退信訊息，因為訊息包含無法接受的附件。例如，有些電子郵件提供者可能會拒絕特定檔案類型的附件，或是包含非常大型附件的訊息。若您移除或變更附件的內容，您便可能可以傳送訊息給相同的收件人。  | 

## 投訴物件
<a name="complaint-object"></a>

其中包含投訴相關資訊的 JSON 物件有下列欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  complainedRecipients  |  清單中包含可能曾因某些原因導致投訴的收件人相關資訊。如需詳細資訊，請參閱[提出投訴的收件人](#complained-recipients)。  | 
|  timestamp  |  ISP 傳送投訴通知的日期和時間，格式為 ISO 8601 格式。此欄位中的日期和時間可能與 SES 收到通知的日期和時間不同。  | 
|  feedbackId  |  與投訴相關聯的唯一 ID。  | 
|  complaintSubType  | `complaintSubType` 欄位的值可以是 null 或 `OnAccountSuppressionList`。如果值為 `OnAccountSuppressionList`，SES 接受訊息，但並未嘗試傳送，因為它位於[帳戶層級禁止名單](sending-email-suppression-list.md)中。 | 

此外，如果意見回饋報告連接到該投訴，可能顯示下列欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  userAgent  |  來自意見回饋報告的 `User-Agent` 欄位數值。這表示產生報告的系統名稱和版本。  | 
|  complaintFeedbackType  |  自 ISP 傳送的意見回饋報告中的 `Feedback-Type` 欄位數值。這包含意見回饋的類型。  | 
|  arrivalDate  |  意見回饋報告中的 `Arrival-Date` or `Received-Date` 欄位值 (以 ISO8601 格式顯示)。此欄位可能不會在報告中顯示 (因而也不會在 JSON 中顯示)。  | 

下列為 `complaint` 物件的範例。

```
{
   "userAgent":"ExampleCorp Feedback Loop (V0.01)",
   "complainedRecipients":[
      {
         "emailAddress":"recipient1@example.com"
      }
   ],
   "complaintFeedbackType":"abuse",
   "arrivalDate":"2009-12-03T04:24:21.000-05:00",
   "timestamp":"2012-05-25T14:59:38.623Z",
   "feedbackId":"000001378603177f-18c07c78-fa81-4a58-9dd1-fedc3cb8f49a-000000"
}
```

### 提出投訴的收件人
<a name="complained-recipients"></a>

`complainedRecipients` 欄位包含可能曾提出投訴的收件人清單。您應該使用此資訊來判斷哪些收件人提交了投訴，然後立即將該收件人從您的郵寄清單中移除。

**重要**  
大多數的 ISP 都會從抱怨通知中移除提交投訴的收件人電子郵件地址。因此，此清單會根據原始訊息收件人和向我們提出投訴的 ISP，包含可能曾傳送投訴的收件人相關資訊。SES 會對原始訊息執行查詢，以判斷此收件人清單。

在這個清單中的 JSON 物件包含下列欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  emailAddress  |  收件人的電子郵件地址。  | 

下列為提出投訴的收件人物件範例。

```
{ "emailAddress": "recipient1@example.com" }
```

**注意**  
由於這種行為，若您限制傳送為每個收件人單一訊息 (而非在密件副本行中加入 30 個不同電子郵件地址來傳送一個訊息)，便可以更確信地知道哪些電子郵件地址曾對您的訊息提出投訴。

#### 投訴類型
<a name="complaint-types"></a>

您可能看到 `complaintFeedbackType` 欄位中由回報 ISP 根據 [Internet Assigned Numbers Authority website](http://www.iana.org/assignments/marf-parameters/marf-parameters.xml#marf-parameters-2) 指派的下列投訴類型：
+ `abuse` - 指出未經要求的電子郵件或其他形式的電子郵件濫用。
+ `auth-failure` - 電子郵件身分驗證失敗報告。
+ `fraud` - 表示某些形式的詐騙或網路釣魚活動。
+ `not-spam` - 表示提供報告的實體不會將訊息視為垃圾郵件。這可能會用於修正內含不正確標籤或者被歸類為垃圾郵件的訊息。
+ `other` - 表示不符合其他註冊類型的任何其他意見回饋。
+ `virus` - 回報在原始訊息中找到病毒。

## 交付物件
<a name="delivery-object"></a>

包含遞送相關資訊的 JSON 物件一率具有下列欄位。


| 欄位名稱 | Description | 
| --- | --- | 
|  timestamp  |  SES 將電子郵件傳送到收件人郵件伺服器的時間 (ISO8601 格式）。  | 
|  processingTimeMillis  |  SES 接受寄件者對傳送訊息至收件人郵件伺服器的請求之間的時間，以毫秒為單位。  | 
|  recipients  |  傳遞通知適用的電子郵件目標收件人清單。  | 
|  smtpResponse  |  接受來自 SES 之電子郵件的遠端 ISP 的 SMTP 回應訊息。此訊息會隨著電子郵件、接收電子郵件伺服器以及接收 ISP 而有所不同。  | 
|  reportingMTA  |  傳送郵件的 SES 郵件伺服器的主機名稱。  | 
|  remoteMtaIp  |  SES 傳送電子郵件的 MTA IP 地址。  | 

下列為 `delivery` 物件的範例。

```
{
   "timestamp":"2014-05-28T22:41:01.184Z",
   "processingTimeMillis":546,
   "recipients":["success@simulator.amazonses.com"],
   "smtpResponse":"250 ok:  Message 64111812 accepted",
   "reportingMTA":"a8-70.smtp-out.amazonses.com",
   "remoteMtaIp":"127.0.2.0"
}
```

# Amazon SES 的 Amazon SNS 通知範例
<a name="notification-examples"></a>

以下章節提供三種類型的通知範例：
+ 如需退信通知範例，請參閱 [Amazon SNS 退信通知範例](#notification-examples-bounce)。
+ 如需投訴通知範例，請參閱 [Amazon SNS 投訴通知範例](#notification-examples-complaint)。
+ 如需傳遞通知範例，請參閱 [Amazon SNS 遞送通知範例](#notification-examples-delivery)。

## Amazon SNS 退信通知範例
<a name="notification-examples-bounce"></a>

本節包含退信通知中顯示或不顯示傳遞狀態通知 (DSN) 的兩種範例，DSN 由送出意見回饋的電子郵件接收工具所提供。

### 顯示 DSN 的退信通知
<a name="notification-examples-bounce-with-dsn"></a>

以下為顯示 DSN 與原始電子郵件標題的退信通知範例。未將退信通知設定為包含原始電子郵件標題時，通知內的 `mail` 物件不會包含 `headersTruncated`、`headers` 與 `commonHeaders` 欄位。

```
   {
       "notificationType":"Bounce",
       "bounce":{
          "bounceType":"Permanent",
          "reportingMTA":"dns; email.example.com",
          "bouncedRecipients":[
             {
                "emailAddress":"jane@example.com",
                "status":"5.1.1",
                "action":"failed",
                "diagnosticCode":"smtp; 550 5.1.1 <jane@example.com>... User"
             }
          ],
          "bounceSubType":"General",
          "timestamp":"2016-01-27T14:59:38.237Z",
          "feedbackId":"00000138111222aa-33322211-cccc-cccc-cccc-ddddaaaa068a-000000",
          "remoteMtaIp":"127.0.2.0"
       },
       "mail":{
          "timestamp":"2016-01-27T14:59:38.237Z",
          "source":"john@example.com",
          "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
          "sourceIp": "127.0.3.0",
          "sendingAccountId":"123456789012",
          "callerIdentity": "IAM_user_or_role_name",
          "messageId":"00000138111222aa-33322211-cccc-cccc-cccc-ddddaaaa0680-000000",
          "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"],
          "headersTruncated":false,
          "headers":[ 
           { 
             "name":"From",
             "value":"\"John Doe\" <john@example.com>"
           },
           { 
             "name":"To",
             "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@example.com>"
           },
           { 
             "name":"Message-ID",
             "value":"custom-message-ID"
           },
           { 
             "name":"Subject",
             "value":"Hello"
           },
           { 
             "name":"Content-Type",
             "value":"text/plain; charset=\"UTF-8\""
           },
           { 
             "name":"Content-Transfer-Encoding",
             "value":"base64"
           },
           { 
             "name":"Date",
             "value":"Wed, 27 Jan 2016 14:05:45 +0000"
           }
          ],
          "commonHeaders":{ 
             "from":[ 
                "John Doe <john@example.com>"
             ],
             "date":"Wed, 27 Jan 2016 14:05:45 +0000",
             "to":[ 
                "Jane Doe <jane@example.com>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
             ],
             "messageId":"custom-message-ID",
             "subject":"Hello"
           }
        }
    }
```

### 不顯示 DSN 的退信通知
<a name="notification-examples-bounce-no-dsn"></a>

以下為顯示原始電子郵件標題但不包含 DSN 的退信通知範例。未將退信通知設定為包含原始電子郵件標題時，通知內的 `mail` 物件不會包含 `headersTruncated`、`headers` 與 `commonHeaders` 欄位。

```
   {
      "notificationType":"Bounce",
      "bounce":{
         "bounceType":"Permanent",
         "bounceSubType": "General",
         "bouncedRecipients":[
            {
               "emailAddress":"jane@example.com"
            },
            {
               "emailAddress":"richard@example.com"
            }
         ],
         "timestamp":"2016-01-27T14:59:38.237Z",
         "feedbackId":"00000137860315fd-869464a4-8680-4114-98d3-716fe35851f9-000000",
         "remoteMtaIp":"127.0.2.0"
      },
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"00000137860315fd-34208509-5b74-41f3-95c5-22c1edc3c924-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"
         ],
        "headersTruncated":false,
        "headers":[ 
         { 
            "name":"From",
            "value":"\"John Doe\" <john@example.com>"
         },
         { 
            "name":"To",
            "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@example.com>"
         },
         { 
            "name":"Message-ID",
            "value":"custom-message-ID"
         },
         { 
            "name":"Subject",
            "value":"Hello"
         },
         { 
            "name":"Content-Type",
            "value":"text/plain; charset=\"UTF-8\""
         },
         { 
            "name":"Content-Transfer-Encoding",
            "value":"base64"
         },
         { 
            "name":"Date",
            "value":"Wed, 27 Jan 2016 14:05:45 +0000"
          }
         ],
         "commonHeaders":{ 
           "from":[ 
              "John Doe <john@example.com>"
           ],
           "date":"Wed, 27 Jan 2016 14:05:45 +0000",
           "to":[ 
              "Jane Doe <jane@example.com>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
           ],
           "messageId":"custom-message-ID",
           "subject":"Hello"
         }
      }
  }
```

## Amazon SNS 投訴通知範例
<a name="notification-examples-complaint"></a>

本節包含投訴通知中包含或不包含意見回饋報告的兩種範例，意見回饋報告由送出意見回饋的電子郵件接收工具所提供。

### 含有意見回饋報告的投訴通知
<a name="notification-examples-complaint-with-feedback"></a>

以下為含有意見回饋報告與原始電子郵件標題的投訴通知範例。未將投訴通知設定為包含原始電子郵件標題時，通知內的 `mail` 物件不會包含 `headersTruncated`、`headers` 與 `commonHeaders` 欄位。

```
   {
      "notificationType":"Complaint",
      "complaint":{
         "userAgent":"AnyCompany Feedback Loop (V0.01)",
         "complainedRecipients":[
            {
               "emailAddress":"richard@example.com"
            }
         ],
         "complaintFeedbackType":"abuse",
         "arrivalDate":"2016-01-27T14:59:38.237Z",
         "timestamp":"2016-01-27T14:59:38.237Z",
         "feedbackId":"000001378603177f-18c07c78-fa81-4a58-9dd1-fedc3cb8f49a-000000"
      },
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"000001378603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"
         ], 
          "headersTruncated":false,
          "headers":[ 
           { 
             "name":"From",
             "value":"\"John Doe\" <john@example.com>"
           },
           { 
             "name":"To",
             "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@example.com>"
           },
           { 
             "name":"Message-ID",
             "value":"custom-message-ID"
           },
           { 
             "name":"Subject",
             "value":"Hello"
           },
           { 
             "name":"Content-Type",
             "value":"text/plain; charset=\"UTF-8\""
           },
           { 
             "name":"Content-Transfer-Encoding",
             "value":"base64"
           },
           { 
             "name":"Date",
             "value":"Wed, 27 Jan 2016 14:05:45 +0000"
           }
         ],
         "commonHeaders":{ 
           "from":[ 
              "John Doe <john@example.com>"
           ],
           "date":"Wed, 27 Jan 2016 14:05:45 +0000",
           "to":[ 
              "Jane Doe <jane@example.com>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
           ],
           "messageId":"custom-message-ID",
           "subject":"Hello"
         }
      }
   }
```

### 不含有意見回饋報告的投訴通知
<a name="notification-examples-complaint-no-feedback"></a>

以下為顯示原始電子郵件標題但不包含意見回饋報告的投訴通知範例。未將投訴通知設定為包含原始電子郵件標題時，通知內的 `mail` 物件不會包含 `headersTruncated`、`headers` 與 `commonHeaders` 欄位。

```
   {
      "notificationType":"Complaint",
      "complaint":{
         "complainedRecipients":[
            {
               "emailAddress":"richard@example.com"
            }
         ],
         "timestamp":"2016-01-27T14:59:38.237Z",
         "feedbackId":"0000013786031775-fea503bc-7497-49e1-881b-a0379bb037d3-000000"
      },
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"0000013786031775-163e3910-53eb-4c8e-a04a-f29debf88a84-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"
         ],
         "headersTruncated":false,
         "headers":[ 
          { 
            "name":"From",
            "value":"\"John Doe\" <john@example.com>"
          },
          { 
            "name":"To",
            "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@example.com>"
          },
          { 
            "name":"Message-ID",
            "value":"custom-message-ID"
          },
          { 
            "name":"Subject",
            "value":"Hello"
          },
          { 
            "name":"Content-Type",
            "value":"text/plain; charset=\"UTF-8\""
          },
          { 
            "name":"Content-Transfer-Encoding",
            "value":"base64"
          },
          { 
            "name":"Date",
            "value":"Wed, 27 Jan 2016 14:05:45 +0000"
          }
          ],
          "commonHeaders":{ 
             "from":[ 
                "John Doe <john@example.com>"
             ],
             "date":"Wed, 27 Jan 2016 14:05:45 +0000",
             "to":[ 
                "Jane Doe <jane@example.com>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
             ],
             "messageId":"custom-message-ID",
             "subject":"Hello"
          }
       }
   }
```

## Amazon SNS 遞送通知範例
<a name="notification-examples-delivery"></a>

以下為包含原始電子郵件標題的傳遞通知範例。未將傳遞通知設定為包含原始電子郵件標題時，通知內的 `mail` 物件不會包含 `headersTruncated`、`headers` 與 `commonHeaders` 欄位。

```
   {
      "notificationType":"Delivery",
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"0000014644fe5ef6-9a483358-9170-4cb4-a269-f5dcdf415321-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com"
         ], 
          "headersTruncated":false,
          "headers":[ 
           { 
              "name":"From",
              "value":"\"John Doe\" <john@example.com>"
           },
           { 
              "name":"To",
              "value":"\"Jane Doe\" <jane@example.com>"
           },
           { 
              "name":"Message-ID",
              "value":"custom-message-ID"
           },
           { 
              "name":"Subject",
              "value":"Hello"
           },
           { 
              "name":"Content-Type",
              "value":"text/plain; charset=\"UTF-8\""
           },
           { 
              "name":"Content-Transfer-Encoding",
              "value":"base64"
           },
           { 
              "name":"Date",
              "value":"Wed, 27 Jan 2016 14:58:45 +0000"
           }
          ],
          "commonHeaders":{ 
            "from":[ 
               "John Doe <john@example.com>"
            ],
            "date":"Wed, 27 Jan 2016 14:58:45 +0000",
            "to":[ 
               "Jane Doe <jane@example.com>"
            ],
            "messageId":"custom-message-ID",
            "subject":"Hello"
          }
       },
      "delivery":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "recipients":["jane@example.com"],
         "processingTimeMillis":546,     
         "reportingMTA":"a8-70.smtp-out.amazonses.com",
         "smtpResponse":"250 ok:  Message 64111812 accepted",
         "remoteMtaIp":"127.0.2.0"
      } 
   }
```

# 在 Amazon SES 中使用身分授權
<a name="identity-authorization-policies"></a>

身分授權政策透過指定在何種情況下允許或拒絕該身分執行哪些 SES API 動作，來定義個別已驗證身分如何使用 Amazon SES。

藉由此授權政策，您可以隨時變更或撤銷許可，以維持對身分的控制。您甚至可以授權其他使用者使用自己的 SES 帳戶，使用您擁有的身分 (網域或電子郵件地址)。

**Topics**
+ [Amazon SES 政策結構](policy-anatomy.md)
+ [在 Amazon SES 中建立身分授權政策](identity-authorization-policies-creating.md)
+ [Amazon SES 中的身分政策範例](identity-authorization-policy-examples.md)
+ [管理您用於 Amazon SES 身分授權的政策](managing-policies.md)

# Amazon SES 政策結構
<a name="policy-anatomy"></a>

政策遵循特定結構，包含元素，且必須符合特定要求。

## 政策結構
<a name="identity-authorization-policy-structure"></a>

每個授權政策是一份連接到身分的 JSON 文件。每個政策包含下列部分：
+ 位於文件上方的整體政策資訊。
+ 一個或多個獨立陳述式，各個陳述式皆說明一組權限。

下列範例政策會授予已驗證網域 *example.com* *的動作*區段中指定的 AWS 帳戶 ID *123456789012* 許可。

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

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeAccount",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:GetEmailIdentity",
        "ses:UpdateEmailIdentityPolicy",
        "ses:ListRecommendations",
        "ses:CreateEmailIdentityPolicy",
        "ses:DeleteEmailIdentity"
      ]
    }
  ]
}
```

------

您可以在 [身分政策範例](identity-authorization-policy-examples.md) 找到更多授權政策的範例。

## 政策元素
<a name="identity-authorization-policy-elements"></a>

此章節說明包含於身分授權政策中的元素。首先，我們將說明整體政策內的元素，接著說明僅適用於含有元素的陳述式之元素。接下來將討論如何新增條件至您的陳述式中。

如需元素語法的具體資訊，請參閱 *IAM 使用者指南*中的 [IAM 政策語言的文法](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-grammar.html)。

### 整體政策資訊
<a name="identity-authorization-policy-policy-wide"></a>

有兩種整體政策元素：`Id` 和 `Version`。下表提供有關這些元素的資訊。


****  

|  名稱  |  描述  |  必要  |  有效值  | 
| --- | --- | --- | --- | 
|   `Id`   |  單獨辨識政策。  |  否  |  任何字串  | 
|   `Version`   |  指定政策存取語言版本。  |  否  |  任何字串。做為最佳實務，我們建議您將 "2012-10-17" 值填入此欄位。  | 

### 政策專用的陳述式
<a name="identity-authorization-policy-statements"></a>

身分授權政策需要至少一個陳述式。每個陳述式可以包含下表中所述的元素。


****  

|  名稱  |  描述  |  必要  |  有效值  | 
| --- | --- | --- | --- | 
|   `Sid`   |  單獨辨識陳述式。  |  否  |  任何字串。  | 
|   `Effect`   |  指定您想要政策陳述式在評估時間傳回的結果。  |  是  |  「允許」或「拒絕」。  | 
|   `Resource`   |  指定政策適用的身分。 (用於[傳送授權](sending-authorization-identity-owner-tasks-policy.md)，亦即身分擁有者授權委託寄件者使用的電子郵件地址或網域。)  |  是  |  身分的 Amazon Resource Name (ARN)。  | 
|   `Principal`   |  指定 AWS 帳戶陳述式中接收許可的 、 使用者或服務 AWS 。  |  是  |  使用 `"AWS"`（例如， `"AWS": ["123456789012"]`或 `"AWS": ["arn:aws:iam::123456789012:root"]`) AWS 帳戶 IDs ARNs 指定有效的 AWS 帳戶 ID、使用者 ARN 或服務 AWS 。使用 `"Service"`（例如，) 指定 AWS 服務名稱`"Service": ["cognito-idp.amazonaws.com"]`。 如需使用者 ARN 的格式範例，請參閱 [AWS 一般參考](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam.html)。  | 
|   `Action`   |  指定陳述式套用的動作。  |  是  |  "ses:BatchGetMetricData", "ses:CancelExportJob", "ses:CreateDeliverabilityTestReport", "ses:CreateEmailIdentityPolicy", "ses:CreateExportJob", "ses:DeleteEmailIdentity", "ses:DeleteEmailIdentityPolicy", "ses:GetDomainStatisticsReport", "ses:GetEmailIdentity","ses:GetEmailIdentityPolicies", "ses:GetExportJob", "ses:ListExportJobs", "ses:ListRecommendations", "ses:PutEmailIdentityConfigurationSetAttributes", "ses:PutEmailIdentityDkimAttributes", "ses:PutEmailIdentityDkimSigningAttributes", "ses:PutEmailIdentityFeedbackAttributes", "ses:PutEmailIdentityMailFromAttributes", "ses:TagResource", "ses:UntagResource", "ses:UpdateEmailIdentityPolicy" ([傳送授權](sending-authorization-identity-owner-tasks-policy.md)動作："ses:SendEmail"、"ses:SendRawEmail"、"ses:SendTemplatedEmail"、"ses:SendBulkTemplatedEmail") 您可以指定這些操作中的一或多個。  | 
|   `Condition`   |  指定有關許可的任何限制或詳細資訊。  |  否  |  有關條件的資訊請參閱下表。  | 

### 條件
<a name="identity-authorization-policy-conditions"></a>

*條件*是關於陳述式內許可的任何限制。指定條件的陳述式部分可能是所有部分中最詳細的。*金鑰*是做為存取限制基準的特定特性，例如請求的日期和時間。

您同時使用條件和金鑰來表達限制。例如，若您希望限制委派寄件者代表您在 2019 年 7 月 30 日後向 Amazon SES 發出請求，您可以使用稱為 `DateLessThan` 的條件。您可以使用稱為 `aws:CurrentTime`的金鑰並將其設定為 `2019-07-30T00:00:00Z` 的值。

SES 僅實作下列 AWS範圍的政策金鑰：
+ `aws:CurrentTime`
+ `aws:EpochTime`
+ `aws:SecureTransport`
+ `aws:SourceIp`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserAgent`
+ `aws:VpcSourceIp`

如需關於這些索引鍵的詳細資訊，請參閱 [IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Condition)。

## 政策要求
<a name="identity-authorization-policy-restrictions"></a>

政策必須符合下列所有要求：
+ 每個政策必須至少包含一個陳述式。
+ 每個政策必須至少包含一個有效委託人。
+ 每個政策必須指定一個資源，而且該資源必須是附加政策之身分的 ARN。
+ 身分擁有者最多可將 20 個政策附加至每個獨立的身分。
+ 政策的大小不得超過 4 KB。
+ 政策名稱不能超過 64 個字元。此外，它們只能包含英數字元、連字號和底線。

# 在 Amazon SES 中建立身分授權政策
<a name="identity-authorization-policies-creating"></a>

身分授權政策由陳述式組成，指定對於該身分，哪些 API 動作以及在何種情況下被允許或拒絕。

若要授權給 Amazon SES 網域或您擁有的電子郵件地址身分，您必須建立授權政策，然後將該政策連接到該身分。一個身分可以有零、一個或多個政策。不過，單一政策只能與單一身分建立關聯。

如需可在身分授權政策中使用的 API 動作清單，請參閱 [政策專用的陳述式](policy-anatomy.md#identity-authorization-policy-statements) 表格中的 *Action* (動作)列。

您可以利用以下方式建立身分授權政策：
+ **使用政策產生器** - 您可以使用 SES 主控台中的政策產生器來建立簡易政策。除了允許或拒絕 SES API 動作的許可之外，您還可以使用條件來限制動作。您也可以使用政策產生器快速建立基本的政策架構，然後編輯該政策以自訂其內容。
+ **透過建立自訂政策** – 如果您想要包含更進階的條件或使用 AWS 服務做為委託人，您可以使用 SES 主控台或 SES API 建立自訂政策並將其連接至身分。

**Topics**
+ [使用政策產生器](using-policy-generator.md)
+ [建立自訂政策](creating-custom-policy.md)

# 使用政策產生器
<a name="using-policy-generator"></a>

您可以遵循以下步驟來使用政策產生器建立簡單的授權政策。

**若要使用政策產生器來建立政策**

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

1. 在導覽窗格中的**組態**下，選擇**身分**。

1. 在**身分**畫面上的**身分**容器中，選取您要為其建立授權政策的已驗證身分。

1. 在您於上一步選取之已驗證身分的詳細資訊畫面中，選擇 **Authorization** (授權) 索引標籤。

1. 在 **Authorization policies** (授權政策) 窗格中，選擇 **Create policy** (建立政策)，然後從下拉式選單中選取 **Use policy generator** (使用政策產生器)。

1. 在 **Create statement** (建立陳述式) 窗格中，選擇 **Effect** (效果) 欄位中的 **Allow** (允許)。(如果您要建立政策來限制此身分，請改為選擇 **Deny** (拒絕))。

1. 在**主體**欄位中，輸入 *AWS 帳戶 ID*、*IAM 使用者 ARN* AWS 或服務，以接收您要為此身分授權的許可，然後選擇**新增**。(如果您要授權給多個委託人，請針對每人重複此步驟)。

1. 在 **Actions** (動作) 欄位中，勾選您要授權給委託人的每一項動作的核取方塊。

1. (選用) 如果您要新增對許可的限定用陳述式，請展開 **Specify conditions** (指定條件)。

   1. 從 **Operator** (運算子) 下拉式選單中選取運算子。

   1. 從 **Key** (金鑰) 下拉式選單中選取類型。

   1. 根據您選取的金鑰類型，在 **Value** (值) 欄位中輸入金鑰值 (如果您想要新增更多條件，請選擇 **Add new condition** (新增條件)，並針對各個額外條件重複此步驟)。

1. 選擇 **Save statement** (儲存陳述式)。

1. (選用) 如果您要對政策新增更多陳述式，請展開 **Create another statement** (建立其他陳述式)，並重複步驟 6 - 10。

1. 選擇 **Next** (下一步)，進入 **Customize policy** (自訂政策) 畫面，在 **Edit policy details** (編輯政策詳細資訊) 容器提供的欄位中變更或自訂政策的 **Name** (名稱) 與 **Policy document** (政策文件) 本身。

1. 選擇 **Next** (下一步)，進入 **Review and apply** (檢閱並套用) 畫面，**Overview** (概觀) 容器會顯示您授權的已驗證身分，以及此政策的名稱。**Policy document** (政策文件) 窗格中會呈現您剛才撰寫的實際政策，以及您新增的任何條件 - 請檢閱政策，如果正確無誤則選擇 **Apply policy** (套用政策) (如果您需要進行變更或修正，請選擇 **Previous** (上一步)，在 **Edit policy details** (編輯政策詳細資訊) 容器中進行處理)。

# 建立自訂政策
<a name="creating-custom-policy"></a>

如果您要建立自訂政策並附加至身分，有下列方法：
+ **使用 Amazon SES API** - 在文字編輯器中建立政策，然後使用 [Amazon Simple Email Service API 參考資料](https://docs.aws.amazon.com/ses/latest/APIReference/)中所述 `PutIdentityPolicy` API 來將政策連接至身分。
+ **使用 Amazon SES 主控台** - 在文字編輯器中建立政策，並將政策貼到 Amazon SES 主控台中的「自訂政策」編輯器，以將政策連接至身分。下方說明此方法操作程序。



**若要使用自訂政策編輯器來建立自訂政策**

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

1. 在導覽窗格中的**組態**下，選擇**身分**。

1. 在**身分**畫面上的**身分**容器中，選取您要為其建立授權政策的已驗證身分。

1. 在您於上一步選取之已驗證身分的詳細資訊畫面中，選擇 **Authorization** (授權) 索引標籤。

1. 在 **Authorization policies** (授權政策) 窗格中，選擇 **Create policy** (建立政策)，然後從下拉式選單中選取 **Create custom policy** (建立自訂政策)。

1. 在 **Policy document** (政策文件) 窗格中，貼上 JSON 格式的政策文字。您也可以使用政策產生器快速建立政策基本架構，然後可在此自訂其內容。

1. 選擇 **Apply Policy** (套用政策) (如果您需要修改自訂政策，只需在 **Authorization** (授權) 索引標籤下選取相應的核取方塊，選擇 **Edit** (編輯)，然後在 **Policy document** (政策文件) 窗格中進行變更，隨後選擇 **Save changes** (儲存變更))。

# Amazon SES 中的身分政策範例
<a name="identity-authorization-policy-examples"></a>

身分授權可讓您針對身分指定允許或拒絕 API 動作的細微條件。

**Topics**
+ [指定委託人](#identity-authorization-policy-example-delegate-user)
+ [限制動作](#sending-authorization-policy-example-restricting-action)
+ [使用多個陳述式](#identity-authorization-policy-example-multiple-statements)

## 指定委託人
<a name="identity-authorization-policy-example-delegate-user"></a>

*委託人*是您授予許可的實體，可以是 AWS 帳戶、 AWS Identity and Access Management (IAM) 使用者或屬於相同帳戶的 AWS 服務。

以下範例顯示一個簡單的政策，允許 AWS ID *123456789012* 控制也由 AWS 帳戶 *123456789012* 擁有的已驗證身分 *example.com*。

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

****  

```
{
  "Id":"SampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeMarketer",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:DeleteEmailIdentity",
        "ses:PutEmailIdentityDkimSigningAttributes"
      ]
    }
  ]
}
```

------

以下範例政策將許可授予兩個使用者，以控制已驗證身分 *example.com*。使用者由他們的 Amazon Resource Name (ARN) 指定。

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

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeIAMUser",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/example.com",
      "Principal":{
        "AWS":[
          "arn:aws:iam::123456789012:user/John",
          "arn:aws:iam::123456789012:user/Jane"
        ]
      },
      "Action":[
        "ses:DeleteEmailIdentity",
        "ses:PutEmailIdentityDkimSigningAttributes"
      ]
    }
  ]
}
```

------

## 限制動作
<a name="sending-authorization-policy-example-restricting-action"></a>

根據您要授權的控制層級，有多個動作可以在身分授權政策中指定：

```
 1. "BatchGetMetricData",
 2. "ListRecommendations",
 3. "CreateDeliverabilityTestReport",
 4. "CreateEmailIdentityPolicy",
 5. "DeleteEmailIdentity",
 6. "DeleteEmailIdentityPolicy",
 7. "GetDomainStatisticsReport",
 8. "GetEmailIdentity",
 9. "GetEmailIdentityPolicies",
10. "PutEmailIdentityConfigurationSetAttributes",
11. "PutEmailIdentityDkimAttributes",
12. "PutEmailIdentityDkimSigningAttributes",
13. "PutEmailIdentityFeedbackAttributes",
14. "PutEmailIdentityMailFromAttributes",
15. "TagResource",
16. "UntagResource",
17. "UpdateEmailIdentityPolicy"
```

身分授權政策也可以讓您將委託人限制為這些動作其中之一。

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

****  

```
{
    "Id": "ExamplePolicy",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ControlAction",
            "Effect": "Allow",
            "Resource": "arn:aws:ses:us-east-1:123456789012:identity/example.com",
            "Principal": {
                "AWS": [
                    "123456789012"
                ]
            },
            "Action": [
                "ses:PutEmailIdentityMailFromAttributes"
            ]
        }
    ]
}
```

------

## 使用多個陳述式
<a name="identity-authorization-policy-example-multiple-statements"></a>

您的身分授權政策可以包含多個陳述式。以下範例政策有兩個陳述式。第一個陳述式拒絕兩個使用者在同一個帳戶 `123456789012` 內從 *sender@example.com* 存取 `getemailidentity`。第二個聲明以 `UpdateEmailIdentityPolicy` 為由拒絕了同一帳戶 `123456789012` 內的委託人 *Jack*。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"DenyGet",
      "Effect":"Deny",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/sender@example.com",
      "Principal":{
        "AWS":[
          "arn:aws:iam::123456789012:user/John", 
          "arn:aws:iam::123456789012:user/Jane"
        ]
      },
      "Action":[
        "ses:GetEmailIdentity"
      ]
    },
    {
      "Sid":"DenyUpdate",
      "Effect":"Deny",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/sender@example.com",
      "Principal":{
        "AWS":"arn:aws:iam::123456789012:user/Jack"
      },
      "Action":[
        "ses:UpdateEmailIdentityPolicy"
      ]
    }
  ]
}
```

------

# 管理您用於 Amazon SES 身分授權的政策
<a name="managing-policies"></a>

除了建立政策並附加至身分的方法外，您還可編輯、列舉並擷取身分政策，如下節之說明。

## 使用 Amazon SES 主控台管理政策
<a name="managing-policies-console"></a>

管理 Amazon SES 政策需要使用 Amazon SES 主控台來檢視、編輯或刪除連接到身分的政策。

**若要使用 Amazon SES 主控台管理政策**

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

1. 在左側導覽窗格中，選擇 **Verified identities (已驗證的身分)**。

1. 在身分清單中，選擇您要管理的身分。

1. 在身分的詳細資訊頁面上，導覽至 **Authorization** (授權) 索引標籤。您可以在其中找到附加至此身分的所有政策清單。

1. 根據您要管理的政策選取相應的核取方塊。

1. 根據所需的管理工作選擇相應的按鈕，如下所示：

   1. 若要檢視政策，請選擇 **View policy** (檢視政策)。如果需要複本，選擇 **Copy** (複製) 按鈕即可將政策複製到您的剪貼簿。

   1. 若要編輯政策，請選擇 **Edit** (編輯)。在 **Policy document** (政策文件) 窗格中編輯政策，然後選擇 **Save changes** (儲存變更)。
**注意**  
若要撤銷許可，您可以編輯或移除政策。

   1. 若要移除政策，請選擇 **Delete** (刪除)。
**重要**  
移除政策為永久性。建議您在移除政策前，使用複製並貼上到文字檔案來備份政策。

## 使用 Amazon SES API 管理政策
<a name="managing-policies-api"></a>

管理 Amazon SES 原則需要使用 Amazon SES API 來檢視、編輯或刪除連接到身分的政策。

**使用 Amazon SES API 來列舉和檢視政策**
+ 您可以使用 [ListIdentityPolicies](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentityPolicies.html) API 操作來列出連接到身分的政策。您也可以使用 [GetIdentityPolicies](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityPolicies.html) API 操作來擷取政策。

**使用 Amazon SES API 編輯政策**
+ 您可以使用 [PutIdentityPolicy API 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_PutIdentityPolicy.html)來編輯連接到身分的政策。

**使用 Amazon SES API 刪除政策**
+ 您可以使用 [DeleteIdentityPolicy API 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentityPolicy.html)來刪除連接到身分的政策。

# 透過 Amazon SES 使用傳送授權
<a name="sending-authorization"></a>

您可以設定 Amazon SES 授權其他使用者使用他們自有的 Amazon SES 帳戶，從您所有的身分 (地址或網域) 中傳送電子郵件。藉助此*傳送授權*功能，您可維持對身分的控制，從而可隨時變更或撤銷許可。例如，如果您是公司負責人，您可以使用傳送授權來讓第三方 (例如電子郵件行銷公司) 從您所有的網域傳送電子郵件。

本章介紹了傳送授權的具體內容，這些授權取代了舊版跨帳戶通知功能。首先，您應該了解使用授權政策的身份型授權的基礎知識，如 [在 Amazon SES 中使用身分授權](identity-authorization-policies.md) 中所說明，其中包括授權政策結構，以及如何管理您的政策等重要主題。

## 跨帳戶通知舊版支援
<a name="sending-authorization-cross-account-sunsetting"></a>

針對與從委派寄件者傳送的電子郵件相關聯的退信、投訴和遞送的意見回饋通知 (委派寄件者經由身分擁有者授權，可從其中一個已驗證身分傳送電子郵件)，傳統上都是使用跨帳戶通知進行設定，由委派寄件者為主題和其未擁有的身分 (此為跨帳戶身分) 建立關聯。但是，已使用與委派傳送相關聯的組態集和已驗證的身分取代跨帳戶通知，其中委派寄件者已由身分擁有者授權，可以使用其中一個已驗證的身分傳送電子郵件。此新方法允許透過以下兩種途徑靈活地設定退信、投訴、遞送和其他事件通知，端視您是委派寄件者或已驗證身分的擁有者而定：
+ **組態集** - 委派寄件者可以在自己的組態集中設定事件發佈，在從其未擁有 (但已由身分擁有者透過授權政策加以授權) 的已驗證身分傳送電子郵件時，便可以指定此組態集。事件發佈允許將退信、投訴、交付和其他事件通知發佈至 Amazon CloudWatch、Amazon Data Firehose、Amazon Pinpoint 和 Amazon SNS。請參閱 [建立事件目的地](event-destinations-manage.md)。
+ **已驗證身分** - 除了讓身分擁有者授權委派寄件者使用其中一個已驗證身分來傳送電子郵件之外，也可以應委派寄件者要求，設定共用身分的意見回饋通知，以使用委派寄件者所擁有的 SNS 主題。只有委派寄件者會收到這些通知，因為他們擁有 SNS 主題。請參閱步驟 14 以了解如何在授權政策程序中[設定「您未擁有的 SNS 主題」](sending-authorization-identity-owner-tasks-policy.md#configure-sns-topic-you-dont-own)。

**注意**  
為了相容性，您帳戶中目前使用的舊版跨帳戶通知會支援跨帳戶通知。此支援僅限於能夠修改和使用現已在 Amazon SES 傳統主控台中建立的跨帳戶通知；不過，您無法再建立*新的*跨帳戶通知。若要在 Amazon SES 新主控台中建立新的跨帳戶通知，請使用新的委派傳送方法：搭配使用組態集和[事件發佈](event-destinations-manage.md)，或使用[透過您所擁有的 SNS 主題設定](sending-authorization-identity-owner-tasks-policy.md#configure-sns-topic-you-dont-own)的已驗證身分。

**Topics**
+ [跨帳戶通知舊版支援](#sending-authorization-cross-account-sunsetting)
+ [Amazon SES 傳送授權概觀](sending-authorization-overview.md)
+ [Amazon SES 傳送授權的身分擁有者任務](sending-authorization-identity-owner-tasks.md)
+ [Amazon SES 傳送授權的委派寄件者任務](sending-authorization-delegate-sender-tasks.md)

# Amazon SES 傳送授權概觀
<a name="sending-authorization-overview"></a>

本主題提供傳送授權程序的概觀，並解釋 Amazon SES 電子郵件傳送功能 (例如傳送配額和通知) 使用傳送授權的方式。

此章節將使用以下名詞：
+ **身分** - Amazon SES 使用者用於傳送電子郵件的電子郵件地址或網域。
+ **身分擁有者** - 已使用 [驗證身分](verify-addresses-and-domains.md) 中所說明的程序驗證電子郵件地址或網域所有權的 Amazon SES 使用者。
+ **委派寄件**者 – AWS 帳戶、 AWS Identity and Access Management (IAM) 使用者或透過授權政策授權的 AWS 服務，代表身分擁有者傳送電子郵件。
+ **傳送授權政策** - 您附加到身分的文件，用於指定誰可以為該身分傳送訊息，以及傳送的條件。
+ **Amazon Resource Name (ARN)** – 一種可唯一識別所有 AWS 服務中 AWS 資源的標準化方式。對於傳送授權，資源為身分擁有者授權委派寄件者使用的身分。其中一個 ARN 的範例是 *arn:aws:ses:us-east-1:123456789012:identity/example.com*。

## 傳送授權程序
<a name="sending-authorization-process"></a>

傳送授權以傳送授權政策為基礎。若您希望讓委派寄件者代您傳送，您需要使用 Amazon SES 主控台或 Amazon SES API 來建立傳送授權政策，並將該政策與您的身分建立關聯。當委派寄件者嘗試代表您透過 Amazon SES 傳送電子郵件時，委派寄件者將在請求中或者電子郵件的標題中傳遞您的身分 ARN。

當 Amazon SES 收到傳送電子郵件的請求時，它會檢查您身分的政策 (若有)，以確定您是否已授權委派寄件者來代表該身分傳送。若委派寄件者已獲得授權，Amazon SES 便會接受電子郵件；否則 Amazon SES 會傳回錯誤訊息。

下方圖表顯示傳送授權概念之間的高階關聯：

![\[傳送授權概觀\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/images/sending_authorization_overview.png)


傳送授權程序以下列步驟組成：

1. 身分擁有者會選取供委派寄件者使用的已驗證身分。(如果您尚未驗證任何身分，請參閱 [驗證身分](verify-addresses-and-domains.md)。)
**注意**  
您為委派寄件者選擇的已驗證身分無法接受指派的[預設組態集](managing-configuration-sets.md#default-config-sets)。

1. 委派寄件者可讓身分擁有者知道他們想要用來傳送 AWS 的帳戶 ID 或 IAM 使用者 ARN。

1. 如果身分擁有者同意讓委派寄件者從其中一個擁有者的帳戶傳送，則擁有者會建立傳送授權政策，並使用 Amazon SES 主控台或 Amazon SES API 將該政策連接到所選身分。

1. 身分擁有者提供授權身分 ARN 給委派寄件者，讓委派寄件者可在電子郵件傳送時提供 ARN 給 Amazon SES。

1. 委派寄件者可以透過[事件發佈](monitor-using-event-publishing.md) (在委派傳送期間指定的組態集中啟用) 來設定退信和投訴通知。身分擁有者也可以將退信和投訴事件的電子郵件意見回饋通知設為傳送至委派寄件者的 Amazon SNS 主題。
**注意**  
如果身分擁有者停用傳送事件通知，委派寄件者必須設定事件發佈，將退信和投訴事件發佈至 Amazon SNS 主題或 Firehose 串流。寄件者也必須將包含事件發佈規則的組態集套用到他們傳送的每封電子郵件。若身分擁有者或委派寄件者都沒有針對退信和投訴事件設定傳送通知的方法，則 Amazon SES 會自動透過電子郵件將事件通知傳送到電子郵件傳回路徑中的地址 (或是若沒有指定傳回路徑地址，則為來源欄位中的地址)，即使身分擁有者停用電子郵件回饋轉送也一樣。

1. 委派寄件者在請求中或者電子郵件的標題中傳遞身分擁有者的身分 ARN，以嘗試代表身分擁有者透過 Amazon SES 傳送電子郵件。委派寄件者可使用 Amazon SES SMTP 界面或 Amazon SES API 傳送電子郵件。收到請求後，Amazon SES 會檢查任何連接到身分的政策，並在委派寄件者獲得授權使用指定的「寄件人」地址和「傳回路徑」地址時接受電子郵件；否則 Amazon SES 將傳回錯誤且不會接受訊息。
**重要**  
委派寄件者 AWS 的帳戶必須從沙盒中移除，才能用來傳送電子郵件到未驗證的地址。

1. 若身分擁有者需要若要解除對委派寄件者的授權，身分持有者需要編輯傳送授權政策或者完全刪除政策。身分擁有者可使用 Amazon SES 主控台或 Amazon SES API 執行任一種動作。

如需有關身分持有者或委託寄件者可執行這些任務的方法之資訊，請分別參閱 [身分擁有者任務](sending-authorization-identity-owner-tasks.md) 或 [委派寄件者任務](sending-authorization-delegate-sender-tasks.md)。

## 電子郵件傳送功能的屬性
<a name="sending-authorization-attribution"></a>

了解委派寄件者與身分擁有者的在 Amazon SES 電子郵件傳送功能 (例如每日傳送配額、退信與投訴、DKIM 簽署、回饋轉送以及其他功能) 中扮演的角色非常重要。屬性如下：
+ **傳送配額** - 從身分擁有者的身分傳出的電子郵件將計入委派寄件者的配額。
+ **退信和投訴** - 退信與投訴事件會記錄在委派寄件者的 Amazon SES 帳戶中，並可能因此影響委派寄件者的評價。
+ **DKIM 簽署** - 若身分擁有者已為身分啟用 Easy DKIM 簽署，所有從該身分寄出的電子郵件都會經過 DKIM 簽署，包括由委派寄件者傳送的電子郵件。只有身分擁有者能控制電子郵件是否需經 DKIM 簽署。
+ **通知** - 身分擁有者與委派寄件者皆可針對退信和投訴設定通知。電子郵件身分擁有者也可以啟用電子郵件回饋轉送。如需設定通知的詳細資訊，請參閱「[監控您的 Amazon SES 傳送活動](monitor-sending-activity.md)」。
+ **驗證** - 身分擁有者需負責 [驗證身分](verify-addresses-and-domains.md) 中的程序，以驗證他們擁有授權委派寄件者使用的電子郵件地址與網域。委託寄件者不需要特地為驗證授權驗證任何電子郵件地址或網域。
**重要**  
委派寄件者 AWS 的帳戶必須從沙盒中移除，才能用來傳送電子郵件到未驗證的地址。
+ **AWS 區域** – 委派寄件者必須從驗證身分擁有者身分 AWS 的區域傳送電子郵件。提供委派寄件者權限的傳送授權政策必須連接到該區域內的身分。
+ **帳單** - 所有從委派寄件者帳戶傳送的訊息 (包含委派寄件者使用身分擁有者地址傳送的電子郵件) 都會計入委派寄件者的帳單。

# Amazon SES 傳送授權的身分擁有者任務
<a name="sending-authorization-identity-owner-tasks"></a>

本節說明身分持有者在設定傳送授權時必須採取的步驟。

**Topics**
+ [為 Amazon SES 傳送授權驗證身分](sending-authorization-identity-owner-tasks-verification.md)
+ [為 Amazon SES 傳送授權設定身分擁有者通知](sending-authorization-identity-owner-tasks-notifications.md)
+ [向 Amazon SES 傳送授權的委派寄件者取得資訊](sending-authorization-identity-owner-tasks-information.md)
+ [在 Amazon SES 中建立傳送授權政策](sending-authorization-identity-owner-tasks-policy.md)
+ [傳送政策範例](sending-authorization-policy-examples.md)
+ [提供身分資訊給 Amazon SES 傳送授權的委派寄件者](sending-authorization-identity-owner-tasks-identity.md)

# 為 Amazon SES 傳送授權驗證身分
<a name="sending-authorization-identity-owner-tasks-verification"></a>

設定傳送授權的第一步即為證明委託寄件者用以傳送電子郵件的電子郵件地址或網域為您所擁有。驗證程序如 [驗證身分](verify-addresses-and-domains.md) 中所述。

您可以在 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)：// 的已驗證身分區段中檢查電子郵件地址或網域的狀態，或使用 `GetIdentityVerificationAttributes` API 操作來確認電子郵件地址或網域已驗證。

您必須提交請求，將您的帳戶從 Amazon SES 沙盒移除，您或委派寄件者才可以傳送電子郵件到未經驗證的電子郵件地址。如需詳細資訊，請參閱[請求生產存取權 （移出 Amazon SES 沙盒）](request-production-access.md)。

**重要**  
委派寄件 AWS 帳戶 者的 必須先從沙盒中移除，才能用來向未驗證的地址傳送電子郵件。
如果您的帳戶位於沙盒中，您無法傳送至帳戶中未驗證的電子郵件地址，即使這些網域或電子郵件地址已在身分帳戶中驗證

# 為 Amazon SES 傳送授權設定身分擁有者通知
<a name="sending-authorization-identity-owner-tasks-notifications"></a>

若您授權委派寄件者代表您傳送電子郵件，Amazon SES 會將那些電子郵件產生的所有退信或投訴計入委派寄件者的退信和投訴限制，而非您的限制。但是，若您的 IP 地址因為委派寄件者傳送的訊息而遭列於第三方防垃圾郵件 DNS 黑名單 (DNSBL) 上，您身分的評價便可能會因此受到損害。因此，若您是身分擁有者，建議您為您的所有身分設定電子郵件回饋轉送，包括您已授權用於委派傳送的身分。如需詳細資訊，請參閱[透過電子郵件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)。

委派寄件者可以且必須針對您授權他們使用的身分，設定自己的退信和投訴通知。他們可以設定[事件發佈至 ](monitor-using-event-publishing.md)，將退信和投訴事件發佈至 Amazon SNS 主題或 Firehose 串流。

若身分擁有者或委派寄件者都沒有針對退信和投訴事件設定傳送通知的方法，或是寄件者並未套用使用事件發佈規則的組態集，則 Amazon SES 會自動透過電子郵件將事件通知傳送到電子郵件傳回路徑中的地址 (或是若沒有指定傳回路徑地址，則為來源欄位中的地址)，即使您停用電子郵件回饋轉送也一樣。下圖說明此程序。

![\[Flowchart showing notification paths for bounce/complaint events based on various settings.\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/images/feedback_forwarding.png)


# 向 Amazon SES 傳送授權的委派寄件者取得資訊
<a name="sending-authorization-identity-owner-tasks-information"></a>

您的傳送授權政策必須指定至少一個*委託人*，這是您授予存取權的委派寄件者的實體，可讓對方代表您的其中一個已驗證身分進行傳送。對於 Amazon SES 傳送授權政策，委託人可以是委派寄件者的 AWS 帳戶或 AWS Identity and Access Management (IAM) 使用者 ARN AWS 或服務。

簡單的思路為*委託人* (委派寄件者) 是被授予者，而您 (身分擁有者) 是授權政策中的授予者，您要授予*允許*許可，供對方從您所擁有的*資源* (已驗證身分) 傳送任何電子郵件、電子郵件原始碼、範本電子郵件或大量範本電子郵件的組合。

如果您想要最佳的細微控制，請要求委派寄件者設定 IAM 使用者，讓只有一位委派寄件者能為您傳送電子郵件，而非委派寄件者 AWS 帳戶中的任何使用者。委派寄件者可在《*IAM 使用者指南*》中的[在您的 AWS 帳戶中建立 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SettingUpUser.html)裡找到設定 IAM 使用者的相關資訊。

向您的委派寄件者詢問 AWS 帳戶 ID 或 IAM 使用者的 Amazon Resource Name (ARN)，以便您可以將其包含在傳送授權政策中。可告知您的委託寄件者前往 [提供資訊給身分擁有者](sending-authorization-delegate-sender-tasks-information.md) 取得此資訊的說明。如果委派寄件者是 AWS 服務，請參閱該服務的文件以判斷服務名稱。

以下範例政策說明身分擁有者為了授權委派寄件者從身分擁有者的資源進行傳送，所建立的政策中需要哪些基本元素。身分擁有者會進入 Verified identities (已驗證身分) 工作流程，然後在 Authorization (授權) 下使用政策產生器，以最簡單的形式建立下列基本政策，允許委派寄件者代表身分擁有者所擁有的資源進行傳送：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowSESSendEmail",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Resource": [
          "arn:aws:ses:us-east-1:444455556666:identity/bob@example.com"
      ],
      "Condition": {}
    }
  ]
}
```

------

以下圖例說明上述政策的主要元素及擁有者：
+ **Principal** (委託人) - 此欄位會填入委派寄件者的 IAM 使用者 ARN。
+ **Action** (動作) - 此欄位會填入身分擁有者允許委派寄件者從身分擁有者的資源執行的兩個 SES 動作 (`SendEmail` 和 `SendRawEmail`)。
+ **Resource** (資源) - 此欄位會填入身分擁有者授權委派寄件者從中進行傳送的已驗證資源。

# 在 Amazon SES 中建立傳送授權政策
<a name="sending-authorization-identity-owner-tasks-policy"></a>

如同在 [建立身分授權政策](identity-authorization-policies-creating.md) 中所說明，與在 Amazon SES 建立任何授權政策類似，若要授權委託寄件者使用您擁有的電子郵件地址或網域 (*身分*)，您會建立已指定 SES 傳送 API 動作的政策，然後將該政策連接至該身分。

如需可在傳送授權政策中指定的 API 動作清單，請參閱 [政策專用的陳述式](policy-anatomy.md#identity-authorization-policy-statements) 表格中的 *Action* (動作) 列。

您可以使用政策產生器或建立自訂政策來建立傳送授權政策。針對任一種方法提供了建立傳送授權政策的特定程序。

**注意**  
附加到電子郵件地址身分的傳送授權政策會優先於附加到其對應網域身分的政策。例如，如果您針對 *example.com* 建立不允許委派寄件者的政策，而針對 *sender@example.com* 建立允許委派寄件者的政策，則委派寄件者可以從 *sender@example.com* 傳送電子郵件，但不能從 *example.com* 網域上的任何其他地址傳送電子郵件。
如果您針對 *example.com* 建立允許委託寄件者的政策，而針對 *sender@example.com* 建立不允許委託寄件者的政策，則委託寄件者可以從 *example.com* 網域上的任何地址傳送電子郵件，但 *sender@example.com* 除外。
如果您不熟悉 SES 授權政策的結構，請參閱 [政策剖析](policy-anatomy.md)。
如果您授權的身分在次要區域中重複，做為[全域端點](global-endpoints.md)功能的一部分，您將需要在主要和次要區域中建立身分的傳送授權政策，以便委派寄件者具有在這兩個區域中使用此身分傳送的許可。

## 使用政策產生器建立傳送授權政策
<a name="sending-authorization-identity-owner-tasks-identity-policy-generator"></a>

您可以遵循以下步驟，以使用政策產生器建立傳送授權政策。

**若要使用政策產生器建立傳送授權政策**

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

1. 在導覽窗格中的**組態**下，選擇**身分**。

1. 在 **Verified identities** (已驗證身分) 畫面的 **Identities** (身分) 容器中，選取您要授權委派寄件者代表您傳送的已驗證身分。

1. 選擇已驗證身份的**授權**標籤。

1. 在 **Authorization policies** (授權政策) 窗格中，選擇 **Create policy** (建立政策)，然後從下拉式選單中選取 **Use policy generator** (使用政策產生器)。

1. 在 **Create statement** (建立陳述式) 窗格中，選擇 **Effect** (效果) 欄位中的 **Allow** (允許)。(如果您要建立政策來限制委派寄件者，請改為選擇 **Deny** (拒絕))。

1. 在 **Principals** (委託人) 欄位中，輸入委派寄件者與您分享的 *AWS 帳戶 ID* 或 *IAM 使用者 ARN*，以授權對方代表您的帳戶傳送此身分的電子郵件，然後選擇 **Add** (新增)。(如果您要授權多個委派寄件者，請針對每人重複此步驟)。

1. 在 **Actions** (動作) 欄位中，根據您要授權委派寄件者的各種傳送類型選取相應的核取方塊。

1. (選用) 如果您要對委派寄件者許可新增限定用的陳述式，請展開 **Specify conditions** (指定條件)。

   1. 從 **Operator** (運算子) 下拉式選單中選取運算子。

   1. 從 **Key** (金鑰) 下拉式選單中選取類型。

   1. 根據您選取的金鑰類型，在 **Value** (值) 欄位中輸入金鑰值 (如果您想要新增更多條件，請選擇 **Add new condition** (新增條件)，並針對各個額外條件重複此步驟)。

1. 選擇 **Save statement** (儲存陳述式)。

1. (選用) 如果您要對政策新增更多陳述式，請展開 **Create another statement** (建立其他陳述式)，並重複步驟 6 - 10。

1. 選擇 **Next** (下一步)，進入 **Customize policy** (自訂政策) 畫面，在 **Edit policy details** (編輯政策詳細資訊) 容器提供的欄位中變更或自訂政策的 **Name** (名稱) 與 **Policy document** (政策文件) 本身。

1. 選擇 **Next** (下一步)，進入 **Review and apply** (檢閱並套用) 畫面，**Overview** (概觀) 容器會顯示您為委派寄件者授權的已驗證身分，以及此原則的名稱。**Policy document** (政策文件) 窗格中會呈現您剛才撰寫的實際政策，以及您新增的任何條件 - 請檢閱政策，如果正確無誤則選擇 **Apply policy** (套用政策) (如果您需要進行變更或修正，請選擇 **Previous** (上一步)，在 **Edit policy details** (編輯政策詳細資訊) 容器中進行處理)。您剛建立的原則將允許您的委派寄件者代表您進行傳送。

1. <a name="configure-sns-topic-you-dont-own"></a>(選用) 如果您的委派寄件者也想要使用他們擁有的 SNS 主題、在收到退信、投訴或電子郵件已遞送時接收意見回饋通知，您必須在此已驗證身分中設定他們的 SNS 主題 （您的委派寄件者必須與您共用他們的 SNS 主題 ARN）。選取 **Notifications** (通知) 索引標籤，然後選取 **Feedback notifications** (意見回饋通知) 容器中的 **Edit** (編輯)：

   1. 在 **Configure SNS topics** (設定 SNS 主題) 窗格的任一意見回饋欄位 (退信、投訴或遞送) 中，選取 **SNS topic you don’t own** (您未擁有的 SNS 主題)，然後輸入委派寄件者所擁有並與您共用的 **SNS topic ARN** (SNS 主題 ARN) (只有您的委派寄件者才會收到這些通知，因為他們擁有 SNS 主題 - 您是身分擁有者，並不會收到這些通知)。

   1. (選用) 如果您希望主題通知包含原始電子郵件的標頭，請在各種意見回饋類型的 SNS 主題名稱正下方勾選 **Include original email headers** (包含原始電子郵件標頭) 方塊。此選項僅適用於您將 Amazon SNS 主題指派至相關聯通知類型的情況。如需有關原始電子郵件標題內容的詳細資訊，請參閱 [通知內容](notification-contents.md) 中的 `mail` 物件。

   1. 選擇**儲存變更**。您對通知設定所作的變動可能需要幾分鐘的時間才會生效。

   1. (選用) 由於您的委派寄件者會收到退信和投訴的 Amazon SNS 主題通知，因此如果您不想收到此身分傳送的意見回饋，可以完全停用電子郵件通知。若要停用退信和投訴的電子郵件意見回饋，請在 **Notifications** (通知) 索引標籤的 **Email Feedback Forwarding** (電子郵件意見轉送) 容器中選擇 **Edit** (編輯)，取消勾選 **Enabled** (已啟用) 方塊，然後選擇 **Save changes** (儲存變更)。遞送狀態通知現在只會傳送至委派寄件者所擁有的 SNS 主題。

## 建立自訂傳送授權政策
<a name="sending-authorization-identity-owner-tasks-identity-policy-custom"></a>

如果您要建立自訂傳送授權政策並連接至身分，有下列方法：
+ **使用 Amazon SES API** - 在文字編輯器中建立政策，然後使用 [Amazon Simple Email Service API 參考資料](https://docs.aws.amazon.com/ses/latest/APIReference/)中所述 `PutIdentityPolicy` API 來將政策連接至身分。
+ **使用 Amazon SES 主控台** - 在文字編輯器中建立政策，並將政策貼到 Amazon SES 主控台中的「自訂政策」編輯器，以將政策連接至身分。下方說明此方法操作程序。



**若要使用自訂政策編輯器來建立自訂傳送授權政策**

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

1. 在導覽窗格中的**組態**下，選擇**身分**。

1. 在 **Verified identities** (已驗證身分) 畫面的 **Identities** (身分) 容器中，選取您要授權委派寄件者代表您傳送的已驗證身分。

1. 在您於上一步選取之已驗證身分的詳細資訊畫面中，選擇 **Authorization** (授權) 索引標籤。

1. 在 **Authorization policies** (授權政策) 窗格中，選擇 **Create policy** (建立政策)，然後從下拉式選單中選取 **Create custom policy** (建立自訂政策)。

1. 在 **Policy document** (政策文件) 窗格中，貼上 JSON 格式的政策文字。您也可以使用政策產生器快速建立政策基本架構，然後可在此自訂其內容。

1. 選擇 **Apply Policy** (套用政策) (如果您需要修改自訂政策，只需在 **Authorization** (授權) 索引標籤下選取相應的核取方塊，選擇 **Edit** (編輯)，然後在 **Policy document** (政策文件) 窗格中進行變更，隨後選擇 **Save changes** (儲存變更))。

1. (選用) 如果您的委派寄件者也想要使用他們擁有的 SNS 主題、在收到退信、投訴或電子郵件已遞送時接收意見回饋通知，您必須在此已驗證身分中設定他們的 SNS 主題 （您的委派寄件者必須與您共用他們的 SNS 主題 ARN）。選取 **Notifications** (通知) 索引標籤，然後選取 **Feedback notifications** (意見回饋通知) 容器中的 **Edit** (編輯)：

   1. 在 **Configure SNS topics** (設定 SNS 主題) 窗格的任一意見回饋欄位 (退信、投訴或遞送) 中，選取 **SNS topic you don’t own** (您未擁有的 SNS 主題)，然後輸入委派寄件者所擁有並與您共用的 **SNS topic ARN** (SNS 主題 ARN) (只有您的委派寄件者才會收到這些通知，因為他們擁有 SNS 主題 - 您是身分擁有者，並不會收到這些通知)。

   1. (選用) 如果您希望主題通知包含原始電子郵件的標頭，請在各種意見回饋類型的 SNS 主題名稱正下方勾選 **Include original email headers** (包含原始電子郵件標頭) 方塊。此選項僅適用於您將 Amazon SNS 主題指派至相關聯通知類型的情況。如需有關原始電子郵件標題內容的詳細資訊，請參閱 [通知內容](notification-contents.md) 中的 `mail` 物件。

   1. 選擇**儲存變更**。您對通知設定所作的變動可能需要幾分鐘的時間才會生效。

   1. (選用) 由於您的委派寄件者會收到退信和投訴的 Amazon SNS 主題通知，因此如果您不想收到此身分傳送的意見回饋，可以完全停用電子郵件通知。若要停用退信和投訴的電子郵件意見回饋，請在 **Notifications** (通知) 索引標籤的 **Email Feedback Forwarding** (電子郵件意見轉送) 容器中選擇 **Edit** (編輯)，取消勾選 **Enabled** (已啟用) 方塊，然後選擇 **Save changes** (儲存變更)。遞送狀態通知現在只會傳送至委派寄件者所擁有的 SNS 主題。

# 傳送政策範例
<a name="sending-authorization-policy-examples"></a>

傳送授權可讓您指定精確的條件，需符合這些條件才可允許委託寄件者代表您傳送。

**Topics**
+ [發送授權的特定條件](#sending-authorization-policy-conditions)
+ [指定委託寄件者](#sending-authorization-policy-example-sender)
+ [限制「寄件人」地址](#sending-authorization-policy-example-from)
+ [限制受委託者可傳送電子郵件的時間](#sending-authorization-policy-example-time)
+ [限制電子郵件傳送動作](#sending-authorization-policy-example-action)
+ [限制電子郵件寄件者的顯示名稱](#sending-authorization-policy-example-display-name)
+ [使用多個陳述式](#sending-authorization-policy-example-multiple-statements)

## 發送授權的特定條件
<a name="sending-authorization-policy-conditions"></a>

*條件*是關於陳述式內許可的任何限制。指定條件的陳述式部分可能是所有部分中最詳細的。*金鑰*是做為存取限制基準的特定特性，例如請求的日期和時間。

您同時使用條件和金鑰來表達限制。例如，若您希望限制委派寄件者代表您在 2019 年 7 月 30 日後向 Amazon SES 發出請求，您可以使用稱為 `DateLessThan` 的條件。您可以使用稱為 `aws:CurrentTime`的金鑰並將其設定為 `2019-07-30T00:00:00Z` 的值。

您可以使用 *IAM 使用者指南*中[可用](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#AvailableKeys)金鑰中列出的任何 AWS通用金鑰，也可以使用下列其中一個適用於 SES 的金鑰，這些金鑰有助於傳送授權政策：


****  

|  條件金鑰  |  Description  | 
| --- | --- | 
|   `ses:Recipients`   |  限制收件人地址，包括：「收件人」、「副本」和「密件副本」地址。  | 
|   `ses:FromAddress`   |  限制「寄件人」地址。  | 
|   `ses:FromDisplayName`   |  限制用於「寄件人」顯示名稱的字串內容 (有時稱為「方便從」)。例如，"John Doe <johndoe@example.com>" 的顯示名稱為 John Doe。  | 
|   `ses:FeedbackAddress`   |  限制「傳回路徑」地址，此地址可使用電子郵件意見回饋轉送功能來接收退信和投訴。如需關於電子郵件意見轉送功能的詳細資訊，請參閱 [透過電子郵件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)。  | 

您可以搭配 Amazon SES 金鑰使用 `StringEquals` 和 `StringLike` 條件。這些條件用於區分大小寫字串的比對。針對 `StringLike`，其值可以在字串中的任何位置包含多字元比對萬用字元 (\$1) 或單一字元比對萬用字元 (?)。例如，以下條件會指定委派寄件者只能從以 *invoicing* 為開頭、以 *@example.com* 為結尾的 "From" 地址傳送：

```
1. "Condition": {
2.     "StringLike": {
3.       "ses:FromAddress": "invoicing*@example.com"
4.     }
5. }
```

您也可以使用 `StringNotLike` 條件，防止委託寄件者從特定電子郵件地址傳送電子郵件。例如，您可以在政策陳述式中包含以下條件，禁止從 *admin@example.com* 以及類似地址進行傳送，例如 *"admin"@example.com*、*admin\$11@example.com* 或 *sender@admin.example.com*：

```
1. "Condition": {
2.     "StringNotLike": {
3.       "ses:FromAddress": "*admin*example.com"
4.     }
5.  }
```

如需指定條件的詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。

## 指定委託寄件者
<a name="sending-authorization-policy-example-sender"></a>

*委託人*是您授予許可的實體，可以是 AWS 帳戶、 AWS Identity and Access Management (IAM) 使用者或 AWS 服務。

下列範例顯示一個簡單的政策，允許 AWS ID *123456789012* 從已驗證的身分 *example.com* （由 AWS 帳戶 *888888888888* 擁有） 傳送電子郵件。此政策中的`Condition`陳述式僅允許委派人 （即 AWS ID *123456789012*) 從地址 *marketing\$1.\$1@example.com* 傳送電子郵件，其中 *\$1* 是寄件者在 *marketing\$1 之後想要新增的任何字串*。

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

****  

```
{
  "Id":"SampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeMarketer",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "StringLike":{
          "ses:FromAddress":"marketing+.*@example.com"
        }
      }
    }
  ]
}
```

------

以下範例政策授予兩個 IAM 使用者從身分 *example.com* 傳送的許可。IAM 使用者由他們的 Amazon Resource Name (ARN) 指定。

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

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeIAMUser",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "arn:aws:iam::111122223333:user/John",
          "arn:aws:iam::444455556666:user/Jane"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ]
    }
  ]
}
```

------

以下範例政策將許可授予 Amazon Cognito，允許其從身分 *example.com* 傳送。

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

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeService",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "Service":[
          "cognito-idp.amazonaws.com"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "888888888888",
          "aws:SourceArn": "arn:aws:cognito-idp:us-east-1:888888888888:userpool/your-user-pool-id-goes-here"
        }
      }
    }
  ]
}
```

------

以下範例政策將許可授予 AWS Organizations 中的所有帳戶，允許其從身分 example.com 傳送。 AWS Organization 是使用 [PrincipalOrgID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) 全域條件金鑰來指定。

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

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeOrg",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":"*",
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "StringEquals":{
          "aws:PrincipalOrgID":"o-xxxxxxxxxxx"
        }
      }
    }
  ]
}
```

------

## 限制「寄件人」地址
<a name="sending-authorization-policy-example-from"></a>

如果您使用驗證網域，可以會想要建立一個政策，只允許委託寄件者從指定的電子郵件地址中傳送。若要限制「寄件人」的地址，您需要在鍵上設定一個稱為 *ses:FromAddress* 的條件。下列政策可讓 AWS 帳戶 ID *123456789012* 從身分 *example.com* 傳送，但只能從電子郵件地址 *sender@example.com* 傳送。

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

****  

```
{
  "Id":"ExamplePolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeFromAddress",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "StringEquals":{
          "ses:FromAddress":"sender@example.com"
        }
      }
    }
  ]
}
```

------

## 限制受委託者可傳送電子郵件的時間
<a name="sending-authorization-policy-example-time"></a>

您也可以設定您的寄件者授權政策，因讓委託寄件者僅可於一天中的特定時間或者在特定日期範圍內傳送電子郵件。例如，如果您計劃在 2021 年 9 月傳送電子郵件行銷活動，您可以使用以下政策來限制受委託人僅能在該月份內傳送電子郵件。

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

****  

```
{
  "Id":"ExamplePolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"ControlTimePeriod",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "DateGreaterThan":{
          "aws:CurrentTime":"2021-08-31T12:00Z"
        },
        "DateLessThan":{
          "aws:CurrentTime":"2021-10-01T12:00Z"
        }
      }
    }
  ]
}
```

------

## 限制電子郵件傳送動作
<a name="sending-authorization-policy-example-action"></a>

寄件者可使用兩種動作來透過 Amazon SES 傳送電子郵件：`SendEmail` 和 `SendRawEmail`，取決於寄件者想要對電子郵件格式擁有多少控制權。傳送授權政策可讓您限制委託寄件者為以下兩種動作之一。但是，許多身分擁有者會在政策中啟用兩種動作，以讓委派寄件者決定電子郵件傳送呼叫的詳細資訊。

**注意**  
如果您想要讓委派寄件者透過 SMTP 界面存取 Amazon SES，您必須至少選擇 `SendRawEmail`。

如果您的使用案例是想要限制動作，可以只在傳送授權政策中加入一個動作。以下範例說明如何對 `SendRawEmail` 限制動作。

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

****  

```
{
  "Id":"ExamplePolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"ControlAction",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendRawEmail"
      ]
    }
  ]
}
```

------

## 限制電子郵件寄件者的顯示名稱
<a name="sending-authorization-policy-example-display-name"></a>

部分電子郵件用戶端顯示電子郵件寄件者的「方便」名稱 (若電子郵件標題提供)，而非實際的「寄件人」地址。例如，"John Doe <johndoe@example.com>" 的顯示名稱為 John Doe。例如，您可能會從 *user@example.com* 傳送電子郵件，但是您想讓收件人看到該電子郵件是來自 *Marketing* (行銷)，而非來自 *user@example.com*。下列政策可讓 AWS 帳戶 ID 123456789012 從身分 *example.com* 傳送，但前提是「寄件人」地址的顯示名稱包含*行銷*。

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

****  

```
{
  "Id":"ExamplePolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeFromAddress",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "StringLike":{
          "ses:FromDisplayName":"Marketing"
        }
      }
    }
  ]
}
```

------

## 使用多個陳述式
<a name="sending-authorization-policy-example-multiple-statements"></a>

您的傳送授權政策可以包含多個陳述式。以下範例政策有兩個陳述式。第一個陳述式授權兩個從 *sender@example.com* AWS 帳戶 傳送，只要「寄件人」地址和意見回饋地址都使用網域 *example.com*。第二個陳述式授權 IAM 使用者從 *sender@example.com* 傳送，只要在收件人的電子郵件地址位於 *example.com* 網域內就能傳送。

# 提供身分資訊給 Amazon SES 傳送授權的委派寄件者
<a name="sending-authorization-identity-owner-tasks-identity"></a>

在您建立傳送授權政策並附加至身分後，可提供委託寄件者身分的 Amazon Resource Name (ARN) 資訊。委派寄件者會利用電子郵件傳送作業或電子郵件標題將 ARN 傳遞給 Amazon SES。若要尋找身分的 ARN，請按照下列步驟操作。

**若要尋找身分 ARN**

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

1. 在導覽窗格中的 **Configuration** (組態) 下，選擇 **Verified identities** (已驗證身分)。

1. 在身分清單中，選擇想要附加傳送授權政策的身分。

1. 在 **Summary** (摘要) 窗格中，第二欄 **Amazon Resource Name (ARN)** (Amazon 資源名稱 (ARN)) 將包含身分的 ARN。其格式與 *arn:aws:ses:us-east-1:123456789012:identity/user@example.com* 相似。複製整個 ARN 並提供給您的委派寄件人。
**重要**  
如果您授權的身分在次要區域中作為[全域端點](global-endpoints.md)功能的一部分重複，請將區域參數取代為星號，例如 `us-east-1`，`*`如下列範例所示`arn:aws:ses:*:123456789012:identity/user@example.com`。

# Amazon SES 傳送授權的委派寄件者任務
<a name="sending-authorization-delegate-sender-tasks"></a>

身為委派寄件者，您會在經過授權的情況下代表並非自有的身分來傳送電子郵件。即使您代表身分擁有者傳送，退信和投訴也會計入您 AWS 帳戶的退信和投訴指標，而您傳送的訊息數量也會計入您的傳送配額。您也需負責提出任何可能需要的傳送配額提高請求，以傳送身分持有者的電子郵件。

身為委託寄件者，您必須完成下列任務：
+ [提供資訊給身分擁有者](sending-authorization-delegate-sender-tasks-information.md)
+ [使用委派寄件者通知](sending-authorization-delegate-sender-tasks-notifications.md)
+ [為身分擁有者傳送電子郵件](sending-authorization-delegate-sender-tasks-email.md)

# 提供資訊給 Amazon SES 傳送授權的身分擁有者
<a name="sending-authorization-delegate-sender-tasks-information"></a>

身為委派寄件者，您必須向身分擁有者提供 AWS 您的帳戶 ID 或 IAM 使用者 Amazon Resource Name (ARN)，因為您將代表身分擁有者傳送電子郵件。身分擁有者需要您的帳戶資訊，才能建立政策，授予您從其中一個已驗證身分傳送的許可。

如果您想要使用自己的 SNS 主題，可以請求身分擁有者將退信、投訴或遞送的意見回饋通知設為傳送至您的一或多個 SNS 主題。若要這樣做，您需要與身分擁有者共用 SNS 主題 ARN，以便他們可以在授權您傳送的已驗證身分中設定 SNS 主題。

下列程序說明如何尋找您的帳戶資訊和 SNS 主題 ARN，以便與您的身分擁有者共用。

**尋找 AWS 您的帳戶 ID**

1. 在 AWS 管理主控台 https：//[https://console.aws.amazon.com](https://console.aws.amazon.com/) 登入 。

1. 在主控台的右上角，展開您的名稱/帳戶號碼，然後從下拉式選單中選擇 **My Account** (我的帳戶)。

1. 帳戶設定頁面會開啟並顯示您的所有帳戶資訊，包括 AWS 您的帳戶 ID。

**若要尋找您的 IAM 使用者 ARN**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 在使用者清單中選擇使用者名稱。**Summary** (摘要) 區段將顯示 IAM 使用者 ARN。ARN 會與以下範例相似：*arn:aws:iam::123456789012:user/John*。

**若要尋找您的 SNS 主題 ARN**

1. 在 [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home) 開啟 Amazon SNS 主控台。

1. 在導覽窗格中，選擇**主題**。

1. 在主題清單中，SNS 主題 ARN 會顯示在 **ARN** 一欄中。ARN 外觀類似以下範例：*arn:aws:sns:us-east-1:444455556666:my-sns-topic*。

# 使用 Amazon SES 傳送授權的委派寄件者通知
<a name="sending-authorization-delegate-sender-tasks-notifications"></a>

身為委派寄件者，您會代表並非自有的身分來傳送電子郵件；不過，退信和投訴仍然計入*您的*退信與投訴指標，而非身分擁有者的指標。

若您帳戶的退信或投訴率太高，您的帳戶就存在列入審核的風險，或會暫停帳戶傳送電子郵件的功能。因此，設定通知並擁有監控他們的程序相當重要。您也需要擁有從電子郵件清單中移除退信或投訴地址的程序。

因此，身為委派寄件者，您可以設定 Amazon SES，在代表您未擁有但已獲得身分擁有者授權使用的身分傳送的電子郵件發生退回和投訴事件時傳送通知。您也可以設定[事件發佈](monitor-using-event-publishing.md)，將退信和投訴通知發佈至 Amazon SNS 或 Firehose。

**注意**  
若您將 Amazon SES 設定為使用 Amazon SNS 傳送通知，您將需要針對收到的通知支付標準 Amazon SNS 費用。如需詳細資訊，請參閱 [Amazon SNS 定價頁面](https://aws.amazon.com/sns/pricing)。

## 建立新的委派寄件者通知
<a name="sending-authorization-delegate-sender-tasks-management-add"></a>

您可以設定委派傳送通知，方法是使用[事件發佈](event-destinations-manage.md)的組態集，或使用[以您自己的 SNS 主題設定](sending-authorization-identity-owner-tasks-policy.md#configure-sns-topic-you-dont-own)的已驗證身分。

使用以上任一方法設定新委派傳送通知的程序如下：
+ 透過組態集設定事件發佈
+ 設定您的 SNS 主題的意見回饋通知

**若要透過組態集設定事件發佈以進行委派傳送**

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

1. 請遵循[建立事件目的地](event-destinations-manage.md)中的程序。

1. 在組態集中設定事件發佈之後，當您使用身分擁有者授權您傳送的已驗證身分，以委派寄件者身分傳送電子郵件時，請指定組態集的名稱。請參閱 [為身分擁有者傳送電子郵件](sending-authorization-delegate-sender-tasks-email.md)。

**若要設定您的 SNS 主題的意見回饋通知以進行委派傳送**

1. 決定要用於意見回饋通知的 SNS 主題之後，請遵循[尋找您的 SNS 主題 ARN](sending-authorization-delegate-sender-tasks-information.md#find-sns-topic-arn) 程序，複製完整的 ARN 並與您的身分擁有者共用。

1. 請身分擁有者透過已授權您進行傳送的共用身分，為您設定用於意見回饋通知的 SNS 主題 (您的身分擁有者必須遵循授權政策程序中的[設定 SNS 主題](sending-authorization-identity-owner-tasks-policy.md#configure-sns-topic-you-dont-own)程序)。

# 為 Amazon SES 傳送授權的身分擁有者傳送電子郵件
<a name="sending-authorization-delegate-sender-tasks-email"></a>

身為委派寄件者，您可以與其他 Amazon SES 寄件者使用相同的方式來傳送電子郵件，只是您需要向身分擁有者提供授權您使用的身分之 Amazon Resource Name (ARN)。當您呼叫 Amazon SES 來傳送電子郵件時，Amazon SES 會檢查您指定的身分是否含有授權您傳送的政策。

有不同的方法可指定傳送電子郵件時的身分 ARN。您使用的方法，取決於您是使用 Amazon SES API 作業還是 Amazon SES SMTP 界面來傳送電子郵件。

**重要**  
若要成功傳送電子郵件，您必須連線到身分擁有者驗證身分所在 AWS 區域中的 Amazon SES 端點。
此外， AWS **必須**從沙盒中移除身分擁有者和委派寄件者的帳戶，才能將任一帳戶傳送電子郵件到未驗證的地址。如需詳細資訊，請參閱[請求生產存取權 （移出 Amazon SES 沙盒）](request-production-access.md)。
如果您獲授權使用的身分在做為[全域端點](global-endpoints.md)功能一部分的次要區域中重複：  
身分擁有者應該提供您具有區域參數的身分 ARN，例如 `us-east-1`，以星號取代 ，`*`如下列範例 所示`arn:aws:ses:*:123456789012:identity/user@example.com`。
身分擁有者應該已在主要和次要區域中為您建立傳送授權政策。

## 使用 Amazon SES API
<a name="sending-authorization-delegate-sender-tasks-api"></a>

與任何 Amazon SES 電子郵件寄件者一樣，如果您透過 Amazon SES API （直接透過 HTTPS 或間接透過 AWS SDK) 存取 Amazon SES`SendTemplatedEmail`，您可以選擇三種電子郵件傳送動作之一：`SendEmail`、 和 `SendRawEmail`。[Amazon Simple Email Service API 參考資料](https://docs.aws.amazon.com/ses/latest/APIReference/)中說明了這些 API 的詳細資訊，但我們在此提供的是傳送授權參數的概觀。

### SendRawEmail
<a name="sending-authorization-delegate-sender-tasks-api-sendrawemail"></a>

如果您想要使用 `SendRawEmail` 來控制您的電子郵件格式，下列提供兩種方式來指定委派授權身分：
+ **傳遞選擇性的參數到 `SendRawEmail` API**。下表說明必要參數：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/sending-authorization-delegate-sender-tasks-email.html)
+ **在電子郵件中加入 X 標頭**。X-標題為自訂標頭，是除了標準電子郵件標頭 (例如「寄件人」、「回覆至」或「主旨」標題) 外可用的另一選擇。Amazon SES 能辨識三種 X-標題，可用於指定傳送授權參數：
**重要**  
請勿在 DKIM 簽章中加入這些 X-標題，因為 Amazon SES 已在傳送電子郵件前將其移除。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ses/latest/dg/sending-authorization-delegate-sender-tasks-email.html)

  Amazon SES 會在傳送前自電子郵件移除所有 X-標題。如果您加入 X-標題的多個例項，Amazon SES 只會使用第一個例項。

  以下範例顯示一封電子郵件，其中包含傳送授權 X-標題：

  ```
   1. X-SES-SOURCE-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com
   2. X-SES-FROM-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com
   3. X-SES-RETURN-PATH-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com
   4. 
   5. From: sender@example.com
   6. To: recipient@example.com
   7. Return-Path: feedback@example.com
   8. Subject: subject
   9. Content-Type: multipart/alternative;
  10. 	boundary="----=_boundary"
  11. 
  12. ------=_boundary
  13. Content-Type: text/plain; charset=UTF-8
  14. Content-Transfer-Encoding: 7bit
  15. 
  16. body
  17. ------=_boundary
  18. Content-Type: text/html; charset=UTF-8
  19. Content-Transfer-Encoding: 7bit
  20. 
  21. body
  22. ------=_boundary--
  ```

### SendEmail 和 SendTemplatedEmail
<a name="sending-authorization-delegate-sender-tasks-api-sendemail"></a>

如果您使用 `SendEmail` 或 `SendTemplatedEmail` 作業，可以透過下方的選用參數傳遞來指定委派授權身分。當您使用 `SendEmail` 或 `SendTemplatedEmail` 作業時，不可使用 X-標題方法。


****  

| 參數 | Description | 
| --- | --- | 
| `SourceArn` | 與傳送授權政策相關的身分 ARN，該政策允許您為 `SendEmail` 或 `SendTemplatedEmail` 中的 `Source` 參數中所指定的電子郵件地址傳送。 | 
| `ReturnPathArn` | 與傳送授權政策相關的身分 ARN，該政策允許您使用 `SendEmail` 或 `SendTemplatedEmail` 中的 `ReturnPath` 參數中所指定的電子郵件地址。 | 

以下範例說明如何傳送電子郵件，郵件中包含使用 `SendEmail` 或 `SendTemplatedEmail` 作業及[適用於 Python 的 SDK](https://aws.amazon.com/sdk-for-python) 的 `SourceArn` 與 `ReturnPathArn` 屬性。

```
import boto3
from botocore.exceptions import ClientError

# Create a new SES resource and specify a region.
client = boto3.client('ses',region_name="us-east-1")

# Try to send the email.
try:
    #Provide the contents of the email.
    response = client.send_email(
        Destination={
            'ToAddresses': [
                'recipient@example.com',
            ],
        },
        Message={
            'Body': {
                'Html': {
                    'Charset': 'UTF-8',
                    'Data': 'This email was sent with Amazon SES.',
                },
            },
            'Subject': {
                'Charset': 'UTF-8',
                'Data': 'Amazon SES Test',
            },
        },
        SourceArn='arn:aws:ses:us-east-1:123456789012:identity/example.com',
        ReturnPathArn='arn:aws:ses:us-east-1:123456789012:identity/example.com',
        Source='sender@example.com',
        ReturnPath='feedback@example.com'
    )
# Display an error if something goes wrong.	
except ClientError as e:
    print(e.response['Error']['Message'])
else:
    print("Email sent! Message ID:"),
    print(response['ResponseMetadata']['RequestId'])
```

## 使用 Amazon SES SMTP 界面
<a name="sending-authorization-delegate-sender-tasks-smtp"></a>

使用 Amazon SES SMTP 界面進行委派傳送時，您必須在訊息中包含 `X-SES-SOURCE-ARN`、`X-SES-FROM-ARN` 和 `X-SES-RETURN-PATH-ARN` 標頭。在您於 SMTP 交談中發出 `DATA` 命令後傳遞這些標頭。