Если ваш MTA предоставляет эту информацию, например, в заголовке Delivered-To:
, это достаточно просто извлечь.
:0:
* ^Delivered-to:[ ]*<?\/[^ <>@ ]+
$MATCH
Как обычно в Procmail, пробел внутри [ ]
должен состоять из одного пробела и один буквенный символ табуляции. Регулярное выражение [^ <>@ ]+
соответствует как можно большему числу символов, которые не являются пробелами, <
, >
, @
или табуляцией.
Это извлекает текст из заголовка Delivered-To:
до @
и сохраняет его в MATCH
с помощью специального токена \/
; затем значение этой переменной используется в качестве папки назначения для сохранения сообщения.
Неясно, намерены ли вы в качестве «папки» обозначать почтовый ящик (такой как файл mbox Беркли) или каталог. В последнем случае удалите второе двоеточие и, возможно, добавьте mkdir
, если вы хотите создать структуру maildir, если она еще не существует.
Помните , что это чрезвычайно хрупкий В общем случае не существует надежного, портативного способа убедиться, что адрес получателя представлен таким образом. Если входящее сообщение было Bcc:
обработано как welcome
, так и hello
, скорее всего, вы ничего не получите, или два сообщения, или только одно или другое. Это общий FAQ; см. также http://www.iki.fi/era/procmail/mini-faq.html#bcc