当邮件发送到本地域中的一个地址时,我尝试向邮件发件人发送通知([电子邮件保护])。
Q1:该条件的语法是怎样的(上述不起作用)?:
notify_reply:
driver=accept
domains = +local_domains
senders = ! ^.*-request@.*:\
! ^bounce-.*@.*:\
! ^.*-bounce@.*:\
! ^owner-.*@.*:\
! ^postmaster@.*:\
! ^webmaster@.*:\
! ^listmaster@.*:\
! ^mailer-daemon@.*:\
! ^root@.*:\
! ^noreply@.*
condition = ${if eq {$received_for}{[email protected]}}
no_expn
transport=notify_transport
unseen
no_verify
Q2:如何在配置文件中为“文本”写入多行字符串?:
notify_transport:
driver=autoreply
[email protected]
to=$sender_address
subject=Your mail for
text="Please resend your messasge to
[email protected]
This is a temporary modification."
答案1
Q1:条件对字符串“true”/“yes”或“no”/“false”进行操作,因此您必须使扩展的最终结果成为这些字符串之一。同样,${if
不会返回绝对的真或假,它会评估语句,然后根据语句的真实性返回字符串(您省略了这些字符串)。以下是一些示例:
g3 0 /home/jj33 > exim -be
> ${if eq{string}{string}{true}{false}}
true
> ${if eq{string}{STRING}{true}{false}}
false
> ${if eqi{string}{STRING}{true}{false}}
true
>
需要注意的是,“true”和“false”字符串是任意的,您${if
可以返回任何值,但 true 和 false 对您来说最有用。无论如何,根据您列出的条件,我会将其更改为:
condition = ${if eq {$received_for}{[email protected]}{yes}{no}}
编辑:我认为较新版本的 exim 可能不需要额外的“if-true”和“if-false”部分,所以我可能在这里找错了方向。我认为 $received_for 可能实际上不是您想要的变量,我怀疑在您运行该路由器时它不包含任何内容。相反,请尝试以下操作:
condition = ${if eqi{$local_part@$domain}{[email protected]}}
Q2:有几种方法可以解决这个问题,但我喜欢使用${expand: 运算符:
g3 0 /home/jj33 > exim -be
> ${expand:line1\nline2}
line1
line2
因此,就你的情况而言,情况应该是:
text=${expand:Please resend your messasge to\n\[email protected]\n\nThis is a temporary modification.}