我们使用 Postfix 作为员工的公司电子邮件地址...所有格式均为[电子邮件保护]。
基本上,我想限制所有传入邮件到这些地址,只允许来自 @example.com 域的电子邮件。
我认为很简单,但是有少数主管地址需要不受限制(能够接收来自任何域的电子邮件)。
我找到的所有答案似乎都不能回答这个问题(尽管我在处理电子邮件设置方面确实很弱)
/etc/postfix/main.cf 的代码片段:
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_sender_access hash:/etc/postfix/access,
reject
答案1
您可以使用限制类。请参阅:
- http://www.postfix.net/postconf.5.html#smtpd_restriction_classes
- http://www.postfix.net/RESTRICTION_CLASS_README.html。
针对你的情况
现在我们必须创建两个类,第一个是主管类,第二个是公司其他成员类。
设置
定义 smtpd_restriction_classess主配置文件
smtpd_restriction_classes = mysupervisor
在中设置 smtpd_recipient_restrictions主配置文件,将此行放在check_sender_access hash:/etc/postfix/access,
check_recipient_access hash:/etc/postfix/mycompany.rules
此文件/etc/postfix/mycompany.rules
将执行决策逻辑来选择属于该mysupervisor
类别的地址。因此内容是
[email protected] mysupervisor
[email protected] mysupervisor
然后为 mysupervisor 类定义规则主配置文件,因此 postfix 将允许所有地址。
mysupervisor = permit
要检查电子邮件是否来自公司域(example.com),请check_sender_access hash:/etc/postfix/insiders
在后面设置规则check_recipient_access hash:/etc/postfix/mycompany.rules
。/etc/postfix/insiders
example.com OK
现在,主配置文件已经成為
smtpd_restriction_classes = mysupervisor
mysupervisor = permit
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_sender_access hash:/etc/postfix/access,
check_recipient_access hash:/etc/postfix/mycompany.rules,
check_sender_access hash:/etc/postfix/insiders
reject
怎么运行的
对于所有电子邮件,Postfix 将应用限制,直到
check_sender_access hash:/etc/postfix/access,
之后将根据 对该电子邮件进行检查mycompany.rules
。如果收件人是主管电子邮件,则允许它,否则 postfix 将执行最后的限制/etc/postfix/insiders
。如果发件人是 @example.com,则允许它,否则拒绝它。