在 Postfix 中设置限制类,以阻止接收和发送向外部域的邮件。

在 Postfix 中设置限制类,以阻止接收和发送向外部域的邮件。

大家好,serverfault,

我运行一个带有 postfix 和多个域的 Debian Wheezy 邮件服务器。

对于一个域,我需要一些帐户无法接收和发送电子邮件到外部世界,只能发送到同一个域。其他帐户和域保持正常。

在网上搜索我发现我可以使用后缀限制类来做到这一点,因此,我在后缀文档中找到了一个指南:http://www.postfix.org/RESTRICTION_CLASS_README.html

按照 Postfix 文档,我无法应用我的限制,当我重新启动 Postfix 时,它会给我一个未使用的参数错误,错误如下:

/usr/sbin/postconf:警告:/etc/postfix/main.cf:未使用的参数:local_only=check_recipient_access hash:/etc/postfix/local_domains,拒绝

这是我的 main.cf 中包含限制类的部分:

smtpd_客户端限制=

允许我的网络,

check_client_access 哈希:/etc/postfix/custom_check_client_access,

允许通过 SASL 进行身份验证,

拒绝发件人登录不匹配,

拒绝未知客户端,

拒绝未授权管道,

拒绝_rbl_client sbl.spamhaus.org,

smtpd_recipient_restrictions=

check_sender_access 哈希:/etc/postfix/restricted_senders,

允许我的网络,

允许通过 SASL 进行身份验证,

拒绝未授权目的地,

拒绝无效主机名,

拒绝未授权管道,

拒绝非 FQDN 发送者,

拒绝未知发件人域名,

拒绝非 FQDN 收件人,

拒绝未知收件人域名,

check_recipient_access 哈希:/etc/postfix/protected_destinations,

check_policy_service inet:127.0.0.1:10023,

允许

smtpd_restriction_classes = local_only

local_only = check_recipient_access hash:/etc/postfix/local_domains,拒绝

smtpd_restriction_classes=insiders_only

insiders_only = check_sender_access hash:/etc/postfix/local_domains,拒绝

这是我的 /etc/postfix/protected_destinations 文件:

[电子邮件保护]insiders_only

这是我的 /etc/postfix/restricted_senders 文件:

[电子邮件保护]仅限本地

这是我的 /etc/postfix/local_domains 文件:

mydomain.com 确定

我不知道我做错了什么!我在互联网上找不到任何关于如何将两个限制类放在一起的信息,所以 smtpd_restriction_classes 的语法可能是错误的。我怀疑的另一个错误是 smtpd_recipient_restrictions 的顺序,我不知道该把 check_sender_access 和 check_recipient_access 放在哪里。

如果你们能帮助我设置这个限制类,我将不胜感激。

谢谢你,乔瓦尼

答案1

当定义一个新的限制类时,您基本上要做的是告诉 Postfix 一个可以像内置检查一样使用的新通用限制,例如“permit_mynetworks”。

这样做需要你指定全部一次性限制课程,即

smtpd_restriction_classes = local_only, insiders_only
insiders_only = ...
local_only = ...

这样做应该可以消除有关未使用参数的 postconf 警告。

至于将限制放在哪里:默认情况下,参数“smtpd_delay_reject”设置为“yes”,这意味着即使 smtpd_(client|sender)_restrictions 也只会被评估“rctp to:<...>”阶段。因此,长期以来的建议是简单地折叠 smtpd_recipient_restrictions 中的所有限制。在您的例子中,发件人“restrict01@...”只能发送到内部目的地,您可能可以使用类似这样的内容作为良好的起点:

smtpd_recipient_restrictions =
  reject_non_fqdn_sender
  reject_non_fqdn_recipient
  reject_unlisted_sender
  reject_unlisted_recipient
  reject_unknown_sender_domain
  reject_unknown_recipient_domain
  check_sender_access hash:/etc/postfix/restricted_senders
  permit_mynetworks
  allow_sasl_authenticated
  reject_unauth_destination
  check_policy_service inet:127.0.0.1:10023
  reject_rbl_client zen.spamhaus.org
  permit_auth_destination
  reject
smtpd_restriction_classes = local_only
local_only = check_recipient_access hash:/etc/postfix/local_domains, reject

需要注意的另一件事是,在验证客户端凭据之前从访问映射返回“OK”可能不是一个好主意。因此,文件“/etc/postfix/local_domains”应该包含如下行

example.com DUNNO

这将强制受限制的发件人使用 SASL 进行身份验证或位于 $mynetworks 内。如您所见,您可以摆脱一个限制类并摆脱 smtpd_(sender|client)_restrictions。

相关内容