ハマログ

株式会社イーツー・インフォの社員ブログ

AWS内部のEC2サーバからメール送信する際のIPアドレス逆引き設定

はじめに
AWSのIP逆引き設定に苦労したのでメモ。苦労した原因は、知識&事前調査不足です。
Qiitaとかこのあたりだけの情報だけだと全然理解&解決ができなかった。

環境
  • AWS
  • LB-EC2(xN)-DBの構成
  • EC2(AmazonLinux2)内部からPHPのメール関数またはmailコマンドでメール送信
  • 内部からの通信はすべてNATを経由して外部に出ていく
  • MTAはsendmail
前提
  • ウェブサイトのURLはhttps://e2info.co.jp と https://www.e2info.co.jp
  • メールの差出人はno-reply@e2info.co.jp
  • e2info.co.jpはRoute53でALBをCNAME登録
IPアドレス逆引きとは
DNSサーバに対して、IPアドレスを提示して、対応するドメイン名を取得する行動のことです。
PTRレコード(PoinTeR record)という特殊なレコードをDNSに登録することで、対応することができます。

参考
PTRレコード 【 PoinTeR record 】 より
IPアドレスは特殊な形式のドメイン名として記述され、1バイト毎に逆さまにしたIPアドレスの末尾に、IPv4の場合は「.in-addr.arpa.」を、IPv6では「.ip6.arpa.」を付けたものが用いられる。
むずかしいですね
迷惑メール対策として逆引き設定を行う理由
メールヘッダは差出人により偽装ができるため、正当なサーバから送信されたメールであることの証明になりません。

そのため、メール送信者・メール受信者以外の箇所で確認をおこなうことで、メールの正当性を確認できるようにします。

SPFレコード、DKIM/DMARC対応などいろいろな対策が存在するうちの一つで、なるべく設定をおこなったほうがよいです。
設定方法
以下の手順で設定します。

1.Aレコードの登録
2.sendmailの設定
3.AWSへの申請


1.送信元ドメインの検討

e2info.co.jpに対するIPアドレスはすでにウェブ用に利用されているため、逆引き用のドメインを決めます。ここでは、
sendmail.e2info.co.jp
としました。これは、メールの差出人ドメインと一致している必要はありません。

2.Aレコードの登録

上記の手順(1)で決めたドメインをDNSサーバに登録します(正引き)
今回はRoute53に以下のように登録しました。
名前:sendmail.e2info.co.jp
タイプ:A - IPv4 Address
TTL:300
値:NAT GatewayのIPアドレス
3.sendmailの設定

メールヘッダに差出人サーバのIPアドレスは自動的に付与されますが、以下のようにサーバのホスト名が自動的にはいるので、今回設定したsendmail.e2info.co.jpの値が設定されるようにします。
Received: from e2info.co.jp (e2info.co.jp. [200.200.200.200])

以下のように変更しました。
sudo vi /etc/postfix/main.cf

#mydestination = $myhostname, localhost.$mydomain, localhost
# ↓変更
myhostname = sendmail.e2info.co.jp
mydomain = e2info.co.jp
myorigin = $mydomain
mydestination =
relay_domains = $mydestination

systemctl reload postfix
また、以下のコマンドでメール送信をおこない、ログの確認(/var/log/maillog)と受信側でのメールヘッダ確認をしました。
echo test | mail -s "test from server" -r no-reply@e2info.co.jp atesaki@e2info.com
メールヘッダのReceivedが以下のようになっていることと、差出人がno-reply@e2info.co.jpであることを確認します。
Received: from sendmail.e2info.co.jp (sendmail.e2info.co.jp. [200.200.200.00])
4.AWSへの申請

あらためて、 AWS EC2 Eメール上限緩和 / 逆引き(rDNS)設定 申請手順を参考に申請をおこないます。
問題なければ数十分~数時間のうちに設定完了メールが送られてきます。

おわり
AWSDNSEC2MailmtapostfixPTRsendmailメール

  kaneko tomo   2019年5月12日


関連記事

Laravel5.2のMulti-Auth

Laravel5.2がでました。大目玉の機能として、ついに認証にMulti-Au…

AWSのRDSをアップグレードのためテストしてたらストレージ不足

おはようございます。またご無沙汰になってしまいました。ネタを見つけるたびにブログ…

RDSパラメータ設定時のエラー対処

重たい処理のクエリを投げた際にタイムアウトエラーが発生し、RDSのタイムアウト時…


← 前の投稿

次の投稿 →