SMTPサーバーの逆引きエラーについて
今回は弊社で運用しているSMTPサーバー(postfix)で発生したメール送信時の逆引きエラーの調査及び対処方法についてを記事にしてみました。
正引き/逆引きとは
ドメイン名に対応するIPアドレスを問い合わせることを「正引き」と言います。正引きは、主にWEBページの閲覧時URLを指定して参照する際に利用されます。
上記に対して、IPアドレスに対応するドメイン名を問い合わせることを「逆引き」と言います。逆引きは、主にサーバ側においてアクセス元を判別したい時に用いられます。
SMTPサーバーのエラーログについて
逆引きエラーが発生した際のSMTPサーバーのログには下記の様なエラーが出力されます
Client host rejected: cannot find your reverse hostname, [100.100.10.10]
実際のログ
2019-10-1T12:52:15.642892+09:00 xxxxxxxxxx postfix/smtp[xxxx]: xxxxxxxxxx: to=<aaa@test.com>, relay=xxx.xxxx.jp[xxx.xxx.xxx.xxx]:25, delay=xxxxx, delays=xxxxxxxxxx, dsn =4.7.1, status=deferred (host xxx.xxxx.jp[xxx.xxx.xxx.xxx] refused to talk to me: 450 4.7.1 Client host rejected: cannot find your reverse hostname, [100.100.10.10])
なぜ逆引きチェックを行うのか?
インターネット上ではスパムメールが頻繁に送信されており、スパムメールを送信する業者は身元を隠すために、わざと「ドメイン」と「グローバル IP」を一致させないように設定しています。
スパムメール送信業者からすると、グローバルIPアドレスを特定されるとISPも特定され、アカウントを削除されたりブロックされてしまうことを防ぐために隠す必要があります。
上記理由から、各メールサーバーはドメイン名とグローバルIPの正引き←→逆引きの結果が一致するかを検証し、一致する場合のみメール送信を許可しています。
※逆引きチェックは全てのメールサーバーが取り入れている訳では無いので、逆引き設定を行っていなくても送信できる場合もありますが、送信不達を防ぐ為にも設定する事をオススメします。
正引き←→逆引きでチェックOKのケース
メールサーバーのドメイン名:test.com メールサーバーの IP アドレス:100.100.10.10 100.100.10.10 の逆引き結果:test.com
正引き←→逆引きでチェックNGのケース
メールサーバーのドメイン名:test.com メールサーバーの IP アドレス:100.100.10.10 100.100.10.10 の逆引き結果:aaaa.com
※逆引きチェックで一致しない場合及び逆引きの結果が返却されない場合何れもエラーとなります
逆引設定を行う
弊社はインフラサービスにさくらインターネットを利用しておりますが、逆引き設定は各ベンダーによって異なりますので参考まで。
▼さくらのクラウド > ルータ+スイッチIPアドレスの逆引き設定
▼さくらのVPS > DNS逆引きレコードを変更する
▼さくらのクラウド > DNS逆引きレコードの設定
▼【さくらの専用サーバ】DNS逆引きレコード設定・変更
正引き/逆引きが正しく設定されているかを確認するには
Windowsで正引き/逆引きが正しく設定されていることを確認する場合は、nslookupコマンドを利用します。
正引きの確認結果
C:\Users\test>nslookup test.com サーバー: aaaa.test.local:DNSサーバー Address: 192.168.10.10 名前: test.com Address: 100.100.10.10
逆引きの確認結果
C:\Users\test>nslookup 100.100.10.10 サーバー: aaaa.test.local:DNSサーバー Address: 192.168.10.10 権限のない回答: 名前: test.com Address: 100.100.10.10 ※「権限のない回答とは」DNSキャッシュを使って回答している事を示している
逆引き設定後のSMTPログ確認
逆引き設定後、SMTPサーバーのログにて正常に送信(status=sent)出来ている事を確認します。
実際のログ
2019-10-1T13:22:15.801774+09:00 xxxxxxxxxx postfix/smtp[xxxx]: xxxxxxxxxx: to=<aaa@test.com>, relay=xxx.xxxx.jp[xxx.xxx.xxx.xxx]:25, delay=xxxxx, delays=xxxxxxxxxx, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as xxxxxxxxxx)
まとめ
メール送信時に不達となる原因は色々考えられますが、今回は逆引きエラーを記事にしてみました。
インフラ担当でないとメールサーバーに触れる機会が少ないとは思いますが、トラブルシューティングの参考になりれければ幸いです。