大家好,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。