Mail サーバー : DKIM の設定2025/12/02 |
|
Postfix に DKIM (Domain Keys Identified Mail) を設定します。 生成した公開鍵を DNS に登録するため、DNS サーバー が必要となります。 |
|
| [1] | OpenDKIM をインストールして設定します。 |
|
mail:~ #
zypper -n install opendkim # 鍵ペアを生成 # -D (鍵を格納するディレクトリ) # -d (ドメイン名) # -s (セレクター名) ⇒ 任意の名称で OK mail:~ # opendkim-genkey -D /etc/opendkim/keys/srv.world -d srv.world -s $(date "+%Y%m%d") mail:~ # chown -R opendkim:opendkim /etc/opendkim/keys/srv.world mail:~ # ll /etc/opendkim/keys/srv.world total 8 -rw-------. 1 opendkim opendkim 891 Dec 2 14:28 20251202.private -rw-------. 1 opendkim opendkim 315 Dec 2 14:28 20251202.txt
mail:~ #
vi /etc/opendkim/opendkim.conf # 753行目 : DNSSEC を使用していない場合はコメント化 #TrustAnchorFile /var/lib/unbound/root.key # 最終行に追記 Mode sv KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts DKIM キーを登録する DNS サーバーを指定 Nameservers 10.0.0.30
mail:~ #
vi /etc/opendkim/KeyTable # 新規作成 # # (セレクター名)._domainkey.(ドメイン名) (ドメイン名):(セレクター名):(プライベートキーのパス) # # 複数のドメインを扱う場合は 改行して同様に登録する 20251202._domainkey.srv.world srv.world:20251202:/etc/opendkim/keys/srv.world/20251202.private
mail:~ #
vi /etc/opendkim/SigningTable # 新規作成 # # *@(ドメイン名) (セレクター名)._domainkey.(ドメイン名) # # 複数のドメインを扱う場合は 改行して同様に登録する *@srv.world 20251202._domainkey.srv.world
mail:~ #
vi /etc/opendkim/TrustedHosts # 新規作成 # 信頼するホストを追加可能 127.0.0.1 ::1 #host.example.com #192.168.1.0/24mail:~ # chown -R opendkim /etc/opendkim/{KeyTable,SigningTable,TrustedHosts} mail:~ # systemctl enable --now opendkim |
| [2] | SELinux を有効にしている場合は、ポリシーの変更が必要です。 |
|
mail:~ #
vi opendkim.te # 新規作成
module opendkim 1.0;
require {
type dkim_milter_t;
type named_cache_t;
type var_run_t;
class dir { search write };
class file read;
class capability dac_override;
}
#============= dkim_milter_t ==============
allow dkim_milter_t named_cache_t:dir search;
allow dkim_milter_t named_cache_t:file read;
allow dkim_milter_t self:capability dac_override;
allow dkim_milter_t var_run_t:dir write;
checkmodule -m -M -o opendkim.mod opendkim.te mail:~ # semodule_package --outfile opendkim.pp --module opendkim.mod mail:~ # semodule -i opendkim.pp |
| [3] | Postfix の設定です。 |
|
mail:~ #
vi /etc/postfix/main.cf
# 804-807行目 : コメント解除
smtpd_milters = unix:/run/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2
mail:~ # usermod -aG opendkim postfix mail:~ # systemctl reload postfix |
| [4] | DNS サーバー登録用の公開鍵を確認します。 |
|
# 公開鍵の内容 mail:~ # cat /etc/opendkim/keys/srv.world/20251202.txt
20251202._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCGeqoRtbsbfPHq78wk1XAaqNr+lUL48MZA/m3FlkGsPZkXXRHPNKfjophv5baU1IrYVgkKWhCTh6MDJxMNlMabtC+FWKsbScYNjE+RMQroj1ZogMMa4cMx93Muvk93Y9XmoTd/0PY2HK2ibYjPd5D0m8t7wWjor3mad9JUM22wwIDAQAB" ) ; ----- DKIM key 20251202 for srv.world
# ゾーンファイルへの登録は不要な文字を除いて 1 行にする mail:~ # sed "s/^\t *//g" /etc/opendkim/keys/srv.world/20251202.txt | sed -z "s/\\n//g" | sed "s/( //g" | cut -d')' -f1 20251202._domainkey IN TXT "v=DKIM1; k=rsa; ""p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCGeqoRtbsbfPHq78wk1XAaqNr+lUL48MZA/m3FlkGsPZkXXRHPNKfjophv5baU1IrYVgkKWhCTh6MDJxMNlMabtC+FWKsbScYNjE+RMQroj1ZogMMa4cMx93Muvk93Y9XmoTd/0PY2HK2ibYjPd5D0m8t7wWjor3mad9JUM22wwIDAQAB" |
| [5] | DNS サーバーへ公開鍵を登録します。 BIND のゾーンファイル へ登録する場合を例にします。 |
|
root@dns:~#
vi /var/named/srv.world.wan
.....
.....
20251202._domainkey IN TXT "v=DKIM1; k=rsa; ""p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCGeqoRtbsbfPHq78wk1XAaqNr+lUL48MZA/m3FlkGsPZkXXRHPNKfjophv5baU1IrYVgkKWhCTh6MDJxMNlMabtC+FWKsbScYNjE+RMQroj1ZogMMa4cMx93Muvk93Y9XmoTd/0PY2HK2ibYjPd5D0m8t7wWjor3mad9JUM22wwIDAQAB"
root@dns:~# rndc reload
|
| [6] | メールサーバー側で確認します。 |
|
mail:~ # dig 20251202._domainkey.srv.world. txt
.....
.....
# 登録した内容の応答があれば OK
;; ANSWER SECTION:
20251202._domainkey.srv.world. 86400 IN TXT "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCGeqoRtbsbfPHq78wk1XAaqNr+lUL48MZA/m3FlkGsPZkXXRHPNKfjophv5baU1IrYVgkKWhCTh6MDJxMNlMabtC+FWKsbScYNjE+RMQroj1ZogMMa4cMx93Muvk93Y9XmoTd/0PY2HK2ibYjPd5D0m8t7wWjor3mad9JUM22wwIDAQAB"
.....
.....
mail:~ # opendkim-testkey -x /etc/opendkim/opendkim.conf -d srv.world -s 20251202 -vvv
opendkim-testkey: checking key '20251202._domainkey.srv.world'
opendkim-testkey: key not secure
opendkim-testkey: key OK
# [key OK] であれば OK
# * [key not secure] は DNSSEC に関するメッセージ
|
| [7] |
最後に Gmail にでもメール送信して、受信メールのヘッダーに [DKIM: 'PASS'(Domain: srv.world)] と表示されていれば OK です。 |
| Sponsored Link |
|
|