OpenDKIM と OpenDMARC を入れてみた

 電子メールの送信ドメイン認証が世の流れのようですので、DKIMDMARC を導入することにしました。私みたいな個人が導入するには、OpenDKIMOpenDMARC の組み合わせが一択のようです。で、いつものように 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 アドレスにメールを送信してソースを確認してみると、

gmail1

 となっていましたので、多分上手く動いているのでしょう。

Subject: Report domain: kncn.net Submitter: google.com Report-ID: 13780713415142811553
From: noreply-dmarc-support@google.com
To: postmaster@kncn.net

 などというメールが毎日のように届くので、DMARC の設定も上手くいっているのでしょう。

0

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です