さくらのレンタルサーバーのメールサーバー機能を利用して、(さくら外で取得した)独自ドメインのアカウントでメールを送信したら、Gmail で「未認証メール」扱いとなった(「?」マークがついた)。
調べてみると、独自ドメインの DNS 設定(SPFレコード)が誤っていた。
再発防止のため、メモ書きとして恥をさらしておく。
メール用の DNS 設定例
さくらのレンタルサーバーの設定が以下の様になっている場合、
項目 | 値(例) | 備考 |
---|---|---|
初期ドメイン | myaccount.sakura.ne.jp | さくらのアカウント名が頭に付くドメイン名 |
ホスト名 | wwwNNN.sakura.ne.jp | さくらのサーバーのホスト名(IPv4アドレス=YYY.YYY.YYY.YYY) ※サーバ情報の表示>サーバに関する情報の「ホスト名」 ※SPFチェック対象となる(メールヘッダのReceived: from ~に記載される)のはこちら |
IPアドレス | XXX.XXX.XXX.XXX | 初期ドメインに紐づいたIPv4アドレス ※サーバ情報の表示>サーバに関する情報の「IPアドレス」 ※共有アドレスか専用アドレスかはプランによって異なる ※サーバーのホスト名に紐づいたもの(YYY.YYY.YYY.YYY)とは異なる場合があることに注意 |
以下の様に独自ドメインを取得し、
項目 | 値(例) | 備考 |
---|---|---|
独自ドメイン | mydomain.com | (さくら外で取得した)独自ドメイン名 |
"user@mydomain.com" のようなメールアドレス(アカウント)を、さくらのレンタルサーバーで使用することを想定する。
さくらのコントロールパネルから、ドメイン/SSL設定>[新しいドメインの追加] にて、「5. 他社で取得したドメインを移管せずに使う」により、mydomain.com を追加してあるものとする。
このとき、メール用として、(他社の)DNSサーバーには以下の様に MX レコードと TXT レコード(SPFレコード)を登録する。
mydomain.com. 3600 IN MX 10 myaccount.sakura.ne.jp. mydomain.com. 3600 IN TXT "v=spf1 a:wwwNNN.sakura.ne.jp mx ~all"
SPFレコードの記述は、さくらのドメイン詳細設定を使用した際に「□SPFレコードを利用する」にチェックを入れた場合に設定されるものに準拠している(SPFディレクトリ中、'mx' は無くても良い。また、'a:wwwNNN.sakura.ne.jp' の代わりに 'ip4:YYY.YYY.YYY.YYY' と直接 IP アドレスを記載しても動作はするが、IPv6アドレスが使用されることもあるため、ドメイン名にしておいた方が無難)。
失敗例
SPF レコードを
mydomain.com. 3600 IN TXT "v=spf1 ip4:XXX.XXX.XXX.XXX ~all"
mydomain.com. 3600 IN TXT "v=spf1 a:myaccount.sakura.ne.jp ~all"
mydomain.com. 3600 IN TXT "v=spf1 mx ~all"
といった様に、許容するIPアドレス/ドメインとして初期ドメインを設定してしまうと、認証に失敗してしまう(場合がある)。
ビジネスプラン等では、初期ドメイン(myaccount.sakura.ne.jp)とサーバーのホスト(wwwNNN.sakura.ne.jp)が示すIPアドレスが異なっているため、失敗(softfail)する。スタンダードプラン等では同じIPアドレスを示すので、結果的に通る(pass)場合もある。
例えば Gmail アドレス宛にメールを送信したとき、認証に失敗していると、メールヘッダで
ARC-Authentication-Results: i=1; mx.google.com; spf=softfail (google.com: domain of transitioning user@mydomain.com does not designate YYY.YYY.YYY.YYY as permitted sender) smtp.mailfrom=user@mydomain.com
のように SPF チェックの結果が "softfail" であったことが記載され、Gmail で当該メールを見たときに「未認証メール」として、「?」マークが付く。
メールを開き、「?」マークにマウスオーバ(スマートフォン等の場合にはタップ)すると、「Gmail では、このメールが(スパム発信者からではなく)本当に mydomain.com から送信されたメールであることを確認できませんでした。」といった文言が表示される。
SPF レコードの妥当性チェック方法
設定した SPF レコードが有効かどうかは、port25が提供しているサービスを使うのが手っ取り早い。
check-auth@verifier.port25.com
宛にメールを送信すると、「Authentication Report」という Subject がついて、
========================================================== Summary of Results ========================================================== SPF check: pass "iprev" check: pass DKIM check: none SpamAssassin check: ham
のように SPF チェックの結果などを含むメールが返信されてくる。