SPFレコード?DNS設定?『なりすましメール』にご注意を!

こんにちは。YMOです。

先日、私が管理しているプロジェクトでWEBフォームから送信されるメールが届かない問題が起ったので、備忘録をかねて記事を書こうと思います。

プロジェクトはクリニックさんのサイトリニューアルで、診察予約のフォームがありました。
経緯は割愛しますが、条件としてはリニューアルにあたりWEBサーバーはさくらインターネット(以下、さくらサーバー)に乗せ換えるが、メールサーバーは既存サーバー(以下、旧サーバー)を継続して利用する必要がありました。

上記の条件で予約フォームからメールを送信した際に2つの問題が起こりました。

ユーザーが入力したメアド宛に自動返信メールが届かない

社用メールやGmailなどのフリーメールにはユーザー宛に自動返信メールが正常に届きましたが、キャリアメール(Docomo、Au、SB)には届かきませんでした。
原因は単純で、SPFレコードの設定ができていなかったからでした。

エンベローブFromは「さくらサーバーのドメイン(example.sakura.ne.jp)」、でもヘッダFromは「旧サーバーのドメイン(example.jp)」のドメインになっていて、実際に送信しているメールサーバーと送信元のFromのメールアドレスが一致しないため整合性がとれず「なりすましメール」と判断されたようです。

SPF(Sender Policy Framework)とは、メール送信元のFromアドレス(ドメイン)が詐称されていないことを証明するための技術です。
設定はドメインのDNS設定のTXTレコードに下記のようなSPFレコードを記述します。(記述方法は他にも色々あります)

example.jp. IN TXT “v=spf1 include:sakura.jp ~all”

これは、example.jp は sakura.jp を信頼できるドメインだと証明していることになりますので、正常にメールが送信されるようになります。

管理者宛に送信される確認メールが届かない

これも1つ目と同じで、WEBとメールのサーバーが違うことが悪さをしていました。

原因は管理者メールアドレスが info@example.jp なのですが、さくらサーバー側にも example.jp をホスティングされていたので、フォームシステムからsendmailでメール送信した場合、外部DNSを閲覧するのではなく、さくらサーバー内部で処理を完了し、同サーバ内のメールボックスに送信される仕様だったため、旧サーバーのメールボックスには届かなかったようです。

さくらサーバーには「sendmail送信時にDNSをsakura内部を見るか外部を見るかの設定」する設定項目があり、チェックするとメール送信時にメールサーバーを外部のDNSを見に行くようにできますので、管理者宛に確認メールを正常に送信することができました。

なりすましメールは、クライアント側のメーラー設定や、受信メールサーバーのセキュリティレベルにより受信結果がことなりますが、
SPFレコードやDNS設定などを確認しておくと安心ですね。

以上、ご視聴ありがとうございました。