googleがもっとセキュアなメール送信をしろと言ってきました。そうしない場合は拒否すると。(大分極端に誇張してるけど)
まぁ、正論を言われてて、対応してこなかった我々に責任もあるな。とは思いつつ、500-1000ドメインも扱っていると毎日毎日、
DKIM/DMARCの対応してほしいんだけど、なんかgoogleとかyahooがさぁ。。。
「聞き飽きたで。年度末のクソ忙しいときに、Googleの発表内容も把握しようともせず、問い合わせと対応依頼だけしてくる顧客や営業にいい加減うんざり。でも、対応しないといけない。あぁーめんどくせぇぇ。」(SEたちの心の声代弁)
本記事では、Googleが公表している内容など規制対象については触れません。DKIM/DMARCの設定方法だけ記載してますので、参考にどうぞ。
対象の環境
- centOS6.x
- postfix 2.6.x
※最初のレポジトリの部分をイジる以外は基本的にRHEL(RedHatEnterpriseLinux)などでも一緒です。
レポジトリの変更(※centos6の場合)
こんなエラーが出ます。
$ yum check-update
読み込んだプラグイン:fastestmirror, security
Loading mirror speeds from cached hostfile
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
エラー: Cannot find a valid baseurl for repo: base
必要に応じてバックアップを取って、レポジトリを書き換えます。
$ cd /etc/yum.repos.d/
$ sed -i -e "s/^mirrorlist=http:\\/\\/mirrorlist.centos.org/#mirrorlist=http:\\/\\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
$ sed -i -e "s/^#baseurl=http:\\/\\/mirror.centos.org/baseurl=http:\\/\\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
エラーが無くなったことを確認します
$ yum check-update
opendkim(前半)
epelのレポジトリが無い場合は下記で入れれるハズ
$ yum install epel-release
インストール
$ yum install --enablerepo=epel opendkim
鍵の作成
権限周りがめんどくさいのでopendkimユーザーへスイッチ
$ su -s /bin/bash opendkim
公開鍵と秘密鍵の作成(以下はオプション例)
・D:ファイルの保存場所
・d:ドメイン名
・s:セレクター名(※指定しない場合は、「default」となる。日付にしてるケースが多い模様。)
$ mkdir /etc/opendkim/keys/piteki.com
$ opendkim-genkey -D /etc/opendkim/keys/piteki.com/ -d piteki.com
作成されていることの確認(所有者、権限も合わせて確認)
$ ls -l /etc/opendkim/keys/piteki.com/
-rw------- 1 opendkim opendkim 887 2月 7 11:05 2024 default.private
-rw------- 1 opendkim opendkim 324 2月 7 11:05 2024 default.txt
$ ls -ld /etc/opendkim/keys/piteki.com/
drwxr-xr-x 2 opendkim opendkim 4096 2月 7 11:05 2024 /etc/opendkim/keys/piteki.com/
公開鍵の確認(※長いので一部省略してxxxで表記)
$ cat /etc/opendkim/keys/piteki.com/default.txt
default._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ) ; ----- DKIM key default for piteki.com
opendkimの設定は後述。先にDNS登録を実施。
DNS
前項で確認した公開鍵レコードをDNSに登録
default._domainkey IN TXT "v=DKIM1; k=rsa; p=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
opendkim(後半)
設定
configファイルの修正
※詳細はリンク:http://www.opendkim.org/opendkim.conf.5.html
$ vi /etc/opendkim.conf
# モードの設定 s:送信時に署名 v:受信時に確認
Mode sv
# セレクタ名
Selector default
# KeyfileではなくKeyTableを利用
#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
秘密鍵の登録
$ vi /etc/opendkim/KeyTable
default._domainkey.piteki.com piteki.com:default:/etc/opendkim/keys/piteki.com/default.private
ドメインの指定
$ vi /etc/opendkim/SigningTable
*@piteki.com default._domainkey.piteki.com
ホストの指定
$ vi /etc/opendkim/TrustedHosts
# The localhost IP (127.0.0.1) should always be the first entry in this file.
127.0.0.1
::1
#host.example.com
#192.168.1.0/24
サービス起動
サービスの起動と自動起動ON
$ service opendkim start
$ chkconfig opendkim on
postfix
設定
configファイルの修正
※詳細はリンク:https://www.postfix.org/MILTER_README.html
$ vi /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:localhost:8891
milter_default_action = accept
反映
$ postfix check
$ service postfix restart
確認
googleでチェックすると見やすい。以下のように「PASS」となっていればOK。
ちなみに、DNS登録を実施していないと、下記のように「FAIL」となる。
オマケ1:DMARC
ポリシーをnoneにしてる時点であまり設定として意味が無いのでは?と思わなくもない。レポートも飛ばさないので。。。
_dmarc IN TXT "v=DMARC1; p=none"
その他、SPFやARCヘッダ(Authentication & Trust)、ワンクリック配信停止(Easy Unsubscribe)など、対応すべき内容は色々あるが、本記事ではここまで。
オマケ2:googleの対応について
私が仕入れた情報としては
- 2024/2 要件を満たしていないメールの一部が一時的なエラーを受け取る
- 2024/4 上記に続き拒否を開始し、徐々に割合を増加させていく
- 2024/6 マーケティングメールはワンクリック配信停止(one-click unsubscribe)の対応が必要
コメント