AmazonSESをsmtpサーバーとして使用する(sendmail設定編)

Amazon Simple Email Service(SES)を手元のサーバーのメール配送サーバーとして利用してみます。
ターゲットMTAはsendmail。
事前にAmazonSESをsmtpサーバーとして使用する(AWS設定編)を実施しておく必要があります。
基本的にIntegrating Amazon SES with Sendmailにしたがって設定しますが、表記内容そのままではうまく動作しなかったため、一部アレンジしてあります。

手元サーバー環境

  • Fedora18
  • sendmail-8.14.7

まずは必要なパッケージをインストール

# yum install sendmail-cf

/etc/mail/authinfo を作成

  • ここでSESで作成したユーザー情報を使用します。
サムネイルの作成エラー: ファイルがありません
  • 「I:」に続けて、SMTP Username
  • 「P:」に続けて、SMTP Password
  • 「U:root」、「M:LOGIN」はそのまま記述します。
# vi /etc/mail/authinfo
AuthInfo:email-smtp.us-east-1.amazonaws.com "U:root" "I:AKI*****************" "P:ABC*****************************************" "M:LOGIN"
AuthInfo:ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com "U:root" "I:AKI*****************" "P:ABC*****************************************" "M:LOGIN"

/etc/mail/access へ追記

  • Amazon SESへのリレーを許可します。
# vi /etc/mail/access
Connect:email-smtp.us-east-1.amazonaws.com RELAY
Connect:ses-smtp-prod-335357831.us-east-1.elb.amazonaws.com RELAY

sendmail.mcの編集

  • LOCAL_DOMAIN以外はIntegrating Amazon SES with Sendmailを参考に記述。ただし、RELAY_MAILER_ARGSについては25番ポートでは動作しませんでしたので587番に変更しています。
  • 数カ所変更が必要です。変更点をdiff表示。(-が元のファイルから削除、+は追加した行です)
# git diff --cached sendmail.mc
diff --git a/mail/sendmail.mc b/mail/sendmail.mc
index 6c4c18e..f25df72 100644
--- a/mail/sendmail.mc
+++ b/mail/sendmail.mc
@@ -154,25 +154,31 @@ dnl FEATURE(`relay_based_on_MX')dnl
 dnl #
 dnl # Also accept email sent to "localhost.localdomain" as local email.
 dnl #
-LOCAL_DOMAIN(`localhost.localdomain')dnl
+LOCAL_DOMAIN(`dondari.com')dnl
 dnl #
 dnl # The following example makes mail from this host and any additional
 dnl # specified domains appear to be sent from mydomain.com
 dnl #
-dnl MASQUERADE_AS(`mydomain.com')dnl
+MASQUERADE_AS(`dondari.com')dnl
 dnl #
 dnl # masquerade not just the headers, but the envelope as well
 dnl #
-dnl FEATURE(masquerade_envelope)dnl
+FEATURE(masquerade_envelope)dnl
 dnl #
 dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well
 dnl #
-dnl FEATURE(masquerade_entire_domain)dnl
+FEATURE(masquerade_entire_domain)dnl
 dnl #
 dnl MASQUERADE_DOMAIN(localhost)dnl
 dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
 dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
 dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
+dnl Amazon SES settings
+define(`SMART_HOST', `email-smtp.us-east-1.amazonaws.com')dnl
+define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
+define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
+FEATURE(`authinfo', `hash -o /etc/mail/authinfo.db')dnl
+dnl
 MAILER(smtp)dnl
 MAILER(procmail)dnl
 dnl MAILER(cyrusv2)dnl

もろもろ準備

  • Fedoraのパッケージでは、Makefileが付属しているため、下記のようにすればひと通りやってくれます。便利ですね。
# cd /etc/mail
# make
# systemctl restart sendmail.service

送信

  • 適当に送信してみます。
sendmail -f root@dondari.com hogehoge@gmail.com
  • 届かなければ、/var/log/maillogあたりを確認するしか。
  • ちなみにgmailで受信すると、fromの右側に「amazonses.com 経由」と表示されます。
Ses3-1.png

関連ページ

facebook slideshare rubygems github qiita