アフィリエイト広告を利用しています

さくらインターネットでGmailからの転送メールだけが届かない──原因はDMARCポリシー変更だった

「さくらインターネットでメール転送の設定をしたのに、Gmailから送ったメールだけが転送先に届かない」ということ、ありませんか?

クライアントさんのメール転送設定をしていて、まさにこの問題にぶつかりました。

2024年2月のGoogleによるDMARCポリシー変更と、さくらインターネットのメール転送の仕様が組み合わさって起きている構造的な問題でした。

同じ問題でハマっている方のために、原因の特定から解決までの流れを共有します。

起きていたこと

構成はこんな感じです。

Aさん(Gmail)
    ↓ メール送信
独自ドメインメール([email protected])← さくらインターネット スタンダード
    ↓ 全転送設定
Bさん(Gmail)

[email protected] のメールボックスにはちゃんと届いています。でも、転送先のGmailには届かない。

迷惑メールフォルダにも入っていません。完全に消えているんです。

ところが、Gmail以外から送信されたメールは、同じ転送設定で問題なく届きます。

Gmailからのメールだけが転送に失敗する。

これは困りました。

なぜGmailだけ?──3段階の認証の仕組み

メールの世界には、なりすまし対策として3つの認証技術が動いています。

  • SPF──「このメールは正規のサーバーから送られたか?」をIPアドレスで確認する仕組み
  • DKIM──「このメールは途中で改ざんされていないか?」を電子署名で確認する仕組み
  • DMARC──「SPFかDKIMのどちらかが通ったか?通らなかった場合どうするか?」を定めるポリシー

ポイントは、DMARCはSPFかDKIMのどちらか一方が通ればOKということです。両方失敗して初めて、DMARCポリシーに従ったアクション(破棄・隔離など)が発動します。

転送すると何が起きるか

メールが転送されると、この認証の仕組みが壊れます。

SPFは確実に失敗する

SPFは「送信元のIPアドレス」で正当性を判断します。GmailのサーバーIPはgmail.comのSPFレコードに載っているから認証が通ります。

しかし、さくらのサーバーが転送する時、送信元IPはさくらのサーバーに変わります。gmail.comのSPFレコードには載っていません。

SPF: FAIL(確定)

DKIMは「壊れるかどうか」がサーバー次第

DKIMの電子署名は、メール本文のハッシュ値に基づいています。転送時にメール本文が1バイトでも変わると、署名が無効になります。

ここがさくらインターネットの仕様がこうなっている様子

さくらのMTA(メール転送エージェント)である maildrop は、テキスト形式のメール本文を転送時にデコード→再エンコードする処理を行います。この過程で本文のバイト列が変わり、Gmailが付与した元のDKIM署名が無効になります。

DKIM: FAIL(さくらの場合)

DMARCの結果

SPFもDKIMも失敗。DMARCは両方失敗した場合にポリシーを参照します。

2024年2月以前、gmail.com のDMARCポリシーは p=none(何もしない)でした。認証に失敗しても、受信側は普通に配信していました。

2024年2月、Googleはgmail.comのDMARCポリシーを p=quarantine(隔離)に変更しました。

この変更により、Gmail発のメールがDMARC認証に失敗すると、受信サーバーはそのメールを迷惑メールに振り分けるか、サイレントに破棄するようになりました。

なぜそれ以外のメールは届くのか

DMARCポリシーを p=none に設定していたり、DMARCレコード自体の設定がない場合は、届くわけです。

p=none の場合、SPFもDKIMも失敗してDMARC認証に落ちたとしても、受信側は何もアクションを取りません。普通に配信されます。

つまり、Gmailだけが届かないのではなく、DMARCポリシーが厳しいドメインからのメールだけが届かないんです。大手銀行など p=reject を設定しているドメインからの転送メールも同様に失敗する可能性があります。

さくらの設定で解決できないか

さくらインターネットは2024年1月31日にDKIM・DMARC・ARC機能を全プランに提供開始しています。サーバーコントロールパネルからDKIMを有効にすると、ARC署名も自動的に付与されるようになります。

