Это не совсем тривиально, но есть некоторые строительные блоки, которые могут оказаться полезными.
Вы можете определить, получили ли вы уже сообщение, сохранив кеш просмотренных идентификаторов сообщений. Это стандартный метод, более подробно описанный на 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_
ваш_собой не будет совпадать.
person
tripleee
schedule
03.02.2013