電子メールの送信ドメイン認証が世の流れのようですので、DKIM と DMARC を導入することにしました。私みたいな個人が導入するには、OpenDKIM と OpenDMARC の組み合わせが一択のようです。で、いつものように FreeBSD 12 で自宅サーバ作成 メールサーバ編その2 – Qiita を参考にさせていただきました。というか、ほとんどそのまんま。幸い私も MTA として Postfix を使っていますし。
基本的に Ports を使うスタンスですので、まずは ports/mail/opendkim/ で make install clean。/etc/rc.conf に
milteropendkim_enable="YES"
を追記しておきます。/usr/local/etc/mail/opendkim.conf は下記あたりを編集。
Canonicalization simple/simple
Domain kncn.net
KeyFile /var/db/dkim/kncn.net.private
LogWhy yes
Mode sv
ReportAddress "DKIM Error Postmaster" <postmaster@kncn.net>
Selector kncn.net
SendReports yes
Socket local:/var/run/milteropendkim/socket
SubDomains yes
Syslog Yes
SyslogSuccess yes
UMask 002
/var/db/dkim/kncn.net.private はこの後作成する認証鍵です。opendkimデーモンとpostfixがsocketで通信するので、UMask を 002 にし、/etc/group の mailnull に postfix を追加。
mailnull:*:26:postfix
続いて、前述の認証鍵を作成。
# mkdir /var/db/dkim
# chmod 700 /var/db/dkim
# opendkim-genkey -D /var/db/dkim -d kncn.net -s kncn.net
# chown -R mailnull:mailnull /var/db/dkim
後は、公開鍵を DNS の TXT レコードに設定します。BIND 9.16.12 を使っていますので、/usr/local/etc/namedb/master/kncn.zone に以下を追記しておきました。
_domainkey IN TXT "t=y; o=~"
kncn.net._domainkey IN TXT "v=DKIM1; k=rsa; p=hogehoge"
_adsp._domainkey IN TXT "dkim=unknown"
2行目は /var/db/dkim/kncn.net.txt の内容を設定します。これで OpenDKIM の設定は終了。
続いて Open DMARC。インストールは ports/mail/opendmarc/ で make install clean。私の場合、この weblog などのために mariadb105-client-10.5.9 をインストールしていますので、mysql-client はインストールされません。
使用宣言のために /etc/rc.conf に以下を追記。
opendmarc_enable="YES"
opendmarc_socketspec="/var/run/opendmarc/socket"
OpenDMARC の設定は、/usr/local/etc/mail/opendmarc.conf で行います。/usr/local/etc/mail/opendmarc.conf.sample をコピーして、下記を編集。
AutoRestart ture BaseDirectory /var/run/opendmarc IgnoreHosts /usr/local/etc/mail/opendmarc_ignore.hosts IgnoreMailFrom kncn.net, xxxx.kncn.net, yyyy.kncn.info, xxyy.kncn.net, yyxx.kncn.net Socket local:/var/run/opendmarc/socket SPFSelfValidate true UMask 002
IgnoreMailFrom は 名前の通り無視するドメインを指定しています。xxxx, yyyy, xxyy, yyxx は適当に読み替えて下さい。同様に、無視するホストを指定するのが /usr/local/etc/mail/opendmarc_ignore.hosts。
localhost
::1
2400:8500:xxxx:yyyy::/64
127.0.0.0/8
160.xxx.yyy.0/24
と設定しています。
OpenDKIM も OpenDMAC も milter を使いますので、postfix 側での設定は、/usr/loca/etc/postfix/main.cf に以下を追記しておきます。
# mail filter smtpd_milters = unix:/var/run/milteropendkim/socket unix:/var/run/opendmarc/socket non_smtpd_milters = $smtpd_milters milter_default_action = accept
spf の評価は OpenDMARC がしてくれますので、もし別の spf 評価を使われている場合は、その設定を削除・停止する事になるでしょう。
最後に、/usr/local/etc/namedb/master/kncn.zone に以下を追記して準備は完了です。
_dmarc IN TXT "v=DMARC1; p=none; sp=none; ri=3600; rua=mailto:postmaster@kncn.net; ruf=mailto:postmaster@kncn.net"
で、実際に起動するわけですが、
# /usr/local/etc/rc.d/named restart
# /usr/local/etc/rc.d/milter-opendkim start
# /usr/local/etc/rc.d/opendmarc start
# /usr/local/etc/rc.d/postfix restart
効果が現れるには、DNS の関係で多少時間がかかるかもしれません。
試しに、自分の gmail アドレスにメールを送信してソースを確認してみると、
となっていましたので、多分上手く動いているのでしょう。
Subject: Report domain: kncn.net Submitter: google.com Report-ID: 13780713415142811553
From: noreply-dmarc-support@google.com
To: postmaster@kncn.net
などというメールが毎日のように届くので、DMARC の設定も上手くいっているのでしょう。
I really like your blog.. very nice colors & theme. Did you create this website yourself or did you hire someone to do it for you? Plz answer back as I’m looking to design my own blog and would like to find out where u got this from. thank you
I’m using a WordPress theme called “Dan”.
https://wordpress.org/themes/dan/