关于 exim4 配置语法的问题

关于 exim4 配置语法的问题

当邮件发送到本地域中的一个地址时,我尝试向邮件发件人发送通知([电子邮件保护])。

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.}

相关内容