デフォルトのままにしておきます。
make NO_DIALOG=yes
make install
インストール時のメッセージを末尾に掲載しておきます。
===> Installing for opendkim-2.10.3_21
===> Checking if opendkim is already installed
===> Registering installation for opendkim-2.10.3_21
Installing opendkim-2.10.3_21...
In order to run this port, write your opendkim.conf and:
if you use sendmail, add the milter socket 'socketspec' in
/etc/mail/<your_configuration>.mc:
INPUT_MAIL_FILTER('dkim-filter', 'S=_YOUR_SOCKET_SPEC_, F=T, T=R:2m')
or if you use postfix write your milter socket 'socketspec' in
/usr/local/etc/postfix/main.cf:
smtpd_milters = _YOUR_SOCKET_SPEC_
And to run the milter from startup, add milteropendkim_enable="YES" in
your /etc/rc.conf.
Extra options can be found in startup script.
Note: milter sockets must be accessible from postfix/smtpd;
using inet sockets might be preferred.
3. opendkim.conf
「opendkim」インストール時に、下記のファイルが作成されています。
/usr/local/etc/mail
|-- opendkim.conf
`-- opendkim.conf.sample
vi /usr/local/etc/mail/opendkim.conf
下記の先頭の「#」を外して、有効化します。
# Mode sv
下記の先頭の「#」を外して、有効化し、「addr1,addr2,...」の位置に公開鍵を登録するネームサーバのローカルアドレスを記述します。
# Nameservers addr1,addr2,...
下記の「port」の箇所に通信に使用する、ポート番号を記述します。
(なぜか、ポート番号に「8891」を設定するように書いてあるサイト多し)
「localhost」は、そのままか、ネームサーバで使用している「IP」アドレスを設定します。
Socket inet:port@localhost
下記の先頭の「#」を外して、有効化し、「No」を「Yes」に変更します。
これで、処理が成功した場合も、メールログに「opendkim」のログが出力されます。
落ち着いてきたら「No」にしてもいいかもしれません。
# SyslogSuccess No
末尾に下記を記述します。
KeyTable /usr/local/etc/opendkim/KeyTable
SigningTable refile:/usr/local/etc/opendkim/SigningTable
ExternalIgnoreList refile:/usr/local/etc/opendkim/TrustedHosts
InternalHosts refile:/usr/local/etc/opendkim/TrustedHosts
vi /usr/local/etc/opendkim/KeyTable
下記を記述します。
mail._domainkey.example.com example.com:mail:/usr/local/etc/opendkim/example.com/mail.private
mail._domainkey.sub.example.com sub.example.com:mail:/usr/local/etc/opendkim/sub.example.com/mail.private
vi /usr/local/etc/opendkim/SigningTable
下記を記述します。
*@example.com mail._domainkey.example.com
*@sub.example.com mail._domainkey.sub.example.com
vi /usr/local/etc/opendkim/TrustedHosts
下記を記述します。
「ip_address」の箇所に、メールサーバの「IP」アドレスを記述します。
外部からメール送信する場合は、行を分けて、外部の「IP」アドレスも記述します。
127.0.0.1
::1
ip_address
作成したファイルの権限を設定します。
chown -R mailnull:mailnull /usr/local/etc/opendkim
chown mailnull:mailnull /usr/local/etc/opendkim/KeyTable /usr/local/etc/opendkim/SigningTable /usr/local/etc/opendkim/TrustedHosts
chmod 600 /usr/local/etc/opendkim/KeyTable /usr/local/etc/opendkim/SigningTable /usr/local/etc/opendkim/TrustedHosts
本項の設定は、メールサーバそれぞれに行います。
「IP」アドレスは異なるので、そこはご注意ください。
4. 鍵の生成・設定
鍵の生成・設定については、ネームサーバ側で行います。
ネームサーバの設定については、「メンテナンス・トラブルシュート - DNS(Domain Name System)」の「DKIM」の項をご参照ください。
5. opendkim 起動
「opendkim」のサービスを有効化して、起動します。
service milter-opendkim enable
service milter-opendkim start
6. メールサーバ設定
「Postfix」の設定を更新します。
vi /usr/local/etc/postfix/main.cf
下記の「smtpd_milters」「non_smtpd_milters」の行を変更します。
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:11332
non_smtpd_milters = $smtpd_milters
メールサーバが、ネームサーバと同一の場合と、ネームサーバが異なる場合とで設定が異なります。
ネームサーバの「IPv4」アドレスを「192.168.1.2」として。
メールサーバが、ネームサーバと同一の場合、下記のように記述します。
smtpd_milters = inet:192.168.1.2:8891, inet:127.0.0.1:11332
non_smtpd_milters = inet:192.168.1.2:8891
・外部送信 →「OpenDKIM」署名あり +「Rspamd」チェックあり
・内部宛(ローカル配送) →「OpenDKIM」署名のみ
・外部からの受信 →「OpenDKIM」検証 +「Rspamd」スパムチェック
という設定になっています(「8891」は「OpenDKIM」使用ポート番号、「11332」は「Rspamd」使用ポート番号)。
メールサーバが、ネームサーバと異なる場合、下記のように記述します。
smtpd_milters = inet:192.168.1.2:8891, inet:127.0.0.1:11332
non_smtpd_milters = $smtpd_milters
これは、外部宛も内部宛も「OpenDKIM」署名あり +「Rspamd」チェックありにしています。
ネームサーバが外部なので、「Rspamd」は署名しないようです。
「postfix」を「mailnull」のグループに追加して、再起動します。
pw groupmod mailnull -m postfix
service postfix reload
7. 確認
ネームサーバの「DKIM」が正しく登録されているかは、以下で確認できます。
drill mail._domainkey.example.com TXT
drill mail._domainkey.sub.example.com TXT
「DKIM」のチェックを行っているメールサーバに対して、メールを送信します。
受信側のメールのヘッダを確認して。
DKIM-Signature:...
が存在していること。
Authentication-Results: receive_mail_server_name;
dkim=pass header.d=...
上記が「dkim=pass」になっていれば、「DKIM」の設定はうまくいっています。
8. 参考サイト
本ページは、「ChatGPT」軍曹を参考にさせていただきました。