Googleメール送信者のガイドライン:さくらのドメインでSPF、DMARC、DKIMに対応する方法
Googleのメール送信者のガイドライン及び、米Yahoo!により、SPF、DMARC、DKIM対応等が求められる流れになっていますね。Googleのメール送信者のガイドラインに関するよくある質問に記載がありますが、一括送信者とは下記のように定義されています。
一括送信者とは、個人の Gmail アカウントに 24 時間以内に 5,000 件近くあるいはそれ以上のメールを送信するユーザーのことを指します。同じプライマリ ドメインから送信されたメールは、上限である 5,000 件にカウントされます。
送信元ドメイン: 上限である 5,000 件の計算では、同じプライマリ ドメインから送信されたすべてのメールがカウントされます。たとえば、solarmora.com から 2,500 件、promotions.solarmora.com から 2,500 件のメールを個人の Gmail アカウントに毎日送信しているとします。この場合、5,000 件のメールがすべて同じプライマリ ドメイン(solarmora.com)から送信されているため、送信しているユーザーは一括送信者とみなされます。詳しくは、ドメイン名に関する基本ガイドをご覧ください。
この条件を 1 回以上満たすユーザーは、一括送信者と見なされます。
プライマリドメインであることが注意点で、@example.com及び、@xxx.example.comといったサブドメインまで含めた全てのメールアドレスからGmail宛てに送信しているメールの総数が5,000件/日を超える場合、または、一度でも超えた場合は、恒久的に一括送信者と見做されるということです。
また、将来的に5,000件/日という条件も厳しい方向に変わっていく可能性や、一括送信者に該当しなかったとしてもスパム対策としてSPF、DMARC、DKIM対応等が必須になっていくことも考えられます。今ではWebサイトの常時https化が当たり前になったように、メールに関してもこういった対応が当たり前になっていくのかもしれません。
さくらのドメインでSPF、DMARC、DKIMを設定
さくらのドメインでドメインを管理し、さくらのVPSでWeb/メールサーバ(Postfix/Dovecot)を立てている環境があったので、そこでSPF、DMARC、DKIMの設定を行いました。
結果、最終的にさくらのドメインのドメインコントロールパネルは、下記のようなゾーン情報になりました。
SPFレコードの設定方法
SPFレコードを設定するには、ドメインコントロールパネルにTXTレコードを追加するだけで対応可能です。
「エントリ名:@」「タイプ:TXT(TXT)」とし、「データ」には下記のように設定します。「ip4:」にはサーバのIPアドレスを指定します。
"v=spf1 ip4:XXX.XXX.XXX.XXX -all"
DMARCレコードの設定方法
SPFレコードと同じように、DMARCレコードを設定するにはドメインコントロールパネルにTXTレコードを追加するだけで対応可能です。
「エントリ名:_dmarc.example.com」のように「_dmarc.」の後ろにドメインを指定し、「タイプ:TXT(TXT)」で、「データ」には下記のように設定します。「rua=mailto:」にはruaレポートを受け取るメールアドレスを指定します。
"v=DMARC1; p=none; rua=mailto:info@example.com; pct=100; adkim=s; aspf=s;"
「p=none;」については、ruaレポートの状況を見て「p=quarantine;」や「p=reject;」に変更する対応が必要で、「pct=100;」はDMARCチェックを適用するメールの割合(100%)を意味し、「adkim=s; aspf=s;」はDKIMとSPFを厳格適用(strict)することを意味しています。
DKIMレコードの設定方法
DKIMレコードは、SPFやDMARCと同じようにTXTレコードを追加するだけでは対応ができません。
まずは、サーバにOpenDKIMのインストール及び、設定が必要なので管理者権限で下記の作業を行っていきます。コマンドはCentOS環境が前提になっています。
# OpenDKIMをインストール
dnf install opendkim
# OpenDKIMのkeys/配下にexample.comフォルダを作成
mkdir /etc/opendkim/keys/example.com
# 作成したフォルダに公開鍵と秘密鍵を生成 末尾の「YYYYMMDD」はセレクタのため任意の文字列でOK
opendkim-genkey -v -b 2048 -D /etc/opendkim/keys/example.com -d example.com -s YYYYMMDD
# 生成した公開鍵と秘密鍵の権限変更
chown opendkim:opendkim /etc/opendkim/keys/example.com/YYYYMMDD.private
chown opendkim:opendkim /etc/opendkim/keys/example.com/YYYYMMDD.txt
# OpenDKIMの設定ファイルを編集
vi /etc/opendkim.conf
# OpenDKIMの設定ファイルの変更内容
Mode sv
#KeyFile /etc/opendkim/keys/default.private
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
# KeyTableを編集
vi /etc/opendkim/KeyTable
# KeyTableに下記を追記
YYYYMMDD._domainkey.example.com example.com:YYYYMMDD:/etc/opendkim/keys/example.com/YYYYMMDD.private
# SigningTableを編集
vi /etc/opendkim/SigningTable
# SigningTableに下記を追記
*@example.com YYYYMMDD._domainkey.example.com
# TrustedHostsを編集
vi /etc/opendkim/TrustedHosts
# TrustedHostsに下記を追加 デフォルトで指定が入っていれば追加不要
127.0.0.1
# Postfixの設定ファイルを編集
vi /etc/postfix/main.cf
# 一番下に下記を追加
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
# postfixユーザーをopendkimグループに追加
usermod -a -G opendkim postfix
# OpenDKIMを起動し、サービスの有効化
systemctl start opendkim
systemctl enable opendkim
# Postfixを再起動
systemctl reload postfix
次に、ドメインコントロールパネルにTXTレコードを追加します。
「エントリ名:YYYYMMDD._domainkey」、「タイプ:TXT(TXT)」で、「データ」には生成した公開鍵
/etc/opendkim/keys/example.com/YYYYMMDD.txt
の中の下記の部分を設定します。
"v=DKIM1; k=rsa; "
"p=iBS7P0d07weM7U7PdolI6ppNCx733COB2eBXd..."
"3np34Tvr6oXFYQt..."
実際にGmailにメールを送信して確認
SPF、DMARC、DKIMの設定に問題がないかは、実際にGmail宛てにテストメールを送信し、ブラウザでGmailの受信トレイから当該メールを開いてメールのソースを確認することで可能です。
下記は実際に確認したものですが、SPF、DMARC、DKIMが全て「PASS」していることが分かります。
GoogleのPostmaster Toolsでサイトの所有権を証明する
Googleのメール送信者のガイドラインでは、Postmaster Toolsを使って、報告される迷惑メール率を0.10%未満に維持すべきと書かれています。
Postmaster Toolsを使うには、自分がサイトの所有者であることを証明する必要があり、Postmaster Toolsにドメインを追加した際に発行されるgoogle-site-verificationコードをドメインコントロールパネルにTXTレコードとして追加する必要があります。
「エントリ名:@」「タイプ:TXT(TXT)」とし、「データ」には下記のようにgoogle-site-verificationコードを設定すればOKです。
"google-site-verification=xMv7I..."
Postmaster Toolsで迷惑メール率が見れるようになるには、設定してからデータが溜まるまで少し時間が掛かるようですが、私が管理しているメールサーバのメアドはほとんど使っていないため、迷惑メール率が見れるようになるかどうかは不明な状況です…。