我一直使用 sendmail 作为 MTA,并使用 SquirrelMail 作为网络邮件。我曾经使用以下设置来限制 SquirrelMail 中的收件人。SquirrelMail 有一个名为 Recepientrestrictions 的插件,可以检查两个 php 文件
Config.PHP
- 包含我的域用户可以发送邮件的不同域的列表(系统管理员和公司主管可以向任何人发送邮件)recepientrestrictions.php
- 包含特定地址列表,例如[电子邮件保护]或者[电子邮件保护]我的域用户可以向谁发送邮件。(系统管理员和公司董事可以向任何人发送邮件)
现在的问题是:
我正在迁移到 Zentyal 作为电子邮件服务器。Zentyal 在后台使用 Postfix,并使用 Roundcube 进行网络邮件。
我得到了一个部分解决方案,它是我域中所有用户的一般规则(不能分开系统管理员/主管向互联网上的任何人发送邮件),它限制传递到特定域的邮件,如下所示。
将其添加到 main.cf 中:
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_domains, reject
/etc/postfix/recipient_domains
是白名单文件:mycompany.com OK anotherdomain.com OK
生成哈希文件:
postmap /etc/postfix/recipient_domains
- 重新启动 postfix 服务。
即使在此之后,它也不会阻止发送到[电子邮件保护]或者[电子邮件保护]。我还想借助白名单文件向网络邮件提供商的几个邮件 ID 发送邮件。例如
[email protected] OK
[email protected] OK
[email protected] OK
简而言之,该方案如下:
- Group1 向地球上的任何人发送邮件。
- Group2 通过两个白名单发送邮件 1) 根据域 2) 特定的网络邮件用户。
问题是如何实现这个方案?
答案1
要检查用户对邮件地址的访问权限,请使用smtpd_sender_login_maps
范围:
smtpd_sender_login_maps = hash:/etc/postfix/sender_login_maps
使用如下条目:
[email protected] bob
[email protected] alice
@bob.example.com bob
第二列是登录名(用于身份验证)。有关更多信息,请参阅文档。此示例使用哈希表,但您也可以使用数据库或任何您想要使用的东西。