メールフォーム利用時のSPF設定について

メールフォームの自動応答メールが迷惑メール扱いされるケースが多く、SPF設定の対応を試みていましたが、なかなかうまくいかず、あれこれ試行錯誤の結果、以下の対応でひとまずSPF設定をPASSできたので、情報共有。

私の環境は、ロリポップサーバーの簡単インストールでサイトを構築。ドメインは、お約束のムームードメインで取得しています。
ロリポップのネームサーバーでは、SPFレコードの設定ができないらしく、「ムームーDNS移行」の仕組みを使って、ネームサーバーをムームードメインへ移行。というのも、ムームードメインではSPFレコード設定の記述ができるので。
と、ここまでは、ネットをググってもチラホラ出てくる情報なので、本件でお困りの方にはほぼ周知の情報かと思います。

さて、ロリポップサーバー(ムームーDNS移行)およびムームードメインのコントロールパネルでSPF設定まで完了した状態で、メールフォームからテスト送信を実行。
受け取った自動応答メールのヘッダー情報を確認したところ、結果は「Received-Spf:none」のままでした。

なので、システム設定の「メール設定関連」欄を利用して、外部メールサーバー扱いでロリポップのSMTPサーバーを指定すれば、PASSするかもと考え、SMTPサーバー情報を設定し、同欄の「メール送信テスト」ボタンをクリックするも、ウンともスンとも言わず、送信エラー。
エラーログを見てみたところ、SMTPのタイムアウトとの記述。なぜ?!これはこれで疑問。

ここで、途方に暮れていたところ、同欄に「additional_parameters(オプション)」の指定欄を発見。(4系のどこかのリビジョンから付いたんですかね?3系にはなかったので)
で、SMTPの設定欄は、ひとまず全て削除し、その上で、「additional_parameters(オプション)」欄に -f オプションでもメールアドレス(メールフォームで使用しているメールアドレス。普通は管理者メールアドレスですかね)をキチンと指定。「-f 〇〇@〇〇.com」みたいに。

この状態で、メールフォームから再度テスト送信を実行。
結果、「Received-Spf:pass」となりました!

いろいろ調べてみると、PHPでメール送信をする場合は、第5引数でもmailfromを指定しないとデフォルトのアカウントになってしまうんだそうで、それでSPFチェックをすることになってしまいSPFチェックが通らなかったようです。

本件でお悩みの方、是非一度お試しくださいませ。
ちなみに4系にしか「additional_parameters(オプション)」欄はないので、3系以前の方は、コアファイルをゴソゴソしないといけないようです。

2 Likes

自己レスです。

リリースノートを確認したところ、4.2.2のリリースノートに「Return-Pathに表現されるエンベロープfrom」についての記述がありました。
それによると、「Return-Pathに表現されるエンベロープfromは送信元サーバを保証する意味で利用されメールプラグインの送信先メールアドレスやシステム管理者として指定されたメールアドレスとは意味合いが異なる。」となっています。
ですので、ここで使用するアドレスは、システム管理やフォームの送信先アドレス、などといった安易な括りではなく、指定すべきアドレスをキチンと吟味して行うようにということかと。

3 Likes

そういったところを読んでもらったり、使ってもらったりすると実装者としては嬉しいです!

1 Like

こちらこそ、皆さんのご努力に感謝です!!