procmail создает новую папку, если она не существует, с именем получателя - PullRequest
0 голосов
/ 22 января 2020

Может кто-нибудь объяснить, как получить адрес для отправки на почту с помощью procmail и извлечь все до @ example.com, а затем создать новую папку с именем?

Пример: я собираю всю почту в одной учетной записи поэтому адреса hello@example.com и welcome@example.com и т. д. находятся в одной учетной записи.

Теперь я хочу создать подпапку с именем получателя, например, привет и добро пожаловать, как только я получу письмо на этот адрес .

Моя проблема в том, что я просто получаю адрес отправителя ... но мне нравится получать адрес получателя.

В этом посте Automati c фильтр procmail на основе имени пользователя кто-то объясняет, как получить адрес отправителя; как я могу приспособить это к моему сценарию?

1 Ответ

0 голосов
/ 23 января 2020

Если ваш 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

...