目标:需要安装一个 SMTP 服务器(最好是 postfix),以便将消息发送到其他常见邮件提供商,如 gmail、outlook、yahoo 等。
问题:Google Cloud 阻止使用 SMTP 端口 25(但不阻止使用 465 或 587),并且仅提供有关如何使用外部邮件提供商的详细信息。另一种解决方法是创建一个 gmail 帐户,将中继配置为 smtp.gmail.com,然后使用该帐户发送邮件。这样做的问题是,预计要发送的邮件量可能会超出中继的每日邮件限制。
尝试过:
- 使用默认的 postfix 配置在 google cloud 上的 ubuntu 18.04 上使用邮件发送消息,并且仅将“inet_protocols”更改为“ipv4”。这会在日志中显示超时消息。
postfix/smtp[]: 连接到 ALT2.ASPMX.L.GOOGLE.COM[xxxx]:25: 连接超时
- 尝试更改 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 相同的配置来发送(端口 25 未被阻止)。
有人说服务器之间的 smtp 仅在端口 25 上工作,但我无法找到任何信息来证实这一点,并且对邮件服务器了解不多,不确定是否有可能在 postfix 上配置另一个端口以实现此效果。
我是不是在浪费时间尝试在 Google Cloud 上配置它,而只需更改托管服务?或者是否有某种方法可以配置 postfix 以在端口 25 被阻止的情况下工作?
答案1
这项决定最早是在 1982 年做出的RFC 821,附录 A从那时起一直如此。目前 TCP 端口 25IANA 指定出于这个目的。从 SMTPRFC 5321:
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 上处理向其他邮件系统的传递。