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

php・MySQL・Web開発

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

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

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

実行した対策

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

よし、これでもう大丈夫だ…と思ったのですが、私が管理している某Webシステム(PHPで作成)から送ったメールが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=送信者、という意味ですので。

2024年2月1日 追記

世の中の趨勢的に、現在はDKIMとDMARCへの対応も必須となっています。本日(2024年2月1日)より、GmailやYahooメールなど各大手サービスにおいてDKIMとDMARCに対応してないメールは迷惑メール扱いとなり、到達しないことが予想されます。ですから必須です。

メールサーバやWebサービス、ドメインなどの管理者さんたちは、今すぐDKIMとDMARCへの対応をしてください。今すぐっていうか、昨日(2024年1月31日)までにやっておかないといけなかったんですけどね。

私が契約している複数のレンタルサーバーでもDKIMとDMARCへの対応が発表されています。最も設定しやすく楽チンだったのはXserverですね。特に知識も必要なく超簡単な操作だけで設定が完了しました。ほぼ自動みたいなものでした。

coreserver(昔からある旧来型のほう)はちょっと面倒でした。手動でやるべき作業があり、知識がない人は手間取ったり、上手く行かなかったりするかもしれません。

コメント

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