Amazon SESSMTP認証情報の取得 - Amazon Simple Email Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SESSMTP認証情報の取得

SES SMTP インターフェイスにアクセスするには Amazon SESSMTP認証情報が必要です。

SES SMTP インターフェイスを介して E メールを送信するために使用する認証情報は、それぞれに固有です。 AWS リージョン。SES SMTP インターフェイスを使用して複数のリージョンで E メールを送信する場合は、使用するリージョンごとに一連のSMTP認証情報を生成する必要があります。

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

注記

SMTP エンドポイントは現在、アフリカ (ケープタウン)、アジアパシフィック (ジャカルタ)、欧州 (ミラノ)、イスラエル (テルアビブ)、中東 (バーレーン) では利用できません。

SES コンソールを使用したSESSMTP認証情報の取得

以下のSESワークフローを使用してコンソールを使用してSMTP認証情報を生成すると、 IAM コンソールに移動して、呼び出す適切なポリシーを持つユーザーを作成しSES、そのユーザーに関連付けられたSMTP認証情報を提供します。

要件

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

SMTP 認証情報を作成するには
  1. にサインインする AWS Management Console で Amazon SESコンソールを開きますhttps://console.aws.amazon.com/ses/

  2. 左側のナビゲーションペインでSMTP設定を選択します。これにより、簡易メール転送プロトコル (SMTP) の設定ページが開きます。

  3. 右上隅のSMTP「認証情報の作成」を選択します。IAMコンソールが開きます。

  4. (オプション) 既に作成したSMTPユーザーを表示、編集、または削除する必要がある場合は、右下隅にある既存のSMTP認証情報の管理 を選択します。IAMコンソールが開きます。SMTP 認証情報の管理に関する詳細は、以下の手順で確認できます。

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

  6. SMTP パスワード表示 を選択します。SMTP認証情報が画面に表示されます。

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

  8. SES コンソールに戻る を選択します。

この手順を使用して作成したSMTP認証情報のリストは、アクセス管理のIAMコンソールで表示し、ユーザーを選択してから検索バーを使用して、SMTP認証情報を割り当てたすべてのユーザーを検索できます。

IAM コンソールを使用して既存のSMTPユーザーを削除することもできます。ユーザーの削除の詳細については、「 入門ガイド」のIAM「ユーザーの管理」を参照してください。 IAM

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

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

IAM インターフェイスを使用して設定したユーザーがいる場合は、ユーザーのSESSMTP認証情報を のユーザーから取得できます。 AWS 認証情報。

重要

一時的な は使用しないでください。 AWS 認証情報を取得するための SMTP認証情報。SES SMTP インターフェイスは、一時的なセキュリティSMTP認証情報から生成された認証情報をサポートしていません。

IAM ユーザーが SESSMTPインターフェイスを使用して E メールを送信できるようにするには、次の手順を実行します。

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

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

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

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

注記

任意のIAMユーザーのSESSMTP認証情報を生成できますが、SMTP認証情報を生成するときに別のIAMユーザーを作成することをお勧めします。特定の目的でユーザーを作成することが推奨される理由については、IAM「 のベストプラクティス」を参照してください。

次の擬似コードは、 を変換するアルゴリズムを示しています。 AWS 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パスワードに変換するために使用できるライブラリが含まれています。このセクションでは、 の変換に使用できるコード例を示します。 AWS Python を使用したSESSMTPパスワードへのシークレットアクセスキー。

注記

次の例では、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) "eu-south-1", # Europe (Milan) "eu-north-1", # Europe (Stockholm) "sa-east-1", # South America (Sao Paulo) "us-gov-west-1", # AWS GovCloud (US) "us-gov-east-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 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 と AWS SMTP 認証情報を使用するリージョン。

このスクリプトが正常に実行されると、唯一の出力はSMTPパスワードです。