Как сделать procmail вперед и BCC тоже - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь переслать электронные письма, соответствующие определенному шаблону, на набор адресов, а BCC - то же электронное письмо на некоторые другие адреса электронной почты.Из моего журнала procmail видно, что все мои правила совпадают, но получатель BCC не получает сообщение.

Соответствующие строки моего .procmailrc выглядят так:

:0fhw
* ^From.*@example.com
* ! ^X-Loop: test
| formail -A "Bcc: $BCCS"

:0fhw
* ^From.*@example.com
* ! ^X-Loop: test
| formail -A "X-Loop: test"

:0
* ^From.*@example.com
* ! $DEST ?? ^$
! $DEST

В тот момент, когда эта часть procmailrc достигнута, переменная BCCS содержит адрес (а) для BCC, а переменная DEST содержит адрес (а) для пересылки.

InВ журнале я вижу что-то вроде этого:

procmail: Match on "^From.*@example.com"
procmail: Match on ! "^X-Loop: test"
procmail: Executing "formail,-A,Bcc: bcctest@somewhere.com"
procmail: Match on "^From.*@example.com"
procmail: Match on ! "^X-Loop: test"
procmail: Executing "formail,-A,X-Loop: test"
procmail: Match on "^From.*@example.com"
procmail: Match on ! "^$"
procmail: Executing "/usr/sbin/sendmail,-oi,user1@somewhere.com,user2@somewhere.com"
procmail: Assigning "LASTFOLDER=/usr/sbin/sendmail -oi user1@somewhere.com,user2@somewhere.com"
procmail: Notified comsat: "michael@:/usr/sbin/sendmail -oi user1@somewhere.com,user2@somewhere.com"

Похоже, что заголовок Bcc: добавляется и электронное письмо пересылается, как я ожидаю.Исходя из моего исследования, я предполагаю, что в BCC в форварде мне нужно добавить заголовок «Bcc:», и sendmail скопирует сообщение на любой указанный адрес и уберет заголовок Bcc: в фактически отправленномЭл. адрес.Однако я не уверен на 100%, так как все вопросы, которые я нашел относительно BCC, касаются людей, желающих активировать BCC при получении входящего сообщения , что невозможно сделать, если сервер-отправитель настроен правильно..

Я что-то не так делаю?

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

formail -A "Bcc: $BCCS" добавляет заголовок "Bcc:".! $DEST пересылает сообщение в "$ DEST", однако ! ... игнорирует заголовок "Bcc:".! ... эффективно работает как Bcc (за исключением того, что заголовок не добавляется и не удаляется).Вместо вашего 3-го правила пересылки вы можете использовать 2 правила, где 1-е работает с копией сообщения (обратите внимание на флаг c в 1-м правиле):

:0 c
* ^From.*@example.com
* ! $BCC ?? ^$
! $BCC

:0
* ^From.*@example.com
* ! $DEST ?? ^$
! $DEST

Альтернативаэто sendmail -t.Он читает получателей из заголовков почты, поэтому он также увидит ваш заголовок "Bcc:" и обработает сообщение соответствующим образом.Я бы не советовал использовать sendmail -t, хотя в целом, если у вас нет очень контролируемой среды, в которой вы уверены, что в сообщениях, которые вам не нужны, нет заголовков «To:», «CC:» и «BCC:»..

Procmail по умолчанию использует sendmail, а не sendmail -t.Итак, вам нужно передать сообщение на sendmail -t, как в

:0
* ^From.*@example.com
* ! $DEST ?? ^$
| sendmail -i -t $DEST
0 голосов
/ 01 июня 2018

Все это сводится к очень распространенному FAQ: заголовки в конечном итоге не решают, куда на самом деле доставляется сообщение.Ваше действие

! $DEST

заставляет Sendmail отправить сообщение на $DEST и нигде больше.

(Вы можете сказать, что Sendmail фактически проверяет заголовки получателей с помощью sendmail -t.)

При таком понимании вы можете фактически удалить рецепт, чтобы добавить явный заголовок Bcc:, и просто изменить последнюю строку на

! $DEST $BCCS

(Вызов дважды formail был бы излишним.иногда полезно и необходимо, но вы можете иметь два параметра -A в одном и том же вызове * 1016. * Но добавление скрытой копии не полезно; Sendmail снова ее удалит.)

С Sendmail -t (который внутри Procmail может использоваться в действии ! -t), заголовки проверяются на To:, Cc:, Bcc: и т. д., и проанализированные адреса копируются получателям конверта исходящего сообщения.Без -t аргументы командной строки копируются как получатели конверта, а заголовки не используются.Когда сообщение находится внутри envelpe, только информация о конверте решает, куда оно отправляется.

...