默认情况下,exim 允许任何用户使用他们希望的任何“发件人:”地址发送电子邮件,这可能导致用户相互欺骗。如何限制每个系统用户可以发送的地址?例如,用户james
应该能够从 james@localhost 发送,但也可以从 [email protected] 和 [email protected] 发送。
我希望所有系统用户都能够从他们的 SYSTEM_USER@HOSTNAME 发送电子邮件,但如果他们尝试从另一个地址发送,我想在文本文件中查找该地址以查看是否允许。
我目前有一个列表,但它是系统用户将从哪些地址收到的。但它仍然可以工作。给定示例[email protected]
,数据存储在/etc/exim4/virtual/my-domain.com
内容如下所示的文件中:
me : james@localhost
如果我们可以重用现有的文件,那就太好了。但任何建议都会有所帮助。先感谢您。
Exim4已经对信封发送者
From:
和Sender:
本地提交的消息(参见受信任的用户)进行了一些标准检查。由于您想扩展此验证,您应该:对于通过
sendmail
(ieexim4 -bm
)提交的消息,在主配置部分添加:对于通过您提交的消息,
SMTP
您需要添加control = submission/sender_retain
修饰符。例如 Debian 在MAIL
acl 中有一个规则:要配置您的支票,您需要
ACL
在邮件处理的不同阶段添加一些规则。由于这些规则需要应用于不同的消息提交方式,您可以创建一个新的命名ACL
(我假设您的所有/etc/exim4/virtual/<domain>
文件都username@localhost
作为值返回):有关字符串扩展的语法(充满大括号),请查看Exim 文档的第 11 章。您可以使用它们来测试它们(信封发件人像mbox格式
exim4 -bem <message> <expansion_string>
一样在消息中传递)。您可以将其应用于不同的情况:
对于通过 提交的消息,将以下规则
exim4 -bm
添加到ACL:acl_not_smtp
对于经过身份验证的用户通过
SMTP
添加到acl_smtp_data
ACL 提交的消息,例如:一些程序使用未经身份验证的
SMTP
连接来提交消息localhost
(或exim -bs
)。对于他们,您可以添加到acl_smtp_data
ACL:并在服务器上安装一些identd。