Procmail拆分邮件列表答案



关于邮件列表的常见道德是回答人类,并抄送邮件列表,如下所示:

To: help-volounter@dev.full
Cc: some-program@mailing-list.com
Subject: Re: Describtion of the problem

问题是我收到了此类电子邮件的两份副本(这是预期的)。我想将一份副本procmail到邮件列表mbox,另一份到收件箱mbox。这是简单的方法吗?

这并非完全微不足道,但您可能会发现一些构建块很有用。

您可以通过保留已看到的消息 id:s 的缓存来检测您是否已经收到消息。 这是procmailex手册页中更详细描述的标准技术。 我建议使用相同的技术来决定在哪里提交传入的消息;如果以前从未见过,请发送到您的收件箱;否则,文件到列表的文件夹。

锁定

变得更加复杂,因为您需要在输入formail -D配方之前获取锁定文件。 这可以通过使用LOCKFILE特殊变量来完成。

# Is this message addressed both to yourself and to the list?
:0
* ^TO_you@example.net>
* ^TO_mailing-list@elsewhere.example.org>
{
    # Select regular inbox as default target for this message
    dest=$DEFAULT
    # Lock msgid.lock for exclusive access to msgid.cache
    LOCKFILE=msgid.lock
    # If message-id is already cached, override $dest
    :0
    * H ? formail -D 8192 msgid.cache
    { dest=listbox/ }
    # Release lock
    LOCKFILE=
    # Deliver to $dest
    :0
    $dest
}

这不是100%万无一失的。 例如,如果您得到一个 Bcc: ,您自己的地址将不会在标题中,因此^TO_您自己将不匹配。

最新更新