treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

DMARCの導入までの作業概要を記録しておく

前回<DMARCが要求されるようになったドコモメールを調べる - treedown’s Report>調べた内容を実践してDMARC対応までした記録です。
詳細な部分は一部伏せてありますが、概要として参考までのご報告です。

SPFレコードの設定を再確認する

前回<https://blog.treedown.net/entry/2025/04/08/010000>の画面でSPFレコードが正常に設定されている点はドコモメールの表示からも確認できました。これがNGだった場合、まずはSPFレコードの正常動作を検証していく必要があります。

  • SPFレコードとして登録するTXTレコードを一行で記述する
  • ドメイン内で送信されるメールサーバをこの一行で全て記述する
  • 正しい書式で記述する

概ね気をつけるのはこの辺になります。

最初は(hoge.co.jpのSPFレコードを)以下のように記述していました。

hoge.co.jp  IN TXT   "v=spf1 +ip4:101.000.xxx.xxx ~all"

※「101.000.xxx.xxx」がメールサーバのIPアドレス

これが(レンタルサーバの仕様変更によって)「include:」でホスト名が必要になり、現在では

hoge.co.jp  IN TXT   "v=spf1 include:_spf.hoge-hoge.com +ip4:101.xxx.xxx.xxx ~all"

という指定で上手くいっています。(※ちなみに「+ip4:」で始まるメールサーバは「include:」とは別のメールサーバのIPに変わっています。)

DKIM認証への対応を実施する

SPFレコードの設定が正常動作しているという状況でDKIMの対応を実施することになりました。

DKIMは"メールサーバでの設定作業"が必要になります。
このため、レンタルサーバで契約中のメールサーバが対応していなければ設定できません。対応しているかどうかはレンタルサーバの提供元に問い合わせて確認する必要があります。

メールサーバ上でDKIMの設定画面が用意されていれば、DKIM認証に対応しているメールサービスだと判断できます。

これをスクロールして

公開鍵の発行を実施する画面があったり、

別のメールサービスでは、

こんな感じで、別のやり方でDKIM認証に必要な設定を実施することになります。メールサービスの提供側によって操作方法は異なることが多いようです。

DKIM認証に必要な鍵の発行をした後、DNSサーバのTXTレコードへ(SPFレコードとは別のTXTレコードに)設定をしていきます。(このDNSレコードが解決できるようになるまではメールサーバ上でDKIM認証の有効化をしないようにします。)

現在利用中のサービスではDKIM認証に必要なホスト名もレンタルサーバで指定されていたため、指定されたホスト名(例えば、dkim.hoge.co.jpだとすると)にDKIM指定をして公開鍵がTXTレコードで解決できることを確認します。

--------------------------------------------------------------
> nslookup -type=TXT dkim.hoge.co.jp


権限のない回答:
dkim.hoge.co.jp        text =

        "v=DKIM1; k=rsa; p=xxxxxxxxxxx...

--------------------------------------------------------------

DKIM認証で指定したTXTレコードが引けるようになったら、メールサーバ上のDKIM認証機能の有効化を実施しました。

DMARCへの対応

SPFやDKIMによって送信元ドメイン認証を実施するようになったので、DMARCで送信元ドメイン認証に失敗した場合の動作(メールをどのように扱うのか)をDMARCによって指定するようにします。
このため、ドコモメールで要求されているDMARCは前提としてSPFとDKIM対応であることが必要と推測されます。SPF/DKIM/DMARCの三点セットでようやく今回の目的であるドコモメールで警告表示が抑制できる、と考えられます。

DMARCはDKIMと違ってDNSレコードの追加を実施するだけで済みます。

今回は、「_dmarc.hoge.co.jp」のTXTレコードとしてDMARCを登録します。

最初に、結論となるDMARC用のTXTレコード全文です。

_dmarc.hoge.co.jp   IN TXT   v=DMARC1; p=none; sp=none; rua=dmarc_report@hoge.co.jp; ruf=dmarc_report@hoge.co.jp; adkim=r; aspf=r

各項目の簡単な解説です。

v=DMARC1;
※必須の固定値、DMARCのバージョン情報を記述します。記事現在では「DMARC1」が固定値です。

p=none;
※必須となる動作指定値、認証に失敗したメールをどう扱うかを指定する値で、今回のnoneでは何もしないを明示します。他にquarantine(隔離)/reject(拒否=破棄)があるのですが、導入初期はnoneで動作を観察するのが一般的なようです。

sp=none;
サブドメイン(例:sub.hoge.co.jpのようなサブドメイン)にここで指定するDMARCポリシーを波及させるか、影響を与えないかを指定することができます。noneにしたのはサブドメイン毎に動作を指定する必要があったからですが、サブドメインでも動作を統一する際にはquarantine / rejectといった他の指定を実施することでサブドメインでの動作を統一できます。

rua=dmarc_report@hoge.co.jp;
ruf=dmarc_report@hoge.co.jp;

DMARC関連のレポートを受信するメールアドレスを指定します。ruaはメール認証結果の集計レポート、rufはDMARC認証に失敗したメールを通知する失敗レポートの送信先を指定する値です。受信可能なメールアドレスを指定します。

adkim=r;
DKIMのアライメントチェック(DKIM署名チェックを厳格にやるかどうか)をリラックスモードで実施します。「r」がリラックスモードの指定でドメイン部分一致で適用、他に「s」でストリクトモード(ドメインが完全に一致する場合に適用)となります。「r」指定をしなかったらデフォルトでは「s」になるらしい。

aspf=r
SPFアライメントチェック(SPF署名チェックを厳格にやるかどうか)をリラックスモードで実施します。動き自体はadkimと同じです。

アライメントってなに?⇒アライメント、というのは、ヘッダのFromにあるアドレスが、各レコードの(SPFとかDKIMとかで指定した)ドメインと一致するかどうかの判定結果です。

夜間にDNSレコードの有効化

日中のメール送受信に影響すると困るので夜間にDMARCを有効化するTXTレコードの追加と反映を実施して、動作を確認してみました。

-------------------------------------------------------------
> nslookup -type=TXT _dmarc.hoge.co.jp


権限のない回答:
dkim.hoge.co.jp        text =

        v=DMARC1; p=none; sp=none; rua=dmarc_report@hoge.co.jp; ruf=dmarc_report@hoge.co.jp; adkim=r; aspf=r

--------------------------------------------------------------

続きます

実際のメール送信からDKIMやDMARCの有効化がなされたことを確認するため、ドコモメールやGmailを使って確認してみたのですが、今回はこれまで。次回に確認方法を。

blog.treedown.net