Amazon Simple Email Service
開発者ガイド

Amazon SES と Postfix の統合

Postfix は、広く使用されている Sendmail Message Transfer Agent (MTA) に代わる手段です。Postfix の詳細については、「http://www.postfix.org」を参照してください。このトピックの手順では、Linux, macOS, or Unix で動作します。

前提条件

このセクションの手順を完了する前に、以下のタスクを実行する必要があります。

  • システムに Sendmail がインストール済みである場合、これをアンインストールします。このステップを完了する手順は使用するオペレーティングシステムによって異なります。

  • Postfix をインストールします。このステップを完了する手順は使用するオペレーティングシステムによって異なります。

  • SASL 認証パッケージをインストールします。このステップを完了する手順は使用しているオペレーティングシステムによって異なります。たとえば、RedHat ベースのシステムを使用している場合は、cyrus-sasl-plain パッケージをインストールする必要があります。Debian または Ubuntu ベースのシステムを使用している場合は、libsasl2-modules パッケージをインストールする必要があります。

  • E メールの送信に使用する E メールアドレスまたはドメインを確認します。アカウントがまだサンドボックスにある場合は、E メールを送信する先の各アドレスの検証も必要です。詳細については、「Amazon SES での E メールアドレスの検証」を参照してください。

  • Amazon SES を介して Amazon EC2 インスタンスから E メールを送信する場合は、受信側の ISP が E メールを受信できるように、Amazon EC2 インスタンスに Elastic IP アドレス (EIP) を割り当てます。詳細については、「Amazon EC2 Elastic IP アドレス」を参照してください。

Postfix の設定

Postfix を使用して Amazon SES 経由で E メールを送信するようにメールサーバーを設定するには、次の手順を実行します。

Postfix を設定するには

  1. コマンドラインから、以下のコマンドを入力します。

    sudo postconf -e "relayhost = [email-smtp.us-west-2.amazonaws.com]:587" \ "smtp_sasl_auth_enable = yes" \ "smtp_sasl_security_options = noanonymous" \ "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" \ "smtp_use_tls = yes" \ "smtp_tls_security_level = encrypt" \ "smtp_tls_note_starttls_offer = yes"

    注記

    米国西部 (オレゴン) 以外の AWS リージョンで Amazon SES を使用している場合は、上記のコマンドの email-smtp.us-west-2.amazonaws.com を該当するリージョンの SMTP エンドポイントに置き換えます。詳細については、「リージョンと Amazon SES」を参照してください。

  2. テキストエディタで、/etc/postfix/master.cf ファイルを開きます。

  3. master.cf で、次の行を見つけます。

    -o smtp_fallback_relay=

    行の先頭に # (ハッシュ) を入力してコメントアウトします。master.cf を保存して閉じます。

  4. テキストエディタで、/etc/postfix/sasl_passwd ファイルを開きます。このファイルが存在していない場合は、作成します。

  5. /etc/postfix/sasl_passwd に次の行を追加します。

    [email-smtp.us-west-2.amazonaws.com]:587 SMTPUSERNAME:SMTPPASSWORD

    注記

    SMTPUSERNAMESMTPPASSWORD を、それぞれ SMTP ユーザー名とパスワードに置き換えます。SMTP ユーザー名とパスワードは、AWS アクセスキー ID およびシークレットアクセスキーと同じではありません。認証情報の詳細については、「Amazon SES SMTP 認証情報の取得」を参照してください。

    米国西部 (オレゴン) 以外の AWS リージョンで Amazon SES を使用している場合は、上記の例の email-smtp.us-west-2.amazonaws.com を該当する地域の SMTP エンドポイントに置き換えます。詳細については、「リージョンと Amazon SES」を参照してください。

    sasl_passwd を保存して閉じます。

  6. コマンドプロンプトで次のコマンドを入力し、SMTP 認証情報を含む hashmap データベースファイルを作成します。

    sudo postmap hash:/etc/postfix/sasl_passwd
  7. (オプション) 前の手順で作成した /etc/postfix/sasl_passwd ファイルおよび /etc/postfix/sasl_passwd.db ファイルは暗号化されていません。これらのファイルには SMTP 認証情報が含まれているため、ファイルへのアクセスを制限するために、ファイルの所有権とアクセス許可を変更することをお勧めします。これらのファイルへのアクセスを制限するには。

    1. コマンドプロンプトで次のコマンドを入力して、ファイルの所有権を変更します。

      sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
    2. コマンドプロンプトで次のコマンドを入力してファイルのアクセス許可を変更して、ルートユーザーのみがこれらのファイルで読み取りや書き込みを実行できるようにします。

      sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
  8. Postfix が CA 証明書 (Amazon SES サーバー証明書の検証に必要) の場所を認識できるようにします。このステップで使用するコマンドは、オペレーティングシステムによって異なります。

    • Amazon Linux、Red Hat Enterprise Linux、あるいは関連するディストリビューションを使用している場合には、次のコマンドを入力します。

      sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt'
    • Ubuntu あるいは関連するディストリビューションを使用している場合には、次のコマンドを入力します。

      sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt'
    • macOS を使用する場合、システムのキーチェーンで証明書を生成できます。証明書を生成するには、コマンドラインで次のコマンドを入力します。

      sudo security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain > /etc/ssl/certs/ca-bundle.crt

      証明書を生成したら、次のコマンドを入力します。

      sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt'
  9. 次のコマンドを入力して Postfix サーバーを起動します (サーバーがすでに起動している場合は、設定を再ロードしてください)。

    sudo postfix start; sudo postfix reload
  10. コマンドラインで以下のように入力し、各行の最後で Enter キーを押して、テスト E メールを送信します。sender@example.com を送信元 E メールアドレスに置き換えてください。送信元アドレスの Amazon SES での使用を確認する必要があります。recipient@example.com を送信先アドレスに置き換えます。アカウントがサンドボックスにまだある場合は、受信者アドレスも確認する必要があります。最後に、メッセージの最後の行は 1 つのピリオド (.) を含むことが必要です。含める必要があります。

    sendmail -f sender@example.com recipient@example.com From: Sender Name <sender@example.com> Subject: Amazon SES Test This message was sent using Amazon SES. .
  11. 受信者のアドレスに関連付けられているメールボックスを確認します。E メールが届かない場合は、迷惑メールフォルダを確認します。それでも E メールが見つからない場合には、E メールを送信するために使用したシステムのメールログで詳細を確認します (通常は、/var/log/maillog にあります)。

