如何在转发之前存储本地电子邮件副本(在procmail中)

时间:2016-04-13 20:30:32

标签: email procmail

这会将电子邮件转发到存储在变量EMAIL_ADDR

中的地址
dashboard

我想先保存电子邮件的本地副本 它转发了。不确定这样做的语法。 我知道这不行:

:0 
* ^From
! $EMAIL_ADDR

2 个答案:

答案 0 :(得分:1)

常见的方法是使用“克隆”标志。

:0c
! $EMAIL_ADDR

# Whatever else you want to do with the message
:0:
$FILE

由于每条消息都有一个^From,我假设你根本不知道条件是可选的;无条件地做某事,只是完全省略条件正则表达式。如果不是这种情况,您可以在大括号中的食谱块条件下对多个操作进行分组:

:0
* common condition
{
   :0c
   ! $EMAIL_ADDR

   :0:
   $FILE
}

这是一个古老的常见问题解答; http://www.iki.fi/era/procmail/mini-faq.html#c-flag

您可以拥有多个条件,但只能执行一个操作。如果您愿意,可以使用tee将副本保存到文件中,然后导管到$SENDMAIL;但我建议不要这样做,因为tee输出文件需要有一个锁文件,以防止多个Procmail进程同时将多个消息的交错片段传递到同一个文件;例如,请参阅http://www.iki.fi/era/procmail/mini-faq.html#locking

答案 1 :(得分:0)

尝试下面的脚本(它基于man procmailex)。

:0 
* ^From
{
   # use lock file to prevent simultaneous deliveries 
   :0 c:tee.lock
   | tee $FILE

   :0
   ! $EMAIL_ADDR
 }

您可以直接使用mailbox-file

的名称,而不是| tee $FILE