是否可以在 Google Cloud 实例上运行类似 postfix 的 SMTP 服务器,而无需通过中继使用外部邮件提供商?

是否可以在 Google Cloud 实例上运行类似 postfix 的 SMTP 服务器,而无需通过中继使用外部邮件提供商?

目标:需要安装一个 SMTP 服务器(最好是 postfix),以便将消息发送到其他常见邮件提供商,如 gmail、outlook、yahoo 等。

问题:Google Cloud 阻止使用 SMTP 端口 25(但不阻止使用 465 或 587),并且仅提供有关如何使用外部邮件提供商的详细信息。另一种解决方法是创建一个 gmail 帐户,将中继配置为 smtp.gmail.com,然后使用该帐户发送邮件。这样做的问题是,预计要发送的邮件量可能会超出中继的每日邮件限制。

尝试过:

  1. 使用默认的 postfix 配置在 google cloud 上的 ubuntu 18.04 上使用邮件发送消息,并且仅将“inet_protocols”更改为“ipv4”。这会在日志中显示超时消息。

postfix/smtp[]: 连接到 ALT2.ASPMX.L.GOOGLE.COM[xxxx]:25: 连接超时

  1. 尝试更改 master.cf 中的以下几行

smtp inet --- y --- smtpd

smtp unix - - 是 - - smtp

587 inet--y--smtpd

587 unix - - y - - smtp

在 main.cf 中添加“smtp_use_tls = yes”

并重新启动 postfix。这样 postfix 就会在端口 587 上监听和发送消息,但它仍然会给出相同的消息。

postfix/smtp[]: 连接到 ALT3.ASPMX.L.GOOGLE.COM[xxxx]:587: 连接超时

  1. 消息通过使用与另一个托管服务中的 1 相同的配置来发送(端口 25 未被阻止)。

有人说服务器之间的 smtp 仅在端口 25 上工作,但我无法找到任何信息来证实这一点,并且对邮件服务器了解不多,不确定是否有可能在 postfix 上配置另一个端口以实现此效果。

我是不是在浪费时间尝试在 Google Cloud 上配置它,而只需更改托管服务?或者是否有某种方法可以配置 postfix 以在端口 25 被阻止的情况下工作?

答案1

这项决定最早是在 1982 年做出的RFC 821,附录 A从那时起一直如此。目前 TCP 端口 25IANA 指定出于这个目的。从 SMTPRFC 5321

4.5.4.2. 接收策略

SMTP 服务器应始终尝试保持对 SMTP 端口(IANA 指定为端口 25)的待处理监听。这需要支持 SMTP 的多个传入 TCP 连接。

您不能简单地更改端口,因为没有机制让其他 SMTP 服务器知道您正在使用非标准端口,并且您也不能使用任何其他端口发送到其他服务器。

Google Cloud 不是为此设计的,正如其指南中解释的那样:从实例发送电子邮件

使用标准电子邮件端口

默认情况下,Compute Engine 允许除端口 25 之外的所有端口上的出站连接,端口 25 因存在滥用风险而被阻止。所有其他端口均开放,包括端口 587 和 465。

注意:端口 25 始终被阻止且无法使用,即使通过使用 Google Workspace 的 SMTP 中继也是如此。

端口 587 和 465 可用于 SMTP留言提交RFC 6409)。这意味着您可以使用外部邮件中继(您自己的或来自其他人的)进行经过身份验证的 SMTP,并且此服务器负责在端口 25 上处理向其他邮件系统的传递。

相关内容