如何在转发前存储电子邮件的本地副本(在 procmail 中)
How to store local copy of email before forwarding (in procmail)
这会将电子邮件转发到存储在变量 EMAIL_ADDR
中的地址
:0
* ^From
! $EMAIL_ADDR
我想保存之前电子邮件的本地副本
它被转发了。不确定这样做的语法。
我知道这不行:
:0
* ^From
| tee $FILE
! $EMAIL_ADDR
试试下面的脚本(它基于 man procmailex
)。
:0
* ^From
{
# use lock file to prevent simultaneous deliveries
:0 c:tee.lock
| tee $FILE
:0
! $EMAIL_ADDR
}
您可以直接使用邮箱文件的名称而不是| tee $FILE
常用方法是使用 "clone" 标志。
: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。
这会将电子邮件转发到存储在变量 EMAIL_ADDR
中的地址:0
* ^From
! $EMAIL_ADDR
我想保存之前电子邮件的本地副本 它被转发了。不确定这样做的语法。 我知道这不行:
:0
* ^From
| tee $FILE
! $EMAIL_ADDR
试试下面的脚本(它基于 man procmailex
)。
:0
* ^From
{
# use lock file to prevent simultaneous deliveries
:0 c:tee.lock
| tee $FILE
:0
! $EMAIL_ADDR
}
您可以直接使用邮箱文件的名称而不是| tee $FILE
常用方法是使用 "clone" 标志。
: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。