大家好,在serverfault,
我运行了一个Debian Wheezy邮件服务器,上面有postfix和几个域名。
对于一个域名,我需要一些帐号无法收发电子邮件给外部世界,只能到同一个域名。 其他帐户和域名保持正常。
search网页我发现我可以用postfix限制类来做到这一点,所以我在postfix文档中find了一个指南: http : //www.postfix.org/RESTRICTION_CLASS_README.html
在postfix文档之后,我不能申请我的限制,当我重新启动postfix时,它给了我一个未使用的参数错误,错误如下:
/ usr / sbin / postconf:警告:/etc/postfix/main.cf:未使用的参数:local_only = check_recipient_access散列:/ etc / postfix / local_domains,拒绝
这里是限制类所在的main.cf的一部分:
smtpd_client_restrictions =
permit_mynetworks,
check_client_access哈希:/ etc / postfix / custom_check_client_access,
permit_sasl_authenticated,
reject_sender_login_mismatch,
reject_unknown_client,
reject_unauth_pipelining,
reject_rbl_client sbl.spamhaus.org,
smtpd_recipient_restrictions =
check_sender_access哈希:/ etc / postfix / restricted_senders,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_invalid_hostname,
reject_unauth_pipelining,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
check_recipient_access hash:/ etc / postfix / protected_destinations,
check_policy_service inet:127.0.0.1:10023,
许可证
smtpd_restriction_classes = local_only
local_only = check_recipient_access散列:/ etc / postfix / local_domains,拒绝
smtpd_restriction_classes = insiders_only
insiders_only = check_sender_access哈希:/ etc / postfix / local_domains,拒绝
这是我的/ etc / postfix / protected_destinations文件:
[email protected] insiders_only
这是我的/ etc / postfix / restricted_senders文件:
[email protected] local_only
这是我的/ etc / postfix / local_domains文件:
mydomain.com确定
我无法弄清楚我做错了什么! 我无法看到互联网上的任何地方如何一起做两个限制类,所以smtpd_restriction_classes的语法可能是错误的。 另一件我怀疑是错误的是smtpd_recipient_restrictions的顺序,我不知道在哪里把check_sender_access和check_recipient_access。
如果你们可以帮我设立这个限制课,我会很感激。
谢谢你,乔凡尼
当定义一个新的限制类时,你基本上做的是告诉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中的所有限制一直是一个长期的build议。 在你的情况下,发件人“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
另外需要注意的是,在validation客户端证书之前,从访问映射中返回“OK”(可能是一个坏主意)。 因此,文件“/ etc / postfix / local_domains”应该包含一行
example.com DUNNO
这将强制受限制的发送者使用SASL进行身份validation,或者在$ mynetworks之内。 正如你所看到的,你可以逃脱一个限制类,并摆脱smtpd_(发件人|客户端)_restrictions。