Exim 配置文件在顶部包含全局定义(我们称之为主节),之后是其他几个节[1]。 这些其他节都以
begin section |
我们将在大部分时间里专注于acl节(即在begin acl之后);但我们也会在transports和routers节以及文件顶部的“主节”中添加和/或修改一些项目。
从 4.xx 版本开始,Exim 通过所谓的访问控制列表 (ACL) 整合了可能是在任何地方可用的最复杂和灵活的 SMTP 时间过滤机制。
ACL 可用于评估是否接受或拒绝传入消息事务的某个方面,例如来自远程主机的初始连接,或者 HELO/EHLO、MAIL FROM: 或 RCPT TO: SMTP 命令。 因此,例如,您可能有一个名为acl_rcpt_to的 ACL,用于验证从对等方接收的每个 RCPT TO: 命令。
ACL 由一系列语句(或规则)组成。 每个语句都以一个动作动词开始,例如accept, warn, require, defer,或deny,后跟与该语句相关的条件、选项和其他设置列表。 每个语句都按顺序评估,直到采取明确的动作(除了warn)之外。 在 ACL 的末尾有一个隐式的deny。
上面的acl_rcpt_toACL 中的一个示例语句可能如下所示
deny message = relay not permitted !hosts = +relay_from_hosts !domains = +local_domains : +relay_to_domains delay = 1m |
如果 RCPT TO: 命令不是由 "+relay_from_hosts" 主机列表中的主机传递的,并且收件人域不在 "+local_domains" 或 "+relay_to_domains" 域列表中,则此语句将拒绝该命令。 但是,在向此命令发出 "550" SMTP 响应之前,服务器将等待一分钟。
要在消息事务的给定阶段评估特定的 ACL,您需要将 Exim 的策略控制之一指向该 ACL。 例如,要使用上面提到的acl_rcpt_toACL 来评估 RCPT TO:,您的 Exim 配置文件的主节(在任何begin关键字之前)应包含
acl_smtp_rcpt = acl_rcpt_to |
有关此类策略控制的完整列表,请参阅 Exim 规范中的第 14.11 节。
[1] | Debian 用户:exim4-config软件包让您可以选择将 Exim 配置拆分为分布在/etc/exim4/conf.d子目录下的几个小块,或者将整个配置保存在单个文件中。 如果您选择前一种选项(我推荐这种!),您可以通过在这些子目录中创建新文件,而不是修改现有文件,来使您的自定义设置与exim4-config软件包提供的库存配置良好地分离。 例如,您可以创建一个名为/etc/exim4/conf.d/acl/80_local-config_rcpt_to的文件,以声明您自己的 RCPT TO: 命令的 ACL(请参阅下方)。 Exim "init" 脚本(/etc/init.d/exim4)将在您下次(重新)启动时自动将所有这些文件合并为一个大型运行时配置文件。 |