Ответ на разделенный список рассылки Procmail

Обычная этика в отношении списков рассылки заключается в том, чтобы отвечать человеку и копировать список рассылки, например:

To: [email protected]
Cc: [email protected]
Subject: Re: Describtion of the problem

Проблема в том, что я получаю две копии такого письма (ожидается). Я хотел бы procmail одну копию отправить в список рассылки mbox, а другую — в почтовый ящик mbox. Это простой способ сделать это?


person KAction    schedule 01.02.2013    source источник


Ответы (1)


Это не совсем тривиально, но есть некоторые строительные блоки, которые могут оказаться полезными.

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