1

在更改标题后,我有一个 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
}

现在我只想转发如果不是来自某个地址,但我无法让它工作,不知何故它似乎永远不匹配。

我需要添加什么才能使其正常工作,并且不要两次存储电子邮件(这也是尝试解决方案时发生的情况,我认为因为配方继续进入某种默认行为)

4

1 回答 1

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

于 2012-11-14T08:11:20.900 回答