我有两个域名,一个 .com 和一个 .net。.com 有一个托管在 google 上的网站并使用 gmail。.net 是一个没有关联邮件帐户的 google 计算引擎,它运行自己的网络服务器并使用仅在端口 587 上配置为外发邮件的 postfix。我需要一个 smtp 中继来发送管理电子邮件。我目前正在使用我运行的另一个网站作为权宜之计,但我认为应该有一种方法可以使用 google 的 smtp 中继之一来做到这一点。我尝试使用 aspmx2.googlemail.com,但似乎不起作用(显示为 .com 域的 MX 记录的中继);但我收到网络不可达错误:
postfix/smtp[2180]: ... relay=none, delay=30065, delays=30035/0.09/30/0, dsn=4.4.1, status=deferred (connect to aspmx2.googlemail.com[2607:f8b0:4001:c12::1a]:587: Network is unreachable)
我推测该组中的其他继电器也不会起作用。
我已经为 .com 配置了 smtp-relay 服务以允许从 .net 系统进行中继。
任何帮助将非常感激。
更新:删除了根本不起作用的中继。使用 smtp-relay.gmail.com 效果更好,但仍然失败:
8 月 1 日 20:27:43 xblgx-ops postfix/master[30890]: 守护进程已启动 -- 版本 3.1.0,配置 /etc/postfix 8 月 1 日 20:29:32 xblgx-ops postfix/pickup[30893]: BA3D73F79F: uid=1002 来自= 8 月 1 日 20:29:32 xblgx-ops postfix/cleanup[30906]: BA3D73F79F: message-id= 8 月 1 日 20:29:32 xblgx-ops postfix/qmgr[30894]: BA3D73F79F: from=, size=418, nrcpt=1 (队列活跃) 8月1日 20:29:32 xblgx-ops postfix/smtp[30910]: 连接到 smtp-relay.gmail.com[2607:f8b0:400e:c09::1c]:587: 网络不可访问 8 月 1 日 20:29:33 xblgx-ops postfix/smtp[30910]: 与 smtp-relay.gmail.com[74.125.195.28]:587 建立了不受信任的 TLS 连接:TLSv1.2,密码为 ECDHE-ECDSA-AES128-GCM-SHA256(128/128 位) 8 月 1 日 20:29:33 xblgx-ops postfix/smtp[30910]: BA3D73F79F: to=,relay=smtp-relay.gmail.com[74.125.195.28]:587,delay=0.49,delays=0.03/0.02/0.39/0.05,dsn=5.7.0,status=bounced (host smtp-relay.gmail.com[74.125.195.28] 表示:550-5.7.0 邮件中继被拒绝 [35.230.53.86]。550-5.7.0 中继凭据无效,其中一个域位于:insidexblgx.internal、c.insidexblgx.internal、550-5.7.0 xblgx-ops.c.insidexblgx.internal、xbiologix.net(从 550-5.7.0 HELO 和 MAIL FROM 获得)。550-5.7.0 电子邮件发送自未在您的 G Suite 帐户中注册的域或 IP 地址。请登录您的 G Suite 帐户并验证您的发送设备 IP 地址是否已在 G Suite SMTP 中继设置中注册。有关更多信息,请访问 550 5.7.0 https://support.google.com/a/answer/6140680#maildenied m11sm1647381ooe.3 - gsmtp(回复 MAIL FROM 命令)) 8 月 1 日 20:29:33 xblgx-ops postfix/cleanup[30906]: 3BBED3F7A0: 消息 ID= 8 月 1 日 20:29:33 xblgx-ops postfix/qmgr[30894]: 3BBED3F7A0: from=, size=3849, nrcpt=1 (队列活跃) 8 月 1 日 20:29:33 xblgx-ops postfix/bounce[30913]: BA3D73F79F: 发件人未送达通知: 3BBED3F7A0 8 月 1 日 20:29:33 xblgx-ops postfix/qmgr[30894]: BA3D73F79F: 已删除 8 月 1 日 20:29:33 xblgx-ops postfix/smtp[30910]: 与 smtp-relay.gmail.com[74.125.195.28]:587 建立了不受信任的 TLS 连接:TLSv1.2,密码为 ECDHE-ECDSA-AES128-GCM-SHA256(128/128 位) 8 月 1 日 20:29:33 xblgx-ops postfix/smtp[30910]: 3BBED3F7A0: to=,relay=smtp-relay.gmail.com[74.125.195.28]:587,delay=0.45,delays=0/0/0.39/0.05,dsn=5.1.1,status=bounced (host smtp-relay.gmail.com[74.125.195.28] 说: 550-5.1.1 您尝试联系的电子邮件帐户不存在。请尝试 550-5.1.1 仔细检查收件人的电子邮件地址是否有拼写错误或 550-5.1.1 不必要的空格。了解更多信息,请访问 550 5.1.1 https://support.google.com/mail/?p=NoSuchUser s2sm145038otd.5-gsmtp(回复 RCPT TO 命令) 8 月 1 日 20:29:33 xblgx-ops postfix/qmgr[30894]: 3BBED3F7A0: 已删除
发送机器的 IP 为 35.230.53.86,在我的 Google 计算控制台 VM 上显示为正确的 IP,但反向 DNS 将其显示为 86.53.230.35.bc.googleusercontent.com。该 IP 已在 .com 域的 gsuite gmail 设置中明确允许:
从 xbiologix.net 出站 允许的发件人:仅限我的域中的地址 仅接受来自指定 IP 地址的邮件:是 允许的 IP 地址:xbiologix.net 需要 SMTP 身份验证:否 是否需要 TLS 加密:否
请注意,域名 xbiologix.net 是日志行中最后一个抱怨无效域名的域名。但“我的域名”是什么意思?gsuite 如何知道我的域名是什么?
我修改了 postfix main.cf 以包含:
smtp_helo_name = [35.230.54.86] xbiologix.net
但我现在得到:
8月1日 21:17:51 xblgx-ops postfix/smtp[422]: 连接到 smtp-relay.gmail.com[2607:f8b0:400e:c09::1c]:587: 网络不可达 8 月 1 日 21:17:51 xblgx-ops postfix/smtp[422]: 7B1383F79E: to=, reply=smtp-relay.gmail.com[74.125.195.28]:587, delay=0.32, delays=0.02/0.02/0.28/0, dsn=4.4.2, status=deferred (执行 HELO 握手时与 smtp-relay.gmail.com[74.125.195.28] 失去连接)
答案1
看一下错误信息:
8 月 1 日 20:29:33 xblgx-ops postfix/smtp[30910]: BA3D73F79F: to=,relay=smtp-relay.gmail.com[74.125.195.28]:587,delay=0.49,delays=0.03/0.02/0.39/0.05,dsn=5.7.0,status=bounced (host smtp-relay.gmail.com[74.125.195.28] 表示:550-5.7.0 邮件中继被拒绝 [35.230.53.86]。550-5.7.0 中继凭据无效,其中一个域位于:insidexblgx.internal、c.insidexblgx.internal、550-5.7.0 xblgx-ops.c.insidexblgx.internal,xbiologix.net(从 550-5.7.0 HELO 和 MAIL FROM 获得)。550-5.7.0电子邮件未在您的 G Suite 帐户中注册 550-5.7.0 的域或 IP 地址发送。请登录您的 G Suite 帐户并验证您的发送设备 IP 地址是否已在 G Suite SMTP 中继设置中注册。有关更多信息,请访问 https://support.google.com/a/answer/6140680#maildenied m11sm1647381ooe.3-gsmtp(回复 MAIL FROM 命令))
此行为在文档中进行了解释从实例发送电子邮件:
...如果你熟悉G Suite并且已经为支持电子邮件的 G Suite 帐户付费, 你可以设置中继服务以通过 G Suite 发送电子邮件。请注意,Gmail 和 G Suite 对电子邮件活动实施限制。
如果您没有 G Suite 帐号或者不想使用 G Suite 或第三方邮件提供商,您可以设置自己的电子邮件服务器在使用非标准端口的实例上。您可以选择任何 临时端口未被 Compute Engine 阻止。
- 使用 SendGrid、Mailgun 或 Mailjet:按照说明进行操作使用 SendGrid 发送电子邮件,使用 Mailgun 发送电子邮件, 或者使用 Mailjet 发送电子邮件。
- 使用 G Suite 域:请按照 G Suite 文档中有关 SMTP 中继服务设置的说明进行操作。仅允许通过端口 465 或 587 进行 G Suite 的 SMTP 中继。G Suite 不支持端口 25。
此外,在使用标准电子邮件端口:
默认情况下,Compute Engine 允许除端口 25 之外的所有端口上的出站连接,由于存在滥用风险,端口 25 被阻止。所有其他端口均开放,包括端口 587 和 465。
并在 RFC 5321 中:
SMTP 服务器应始终尝试保持对 SMTP 端口(IANA 指定为端口 25)的待处理监听。这需要支持 SMTP 的多个传入 TCP 连接。
如您所见,根据文档和 RFC,您可以通过两种方式实现您的目标:使用付费的 GSuite 帐户或使用付费的第三方服务。
此外,您可以尝试通过您上面提到的基于 Postfix 的现有 smtp 服务器配置中继。