

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

# Amazon SES SMTP 認証情報を取得
<a name="smtp-credentials"></a>

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

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

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

**注記**  
現在利用可能な SMTP エンドポイントのリストについては、「*AWS 全般のリファレンス*」の「[SMTP エンドポイント](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_smtp_endpoints)」を参照してください。

## SES コンソールを使用して SES SMTP 認証情報を取得する
<a name="smtp-credentials-console"></a>

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

**重要**  
上記の IAM アクションには、サービスでリソースのアクセス許可を付与または変更するアクセス許可を付与するため、最も高い IAM レベルである「[アクセス許可の管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_understand-policy-summary-access-level-summaries.html#access_policies_access-level)」アクセスレベルが与えられています。したがって、 AWS アカウントのセキュリティを向上させるために、アクセス許可管理アクセスレベル分類を含むこれらのポリシーを制限または定期的に監視することを強くお勧めします。

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

1.  AWS マネジメントコンソール にサインインし、Amazon SES コンソール ([https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)) を開きます。

1. 左のナビゲーションペインで **[SMTP settings]** (SMTP 設定) を選択します。**[Simple Mail Transfer Protocol (SMTP) settings]** (Simple Mail Transfer Protocol (SMTP) の設定) ページが開きます。

1. 右上の **[Create SMTP Credentials]** (SMTP 認証情報の作成) を選択します。IAM コンソールが開きます。

1. (オプション) 既に作成した SMTP ユーザーを表示、編集、または削除する必要がある場合は、右下の **[Manage my existing SMTP credentials]** (既存の SMTP 認証情報の管理) を選択します。IAM コンソールが開きます。SMTP 認証情報の管理の詳細は、次の手順に従って表示されます。

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

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

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

1. **[SES コンソールに戻る]** を選択します。

この手順で作成した SMTP 認証情報を一覧表示するには、IAM コンソールの **[Access management]** (アクセス管理) で **[Users]** (ユーザー) を選択し、検索バーを使用して SMTP 認証情報を割り当てたすべてのユーザーを見つけます。

IAM コンソールを使用して、既存の SMTP ユーザーを削除することもできます。ユーザーの削除の詳細については、*IAM 入門ガイド*の「[IAM ユーザーの管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html)」を参照してください。

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

## 既存の認証情報を変換して SES SMTP AWS 認証情報を取得する
<a name="smtp-credentials-convert"></a>

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

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

**IAM ユーザーが SES SMTP インターフェイスを使用してメールを送信できるようにするには**

1. 以下の手順に従って、このセクションで提供されるアルゴリズムを使用して、ユーザーの SMTP AWS 認証情報を認証情報から取得します。

    AWS 認証情報から開始するため、SMTP ユーザー名は AWS アクセスキー ID と同じであるため、SMTP パスワードを生成するだけで済みます。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. **[アクセス管理]** で、**[ポリシー]**、**[ポリシーの作成]** の順に選択します。

1. **[ポリシーエディター]** で、**[JSON]** を選択して、エディタ内のコード例をすべて削除します。

1. 以下の許可ポリシーをエディタに貼り付けます。

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

****  

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

------

1. **[次へ]** をクリックし、**[ポリシー名]** フィールドに `AmazonSesSendingAccess` と入力して、**[ポリシーの作成]** をクリックします。

1. **[アクセス管理]** で、**[ユーザーグループ]**、**[グループの作成]** の順に選択します。

1. **[ユーザーグループ名]** フィールドに、`AWSSESSendingGroupDoNotRename` と入力します。

1. **[ユーザーをグループに追加]** テーブルから SMTP ユーザーを選択して、グループに追加します。

1. 以前に作成した `AmazonSesSendingAccess` ポリシーを **[許可ポリシーをアタッチ]** テーブルから選択してアタッチし、**[ユーザーグループを作成]** をクリックします。

IAM での SES の使用の詳細については、「[Amazon SESでの Identity and Access Management](control-user-access.md)」を参照してください。

**注記**  
SES SMTP 認証情報はどの IAM ユーザーに対しても生成できますが、SMTP 認証情報を生成するときには、個別の IAM ユーザーを作成することをお勧めします。目的別にユーザーを作成することが推奨される理由については、「[IAM のベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPractices.html)」を参照ください。

次の擬似コードは、 AWS シークレットアクセスキーを SES SMTP パスワードに変換するアルゴリズムを示しています。

```
 1. // Modify this variable to include your AWS secret access key
 2. key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY";
 3.             
 4. // Modify this variable to refer to the AWS Region that you want to use to send email.
 5. region = "us-west-2";
 6.             
 7. // The values of the following variables should always stay the same.
 8. date = "11111111";
 9. service = "ses";
10. terminal = "aws4_request";
11. message = "SendRawEmail";
12. version = 0x04;
13. 
14. kDate = HmacSha256(date, "AWS4" + key);
15. kRegion = HmacSha256(region, kDate);
16. kService = HmacSha256(service, kRegion);
17. kTerminal = HmacSha256(terminal, kService);
18. kMessage = HmacSha256(message, kTerminal);
19. signatureAndVersion = Concatenate(version, kMessage);
20. smtpPassword = Base64(signatureAndVersion);
```

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

**注記**  
次の例では、Python 3.6 で導入された**f 文字列**を使用しています。 古いバージョンでは使用できません。
次の例の SMTP\$1REGIONS のリストは例にすぎません。 AWS リージョンごとに SMTP 認証情報が必要になるため、E メールを送信する予定のリージョンによって、実際のリージョンのリストはこれより短くなったり長くなったりする可能性があります。

------
#### [ 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* を SMTP 認証情報を使用する AWS リージョンに置き換えます。

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

------

## SMTP ユーザーの既存のインラインポリシーからグループポリシーへの移行 (セキュリティに関する推奨事項)
<a name="migrate-inline-policy-to-group"></a>

**重要**  
2024 年 9 月 6 日より前に SES SMTP 認証情報を作成した場合、インラインポリシーとタグが SMTP ユーザーにアタッチされています。SES ではインラインポリシーの使用を排除する方向であり、セキュリティに関する推奨事項と同じ方法を採用することをお勧めします。

既存のインラインポリシーからグループポリシーに SMTP ユーザーを移行する前に、まず SES アクセス許可ポリシーを使用して IAM ユーザーグループを作成し、インラインポリシーの代わりにする必要があります。この IAM ユーザーグループを既に作成している場合、または 2024 年 9 月 6 日以降に作成した SMTP 認証情報用にユーザーグループ自動的に作成されている場合は、以下の手順の*ステップ 10* に直ちにスキップできます。

**既存のインラインポリシーからマネージドグループに移行するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. **[アクセス管理]** で、**[ポリシー]**、**[ポリシーの作成]** の順に選択します。

1. **[ポリシーエディター]** で、**[JSON]** を選択して、エディタ内のコード例をすべて削除します。

1. 以下の許可ポリシーをエディタに貼り付けます。

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

****  

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

------

1. **[次へ]** をクリックし、**[ポリシー名]** フィールドに `AmazonSesSendingAccess` と入力して、**[ポリシーの作成]** をクリックします。

1. **[アクセス管理]** で、**[ユーザーグループ]**、**[グループの作成]** の順に選択します。

1. **[ユーザーグループ名]** フィールドに、`AWSSESSendingGroupDoNotRename` と入力します。

1. **[ユーザーをグループに追加]** テーブルから SMTP ユーザーを選択して、グループに追加します。

1. 以前に作成した `AmazonSesSendingAccess` ポリシーを **[許可ポリシーをアタッチ]** テーブルから選択してアタッチし、**[ユーザーグループを作成]** をクリックします。

   SES アクセス許可ポリシーを使用して IAM ユーザーグループを作成したら、残りのステップで説明されるとおり、SMTP ユーザーを現在のインラインポリシーからこのグループポリシーに移行できます。

1. **[アクセス管理]** で、**[ユーザー]** をクリックして、移行する SMTP ユーザーを選択します。

1. **[グループ]** タブをクリックして、**[ユーザーをグループに追加]** を選択します。

1. `AWSSESSendingGroupDoNotRename` グループを選択してから、**[ユーザーをグループに追加]** をクリックします。

1. **[許可]** タブを選択して、**[ポリシー名]** 列に `AmazonSesSendingAccess` が 2 行表示されており、1 つは*インライン*で、もう 1 つには **[次を経由してアタッチ]** 列に *`AWSSESSendingGroupDoNotRename` グループ*が表示されていることを確認します。

1. **[ポリシー名]** 列に `AmazonSesSendingAccess` が含まれ、**[次を経由してアタッチ]** 列に*インライン*が含まれている行のみを選択して、**[削除]** をクリックし、**[ポリシーを削除]** をクリックして確定します。

   **[次を経由してアタッチ]** 列に *`AWSSESSendingGroupDoNotRename` グループ*が含まれる行が残っているかを検証します。

1. **[タグ]** タブをクリックして、**[タグを管理]** をクリックします。

1. **[キー]** 列に「*InvokedBy*」が含まれ、**[値]** 列に「*SESConsole*」が含まれる行の横にある **[削除]** をクリックしてから、**[変更を保存]** をクリックします。

**重要**  
送信に影響が及ばないように、`AmazonSesSendingAccess` ポリシー (インラインポリシーまたはグループポリシー、またはその両方) は、SMTP ユーザーにアタッチされたままにしておく必要があります。インラインポリシーは、グループポリシーがユーザーにアタッチされた後にのみ削除します。