如何配置 Postfix 和 Dovecot 从外部服务器接收邮件

如何配置 Postfix 和 Dovecot 从外部服务器接收邮件

我无法在本地帐户中接收邮件,我只能从多个本地帐户向多个外部帐户发送邮件。

到目前为止,经过多次测试,我注意到当我发送没有 SMTP AUTH 的邮件时,我会收到来自 ISP 邮件服务器的消息,说 SMTP AUTH 已激活,我必须激活才能通过该服务器。如果我尝试在我的域的帐户之间在外部服务器中发送邮件,我不会在本地服务器中收到任何邮件。如果我尝试在本地帐户之间在本地服务器中发送邮件,我将在本地收到邮件,它不会像预期的那样通过我的外部服务器。

在我的外部服务器中,我有 cpanel,我可以在 cpanel 中创建外部电子邮件帐户。我在那里为只想在本地邮件服务器中使用的域配置电子邮件路由。我已设置具有次要优先级的 MX 记录(首先,我默认拥有我的电子邮件域)。它配置为自动处理默认情况下带来的邮件(*)。次要优先级是我的静态 IP 的链接(电子邮件域的子域)。我已经搜索过我的 IP 是否被阻止,从大列表中,只有 1 个阻止了我。

我还配置了外部服务器的 SPF 来验证来自本地服务器的发送。

(*)

  • 自动检测配置:(本地)
  • 本地邮件交换器
  • 邮件交换器备份
  • 远程邮件交换器

现在我在本地服务器 Postfix 中的 main.cf 中有以下内容:

http://pastebin.com/NXDXihtf

我还检查了我的路由器和 PC 防火墙,没有人干扰此服务器。本地防火墙已关闭,我在 DMZ 区域测试了我的 PC。我只能通过本地主机连接使用 telnet 测试 IMAP 服务,从外部则无法测试,我总是得到拒绝连接。

我认为我已经使用 cpanel 执行了正确的步骤,但我不知道如何设置 Postfix 和 Dovecot 以从我的外部服务器接收邮件。=/

答案1

我无法仅通过本地服务器上的 postfix 和指向本地服务器的外部服务器中的 MX 记录来解决这个问题。尚不清楚是否是因为使用了动态 IP,因为没有列入黑名单,而且我不知道沃达丰是否阻止了动态 IP 的此类操作系统服务 (SMTP)。

因此,为了解决这个问题,我使用 getmail 将邮件重新路由到 postfix,作为变通方法,在那里我可以作为邮件客户端接受邮件,只需通过 IMAP 和 POP3,并且可以使用 SSL 完成。然后我为每个用户创建了几个 getmailrc,创建了一个 bash 脚本来扫描每个用户的所有 getmailrc 文件(getmail 不允许为每个 getmailrc 添加多个用户),然后我必须将该脚本添加到 crontab 中,每 1 分钟运行一次。

我没有提到,但不要在你的路由器中使用 DMZ 来解决这类问题,因为你可能会将你的服务器暴露在很多危险中。使用 DMZ 只是为了测试目的,就像我做的那样。要接受来自外部的连接,你必须使用端口转发到某些端口。

我希望这可以帮助更多的人。

相关内容