0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

体験談がなければ、今日つくればいいじゃない:メールを送らない個人開発ドメインをSPFとDMARCの2行で守る

0
Last updated at Posted at 2026-10-31

この記事は「エンジニアのための メール送信・運用ノウハウ、メールのセキュリティやAI活用を投稿しよう!by blastengine Advent Calendar 2026」の2日目の記事です。

正直に書きます。このカレンダーを開いた理由は、プレゼントのiPad miniです。

募集テーマは、メール送信に携わった体験談やノウハウ。応募しようと決めてから気づきました。メールまわりの体験が、自分にはひとつもありません。送信機能を実装したこともなければ、SPFで悩んだこともない。

どうしたものかと思案していると、ある言葉が頭に浮かびました。

「パンがなければ、お菓子を食べればいいじゃない」

マリー・アントワネットの台詞として有名ですが、もとをたどると、ルソーが1760年代に書いた自伝『告白』に出てきます。名前の伏せられた「さる高貴な女性」の言葉として。しかも原文では、お菓子ではなくブリオッシュです。

それはさておき。

そうです。
体験がなければ、今日つくればいいのです。

題材は、個人開発で使っている after6labo.com です。引きこもり気質なので、このドメインからはメールを1通も送っていません。今後も送る予定はありません。

ところが、本人が引きこもっていても、ドメインは勝手に外へ連れ出されることがあります。なりすましメールの差出人として。調べてみると、それを止める設定は何も入っていませんでした。

結論:DNSにTXTを2件足しただけ

やったことは、DNSにTXTレコードを2件追加しただけです。

after6labo.com.         TXT  "v=spf1 -all"
_dmarc.after6labo.com.  TXT  "v=DMARC1; p=reject; sp=reject"

これで、ルートドメインと、外部ホスティングにCNAMEで向けている4つのサブドメインをまとめて、「このドメインからの正規のメールは存在しない」と宣言しました。サブドメイン側のDNSには触っていません。

反映待ち(TTL 1時間)を含めても、作業はその日のうちに終わりました。

送らないドメインでも、差出人には使われうる

メールの差出人(ヘッダーFrom)は、送る側が自由に書けます。受信側が「本当にそのドメインから来たのか」を判断する手がかりが、SPF・DKIM・DMARCです。

  • SPF:そのドメインを封筒の差出人(MAIL FROM)に使ってよい送信サーバーを公開する
  • DKIM:送信側がメールに署名し、検証用の公開鍵をDNSに置く
  • DMARC:ヘッダーFromのドメインとSPF・DKIMの結果を突き合わせ、失敗したときの扱いを受信側に伝える

何も公開していないドメインは、受信側にとって判断材料がありません。扱いは受信側任せになります。

メールを送らないドメインなら、対策はいちばん簡単です。「送らない」と宣言すればいい。

設定前:何も入っていなかった

2026年10月31日に調べた、設定前の状態です。

項目 設定前
SPF なし(TXTはGoogleのサイト確認用の1件だけ)
DMARC なし(_dmarc.after6labo.com が存在しない)
MX なし
DKIM よく使われるセレクタ名をいくつか引いたが、見つからない
サブドメイン chaos / gift / tools / street の4つ。すべて外部ホスティングへのCNAME
このドメインで送っているサービス なし(作った覚えがない)

確認には、次のような問い合わせを使いました。

dig +short TXT after6labo.com
dig +short TXT _dmarc.after6labo.com
dig +short MX after6labo.com
dig +short CNAME chaos.after6labo.com

DKIMは、セレクタ名を知らないと引けません。「送っていない」は、DNSの状態と自分の把握を合わせた判断です。

迷ったところ

人生の迷いはDNSでは解決しないので、ここでは設定で迷った3点だけ書きます。

1. SPFの -all だけでは、差出人を守れない

SPFが確かめるのは封筒の差出人(MAIL FROM)で、受信者が目にするヘッダーFromではありません。なりすます側は、封筒に自分のドメインを使えばSPFをpassできます。

ヘッダーFromと結び付けて判定するのはDMARCです。SPFかDKIMのどちらかが、ヘッダーFromと揃ったドメインでpassしなければ、DMARCは失敗します。だからSPFとDMARCをセットにしました。

2. サブドメインにはSPFを置けない

chaos / gift / tools / street は、すべてCNAMEです。DNSの決まりで、CNAMEを置いた名前には、TXTを含むほかのレコードを同居させられません。サブドメインごとにSPFを足す方法は使えませんでした。

