Amazon SES SMTP 認証情報を取得 - Amazon Simple Email Service

Amazon SES SMTP 認証情報を取得

Amazon SES SMTP インターフェイスにアクセスするには、Amazon SES SMTP のユーザー名とパスワードが必要です。

Amazon SES SMTP インターフェイスを介して E メールを送信するために使用する認証情報は、各AWSリージョンに固有のものです。Amazon SES SMTP インターフェイスを使用して複数の地域に E メールを送信する場合は、使用しようとしている各地域で SMTP 認証情報のセットを作成する必要があります。

SMTP パスワードは、AWS シークレットアクセスキーとは異なります。認証情報の詳細については、Amazon SES 認証情報の種類を参照ください。

注記

SMTP エンドポイントは現在、アフリカ (ケープタウン)、欧州 (ミラノ)、中東 (バーレーン) では使用できません。

Amazon SES コンソールを使用して Amazon SES SMTP 認証情報を取得

コンソールで SES ワークフローを使用して SMTP 認証情報を作成する場合、Amazon SES を呼び出すための適切なポリシーを持った IAM ユーザーを作成する IAM コンソールを表示し、そのユーザーに関連付けられている SMTP 認証情報を提示します。

要件

IAM ユーザーは Amazon SES SMTP 認証情報を作成できます。ただし、Amazon SES SMTP 認証情報の作成には IAM を使用するため、IAM ユーザーのポリシーによって IAM 自体を使用する許可をユーザーに付与する必要があります。IAM ポリシーで許可する必要がある IAM アクションは、iam:ListUsersiam:CreateUseriam:CreateAccessKey、およびiam:PutUserPolicyです。コンソールを使って Amazon SES SMTP 認証情報を作成する場合、これらのアクセス許可が IAM ユーザーにないと、アカウントに「iam:ListUsers を実行する権限がない」いうエラーメッセージが表示されます。

