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:
также есть регулярное выражение.)