そこで、親ドメインのDMARCに sp=reject を付けました。受信側は、ヘッダーFromのドメインにDMARCレコードがなければ、組織ドメイン(ここでは after6labo.com)の _dmarc を見にいきます。そのとき、サブドメインには sp= の方針が適用されます。

サブドメインにはSPFもDKIMもないので、なりすましメールはDMARCで失敗し、sp=reject の対象になります。

調べていて気づいたことがひとつあります。CNAMEを向けたサブドメインのSPFは、実質的に向け先が決めます。TXTの問い合わせはCNAMEをたどるので、向け先のホスト名にSPFが公開されれば、それがサブドメインの結果になります。今は向け先にSPFがないので、結果は none です。

3. レポートの送り先(rua)は付けなかった

DMARCには、集計レポートの送り先 rua= を指定できます。付けたかったのですが、手元にあるのはGmailのアドレスだけです。

送り先が別ドメインの場合、受け取る側のドメインが「このドメインのレポートを受け取る」という許可レコードを公開している必要があります(RFC 7489 7.1)。gmail.com のDNSは自分では触れません。付けても届かない見込みなので、今回は外しました。

ヌルMX(RFC 7505)も候補でしたが、必須ではないので見送りました。

設定した内容

DNSは、ドメイン管理サービスのDNSで管理しています。追加したのは次の2件です。

ホスト 種別 値 意味
after6labo.com TXT v=spf1 -all このドメインを封筒の差出人に使ってよい送信サーバーはない
_dmarc.after6labo.com TXT v=DMARC1; p=reject; sp=reject 認証に失敗したメールの拒否を求める。サブドメインも同じ
  • Googleのサイト確認用のTXTは残しました。SPFは別のTXTとして追加します。
  • SPFのレコードは1ドメインに1件までです。2件あると、SPFの評価がエラーになります(RFC 7208 3.2)。
  • p=reject は受信側への要求です。実際にどう扱うかは、受信側が決めます。

設定後:2件とも返ってきた

TTLは1時間です。追加から1時間ほど待って、Google Public DNSで引き直しました。

問い合わせ 返ってきた値
after6labo.com TXT Googleのサイト確認用(値は省略)、v=spf1 -all
_dmarc.after6labo.com TXT v=DMARC1; p=reject; sp=reject
_dmarc.chaos.after6labo.com TXT 存在しない(NXDOMAIN)
chaos.after6labo.com CNAMEのまま(変更なし)

3行目が、この構成の要です。サブドメイン側にDMARCレコードがないので、親ドメインの sp=reject が使われます。サブドメインのCNAMEには触れずに、4つまとめて守れました。

手元で確かめるなら、dig で同じ内容を引けます。

dig +short TXT after6labo.com
dig +short TXT _dmarc.after6labo.com
dig TXT _dmarc.chaos.after6labo.com | grep status

これからメールを送りたくなったら

将来、どこかのサイトに通知メールを付けたくなったら、順番を間違えると自分のメールが拒否されます。今の設定は「正規のメールは存在しない」という宣言だからです。

  1. 送信に使うサービスを決める
  2. SPFに、そのサービスの送信サーバーを加える
  3. DKIMの公開鍵をDNSに置く
  4. テスト送信で、SPFかDKIMがヘッダーFromと揃ってpassすることを確かめる
  5. それから本番の送信を始める

サブドメインから送る場合、CNAMEを置いた名前そのものにはSPFのTXTを置けません。DKIMで揃えるか、送信専用のサブドメインを別に用意することになります。

この記事で確かめていないこと

  • なりすましメールを実際に送って、拒否されるかは試していません。確認したのはDNSの公開内容までです。
  • 受信側の扱いはサービスごとに異なります。p=reject を公開しても、必ず拒否されるとは限りません。
  • DKIMはセレクタ名を総当たりできないので、「送っていない」はDNSと自分の把握に基づく判断です。

まとめ

  • メールを送らないドメインは、「送らない」と宣言するのがいちばん安い対策です。TXT 2件で済みました。
  • SPFだけではヘッダーFromを守れません。DMARCとセットにします。
  • CNAMEで外部に向けたサブドメインは、親ドメインのDMARCの sp= でまとめて守れます。ただし、そのSPFは向け先次第です。

メールの体験談がなかった自分にも、今日ひとつできました。DNSの反映待ちは1時間。iPad miniの結果発表は1月23日なので、TTLよりだいぶ長く待つことになりそうです。

選ばれなかったときは、選考を担当された方に、さる高貴な女性の役でひと言お願いできれば本望です。

「iPad miniがなければ、ブリオッシュを食べればいいじゃない」

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?