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 の設定も上手くいっているのでしょう。

OpenDKIM と OpenDMARC を入れてみた」への2件のフィードバック

  1. 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

ippo へ返信する コメントをキャンセル

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