OP25Bなのでメールリレーサーバを探す
自宅サーバのメールサーバを立てるのは、実は初めてだったかもです。いまさらながらOP25Bがいやになりました。
きっかけはテスト用のWordPressから外部にメールが出ないことでした。WordPressの権限の調査をしようと思って、管理者:mtystg+admin@gmail.com、編集者:mtystg+editor@gmail.com のように、Gmailの拡張メールアドレスを使ってアカウントを作りましたが、メールが届きませんでした。
それもそのはずで、メールはサーバ内でしか使わないつもりで、何も設定していませんでした。
それでも Postfix の main.cf を見ると、普通に外に出てもおかしくないはずなのに、mail.log には、
Apr 18 00:28:41 sv postfix/smtp[30139]: connect to gmail-smtp-in.l.google.com[108.177.125.26]:25: Connection timed out
こんなかんじで繋がらない。
iptables を確認しても outbound に関しては制限していないし、ルーターでも制限していない。なんでかなーと考えてたら、遊びに来ていた友達に言われて、思い出しました。世の中にOP25Bという制度があることを。
ということで、OP25B対策について調べてみましたが、プロバイダなどのメールサーバのサブミッションポート(587)に接続して、全部のメールをそこから配送してもらう。しかなさそうでした。
DNSでMX引いて、そのサーバのSMTPポート(25)が閉じてたら代わりにサブミッションポート(587)で送ればいいんじゃない?と思ったんですが、やってるところを見つけられず、みんなリレーホストに丸投げしてましたので、早々にあきらめました。
リレーホストはどこがいいのか?ですが、まずGmailで試してみましたが、FromをGmailで管理しているアドレスに書き換えられたので×。
次に別で契約しているさくらのレンタルサーバで試してみたらFromの書き換えはありませんでした。でも、Gmailで受信したメールを見ると、とはならずにのように、クエスチョンマークが表示されました。
調べたらSPFで送信元が特定できなかったからのようでした。メールのヘッダで確認できます。
Received-SPF: fail (google.com: domain of xxx@taiyodo.ga does not designate 133.242.249.184 as permitted sender) client-ip=133.242.249.184;
Authentication-Results: mx.google.com;
spf=fail (google.com: domain of xxx@taiyodo.ga does not designate 133.242.249.184 as permitted sender) smtp.mailfrom=xxx@taiyodo.ga
DNSはMyDNSを使っているので、確認すると、
3-3) SPFレコードやDKIMの設定について
SPFレコードについては、皆さんのサーバーのIPアドレスを自動的に設定しますので通常は設定は不要です。 (自動的に設定しているSPFレコードは以下の入力項目には表示していません)
https://www.mydns.jp/members/#domaininfo
とありましたので、dig してみると、
# dig taiyodo.ga txt
:
;; ANSWER SECTION:
taiyodo.ga. 300 IN TXT "v=spf1 +ip4:133.202.37.17 +ip6:2404:7a82:6d20:5b00:221:5cff:fed4:bda4 a:auth.gate-on.net a mx -all"
:
と、設定されていることを確認しました。+ip4, +1p6, a, mx, -all はわかりますが「a:auth.gate-on.net」ってなに?なわけです。ググったらMyDNSが用意してくださっているメールリレーサービスではないですか!
このページにはほとんど情報はなく、MyDNSの「メールリレーサービス試験提供中」というページに使い方が載っていました。2006年から試験提供しており、当面の間は継続とのことですので、継続している間はありがたく利用させていただこうと思います。
もし Gate-On.NET のサービスが提供終了になったら、SendGrid の Freeプランでも試してみようかと思います。
なお、ISPのメールサーバをリレーホストにしないのは、自分が契約していないから認証情報がわからないのと、できればISPに依存せず構築したかったからです。