我有一个procmail配方,用于存储电子邮件并在更改标题后转发它:
:0c
${DEFAULT}
:0fhw
| formail -i "From: changedemail@address.com"
:0
* !^From:.*\<donforward@domain\.com\>
{
! other@recipient.net # That's exclamation mark, address to forward to
}
现在我只想转发来自某个地址的不,但我无法让它工作,不知何故它似乎永远不会匹配。
我需要添加什么才能让它发挥作用,同时也不会将电子邮件存储两次(这也是在尝试使用解决方案时发生的情况,我认为因为配方继续存在某种默认行为)
答案 0 :(得分:1)
操作周围的大括号是语法错误。
:0 # is the address spelled correctly? not don_T_forward?
* !^From:.*\<donforward@domain\.com\>
! other@recipient.net
(或者,或者多余,
:0
* !^From:.*\<donforward@domain\.com\>
{
:0
! other@recipient.net
}
另见下文。)
但是,这可以永远不会匹配,因为您更改了上一个食谱中的From:
地址。也许添加一些逻辑来保留原始的From:
,或者毕竟在大括号中组合动作:
:0c
${DEFAULT}
:0
* !^From:.*\<donforward@domain\.com\>
{
:0fhw
| formail -i "From: changedemail@address.com"
:0
! other@recipient.net
}
是的,如果任何食谱未成功传递消息,则默认操作是传递到$DEFAULT
。您可能希望反转:0c
逻辑,以便将原始文件传送到常规收件箱(前提是您没有任何后续配方将其传送到其他地方)并且副本将被转发。
# Drop the $DEFAULT delivery from above
:0c
* !^From:.*\<donforward@domain\.com\>
{
:0fhw
| formail -i "From: changedemail@address.com"
:0
! other@recipient.net
}
对于疑难解答,使用VERBOSE=yes
运行是有意义的。在有问题的配方之前添加此指令,然后在消息到达时检查日志输出。 (更多)请参阅http://porkmail.org/era/mail/procmail-debug.html