使用 Gmail 中继的 Postfix:必须首先发出 STARTTLS 命令

use*_*837 7 gmail postfix smtp

我收到此错误:必须首先对所有已发送邮件发出 STARTTLS 命令

谁能看出为什么?

主要.cf:

relayhost=[smtp.gmail.com]:587
smtp_connection_cache_destinations= [smtp.gmail.com]:587

#TLS parameters
smtpd_use_tls = yes
smtpd_sasl_auth_enable = yes
smtpd_tls_auth_only = no
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_note_starttls_offer = yes
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
smtp_tls_security_level = encrypt
# SASL Configuration
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_enforce_tls = no
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_sasl_tls_security_options = noanonymous
Run Code Online (Sandbox Code Playgroud)

tls_policy

[smtp.gmail.com]:587 encrypt
Run Code Online (Sandbox Code Playgroud)

sasl_passwd

smtp.gmail.com:587 name@gmail.com:password
Run Code Online (Sandbox Code Playgroud)

而且,是的,我已经在所有数据文件上运行了 postmap 并在进行更改后重新加载了 postfix。

TIA

小智 4

你应该使用smtp_enforce_tls = yes


AnF*_*nFi 3

看来您的后缀在发出AUTH 之前STARTTLS尝试发出(->它不发出STARTTLS)。据我所知,Gmail 仅在 STARTTLS 之后才在端口 25 和 587 上提供 SMTP 身份验证。

添加后是否重新启动了 postfix 守护进程smtp_use_tls=yes

http://mhawthorne.net/posts/postfix-configuring-gmail-as-relay.html

  • @JanusTroelsen:不,TLS 加密的策略映射并不是访问 Gmail 服务所必需的。它只是指定一个可选的查找表(即http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps)。OP 只是使用它们,因为他/她/它想要这样做。无论如何,“smtp_use_tls=yes”已过时,并由“smtp_tls_security_level = encrypt”取代。OP 可以没有它。 (4认同)