Image

知识库 → 在 Postfix 中设置 DKIM 数字签名

[虚拟服务器]
出版日期: 30.05.2023

域数字签名 (DKIM) 允许您通过向邮件标头添加密钥来额外确认域的所有者,收件人的服务器随后会根据发件人域的 TXT DNS 记录中指定的公钥检查该密钥。 此设置是可选的,但它会显着降低邮件被归类为垃圾邮件的可能性,并使邮件对收件人而言更值得信赖。

1. 安装必要的包:

apt-get install opendkim opendkim-tools

2. 设置和激活。

让我们删除现有的默认设置并将文件带到表单中:

nano /etc/opendkim.conf

AutoRestart Yes AutoRestartRate 10/1h UMask 002 Syslog yes SyslogSuccess Yes LogWhy Yes

Canonicalization relaxed/simple

ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable

Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256

UserID opendkim:opendkim

Socket inet:12301@localhost

注释掉默认行并将其替换为以下内容:

nano /etc/default/opendkim

SOCKET="inet:12301@localhost"

让我们向 postfix 添加设置:

nano /etc/postfix/main.cf

milter_protocol = 2 milter_default_action = accept

smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301

让我们创建用于存储关键数据和邮件域映射表的目录:

mkdir /etc/opendkim
mkdir /etc/opendkim/keys

创建可信主机和域的文件:

nano /etc/opendkim/TrustedHosts

127.0.0.1 localhost 192.168.0.1/24

*.my-domain.com

#.my-domain.net #.my-domain.org

让我们创建一个域密钥映射文件:

nano /etc/opendkim/KeyTable

mail._domainkey.my-domain.com my-domain.com:mail:/etc/opendkim/keys/my-domain.com/mail.private

#mail._domainkey.my-domain.net my-domain.net:mail:/etc/opendkim/keys/my-domain.net/mail.private #mail._domainkey.my-domain.org my-domain.org:mail:/etc/opendkim/keys/my-domain.org/mail.private

让我们创建一个文件,其中包含确定要将哪个地址添加到哪个密钥的设置:

nano /etc/opendkim/SigningTable

*@my-domain.com mail._domainkey.my-domain.com

#@my-domain.net mail._domainkey.my-domain.net #@my-domain.org mail._domainkey.my-domain.org

让我们为我们的域创建一个目录和密钥文件:

cd /etc/opendkim/keys
mkdir my-domain.com
cd my-domain.com
opendkim-genkey -s mail -d my-domain.com
chown opendkim:opendkim mail.private

-s 指定一个选择器 -d 指定一个域。 该命令将创建两个文件,其中 mail.private 包含私钥,而 mail.txt 包含公钥。

我们将在 DNS 中使用此密钥:

nano -$ mail.txt

mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Ru/oMs+d2y93gZVq81J7hZfe31GR3177XQ5dI0r8zFqh86K1pgcdvCbpaAzXw9x25 /9BUe2ot9gpxjnt5SD+dDyereVKdkIQdkJBTl21Ei8ShJf+iIyYn5/skzLYS5RzlreBGoSGT6mtfnhzRX1A18X52oZrAfUJIXqAX14LYFq /B5Wkw8vcUiU1CrR7lteH1vCu0JQtE16CK" "vj86V06SxtKNEiRDqHZXo5+SqjzB2qHeteTGTyxA1dBmyKGCP6cVTkU3P0unOtsDLO+47YTUC55db34DKjjr18Lny0gf0d6oT0OvCZU5m5O3v QunxQtSPD4+Hb75xrMJqqSlXtswIDAQAB" )

让我们通过删除引号使这条记录恢复正常形式,这样密钥就在一行中,之后我们将这条 TXT 记录添加到我们域的 DNS 中:

mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIIBI...IDAQAB"

您可以使用以下命令检查条目:

nslookup -q=TXT mail._domainkey.my-domain.com 8.8.8.8

要应用设置,请重新启动服务:

service postfix restart
service opendkim restart

DKIM 设置完成,您可以通过发送电子邮件至以下地址来检查其运行情况: check-auth@verifier.port25.com

如果一切配置正确,您将收到包含以下行的报告: DKIM check: pass.





暂时没有评论