

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

# Amazon SES と Sendmail の統合
<a name="send-email-sendmail"></a>

Sendmail は 1980 年代の初めにリリースされ、それ以降、継続的に改善されてきました。これは、大規模なユーザーコミュニティを持つ柔軟で設定可能な Message Transfer Agent (MTA) です。Sendmail は 2013 年に Proofpoint により買収されましたが、Proofpoint は Sendmail のオープンソースバージョンの提供を続けています。[Sendmail の open source バージョン](https://www.proofpoint.com/us/open-source-email-solution)は、Proofpoint のウェブサイトからダウンロードするか、ほとんどの Linux ディストリビューションのパッケージマネージャを経由してダウンロードできます。

このセクションの手順は、Amazon SES を介して E メールを送信するよう Sendmail を設定する方法を示しています。この手順は Ubuntu 18.04.2 LTS を実行しているサーバーでテストされています。

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

## 前提条件
<a name="send-email-sendmail-prerequisites"></a>

このセクションの手順を完了する前に、以下の手順を完了する必要があります。
+ Sendmail パッケージをサーバーにインストールします。
**注記**  
使用しているオペレーティングシステムのディストリビューションに応じて、`sendmail-cf`、`m4`、および `cyrus-sasl-plain` のパッケージのインストールが必要になる場合があります。
+ 差出人アドレスとして使用する ID を確認します。詳細については、「[Eメールアドレス ID の作成](creating-identities.md#verify-email-addresses-procedure)」を参照してください。

  アカウントが Amazon SES サンドボックスにある場合は、E メールの送信先のアドレスも検証する必要があります。詳細については、「[本稼働アクセスのリクエスト (Amazon SES サンドボックスからの移行)](request-production-access.md)」を参照してください。

Amazon SES を使用して Amazon EC2 インスタンスから E メールを送信する場合は、次の手順も実行する必要があります。
+ 受信する E メールプロバイダーが E メールを受信するように、Elastic IP アドレスを Amazon EC2 インスタンスに割り当てる必要があります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 Elastic IP アドレス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)」を参照してください。
+ Amazon Elastic Compute Cloud (Amazon EC2) では、デフォルトでポート 25 経由での E メールトラフィックを制限しています。Amazon EC2 から SMTP エンドポイントを介して E メールを送信する際のタイムアウトを回避するには、これらの制限を解除するようリクエストすることができます。詳細については、[Amazon EC2 インスタンスまたは AWS Lambda 関数からポート 25 の制限を削除するにはどうすればよいですか？」を参照してください。](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/) AWS ナレッジセンターの「」を参照してください。

  または、このセクションの手順を変更して、ポート 25 ではなく、ポート 587 を使用することもできます。

## Sendmail を設定する
<a name="send-email-sendmail-procedure"></a>

このセクションの手順に従って、Amazon SES を使用して E メールを送信するように Sendmail を設定します。

**重要**  
このセクションの手順では、米国西部 (オレゴン) で Amazon SES を使用することを前提としています AWS リージョン。別の地域を使用する場合は、この手順の *email-smtp.us-west-2.amazonaws.com* のすべてのインスタンスをご希望地域の SMTP エンドポイントに置き換えてください。Amazon SES が使用可能な AWS リージョン の SMTP エンドポイント URL のリストについては、「*AWS 全般のリファレンス*」の「[Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region)」を参照してください。

**Sendmail を設定するには**

1. ファイルエディタで、ファイル `/etc/mail/authinfo` を開きます。このファイルが存在しない場合は、作成します。

   次の行を */etc/mail/authinfo* に追加します。

   ```
   AuthInfo:email-smtp.us-west-2.amazonaws.com "U:root" "I:smtpUsername" "P:smtpPassword" "M:PLAIN"
   ```

   上の例に、以下の変更を加えます。
   + *email-smtp.us-west-2.amazonaws.com*を、使用する Amazon SES SMTP エンドポイントに置き換えます。
   + *smtpUsername* を Amazon SES SMTP ユーザー名に置き換えます。
   + *smtpPassword*を Amazon SES SMTP パスワードに置き換えます。
**注記**  
SMTP サインイン認証情報は、 AWS アクセスキー ID およびシークレットアクセスキーとは異なります。SMTP サインイン認証情報を取得する方法の詳細については、「[Amazon SES SMTP 認証情報を取得](smtp-credentials.md)」を参照してください。

   終了したら、`authinfo`を保存します。

1. コマンドラインで、以下のコマンドを入力して`/etc/mail/authinfo.db` ファイルを生成します。

   ```
   sudo sh -c 'makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo'
   ```

1. コマンドラインで、以下のコマンドを入力して Amazon SES SMTP エンドポイントに中継するためのサポートを追加します。

   ```
   sudo sh -c 'echo "Connect:email-smtp.us-west-2.amazonaws.com RELAY" >> /etc/mail/access'
   ```

   上のコマンドで、*email-smtp.us-west-2.amazonaws.com* を、使用する Amazon SES SMTP エンドポイントのアドレスに置き換えます。

1. コマンドラインで、次のコマンドを入力して */etc/mail/access.db* を再生成します。

   ```
   sudo sh -c 'makemap hash /etc/mail/access.db < /etc/mail/access'
   ```

1. コマンドラインで、次のコマンドを入力して `sendmail.cf` ファイルと `sendmail.mc` ファイルのバックアップを作成します。

   ```
   sudo sh -c 'cp /etc/mail/sendmail.cf /etc/mail/sendmail_cf.backup && cp /etc/mail/sendmail.mc /etc/mail/sendmail_mc.backup'
   ```

1. 以下の行を、*/etc/mail/sendmail.mc* ファイルのすべての `MAILER()` 定義の前に追加します。

   ```
   define(`SMART_HOST', `email-smtp.us-west-2.amazonaws.com')dnl
   define(`RELAY_MAILER_ARGS', `TCP $h 25')dnl
   define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
   FEATURE(`authinfo', `hash -o /etc/mail/authinfo.db')dnl
   MASQUERADE_AS(`example.com')dnl
   FEATURE(masquerade_envelope)dnl
   FEATURE(masquerade_entire_domain)dnl
   ```

   上のテキストで、次の操作を行います。
   + *email-smtp.us-west-2.amazonaws.com*を、使用する Amazon SES SMTP エンドポイントに置き換えます。
   + *example.com* を、E メールの送信に使用するドメインに置き換えます。

   終了したら、ファイルを保存します。
**注記**  
Amazon EC2 は、デフォルトでポート 25 経由の通信を制限します。Amazon EC2 インスタンスの Sendmail を使用する場合は、[E メール送信制限解除申請](https://aws-portal.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request)に入力する必要があります。

1. コマンドラインで、以下のコマンドを入力して*sendmail.cf*を書き込み可能にします。

   ```
   sudo chmod 666 /etc/mail/sendmail.cf
   ```

1. コマンドラインで、以下のコマンドを入力して*sendmail.cf*を再生成します。

   ```
   sudo sh -c 'm4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf'
   ```
**注記**  
「コマンドが見つかりません」や「そのようなファイルまたはディレクトリはありません」などといったエラーが発生した場合は、`m4`パッケージと`sendmail-cf`パッケージがシステムにインストールされていることを確認します。

1. コマンドラインで、以下のコマンドを入力して*sendmail.cf*の権限を読み取り専用にリセットします。

   ```
   sudo chmod 644 /etc/mail/sendmail.cf
   ```

1. コマンドラインで、以下のコマンドを入力して Sendmail を再起動します。

   ```
   sudo /etc/init.d/sendmail restart
   ```

   *Linux または Sendmail のバージョンによって、上記がうまくいかない場合は、以下を試してください。*

   ```
   sudo su service sendmail restart
   ```

1. 以下の手順を実行して、テスト E メールを送信します。

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

      ```
      /usr/sbin/sendmail -vf sender@example.com recipient@example.com
      ```

      *sender@example.com*を送信元 E メールアドレスに置き換えてください。*recipient@example.com* を送信先アドレスに置き換えます。終了したら、Enter キーを押します。

   1. 以下のメッセージの内容を入力します。各行の終わりで Enter キーを押します。

      ```
      From: sender@example.com
      To: recipient@example.com
      Subject: Amazon SES test email
      
      This is a test message sent from Amazon SES using Sendmail.
      ```

      E メールの内容を入力し終わったら、Ctrl\$1D キーを押して送信します。

1. 受取人の E メールクライアントで E メールをチェックします。E メールが見つからない場合は、迷惑メールフォルダを確認します。それでも E メールが見つからない場合は、メールサーバー上の Sendmail ログを確認します。通常、ログは */var/log/mail.log* または */var/log/maillog* にあります。