几天前,我在安装 postfix 时遇到了一个问题。我知道网上有很多关于这个问题的资料,但我试过的方法都没有用。
我的问题如下:我可以使用服务器上的终端向外部发送和接收(并阅读)电子邮件,通过 SSH。我的意思是,当我登录我的服务器时。但我无法通过我的服务器(在我的服务器网络之外)使用 SMTP 客户端发送电子邮件。
我的服务器是 Debian 9。我按照 Debian wiki 启用了 Cyrus SASL 的 SASL 身份验证:https://wiki.debian.org/PostfixAndSASL#Implementation_using_Cyrus_SASL。
当我运行telnet mail.myserver.com 25
EHLO 时,我得到:
250-mail.myserver.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
我还可以通过 telnet 使用 base64 进行身份验证:
AUTH PLAIN <base64_string>
235 2.7.0 Authentication successful
在我的/etc/postfix/main.cf
我有:
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks
问题如下:
我连接了我的服务器电子邮件地址([电子邮件保护]) 到我的个人 Gmail 地址,方法是在我的 Gmail 网络客户端上通过“设置”>“帐户和导入”>“以...身份发送邮件”。我设置了我的 smtp 服务器、用户和用户密码。我使用了端口 587 和 TLS。它成功通过了身份验证,我完成了验证过程。
但是,当我使用 Gmail 发送带有“发送为[电子邮件保护]“,它会在我的服务器上反弹。从/var/log/mail.log
我可以看到:
postfix/smtpd[1968]: connect from mail-ed1-f47.google.com[209.85.208.47]
postfix/smtpd[1968]: Anonymous TLS connection established from mail-ed1-f47.google.com[209.85.208.47]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
postfix/smtpd[1968]: NOQUEUE: reject: RCPT from mail-ed1-f47.google.com[209.85.208.47]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-ed1-f47.google.com>
postfix/smtpd[1968]: disconnect from mail-ed1-f47.google.com[209.85.208.47] ehlo=2 starttls=1 auth=1 mail=1 rcpt=0/1 data=0/1 quit=1 commands=6/8
正如我所说,发送电子邮件至[电子邮件保护]从我的服务器终端运行正常,使用 SPF、DKIM 和 DMARC 密码。
我不知道该怎么办。如果有人能帮助我,我将不胜感激。
答案1
解决了。只需添加permit_sasl_authenticated
,smtpd_relay_restrictions
而不仅仅是smtpd_recipient_restrictions