Amazon Simple Email Service
開發人員指南

取得您的 Amazon SES SMTP 登入資料

您需要 Amazon SES SMTP 使用者名稱和密碼,才能存取 Amazon SES SMTP 界面。如果您計劃使用 SMTP 界面在多個 AWS 區域傳送電子郵件,您必須為每個區域取得唯一的 SMTP 登入資料。

重要

您的 SMTP 使用者名稱和密碼與您的 AWS 存取金鑰 ID 和私密存取金鑰不同。如需登入資料的詳細資訊,請參閱 以 Amazon SES 使用登入資料

使用 Amazon SES 主控台來取得 Amazon SES SMTP 登入資料

當您使用 Amazon SES 主控台來產生 SMTP 登入資料時,Amazon SES 主控台會使用適當的政策建立 IAM 使用者以呼叫 Amazon SES,並提供您與該使用者相關聯的 SMTP 登入資料。

注意

IAM 使用者可以建立 Amazon SES SMTP 登入資料,但 IAM 使用者的政策必須提供他們使用 IAM 的許可,因為 Amazon SES SMTP 登入資料是透過 IAM 所建立的。您的 IAM 政策必須允許您執行下列 IAM 動作:iam:ListUsersiam:CreateUseriam:CreateAccessKeyiam:PutUserPolicy。若您嘗試使用主控台建立 Amazon SES SMTP 登入資料,而您的 IAM 使用者沒有這些許可,您會看到一個錯誤,告知您帳戶「並未獲得授權執行 iam:ListUsers」。

若要建立 SMTP 登入資料

  1. Sign in to the AWS Management Console and open the Amazon SES console at https://console.aws.amazon.com/ses/.

  2. 在導覽窗格中,選擇 SMTP Settings (SMTP 設定)

  3. 在內容窗格中,選擇 Create My SMTP Credentials (建立我的 SMTP 登入資料)

  4. 針對 Create User for SMTP (為 SMTP 建立使用者),輸入您 SMTP 使用者的名稱。或者,您可以使用此欄位提供的預設值。當您完成時,請選擇 Create (建立)

    
                        為 SMTP 建立使用者
  5. 選擇 Show User SMTP Credentials (顯示使用者 SMTP 登入資料)。您的 SMTP 登入資料隨即會顯示在畫面上。請複製這些登入資料,並將他們存放在安全的地方。您也可以選擇 Download Credentials (下載登入資料) 來下載包含登入資料的檔案。

    
                        為 SMTP 建立使用者

    重要

    這是唯一一次可查看您 SMTP 登入資料的機會。我們建議您下載這些登入資料,並將他們保存在不會遭到刪除的位置。若您遺失這些登入資料,您將必須重新開始建立 SMTP 使用者的程序。

  6. 選擇 Close Window (關閉視窗)

如果您想要刪除 SMTP 登入資料,請前往位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台,並刪除與您 SMTP 登入資料對應的 IAM 使用者名稱。若要進一步了解,請前往使用 IAM 指南。

若您想要變更 SMTP 密碼,請前往 IAM 主控台並刪除您現有的 IAM 使用者,然後前往 Amazon SES 主控台重新產生您的 SMTP 登入資料。

透過轉換現有的 AWS 登入資料以取得 Amazon SES SMTP 登入資料

若您有使用 IAM 界面設定的 IAM 使用者,您可以從他們的 AWS 登入資料中取得使用者的 Amazon SES SMTP 登入資料。

重要

請不要使用暫時的 AWS 登入資料來取得 SMTP 登入資料。Amazon SES SMTP 界面不支援從暫時安全登入資料產生的 SMTP 登入資料。

若要讓 IAM 使用者使用 Amazon SES SMTP 界面傳送電子郵件,您必須執行以下兩個步驟:

  • 使用本節提供的演算法來從使用者的 AWS 登入資料中取得他們的 SMTP 登入資料。由於您是從 AWS 登入資料開始,因此 SMTP 使用者名稱會和 AWS 存取金鑰 ID 相同,所以您只需要產生 SMTP 密碼。

  • 套用以下政策到 IAM 使用者:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendRawEmail", "Resource": "*" } ] }

    如需搭配 IAM 使用 Amazon SES 的詳細資訊,請參閱控制 Amazon SES 存取

注意

雖然您可以為任何 IAM 使用者產生 Amazon SES SMTP 登入資料,我們建議您在產生 SMTP 登入資料時建立個別的 IAM 使用者。如需為何針對特定用途建立使用者是最佳實務的資訊,請前往 IAM 最佳實務

以下虛擬程式碼會顯示演算法,將 AWS 私密存取金鑰轉換成 Amazon SES SMTP 密碼。

// Modify this variable to include your AWS Secret Access Key key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"; // Modify this variable to refer to the AWS Region that you want to use to send email. region = "us-west-2"; // The values of the following variables should always stay the same. date = "11111111"; service = "ses"; terminal = "aws4_request"; message = "SendRawEmail"; versionInBytes = 0x04; kDate = HmacSha256(date, "AWS4" + key); kRegion = HmacSha256(region, kDate); kService = HmacSha256(service, kRegion); kTerminal = HmacSha256(terminal, kService); kMessage = HmacSha256(message, kTerminal); signatureAndVersion = Concatenate(versionInBytes, kMessage); smtpPassword = Base64(signatureAndVersion);

某些程式設計語言包含您可用於將 IAM 私密存取金鑰轉換為 SMTP 密碼的程式庫。本節包含程式碼範例,它可讓您使用 Python 將 AWS 私密存取金鑰轉換為 Amazon SES SMTP 密碼。

Python
Python
#!/usr/bin/env python3 import hmac import hashlib import base64 import argparse # Values that are required to calculate the signature. These values should # never change. DATE = "11111111" SERVICE = "ses" MESSAGE = "SendRawEmail" TERMINAL = "aws4_request" VERSION = 0x04 def sign(key, msg): return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest() def calculateKey(secretAccessKey, region): signature = sign(("AWS4" + secretAccessKey).encode('utf-8'), DATE) signature = sign(signature, region) signature = sign(signature, SERVICE) signature = sign(signature, TERMINAL) signature = sign(signature, MESSAGE) signatureAndVersion = bytes([VERSION]) + signature smtpPassword = base64.b64encode(signatureAndVersion) print(smtpPassword.decode('utf-8')) def main(): parser = argparse.ArgumentParser(description='Convert a Secret Access Key for an IAM user to an SMTP password.') parser.add_argument('--secret', help='The Secret Access Key that you want to convert.', required=True, action="store") parser.add_argument('--region', help='The name of the AWS Region that the SMTP password will be used in.', required=True, choices=['us-east-1','us-west-2','eu-west-1'], action="store") args = parser.parse_args() calculateKey(args.secret,args.region) main()