完全に簡単というわけではありませんが、便利な構成要素がいくつかあります。
見たメッセージ ID のキャッシュを保持することで、メッセージを既に受信したかどうかを検出できます。これは、procmailex
man ページで詳しく説明されている標準的な手法です。同じ手法を使用して、着信メッセージをどこにファイルするかを決定することを提案します。以前に表示されていない場合は、受信トレイに配信します。それ以外の場合は、リストのフォルダーにファイルします。
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_
自分自身は一致しません。