postfix: milter-reject: END-OF-MESSAGE from ...: 4.7.1 服务不可用 (opendkim)

Cha*_*haz 4 postfix opendkim

我将 OpenDkim 配置为使用 postfix,当我尝试发送邮件时出现以下错误:

postfix/cleanup[11542]: 40F271A291A: milter-reject: END-OF-MESSAGE from ***[***]: 4.7.1 Service unavailable - try again later; from=<me@example.com> to=<me2@hotmail.es> proto=ESMTP helo=<[192.168.1.10]>
Run Code Online (Sandbox Code Playgroud)

我已经将 opendkim 配置为使用 unix 套接字,并且它正在工作:

[chazy@mail ~]$ sudo netstat -nalp | grep dkim
unix  2      [ ACC ]     STREAM     LISTENING     144135   11267/opendkim       /run/opendkim/opendkim.sock
unix  3      [ ]         STREAM     CONNECTED     147626   11267/opendkim       /run/opendkim/opendkim.sock
unix  2      [ ]         DGRAM                    144137   11267/opendkim
Run Code Online (Sandbox Code Playgroud)

正如 Arch wiki 所建议的(以及其他安全建议),Opendkim 由它自己的用户启动。这些文件夹也归 opendkim:mail 所有。

我为所有域使用相同的选择器和签名密钥,这是一个问题吗?

后缀配置如下:

# DKIM
milter_default_action = accept
smtpd_milters = unix:/run/opendkim/opendkim.sock
non_smtpd_milters = unix:/run/opendkim/opendkim.sock
Run Code Online (Sandbox Code Playgroud)

暂时没有安装反垃圾邮件服务,只是一个基本的 postfix/dovecot/opendkim 配置来测试服务器。

Opendkim 配置:

# /etc/opendkim/opendkim.conf

BaseDirectory           /var/lib/opendkim
Canonicalization        relaxed/simple
Domain                  domain1.com domain2.com
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyFile                 /etc/opendkim/201704.private
KeyTable                refile:/etc/opendkim/KeyTable
Selector                201704
SigningTable            refile:/etc/opendkim/SigningTable
Socket                  local:/run/opendkim/opendkim.sock
Syslog                  Yes
TemporaryDirectory      /run/opendkim
UMask                   002
UserID                  opendkim:mail
Run Code Online (Sandbox Code Playgroud)

TrustedHosts 配置:

# /etc/opendkim/TrustedHosts

# Trusted Hosts List
127.0.0.1
::1
x.x.x.x # Server IP
mail.maindomain.com

# Domains
maindomain.com
domain2.com
Run Code Online (Sandbox Code Playgroud)

Cha*_*haz 5

就我而言,问题在于签名密钥文件具有 root 所有者,因此这样做:

sudo chown opendkim:mail /etc/opendkim/selector.private
Run Code Online (Sandbox Code Playgroud)

修复了问题。

如果这不是您的问题,请不要忘记查看日志,两者都有!postfix 和 opendkim(我忘了查找 opendkim,这是错误):

journalctl --follow --unit postfix.service --unit opendkim.service
Run Code Online (Sandbox Code Playgroud)