我知道我需要在端口 25 上使用 SMTP 来接收电子邮件,但我不希望将其用作中继端口。相反,我希望使用端口 587 供注册(SASL 认证)用户通过我的服务器从任何 IP 地址中继电子邮件,并发送到任何电子邮件服务器(例如 GMail、Yahoo)。
我已经设置了 Postfix 来接收电子邮件和验证用户,但我对端口 25 和 587 之间的区别以及如何使用一个端口进行接收和一个端口进行中继感到非常困惑。
这是我目前的相关部分main.cf
。
myhostname = mx.example.com
mydomain = example.com
#myorigin = $mydomain
mydestination = localhost localhost.localdomain
mynetworks_style = host
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_relay_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
# reject_unauth_destination is not needed here if the mail
# relay policy is specified under smtpd_relay_restrictions
# (available with Postfix 2.10 and later).
reject_unauth_destination
reject_rbl_client zen.spamhaus.org,
reject_rhsbl_reverse_client dbl.spamhaus.org,
reject_rhsbl_helo dbl.spamhaus.org,
reject_rhsbl_sender dbl.spamhaus.org
和master.cf
。
smtp inet n - - - - smtpd
#smtp inet n - - - 1 postscreen
#smtpd pass - - - - - smtpd
#dnsblog unix - - - - 0 dnsblog
#tlsproxy unix - - - - 0 tlsproxy
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_restrictions=reject_sender_login_mismatch
不幸的是,当我尝试使用我的邮件客户端从不同的 IP 地址在端口 587 上发送时出现此错误。
NOQUEUE: reject: RCPT from unknown[XXX.XXX.XXX.XXX]: 553 5.7.1 <[email protected]>: Sender address rejected: not owned by user [email protected]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.1.3]>
答案1
每个端口的配置是在 中完成的master.cf
,而不是main.cf
。默认的 Postfix 配置文件已经有很好的示例设置,只需取消注释即可。端口 587 被标记为submission
那里的端口(端口 25 当然是smtp
)。
您的设置可以稍微简化一些。在 中main.cf
,仅将默认策略(针对端口 25)指定为recipient_restrictions
,除此之外无需做其他操作:
smtpd_recipient_restrictions= 允许我的网络 拒绝未经验证的收件人 拒绝_rbl_client zen.spamhaus.org 拒绝_rbl_...... 允许_授权_目的地 拒绝
在 中master.cf
,通过删除先前设置的限制并允许经过身份验证的用户进行不受限制的中继来覆盖它:
smtp inet n-n--smtpd 提交 inet n - n - - smtpd -o syslog_name=postfix/提交 -o smtpd_tls_security_level =加密 -o smtpd_sasl_auth_enable=是 -o smtpd_reject_unlisted_recipient=否 -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,拒绝 -o milter_macro_daemon_name=起始