ARCは「転送前にDKIM/SPFが通っていた」ことを記録する仕組みです。

でも解決しない

さくらのmaildropが本文を再エンコードしてDKIM署名を壊すという根本原因は、DKIM/ARC設定では解決できません。

ARC署名は「転送前は認証が通っていた」ことを伝えますが、受信側のGmailがその情報をどこまで信頼するかはGoogleの裁量です。

さらに、さくらはSRS(Sender Rewriting Scheme)に非対応です。SRSはエンベロープFromを転送サーバーのドメインに書き換えることでSPF認証を通す仕組みですが、さくらはこの書き換えを行いません。

Xserverなら届く理由

実際に検証したところ、同じ構成でもXserverでは転送メールが届くことを確認しています。

違いは、転送時にDKIM署名が壊れるかどうかです。

さくら(maildrop)Xserver(Postfix)
転送時のSPFFAILFAIL
転送時のDKIM壊れる残る
DMARC結果FAILPASS

XserverのPostfixはメッセージ本文をそのまま転送するため、Gmailが付与した元のDKIM署名が保持されます。SPFは失敗しますが、DKIMが通るのでDMARCはPASS。

MTAの転送時の挙動の違いが明暗を分けています。

解決策

方法1:Cloudflare Email Routing(無料・おすすめ)

ドメインのDNSをCloudflareに移管し、Cloudflare Email Routingで転送する方法です。

Aさん(Gmail)
    ↓ メール送信
[email protected] → Cloudflare Email Routing(SRS対応・DKIM保持・ARC署名付与)
    ↓ 転送
Bさん(Gmail)← 正常に届く

完全無料です。

SRS対応でエンベロープFromを書き換え、元のDKIM署名も保持するため、大半のメールが正常に転送されます。

設定の流れはこんな感じです。

  1. Cloudflare無料プランに登録
  2. ドメインのネームサーバーをCloudflareに変更
  3. Cloudflareダッシュボードで転送ルールを作成
  4. 必要なMX・TXTレコードはCloudflareが自動生成

所要時間は30分〜1時間程度。ネームサーバー変更の反映待ちで最大48時間かかる場合があります。

ネームサーバーを変えるとAレコードなどもCloudflare側で再設定が必要なので、サイトリニューアルなどのタイミングと合わせると効率的です。

Gmailの「別のアドレスから送信」機能はそのまま使えます。

方法2:Google Workspace(月額約1,100円〜・最も確実)

独自ドメインのメールをGoogleのサーバーで直接運用する方法です。MXレコードをGoogleに向けるため、そもそも転送が発生せず、認証問題は原理的に消滅します。

コストはかかりますが、メールの到達性という観点では最も確実な選択肢です。

方法3:サーバーをXserverに移行

ホームページもメールもXserverに移す方法です。XserverのPostfixは転送時にDKIM署名を保持するため、同じ転送設定でもGmailに届きます。

ホームページのリニューアルやサーバー統合を検討しているなら一石二鳥です。

方法4:メールクライアントで直接受信

ThunderbirdなどのメールクライアントでさくらのIMAPを直接参照し、Gmailと並行して確認する方法です。転送を使わないので問題は発生しません。ただしWeb版Gmailだけで完結しなくなります。

まとめ

この問題はさくらインターネットのバグではなく、メール転送とDMARC認証の構造的な相性問題です。

主要メールプロバイダがDMARCポリシーを厳格化する流れは今後も続きます。「転送すれば届く」という前提が成り立たなくなってきている時代です。

ちなみに、AIにメールヘッダーを丸ごと渡して分析してもらったら、原因特定が一瞬でできました。人間が読むには辛いヘッダー情報も、AIの得意分野です。

根本的には、転送に依存しないメール運用への移行が最も合理的です。

Cloudflare Email Routingは無料で使えて設定も簡単なので、同じ問題でお困りの方はぜひお試しください。

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告