PHPから送信したメールがGmailに届かなくなっていたので対策した

php・MySQL・Web開発

先日、ある独自ドメインからGmail宛てにメールを送っても不達となってしまっていることに気が付きました。

結論から言うとSPF関連の設定がまずかったのが原因。しかも、なんと迷惑メールフォルダに入ることすらなく、それより前の段階で拒否されていたようです。これではなかなか気が付けない。

以前は届いていたので大丈夫だったのですが、いろいろログなど調べて総合的に考えると、つい最近というか、どうも今年に入ってからSPF対応してるかどうかを厳しく見るようになった感じです。

実行した対策

サーバのDNSレコードをいじって、SPF関連のTXTレコードを追加。
その後ThunderbirdからGmail宛てにメールを送ってみたら無事に受信できました。

よし、これでもう大丈夫だ…と思ったのですが、私が管理している某Webシステムから送ったメールがGmailに届いていないことにも気が付く。例によって迷惑メールフォルダにすら入ってない。それより前段階でBANされている。

PHPのmb_send_mailの設定に何か問題があるのだろうな…と、当たりはついたので、ググって以下のサイトを発見。

【参考サイト】迷惑メールにならないためのエンジニアにできる最大限の対応。php mb_send_mailからSPFとDKIMとDMARC – Qiita

なんと第5引数があるとは知りませんでした!

-fからスペースなしでfromメールアドレスを記述するパラメータを付与する必要がある。

https://qiita.com/f_uto/items/aa8a3ab915fb09b97256

おおお、なんか直感的ではなく、ややこしいですね。

しかし、おかげさまでこのサイトの指示通りにmb_send_mailの引数を設定したら、無事にメールヘッダの「Received-SPF: pass」となり、Gmailさんにも受け入れてもらえるメールとなりました。

あなたの管理ドメインやサービスも今すぐSPF対応を!

私の運営ドメインではDKIMとDMARCについては一切対応してませんが、今のところGmailには怒られないようです。Webサービス等を運営している皆様におかれましては、まずはSPF対応を一刻も早く実施していただければと思います。Gmailでの利用者は多数いると思いますので、今後SPF対応していないサイト(ドメイン)には甚大な影響が出ると思われます。

そしてPHPのmb_send_mailをお使いの方は、第五引数まで含めてきっちり正しく設定しましょう!

※注:上記引用サイト様では「Sender」に関する記載が間違っていると思われますのでご注意ください。「Sender」には「to」ではなく「from」を記載するはずです。Sender=送信者、という意味ですので。

コメント

タイトルとURLをコピーしました