我有一个邮件服务器(后缀2.9.6)启动并运行15-20用户,只有一个单一的域内部使用,让我们称之为xyz.mail.lan
用户是:
[email protected] [email protected] [email protected] … [email protected]
没有外部中继,或从互联网接收邮件是必要的。 它现在正常工作。
我的目标是限制用户互相发送邮件。
例如:
我不会有超过20个用户,所以我不介意如果我的手必须为每个用户设置丑陋的规则。
如果你想快速和肮脏的解决scheme(由于用户很less),没有外部脚本/守护进程(只使用后缀和地图),看看后缀限制类 。 在该页面中,您应该看到示例如何使用该function。 总之, 每个class级都会有你想要的限制 。
对于您的情况,首先您将在smtpd_*_restriction添加此检查表,例如smtpd_recipient_restriction
smtpd_recipient_restriction = ... other restriction.... check_sender_access hash:/etc/postfix/sender_rules smtpd_restriction_classes = user1_rule, user2_rule, user3_rule,... user1_rule = check_recipient_access hash:/etc/postfix/rules/user1 user2_rule = check_recipient_access hash:/etc/postfix/rules/user2 user3_rule = check_recipient_access hash:/etc/postfix/rules/user3 so on...
/ etc / postfix / sender_rules的内容
user1 user1_rule user2 user2_rule user3 user3_rule ... others ...
最后是/ etc / postfix / rules / userX的内容(其中X是1 …用户数)
在/ etc /后缀/规则/ USER1
user2 OK user3 OK user4 OK user5 OK
在/ etc /后缀/规则/用户2
user1 OK user3 OK
而其他…
由于你的用例非常特殊,标准的Postfix查找方法不适合你,所以我会考虑使用Postfix的内容检查 。
通常它用于反垃圾邮件/病毒过滤,但是由于您可以将自己的Perl /任何脚本连接到它,所以您可以使用您喜欢的语言创build一个小脚本,如果应该传递邮件或不。
在伪代码中,类似
if ($mailfrom == "user2" && ($rcptto == $user3 || $rcptto == $user5)) { yes_pass_the_mail(); }
应该做。 看看有关过滤的Postfix文档。