SMTP 認証情報を作成するには

  1. AWS Management Console にサインインして Amazon SES コンソール (https://console.aws.amazon.com/ses/) を開きます。

  2. 左のナビゲーションペインで、[Account dashboard] (アカウントダッシュボード) を選択します。

  3. [Simple Mail Transfer Protocol (SMTP) settings] (Simple Mail Transfer Protocol (SMTP) 設定) の左下隅にある [Create SMTP Credentials] (SMTP 認証情報の作成) を選択すると、IAM コンソールが開きます。

  4. [Create User for SMTP] (SMTP のユーザーを作成) で、[IAM User Name] (IAM ユーザー名) フィールドに SMTP ユーザーの名前を入力します。または、このフィールドに提供されているデフォルト値を使用できます。完了したら、右下隅の[Create] (作成) を選択します。

  5. [Show User SMTP Security Credentials] (ユーザーの SMTP セキュリティ認証情報を表示) を展開すると、画面に SMTP の認証情報が表示されます。

  6. [Download Credentials] (認証情報のダウンロード) を選択してこれらの認証情報をダウンロードするか、認証情報をコピーして、安全な場所に保管します。このダイアログボックスを閉じると、認証情報の表示や保存はできなくなります。

  7. [Close Window] を選択します。

この手順で作成した既存の SMTP 認証情報を一覧表示するには、IAM コンソール (https://console.aws.amazon.com/iam/) に移動します。ナビゲーションペインの [アクセス管理] で、[ユーザー] を選択します。検索バーを使用して、SMTP 認証情報を割り当てたすべてのユーザーを検索します。

IAM コンソールを使用して、既存の SMTP ユーザーを削除することもできます。ユーザーの削除の方法については、IAM 使用開始ガイドhttps://docs.aws.amazon.com/IAM/latest/UserGuide/Managing IAM Usersを参照ください。

SMTP パスワードを変更する場合は、IAM コンソールで既存の SMTP ユーザーを削除します。次に、前の手順を完了して、新しい SMTP 認証情報のセットを作成します。

既存の AWS認証情報を変換して Amazon SES SMTP 認証情報を取得する

IAM インターフェイスを使用して IAM ユーザーを設定した場合、ユーザーの Amazon SES SMTP 認証情報はAWS 認証情報から派生できます。

重要

一時的な AWS 認証情報を使用して、SMTP 認証情報を派生させないでください。Amazon SES SMTP インターフェイスは、一時的なセキュリティ認証情報から作成された SMTP 認証情報を対応していません。

IAM ユーザーが Amazon SES SMTP インターフェイスを使用して E メールを送信できるようにするには、次の手順を行ってください。

  • ユーザーのSMTP 認証情報を AWS 認証情報から派生させるには、このセクションで示すアルゴリズムを使用します。AWS 認証情報から開始するため、SMTP ユーザー名は AWS アクセスキー ID と同じです。したがって、作成する必要があるのは SMTP パスワードのみです。

  • IAM ユーザーに次のポリシーを適用します。

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

    IAM での Amazon SES 使用の詳細については、「Amazon SESでの Identity and Access Management」を参照ください。

注記

Amazon SES SMTP 認証情報はどの IAM ユーザーに対しても作成できますが、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"; version = 0x04; kDate = HmacSha256(date, "AWS4" + key); kRegion = HmacSha256(region, kDate); kService = HmacSha256(service, kRegion); kTerminal = HmacSha256(terminal, kService); kMessage = HmacSha256(message, kTerminal); signatureAndVersion = Concatenate(version, kMessage); smtpPassword = Base64(signatureAndVersion);

一部のプログラミング言語に含まれているライブラリを使用して、IAM シークレットアクセスキーを SMTP パスワードに変換できます。このセクションのコード例では、Python を使用してAWS シークレットアクセスキーを Amazon SES SMTP パスワードに変換します。

注記

次の例では、Python 3.6で導入されたf 文字列を使用しています。 古いバージョンでは使用できません。

現在、Python SDK (Boto3) は公式に 2.7 と 3.6 (またはそれ以降) をサポートしています。ただし、2.7 のサポートは廃止され、2021 年 7 月 15 日に削除されるため、少なくとも 3.6 にアップグレードする必要があります。

Python
#!/usr/bin/env python3 import hmac import hashlib import base64 import argparse SMTP_REGIONS = [ 'us-east-2', # US East (Ohio) 'us-east-1', # US East (N. Virginia) 'us-west-2', # US West (Oregon) 'ap-south-1', # Asia Pacific (Mumbai) 'ap-northeast-2', # Asia Pacific (Seoul) 'ap-southeast-1', # Asia Pacific (Singapore) 'ap-southeast-2', # Asia Pacific (Sydney) 'ap-northeast-1', # Asia Pacific (Tokyo) 'ca-central-1', # Canada (Central) 'eu-central-1', # Europe (Frankfurt) 'eu-west-1', # Europe (Ireland) 'eu-west-2', # Europe (London) 'sa-east-1', # South America (Sao Paulo) 'us-gov-west-1', # AWS GovCloud (US) ] # These values are required to calculate the signature. Do not change them. 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 calculate_key(secret_access_key, region): if region not in SMTP_REGIONS: raise ValueError(f"The {region} Region doesn't have an SMTP endpoint.") signature = sign(("AWS4" + secret_access_key).encode('utf-8'), DATE) signature = sign(signature, region) signature = sign(signature, SERVICE) signature = sign(signature, TERMINAL) signature = sign(signature, MESSAGE) signature_and_version = bytes([VERSION]) + signature smtp_password = base64.b64encode(signature_and_version) return smtp_password.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 to convert.') parser.add_argument( 'region', help='The AWS Region where the SMTP password will be used.', choices=SMTP_REGIONS) args = parser.parse_args() print(calculate_key(args.secret, args.region)) if __name__ == '__main__': main()

このスクリプトを使用して SMTP パスワードを取得するには、上記のコードをsmtp_credentials_generate.pyとして保存します。コマンドラインから、以下のコマンドを実行します。

python path/to/smtp_credentials_generate.py wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY us-east-1

上記のコマンドで、次の操作を行います。

  • path/to/を保存した場所へのパスに置き換えますsmtp_credentials_generate.py

  • wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYを SMTP パスワードに変換するシークレットアクセスキーに置き換えます。

  • us-east-1を SMTP 認証情報を使用するAWS地域に置き換えます。

このスクリプトが正常に実行されると、SMTP パスワードだけが出力されます。

このスクリプトを使用するには、まず前のコードをsmtp_credentials_generate.pyとして保存します。次に、コマンドラインから、以下のコマンドを実行します。

python path/to/smtp_credentials_generate.py wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY us-east-1

上記のコマンドで、次の操作を行います。

  • path/to/を保存した場所へのパスに置き換えますsmtp_credentials_generate.py

  • wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYをSMTP パスワードに変換するシークレットアクセスキーに置き換えます。

  • us-east-1を SMTP 認証情報を使用するAWS地域に置き換えます。

このスクリプトが正常に実行されると、SMTP パスワードだけが出力されます。