我想通过我的服务器从我的笔记本电脑中继邮件。 我已经成功地configuration了postfix和SASL,而且我可以成功地使用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服务器进行中继,即使我已经validation并configuration了postfix,以允许经过身份validation的客户端中继邮件。
# /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 ? 我的印象是,后者会覆盖前者,因为您必须inputreject , defer , defer_if_permit / reject或reject_unauth_destination这个选项。
更新 :原来这也发生,如果我从本地telnet。 如果我注释掉smtpd_recipient_restrictions行,我可以发送邮件给任何人(尽pipe只从本地主机)。 我想从任何使用SASL进行身份validation的计算机上这样做。 我应该怎么做呢?
谢谢!
smtpd_receipient_restrictions从左到右匹配,首先匹配胜利。
你想smtpd_recipient_restrictions = permit_sasl_authenticated, reject
smtp_recipient_restrictions按顺序进行评估。
你可能想要的东西至less是这样开始的:
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks
然后继续拒绝所有的(如果你只是发送邮件而不接收邮件),或拒绝那些看起来像垃圾邮件的东西 – 检查UCE的后缀文件,以获得一个良好的起点。