Procmail: Отправлять почту по умолчанию на доставку

У меня вопрос^^:

Сначала я покажу вам простое правило procmail:

DELIVER="/usr/lib/dovecot/deliver -d $LOGNAME"
DEFAULT="$HOME/Maildir/"
MAILDIR="$HOME/Maildir/"
# deliver spam to spam folder
:0 w
* ^X-Spam-Status: Yes
| $DELIVER -m Spam

# deliver to INBOX and stop
:0 w
| $DELIVER

Теперь мой вопрос, есть ли способ использовать DELIVER как Default, например:

DEFAULT="/usr/lib/dovecot/deliver -d $LOGNAME"

Чтобы вся почта отправлялась на dovecot после проверки правил procmail?

.
0
задан 20 February 2020 в 01:10

1 ответ

К сожалению, нет способа указать канал (или пересылку на другой адрес) в качестве места назначения доставки по умолчанию в Procmail. По сути, лучшее, что вы можете сделать, это добавить этот безусловный рецепт к самому вашему .procmailrc, как вы уже делаете.

:0w
| /usr/lib/dovecot/deliver -d "$LOGNAME"

Кстати, сохранение команды с параметрами в строковой переменной довольно ненадежно, и это трудно или невозможно сделать правильно, когда вам нужно заключить некоторые аргументы в кавычки. Procmail наследует эту проблему и синтаксис оболочки; возможно, см. далее https://mywiki.wooledge.org/BashFAQ/050

Возможный вариант — установить переменную только для указания места назначения в ваших рецептах и ​​доставить только в самый конец. Например, так:

:0
* ^From sender-gossip-l@listserv\.example\.net
{ dest="Gossip" }

:0E
* ^From: majordomo@example\.edu
* ^Subject: \[fnord\]
{ dest="Fnord" }

:0E
... etc

:0w
| /usr/lib/dovecot/deliver -d "$LOGNAME" ${dest+-m "$dest"}

Тщательное использование флага E для каждого рецепта после первого означает, что первый, чьи условия совпадают, выигрывает, как в обычном файле рецептов Procmail; без него побеждает последний подходящий рецепт, и вы всегда будете обрабатывать все рецепты.

0
ответ дан 2 June 2020 в 16:51

Другие вопросы по тегам:

Похожие вопросы: