使用 SASL 通过 postfix 中继邮件

使用 SASL 通过 postfix 中继邮件

我想通过我的服务器从我的笔记本电脑转发邮件。我已经成功配置了 postfix 和 SASL,并且可以AUTH成功使用 telnet。

dhcp-241:~ jgorset$ telnet mail.example.com 25
Trying 85.25.124.196...
Connected to mail.example.com.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix
EHLO mail.example.com
250-mail.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN ***********************
235 2.7.0 Authentication successful
MAIL FROM: <[email protected]>
250 2.1.0 Ok
RCPT TO: <[email protected]>
554 5.7.1 <[email protected]>: Recipient address rejected: Access denied

如上所示,尽管我已经通过身份验证并配置了 postfix 以允许经过身份验证的客户端中继邮件,但我仍被拒绝通过我的 postfix 服务器进行中继。

# /etc/postfix/main.cf
# SMTP authentication
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = reject, permit_sasl_authenticated

我被拒绝是因为选项smtpd_recipient_restrictions设置为reject,尽管明确指出permit_sasl_authenticated?我的印象是后者会覆盖前者,因为您需要使用此选项输入rejectdefer或。defer_if_permitreject_unauth_destination


更新:事实证明,如果我从 localhost 进行 telnet,也会发生这种情况。如果我注释掉该smtpd_recipient_restrictions行,我就可以向任何人发送邮件(尽管只能从 localhost 发送)。我想从任何使用 SASL 进行身份验证的计算机执行此操作。我该怎么做?

谢谢!

答案1

smtpd_receipient_restrictions 从左到右进行匹配,第一个匹配获胜。

你要smtpd_recipient_restrictions = permit_sasl_authenticated, reject

http://www.postfix.org/SMTPD_ACCESS_README.html

答案2

smtp_recipient_restrictions 按顺序进行评估。

你可能想要至少像这样开始的东西:

smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks

然后继续拒绝所有邮件(如果您只发送邮件而从未在该服务器上接收邮件)或拒绝看起来像垃圾邮件的邮件 - 查看 UCE 的 postfix 文档以获得一个良好的起点。

相关内容