在 Ubuntu 18.04 中通过 Postfix(iRedMail-1.3.1)配置 DKIM

在 Ubuntu 18.04 中通过 Postfix(iRedMail-1.3.1)配置 DKIM

为了让我的邮件服务器向 Microsoft、Gmail 和 Yahoo 用户发送邮件,我需要配置 DKIM。我遵循此 Debian 指南:https://wiki.debian.org/opendkim

我编写了一个脚本来完成大部分工作,但配置文件的编辑工作仍需手动完成(提供机会)。脚本如下:

read mydomain
echo "Enter Selector (e.g. default, 2020, dkim):"
read myselector

echo "Installing opendkim..."
apt install opendkim opendkim-tools
echo "Generating keys..."

mkdir -p /etc/dkimkeys/"$mydomain"
chown -R $USER /etc/dkimkeys/"$mydomain"
#cd /etc/dkimkeys/"$mydomain"
sudo opendkim-genkey -D /etc/dkimkeys/"$mydomain" -d "$mydomain" -s "$myselector"

echo "Check location /etc/dkimkeys/$mydomain for created files. Optional (via SFTP would be best)"
echo "Continue?"
read
echo "Open /etc/opendkim.conf (via SFTP), so you can edit the parameters" 
echo "(see https://wiki.debian.org/opendkim)..."
echo "When done, press ENTER"
read 
echo "Restarting opendkim..."
systemctl restart opendkim
echo "Open /etc/postfix/main.cf (via SFTP), so you can edit the parameters" 
echo "(see https://wiki.debian.org/opendkim)..."
echo "When done, press ENTER"
read
echo "Restarting postfix..."
systemctl reload postfix. 
echo "Done! Publish your public key as a TXT record in DNS at $myselector._domainkey.$mydomain." 
echo "The generated file /etc/dkimkeys/$mydomain/$myselector.txt contains the record." 

编辑 /etc/opendkim.conf 文件后,我的 Postfix SMTP 不再接受任何连接。客户端无法连接,使用外部检查器,我得到:

[006.573]    -->    STARTTLS
[006.635]   <--     454 4.3.0 Try again later
[006.636]       STARTTLS command rejected
[006.636]    -->    MAIL FROM:<[email protected]>
[006.782]   <--     451 4.7.1 Service unavailable - try again later
[006.782]       Cannot proof email address (reason: MAIL FROM rejected)

我认为指南中的这一行有问题:

Socket   inet:8891@localhost

我注释掉了:

Socket          local:/var/run/opendkim/opendkim.sock

...但并没有什么区别。

有人在 Postfix 上设置了有效的 DKIM 吗?你能比较一下我的 main.cf 和 opendkim 文件并告诉我哪里做错了吗?从这里获取它们:https://filebin.net/gwqv1ge2qpz9yy65

谢谢

答案1

有 2 个地方指定了监听器。在 /etc/default/opendkim 中,您需要添加:

SOCKET="inet:8891@localhost"

注释掉其他插座。

在 /etc/postfix/main.cf 中您需要添加:

milter_default_action = accept

milter_protocol = 2

smtpd_milters = inet:localhost:8891

non_smtpd_milters = inet:localhost:8891 

我的 /etc/opendkim.conf 中也有 SOCKET inet:8891@localhost,但我不确定它是否有必要。

在更新崩溃后,我刚刚让服务器重新运行。出于某种原因,如果另一个用户拥有密钥的权限,opendkim 将无法启动。我通过将密钥复制到 opendkim 用户和组拥有的文件夹来解决这个问题。直到我重新安装 opendkim,错误描述才显示在 systemctl status opendkim 中。在此之前,它只显示错误代码,但没有解释。该服务器已运行 4 年,没有发生任何事故。

相关内容