正在运行的电子邮件服务器突然崩溃

正在运行的电子邮件服务器突然崩溃

好吧,这台服务器的背景是:我在 AWS 上运行的 Ubuntu 14.04 服务器上安装了 postfix/dovecot/spamassassin/opendkim。经过一番折腾,一切都恢复正常。为什么,为什么,我没有把这个该死的东西放在一边——好吧,我们永远也不会知道答案。我将其升级到 Ubuntu 16.04,升级后一切都恢复正常!我制作了一个备份映像以防万一,但要启动并运行,只需要在一个配置文件中进行一次更改。

然后,由于某些无法解释的原因,我的住宅 IP 发生了变化(它应该是静态的,我已经使用同一个 IP 一年半多了)。

现在,当我尝试从 Thunderbird 发送电子邮件时,我在 /var/log/mail.log 中收到此信息:

Sep  4 14:03:19 ip-x-x-59-35 postfix/master[2746]: reload -- version 3.1.0, configuration /etc/postfix
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: connect from unknown[x.x.x.61]
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: warning: connect to Milter service unix:/opendkim/opendkim.sock: Connection refused
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: Anonymous TLS connection established from unknown[x.x.x.61]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: NOQUEUE: reject: RCPT from unknown[x.x.x.61]: 550 5.7.25 Client host rejected: cannot find your hostname, [x.x.x.61]; from=<blanked> to=<blanked> proto=ESMTP helo=<[192.168.0.10]>
Sep  4 14:03:32 ip-x-x-59-35 postfix/smtpd[2933]: disconnect from unknown[x.x.x.61] ehlo=2 starttls=1 auth=1 mail=1 rcpt=0/1 quit=1 commands=6/7

我的 IP 在配置文件中唯一存在的地方是 /etc/postfix/main.cf,所以我进入那里并更新了它(改为 xxx0/24,和以前一样)。重新启动了 postfix,仍然无法正常工作。我也非常困惑为什么 opendkim 拒绝通过套接字进行连接...

如果有人能提供一些见解,我将不胜感激。我可以根据需要提供更多信息。我最初关注本教程由四部分组成,介绍了如何设置电子邮件服务器。我的配置文件与本教程第 2 部分中的配置文件几乎相同。

编辑:我开始回顾上周的日志(在这个问题出现之前)。opendkim 套接字已经拒绝连接一段时间了,但邮件服务器在拒绝连接时仍在运行。当我的笔记本电脑连接到服务器发送邮件时,我注意到日志中存在很大差异。以下是 IP 更改之前的情况:

Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: connect from CPE00fc8d374753-CM00fc8d374750.cpe.net.cable.rogers.com[old.ip.138.5]
Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: warning: connect to Milter service unix:/opendkim/opendkim.sock: Connection refused
Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: Anonymous TLS connection established from **cpe00fc8d374753-cm00fc8d374750.cpe.net.cable.rogers.com**[old.ip.138.5]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: 8931F80078: client=CPE00fc8d374753-CM00fc8d374750.cpe.net.cable.rogers.com[old.ip.138.5], sasl_method=PLAIN, [email protected]

注意到 IP 前面有一个主机名吗?现在缺少主机名,它发送给 Thunderbird 的错误是找不到我的主机名。我相信在设置服务器时这是我打开的安全选项之一。我真的不知道如何在不损害邮件服务器安全的情况下修复它。

另外,opendkim 的事情非常奇怪。OpenDkim 是我在切换到 16.04 后必须更改的一件事——由于切换到 systemctl (systemd),它为 opendkim 服务创建了一个新文件。出于某种原因,opendkim 在不同的地方寻找其配置文件,所以我只是向该 .service 文件添加了一个参数,将其指向配置文件 /etc/opendkim.conf ... 并且它工作正常。我特意检查以确保它启动并正常工作。所以我真的很困惑。

答案1

问题确实是,出于某种奇怪的原因,当我发送电子邮件时,我的 ISP 不会将主机名与我的 IP 一起发送到我的邮件服务器。因此,由于 /etc/postfix/main.cf 中的 smtpd_sender_restrictions 和 smtpd_recipient_restrictions,它拒绝了未知的主机名。

它看起来像这样:

smtpd_recipient_restrictions = reject_unknown_client_hostname, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_invalid_hostname, reject_non_fqdn_sender
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch

你会注意到 permit_mynetworks 来了拒绝未知客户端主机名。要解决这个问题,我只需将 permit_mynetworks 移到列表前面,并将其添加到 sender_restrictions 列表中。在变量 mynetworks 中,我输入了我的特定 IP,而不是以 .0 结尾,以避免其他人能够发送(尽管他们仍然需要我的密码)。我不确定移动它是否会产生任何重大的安全影响,如果有人能找到更好的解决方法,我将不胜感激!

opendkim 功能仍然无法正常工作,但那是另一个问题。

相关内容