我有一个名为的服务器,host10.example.com
它仅通过命令向我本人发送管理电子邮件mailx
。这些外发电子邮件需要由 OpenDKIM 签名。我尝试了几个小时的多种配置,但 OpenDKIM 从未签名任何东西。每 10 次左右,OpenDKIM 会将标题行添加到电子邮件中,但从未签名任何内容。
host10
我已在 DNS 区域中添加了选择器,example.com
并带有有效的公钥。私钥由
# opendkim-genkey -b 4096 -d example.com -s host10 -D /etc/opendkim/keys/
并驻留在 中/etc/opendkim/keys/host10.private
。以下组可读取它opendkim
:
# ls -ld /etc/opendkim /etc/opendkim/* /etc/opendkim/keys/*
drwxr-xr-x. 3 root opendkim 4096 Dec 10 16:43 /etc/opendkim
lrwxrwxrwx. 1 root root 20 Dec 9 12:24 /etc/opendkim/default.private -> keys/host10.private
lrwxrwxrwx. 1 root root 16 Dec 9 12:24 /etc/opendkim/default.txt -> keys/host10.txt
drwxr-x---. 2 root opendkim 4096 Dec 10 01:47 /etc/opendkim/keys
-rw-r-----. 1 root opendkim 3247 Dec 9 12:23 /etc/opendkim/keys/host10.private
-rw-r-----. 1 root opendkim 850 Dec 9 12:23 /etc/opendkim/keys/host10.txt
-rw-r-----. 1 root opendkim 630 Dec 10 16:27 /etc/opendkim/KeyTable
-rw-r-----. 1 root opendkim 1484 Dec 10 16:43 /etc/opendkim/SigningTable
-rw-r-----. 1 root opendkim 480 Dec 10 14:48 /etc/opendkim/TrustedHosts
当前配置(注释掉了之前试验中的文物):
1. Postfix
已将其添加到/etc/postfix/main.cf
# DKIM signing by opendkim via milter
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
2. OpenDKIM
主要配置/etc/opendkim.conf
## BASIC OPENDKIM CONFIGURATION FILE
## See opendkim.conf(5) or /usr/share/doc/opendkim/opendkim.conf.sample for more
PidFile /var/run/opendkim/opendkim.pid
Mode v
Syslog yes
SyslogSuccess yes
LogWhy yes
UserID opendkim:opendkim
Socket inet:8891@localhost
Umask 002
SendReports no
SoftwareHeader yes
Canonicalization relaxed/relaxed
Selector host10
MinimumKeyBits 1024
KeyFile /etc/opendkim/keys/host10.private
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
OversignHeaders From
QueryCache yes
这是/etc/opendkim/SigningTable
# OPENDKIM SIGNING TABLE
* host10._domainkey.example.com
*@host10.example.com host10._domainkey.example.com
*@example.com host10._domainkey.example.com
example.com host10._domainkey.example.com
host10.example.com host10._domainkey.example.com
这是/etc/opendkim/KeyTable
# OPENDKIM KEY TABLE
# host10._domainkey.example.com host10.example.com:host10:/etc/opendkim/keys/host10.private
host10._domainkey.example.com example.com:host10:/etc/opendkim/keys/host10.private
# host10._domainkey.example.com example.com:host10:/etc/opendkim/keys/host10.private
测试
邮件发送如下:
# echo Thanks | mailx -s Test [email protected]
发送邮件,[email protected]
我也测试了
# echo Thanks | mailx -s Test -r [email protected] [email protected]
答案1
主要是这一行阻止了OpenDKIM签署发出的电子邮件:
主要配置/etc/opendkim.conf
Mode v
我的系统上的这个默认设置意味着 OpenDKIM 将“v” - “验证”电子邮件但不会签名。
为了签署发出的电子邮件,需要将该行更改为
Mode s
或者同时签署发出的电子邮件和验证收到的电子邮件(在我的用例中不是这样)
Mode sv
我之前在示例中看到过“v”和“sv”,但由于这些是没有上下文的神秘字母,我没有将其与签名是/否和验证是/否联系起来。因此,这可能不是一个非常直观的配置文件设计,特别是因为其他选项确实具有有意义的名称和值。花了我很多时间。希望这至少能帮助别人。