Exim 在 acl 期间读取消息收件人

Exim 在 acl 期间读取消息收件人

我希望能够在 ACL 期间将收件人电子邮件地址(或本地部分,无论哪个)作为变量访问(例如,我希望能够使用“$local_part”)

文档似乎暗示变量 $local_part 在 acl 期间可用,但对我来说不是。

在数据ACL中,以及rcpt中

warn condition = true
     log_message = A

warn condition = true
     log_message = $local_part

warn condition = true
     log_message = B

生成这些日志行

2011-03-31 16:12:00 1Q5ODo-0000iy-9q H=.net (.com) [.150] Warning: A
2011-03-31 16:12:00 1Q5ODo-0000iy-9q H=.net (.com) [.150] Warning: B
2011-03-31 16:12:00 1Q5ODo-0000iy-9q <= [email protected] H=.net (.com) [.150] P=esmtp S=679 [email protected] from <[email protected]> for [email protected]
2011-03-31 16:12:01 1Q5ODo-0000iy-9q => [email protected] R=dnslookup T=remote_smtp H=aspmx.l.google.com [.27] C="250 2.0.0 OK"
2011-03-31 16:12:01 1Q5ODo-0000iy-9q Completed

应该有一个额外的日志行“警告:伙计”,但是没有。

有人知道为什么会发生这种情况吗?

答案1

由于数据 ACL 针对整封邮件运行一次,并且一封邮件可以有多个收件人,因此在该上下文中收件人信息根本不可用。如果您需要收件人信息,请使用 RCPT ACL。

摘自 Exim 文档第 42.14 节:

当 MAIL 或 RCPT ACL 或任一 DATA ACL 运行时,将设置包含有关主机和邮件发件人的信息的变量(例如,$sender_host_address 和 $sender_address),这些变量可在 ACL 语句中使用。对于 RCPT(但不是 MAIL 或 DATA),$domain 和 $local_part 是从参数地址设置的。

相关内容