Postfix-5.7.1 中继访问被拒绝

Postfix-5.7.1 中继访问被拒绝

我正在postfix运行RHEL6

# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.6 (Santiago)
# rpm -q postfix
postfix-2.6.6-6.el6_5.x86_64
# 

我正在尝试实现以下操作:

/etc/postfix/access- 访问 - Postfix SMTP 服务器访问表:

#        /etc/postfix/main.cf:
#            smtpd_client_restrictions =
#                check_client_access hash:/etc/postfix/access
# 
#        /etc/postfix/access:
#            1.2.3   REJECT
#            1.2.3.4 OK
# 
#        Execute  the  command  "postmap /etc/postfix/access" after
#        editing the file.

postconf- Postfix 配置实用程序:

# postconf -n | grep access
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
# 

/etc/postfix/access(.db)

# grep -v ^# access 
10.52.11.97 OK
# 

postmap- Postfix 查找表管理:

# postmap /etc/postfix/access
# echo $?
0
# 

每当尝试转发电子邮件时,我都会收到以下信息:

/var/log/maillog

postfix/smtpd[1515]: connect from X.X.X[10.52.11.97]
postfix/smtpd[1515]: NOQUEUE: reject: RCPT from X.X.X[10.52.11.97]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=SMTP helo=<HELO>
postfix/smtpd[1515]: lost connection after RCPT from X.X.X[10.52.11.97]
postfix/smtpd[1515]: disconnect from X.X.X[10.52.11.97]

更新

根据 @yoonix、@masegaloeh,我也发布了“smtpd_*_restrictions”:

$ egrep 'smtp.*restriction' *
access:#               text of smtpd_end_of_data_restrictions.
access:#            smtpd_client_restrictions =
main.cf:# through Postfix.  See the smtpd_recipient_restrictions parameter
main.cf:# relay mail to.  See the smtpd_recipient_restrictions description in
master.cf:#  -o smtpd_client_restrictions=$mua_client_restrictions
master.cf:#  -o smtpd_helo_restrictions=$mua_helo_restrictions
master.cf:#  -o smtpd_sender_restrictions=$mua_sender_restrictions
master.cf:#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
master.cf:#  -o smtpd_client_restrictions=$mua_client_restrictions
master.cf:#  -o smtpd_helo_restrictions=$mua_helo_restrictions
master.cf:#  -o smtpd_sender_restrictions=$mua_sender_restrictions
master.cf:#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
$

好像所有内容都被注释掉了。

答案1

嗯,你应该告诉我们你的目标和尝试的解决方案。没有目标,我们就不能给你提供替代解决方案。

从评论来看,你似乎想将一些客户端列入白名单,以便通过你的服务器进行中继。Postfix 本身具有ACL中继机制通过 smtpd_*_restriction。要了解 postfix 中启用了哪些 ACL,您可以运行命令

postconf | grep _restrictions

默认情况下,postfix 仅由和permit_mynetworks提供。这意味着,postfix 将permit_sasl_authenticateddefer_unauth_destinationsmtpd_relay_restrictions

  1. 如果客户端来自mynetworks参数中定义的 IP 地址,则允许中继
  2. 如果客户端已通过 SASL 成功验证,则允许中继
  3. 如果收件人域未在后缀地址类中列出,则软拒绝电子邮件。
  4. 否则,允许中继

您还可以通过以下方式获取有关该参数的信息man 5 postconf页。

这就解释了为什么 postfix 允许从特定客户端进行中继当你将其 IP 地址放在mynetworks参数中时


关于您通过 提供的初始解决方案check_client_access,如果您将其放在 defer_unauth_destination 之前,它也应该有效。因此,您必须将此配置放入main.cf

smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, check_client_access hash:/etc/postfix/access, defer_unauth_destination

放置它smtpd_client_restrictions不会起作用,因为 postfix 会检查每个阶段的限制(...,客户端、helo、发送方、中继、接收方,...)。有关更多信息,您可以参考Postfix SMTP 中继和访问控制

相关内容