高度な使用例

この例は、設定セットを使用する E メール、および MIME マルチパートエンコードを使用してプレーンテキストと HTML バージョンのメッセージの両方を添付ファイルと共に送る E メールを送信する方法を示します。また、それにはクリックイベントの分類に利用できるリンクタグが含まれています。E メールのコンテンツは外部ファイルで指定されるため、Postfix セッションで手動でコマンドを入力する必要はありません。

Postfix を使用してマルチパートの MIME E メールを送信するには

  1. テキストエディタで、mime-email.txt という名前の新規ファイルを作成します。

  2. テキストファイルで次のコンテンツを貼り付け、赤の値を自分のアカウントの適切な値に置き換えます。

    X-SES-CONFIGURATION-SET:ConfigSet From:Sender Name <sender@example.com> Subject:Amazon SES Test MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="YWVhZDFlY2QzMGQ2N2U0YTZmODU" --YWVhZDFlY2QzMGQ2N2U0YTZmODU Content-Type: multipart/alternative; boundary="3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ" --3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Amazon SES Test This message was sent from Amazon SES using the SMTP interface. For more information, see: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-smtp.html --3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <html> <head> </head> <body> <h1>Amazon SES Test</h1> <p>This message was sent from Amazon SES using the SMTP interface.</p> <p>For more information, see <a ses:tags="samplekey0:samplevalue0;samplekey1:samplevalue1;" href="http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-smtp.html"> Using the Amazon SES SMTP Interface to Send Email</a> in the <em>Amazon SES Developer Guide</em>.</p> </body> </html> --3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ-- --YWVhZDFlY2QzMGQ2N2U0YTZmODU Content-Type: application/octet-stream MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="customers.txt" SUQsRmlyc3ROYW1lLExhc3ROYW1lLENvdW50cnkKMzQ4LEpvaG4sU3RpbGVzLENh bmFkYQo5MjM4OSxKaWUsTGl1LENoaW5hCjczNCxTaGlybGV5LFJvZHJpZ3VleixV bml0ZWQgU3RhdGVzCjI4OTMsQW5heWEsSXllbmdhcixJbmRpYQ== --YWVhZDFlY2QzMGQ2N2U0YTZmODU--

    ファイルを保存して閉じます。

  3. コマンドラインから、以下のコマンドを入力します。sender@example.com をユーザーの E メールアドレスに、recipient@example.com を受信者の E メールアドレスに置き換えます。

    sendmail -f sender@example.com recipient@example.com < mime-email.txt

    コマンドが正常に実行された場合、何の出力もなく終了します。

  4. E メールの受信箱を確認します。メッセージが配信されなかった場合は、システムのメールログを確認します。

Amazon SES に関するさまざまなトピックについての情報やディスカッションについては、AWS メッセージングおよびターゲティングブログ を参照してください。お問い合わせを参照あるいは発信するには「Amazon SES フォーラム」をご覧ください。