

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

# Amazon SES と Postfix の統合
<a name="postfix"></a>

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

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

## 前提条件
<a name="send-email-postfix-prereqs"></a>

このセクションの手順を完了する前に、以下のタスクを実行する必要があります。
+ システムに Sendmail アプリケーションがインストール済みである場合、これをアンインストールします。このステップを完了する手順は使用するオペレーティングシステムによって異なります。
**重要**  
*sendmail* への参照の後で Postfix コマンド `sendmail` を参照し、Sendmail アプリケーションと混同しないようにします。
+ Postfix をインストールします。このステップを完了する手順は使用するオペレーティングシステムによって異なります。
+ SASL 認証パッケージをインストールします。このステップを完了する手順は使用するオペレーティングシステムによって異なります。たとえば、RedHat ベースのシステムを使用している場合は、`cyrus-sasl-plain` パッケージをインストールする必要があります。Debian または Ubuntu ベースのシステムを使用している場合は、`libsasl2-modules` パッケージをインストールする必要があります。
+ E メールの送信に使用する E メールアドレスまたはドメインを確認します。詳細については、[Eメールアドレス ID の作成](creating-identities.md#verify-email-addresses-procedure)を参照ください。
+ アカウントがまだサンドボックスにある場合、検証済み E メールアドレスにのみ E メールを送信できます。詳細については、[本稼働アクセスのリクエスト (Amazon SES サンドボックスからの移行)](request-production-access.md)を参照ください。

## Postfix の設定
<a name="send-email-postfix"></a>

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 = secure" \
   "smtp_tls_note_starttls_offer = yes"
   ```
**注記**  
米国西部 (オレゴン) 以外の AWS リージョンで Amazon SES を使用する場合は、前述のコマンドの *email-smtp.us-west-2.amazonaws.com* を適切なリージョンの SMTP エンドポイントに置き換えます。詳細については、「[地域と Amazon SES](regions.md)」を参照してください。

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

   ```
   -o smtp_fallback_relay=
   ```

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

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

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

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

   ```
   [email-smtp.us-west-2.amazonaws.com]:587 SMTPUSERNAME:SMTPPASSWORD
   ```
**注記**  
*SMTPUSERNAME* と *SMTPPASSWORD* を SMTP サインイン認証情報に置き換えてください。SMTP サインイン認証情報は、 AWS アクセスキー ID やシークレットアクセスキーと同じではありません。認証情報の詳細については、[Amazon SES SMTP 認証情報を取得](smtp-credentials.md)を参照ください。  
米国西部 (オレゴン) 以外の AWS リージョンで Amazon SES を使用する場合は、前述の例の *email-smtp.us-west-2.amazonaws.com* を適切なリージョンの SMTP エンドポイントに置き換えます。詳細については、「[地域と Amazon SES](regions.md)」を参照してください。

   `sasl_passwd` を保存して閉じます。

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

   ```
   sudo postmap hash:/etc/postfix/sasl_passwd
   ```

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

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

      ```
      sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
      ```

   1. コマンドプロンプトで次のコマンドを入力してファイルのアクセス許可を変更して、ルートユーザーのみがこれらのファイルで読み込みや書き込みを実行できるようにします。

      ```
      sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
      ```

1. 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 | sudo tee /etc/ssl/certs/ca-bundle.crt > /dev/null
     ```

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

     ```
     sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt'
     ```

1. 次のコマンドを入力して Postfix サーバーを起動します (サーバーがすでに起動している場合は、設定を再ロードしてください)。

   ```
   sudo postfix start; sudo postfix reload
   ```

1. コマンドラインで以下のように入力し、各行の最後で 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.                
   .
   ```

1. 受信者のアドレスに関連付けられているメールボックスを確認します。E メールが届かない場合は、迷惑メールフォルダを確認します。それでも E メールが見つからない場合には、E メールを送信するために使用したシステムのメールログで詳細を確認します (通常は、`/var/log/maillog` にあります)。

## 高度な使用例
<a name="send-email-postfix-advanced"></a>

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

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

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

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

   ```
   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--
   ```

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

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

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

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

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