Procmail отправляет дополнительную электронную почту

Я использую procmail для пересылки определенных сообщений "От" на учетную запись Gmail.

/home/user/.procmailrc

:0c
* !^FROM_MAILER
* ^From: .*aaa | bbb | ccc.*
! ^X-Loop: user@gmail\.com
| formail -k -X "From:" -X "Subject:" \
-I "To: user@gmail.com" \
-I "X-Loop: user@gmail.com"
:0
* ^From: .*aaa | bbb | ccc.*
$DEFAULT

Это работает нормально, но на моем почтовом ящике я также получаю "недоставленную" почту

Почтовая система <"^ X-Loop:" @ my-name-server.com> (расширенная от <"^ X-Loop:">): неизвестный пользователь: "^x-loop:"

Как я могу избежать этого?

Я пытался удалить эти письма. Это не лучший способ.

Во всяком случае, это не работает.

:0B * <"\^X-Loop:"@my-name-server.com> 
/dev/null 

1 ответ

Решение

Рецепт содержит несколько синтаксических ошибок, но сообщение об отказе приходит, потому что у вас нет звездочки на одной из строк условия, что делает ее строкой действия.

Общий синтаксис рецепта Procmail:

:0flags       # "prelude", with optional flags
* condition   # optional, can have zero conditions
* condition   # ...
action

action может быть именем почтового ящика или ! затем почтовый ящик назначения для пересылки сообщения или | затем следует оболочка трубопровода.

Итак, ваш первый рецепт "Если не из почтовой программы и не совпадает с:..., вперед ^X-Loop:,

| formail ... строка после этого является просто синтаксической ошибкой и игнорируется, потому что она должна идти после строки прелюдии :0 и (необязательно) некоторые строки условий.

Кроме того, ^From: регулярное выражение явно неправильно. Будет соответствовать From: .*aaa или же bbb (с пробелами с обеих сторон, в любом заголовке, а не только From: заголовок) или ccc,

Наконец, очевидно, что цель состоит в том, чтобы фактически перенаправить полученное сообщение куда-нибудь.

:0c
* ! ^FROM_MAILER
*   ^From:(.*\<)?(aaa|bbb|ccc)
* ! ^X-Loop: user@gmail\.com
| formail -I "X-Loop: user@gmail.com" | $SENDMAIL $SENDMAILFLAGS user@gmail.com

Если вы просто хотите переслать входящее сообщение, другой -X а также -I и конечно -k варианты лишние или неправильные. Если они выполняют что-то, что не имеет отношения к этому вопросу, возможно, вам нужно добавить некоторые или все из них обратно (а также не забудьте извлечь с -X любые новые заголовки, которые вы добавляете -Iкак иначе они будут подавлены; это отстой).

Ваш второй рецепт также является излишним, если у вас не будет больше рецептов Procmail позже в файле, который должен быть специально пропущен для этих сообщений. (Если это так, вам нужно будет исправить From: также есть регулярное выражение.)

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