Amazon SESと Postfix の統合 - Amazon Simple Email Service
Amazon SESと Postfix の統合 - Amazon Simple Email Service

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

Amazon SESと Postfix の統合

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

注記

Postfix はサードパーティー製アプリケーションであり、Amazon Web Services によって開発またはサポートされていません。このセクションの手順は情報提供のみを目的としており、予告なく変更される場合があります。

前提条件

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

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

    重要

    sendmail への参照の後で Postfix コマンド sendmail を参照し、Sendmail アプリケーションと混同しないようにします。

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

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

  • E メールの送信に使用する E メールアドレスまたはドメインを確認します。詳細については、Eメールアドレス ID の作成を参照ください。

  • アカウントがまだサンドボックスにある場合、検証済み E メールアドレスにのみ E メールを送信できます。詳細については、本番稼働アクセスのリクエスト (Amazon SESサンドボックスからの移動)を参照ください。

Postfix の設定

Postfix SESを使用して Amazon 経由で 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 = secure" \ "smtp_tls_note_starttls_offer = yes"
    注記

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

  2. テキストエディタで、/etc/postfix/master.cf ファイルを開きます。次のエントリを検索します。

    -o smtp_fallback_relay=

    このエントリが見つかった場合は、行の先頭に # (ハッシュ) 文字を配置してコメントアウトします。保存してファイルを閉じます。

    それ以外で、このエントリが存在しない場合、次の手順に進みます。

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

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

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

    置換 SMTPUSERNAME また、SMTPPASSWORD SMTP サインイン認証情報を使用します。SMTP サインイン認証情報は、アクセスキー ID とシークレットアクセスキーとは異なります AWS 。認証情報の詳細については、「Amazon SESSMTP認証情報の取得」を参照してください。

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

    sasl_passwd を保存して閉じます。

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

    sudo postmap hash:/etc/postfix/sasl_passwd
  6. (オプション) 前の手順で作成した/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
  7. CA 証明書を見つける場所を Postfix に指示します (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'
  8. 次のコマンドを入力して Postfix サーバーを起動します (サーバーがすでに起動している場合は、設定を再ロードしてください)。

    sudo postfix start; sudo postfix reload
  9. コマンドラインで以下のように入力し、各行の最後で Enter キーを押して、テスト E メールを送信します。置換 sender@example.com 送信元 E メールアドレス。From アドレスは、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. .
  10. 受信者のアドレスに関連付けられているメールボックスを確認します。E メールが届かない場合は、迷惑メールフォルダを確認します。それでも E メールが見つからない場合には、E メールを送信するために使用したシステムのメールログで詳細を確認します (通常は、/var/log/maillog にあります)。

高度な使用例

この例では、設定セット を使用し、 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 メールの受信箱を確認します。メッセージが配信されなかった場合は、システムのメールログを確認します。