来自谷歌计算引擎的 gsuite gmail smtp-relay

来自谷歌计算引擎的 gsuite gmail smtp-relay

无法让它工作。我多次浏览了所有的文档站点,并搜索了这里和其他地方的问题,并试图遵循回复,但一无所获。

这是在 GCE、最小服务器、安装了 postfix 和邮件的 Debian 延伸服务器上。

邮件尝试的日志中吐出了一堆内容,但这似乎是最突出的信息

relay=smtp-relay.gmail.com[74.125.124.28]:587, delay=8471,
delays=8470/0.03/0.41/0.05, dsn=5.7.1,
status=bounced (host smtp-relay.gmail.com[74.125.124.28] said: 550-5.7.1 Invalid credentials for relay [34.66.70.41].
The IP address you've 550-5.7.1 registered in your G Suite SMTP Relay service doesn't match domain of 550-5.7.1 the account this email is being sent from.
If you are trying to relay 550-5.7.1 mail from a domain that isn't registered under your G Suite account 550-5.7.1 or has empty envelope-from, you must configure your mail server 550-5.7.1 either to use SMTP AUTH to identify the sending domain or to present 550-5.7.1 one of your domain names in the HELO or EHLO command.

GCE 域和 GSuite 域是相同的。

因此,我的 postfix main.cf 如下所示:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = <mydomain>
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = <mydomain>, localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

relayhost = smtp-relay.gmail.com:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = 
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

mailname 文件的内容是:

<mydomain>

sasl_passwd 文件的内容为:

[smtp.gmail.com]:587 <gmail-user-name>:<gmail-password>

GSuite 设置如下:


From Website
Allowed senders: Only addresses in my domains
Only accept mail from the specified IP addresses: Yes
Allowed IP addresses: Website Server
Require SMTP Authentication: Yes
Require TLS encryption: Yes

‘允许 IP 地址’设置为 GCE 的外部地址。

所以,我很困惑。

任何想法都值得赞赏。

答案1

您无法使用个人 Gmail 帐户进行身份验证,它必须是与您的 G Suite 域绑定的帐户。

答案2

根据设计,端口 25 始终被阻止且无法使用,即使通过使用 G Suite 的 SMTP 中继也是如此。

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

这在“从实例发送电子邮件“ 文章。

SendGrid、Mailgun 和 Mailjet 等产品为 Compute Engine 客户提供免费套餐,以便通过其服务器设置和发送电子邮件。我强烈建议您查看参考文档,并根据您的解决方案实施符合您期望的电子邮件解决方案。

答案3

我查看了您发布的所有配置设置,对我来说看起来非常普通。目前我发现可能有问题的是以下行:

Allowed IP addresses: Website Server 

也许您必须使用 IP 地址而不是实例的名称。在文档指出必须使用 IP 地址/范围。进行更改并发布结果。

答案4

经过许多令人沮丧的小时后,收到上述错误消息并认为问题出在我的 postfix 配置文件中,我发现这实际上是我的托管公司(digitalocean)创建的 PTR 记录被破坏了,因为分配给我的 IP 地址与我选择的域名不匹配。

长话短说,除非正确设置了反向查找您的域名和 IP,否则 Google 的 SMTP 中继服务将无法工作。对于 digitalocean 来说,这涉及一个完全不直观且没有文档记录的过程,即单击您的 droplet 名称,将其变成一个可编辑框,并将其替换为您的域名。

相关内容