後で、変更するかもしれませんが、とりあえず、デフォルトのままにしておきます。
make NO_DIALOG=yes
make install
インストール時のメッセージを掲載しておきます。
===> Installing for opendkim-2.10.3_20
===> Checking if opendkim is already installed
===> Registering installation for opendkim-2.10.3_20
Installing opendkim-2.10.3_20...
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. 鍵の生成
これは、ネームサーバを実行するマシンでの設定です。
「example.com」と「sub.example.com」という、メインのドメインとサブドメインの鍵ファイルを作成するとします。
鍵を置く、ディレクトリを。
/usr/local/etc/opendkim/keys
として、2つのディレクトリを作成します。
mkdir -pv /usr/local/etc/opendkim/example.com
mkdir -pv /usr/local/etc/opendkim/sub.example.com
それぞれの鍵ファイルを作成します。
opendkim-genkey -D /usr/local/etc/opendkim/example.com -s mail -d example.com
opendkim-genkey -D /usr/local/etc/opendkim/sub.example.com -s mail -d sub.example.com
この結果、下記のファイルが作成されます。
/usr/local/etc/opendkim
|-- sub.example.com
| |-- mail.private
| `-- mail.txt
`-- example.com
|-- mail.private
`-- mail.txt
4. 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」アドレスのみは異なるので、そこはご注意ください。
5. ネームサーバ設定
ネームサーバのゾーンファイルに、下記の内容を記述して、シリアル番号を更新します。
「p=...」の中身は、それぞれのキーファイルの「mail.txt」の「p=」の内容をそのまま書き写してください。
(1行で、書くので注意)
mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=..."
mail._domainkey.sub.example.com. IN TXT "v=DKIM1; k=rsa; p=..."
編集が終わったら、ゾーンを更新。
nsd-control reload
6. opendkim 起動
「opendkim」のサービスを有効化して、起動します。
service milter-opendkim enable
service milter-opendkim start
7. メールサーバ設定
「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 スパムチェック
という設定になっています。
メールサーバが、ネームサーバと異なる場合、下記のように記述します。
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
8. 確認
ネームサーバの「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」の設定はうまくいっています。
9. 参考サイト
本章は、下記のサイトを参考にさせていただきました。
「FreeBSD 14 : DKIM の設定」