postfix - 如何创建真正基于用户的限制规则?

postfix - 如何创建真正基于用户的限制规则?

我有一个邮件服务器(postfix 2.9.6),有 15-20 个用户正在运行,仅供内部使用,只有一个域名,我们称之为 xyz.mail.lan

用户是:

    [email protected]
    [email protected]
    [email protected]
    [email protected]

无需外部中继,也无需从互联网接收邮件。目前运行良好。

我的目标是限制用户互相发送邮件。

例如:

  • 用户 1 仅被允许发送邮件给:用户 2、用户 3、用户 4、用户 5
  • 用户 2 仅被允许发送邮件给:用户 1、用户 3
  • 用户3 仅被允许发送邮件给:用户1、用户5
  • 用户 5 仅被允许发送邮件给:用户 1、用户 4

我的用户不会超过 20 个,因此我不介意为每个用户制定丑陋的规则。

答案1

如果你想要一个快速而肮脏的解决方案(因为用户很少)并且没有外部脚本/守护进程(只使用 postfix 及其映射),请查看后缀限制类。在该页面中,您应该会看到该功能如何工作的示例。简而言之,每个班级都有自己的一套限制正如你想要的那样。

对于您的情况,首先您将添加此检查表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/postfix/规则/用户1

user2    OK
user3    OK
user4    OK
user5    OK

/etc/postfix/规则/用户2

user1    OK
user3    OK

还有其他人……

答案2

由于您的用例非常特殊,并且标准 Postfix 查找方法不适合您,因此我会考虑使用 Postfix内容检查

通常它用于反垃圾邮件/病毒过滤,但由于您可以将自己的 Perl/任何脚本连接到它,因此您可以使用您喜欢的语言创建一个小脚本,并让它回答 Postfix 是否应该传递邮件。

用伪代码来说,类似

if ($mailfrom == "user2" && ($rcptto == $user3 || $rcptto == $user5)) {
    yes_pass_the_mail();
}

应该可以。查看 Postfix 文档中有关过滤的内容。

相关内容