ネームサーバ・メールサーバ・WEBサーバが全部別々の場合のGmail宛てメール送信設定について。
2024年02月05日
先日の記事の「パターン3」の場合に遭遇しました。
状況説明
- ネームサーバ:A社(レジストラ)
- WEBサーバ:B社(ネットショップ)
- WEB&メールサーバ:C社
WEBサーバであるネットショップに以下の制限があるため、別途レンタルサーバを用意しました。
- メールアカウントが5個しか持てないが、40個程度必要。
- ネットショップの用意するブログシステムが非力で使いにくい。WordPressに慣れているので使いたいが、用意が無い。
A社ネームサーバのDNS設定値は以下の通り。ドメイン名は仮にhogehoge.comとしています。
- hogehoge.com A bbb.bbb.bbb.bbb(B社IPアドレス)
- hogehoge.com A ccc.ccc.ccc(C社IPアドレス)
- mail.hogehoge.com A ccc.ccc.ccc(C社IPアドレス)
- www.hogehoge.com CNAME hogehoge.com.cn.B社.jp
- hogehoge.com MX mail.hogehoge.com 0
- hogehoge.com TXT v=spf1 +a:C社.jp +a:hogehoge.com +mx include:spf.sender.C社.jp ~all
https://hogehoge.com/blogはB社に向いていますが、B社内の設定でC社WEBサーバを参照するようになっています。
目的
C社サーバから送信されるメールのドメイン正当性を確保します。具体的にはSPF・DMARC・DKIMレコードがメールヘッダに正常に含まれることです。
ただしB社サイトに設置されたフォームメールは、B社からのメールとなります。
対策
編集するのはA社ネームサーバのDNS値です。
B社(WEBサーバ)用設定
B社フォームメールの自動返信対策をします。
- TXTレコードに追加:_dmarc.hogehoge.com TXT 0 v=DMARC1;p=none;rua=mailto:info@hogehoge.com
- CNAMEレコードに追加:shop._domainkey.hogehoge.com CNAME 0 shop._domainkey.B社
SPFはすでに設定済みなので、上記をA社のDNSに追加します。
一行目のDMARCは問題なし。
二行目のDKIM設定でエラーが発生。CNAMEのコンテンツに「_(アンダーバー)」を使用できません。慣例的にドメインキーサーバの名前は「xxxx._domainkey.ドメイン」とするらしいのですが、それをCNAMEで参照してしまうと参照元・参照先とも両方に「_(アンダーバー)」が入ってしまいますね。手詰まり…。
そもそもドメインキーサーバはDKIM公開鍵を提供しているので、それを持って来ちゃえば良いぞ。
https://www.cman.jp/network/support/go_nslookup.cgi
にて「shop._domainkey.B社」のTXTレコードを確認します。
- v=DKIM1; k=rsa; p=xxxxxx0xxxxxxxx3xxxxxxxxx4xxxxxxxxxxxxxxxxxx0xx8xxxxx11x2xxxxx8xxxxxxxxxxxxx5xxxxxxxxxxxxxxxxxxxxxxxx63xx3xxxxxxxx00xxxxxx/xxxxxx4xxxxxx4xx6xxxxxxxxxxxxxxxxxxxxx7xxxxxxxxxxxxxxxx6xxxx6x2xxx5xxx6/xxx2+7x9x8xxx9xxxxxxx(値は偽です)
といった内容のTXTレコードが取得できますので、以下のようにDNSを再設定します。
- shop._domainkey.hogehoge.com TXT v=DKIM1; k=rsa; p=xxxxxx0xxxxxxxx3xxxxxxxxx4xxxxxxxxxxxxxxxxxx0xx8xxxxx11x2xxxxx8xxxxxxxxxxxxx5xxxxxxxxxxxxxxxxxxxxxxxx63xx3xxxxxxxx00xxxxxx/xxxxxx4xxxxxx4xx6xxxxxxxxxxxxxxxxxxxxx7xxxxxxxxxxxxxxxx6xxxx6x2xxx5xxx6/xxx2+7x9x8xxx9xxxxxxx
C社(メールサーバ)用設定
C社はDKIM自動設定機能があるため、その値をA社に設定。
DKIMを設定するTXTレコードは複数設定できるため問題なし…のはずが、A社の制限により問題発生しました。
DMARKは1つ設定すれば良いので追加無し。
今回起きた問題
- A社のDNSが値に127BYTEしか入力できない制限有り。C社のDKIM値が2048bitのため、設定できず。
- C社から送信するのはビジネスメールで、Gmail宛てに5000通以上送るということは無いため、今回は対策見送り。
- ただし近いうちに他のプロバイダもGoogleに倣うと思われるので、近日中には他対応が必要。
チェックツールで確認
- SPFレコードの確認 https://www.kitterman.com/spf/validate.html
- DMARCの確認 https://mxtoolbox.com/SuperTool.aspx?action=dmarc
- DKIMの確認 https://dmarcian.com/dkim-inspector/
※セレクタの入力に困るかもしれません。自分宛てにメールを送ってDKIM-Signatureの行を確認、s=●●●●●;の●●●●●値を入力してください。defaultの場合もあります。
んんん??DKIMについてFAILとなります。サポートに問い合わせるも、この場合「他社との連携について当社から命じできない」となってしまいます。
入力/コピペミスかと思いやり直し。セレクタ値が違ったかとメールを再送信してソースを確認してもダメです。
Gmailで確認
上のツールを使わずとも、Gmail宛てにメール送信すればSPF・DMARC・DKIMの反映状況を分かりやすく表示してくれます。メールを開いたら右側の「…」メニューで「ソースを表示」します。下図はサンプルです。
下から2行目のDKIM項目が、実際にはFAILになっています。
これは何かがおかしい…
設定対象が違っていた!
shop._domainkey.hogehoge.comはB社のものです。
メールを送っているのはC社。そう、C社のドメインキーサーバを指定せねば!しかし「C社 ドメインキーサーバ」で検索しても見つかりません。色々と試してdefault._domainkey.hogehoge.com(C社=XSERVERの場合)であることを突き止めました。
- default._domainkey.hogehoge.com TXT v=DKIM1; k=rsa; p=xxxxxx0xxxxxxxx3xxxxxxxxx4xxxxxxxxxxxxxxxxxx0xx8xxxxx11x2xxxxx8xxxxxxxxxxxxx5xxxxxxxxxxxxxxxxxxxxxxxx63xx3xxxxxxxx00xxxxxx/xxxxxx4xxxxxx4xx6xxxxxxxxxxxxxxxxxxxxx7xxxxxxxxxxxxxxxx6xxxx6x2xxx5xxx6/xxx2+7x9x8xxx9xxxxxxx
これで動作できました。
注意点
上記の通りうまくいったのですが、注意点がいくつかあります。
- サーバが数社に亘る場合、ほぼサポートが受けられません。
- ドメインキーのTXTレコード値は、絶対固定ではありません。将来的に変更になる可能性があります。その場合、レコード値の再取得・再設定が必要です。
- default._domainkey.hogehoge.comの「default._domainkey」という名前は、他社も同じである保証はありません。
この記事は2024/02/05に公開され2024/02/15に更新、92 views読まれました。