Procmail: пересылка входящих сообщений и отправка уведомлений на другой адрес электронной почты

Procmail: пересылка входящих сообщений и отправка уведомлений на другой адрес электронной почты

Если с некоторых указанных адресов электронной почты приходит входящее письмо, я хочу переслать это письмо на один адрес электронной почты и отправить уведомление на другой.

Я пробовал использовать как formail, так и запускать bash-скрипт непосредственно из procmail, но мне не удалось заставить их работать.

Электронное письмо следует пересылать без изменений, но в уведомительном письме следует указать только адрес электронной почты отправителя и тему, если это возможно (не обязательно).

Вот моя последняя попытка рецепта procmail:

:0
* ! ^From:.*[email protected]
* ! ^From:.*[email protected]
* ! ^From:.*[email protected]
{ }
:0 E
{
  :0 c
  ! [email protected]

  :0 h
  | /usr/local/bin/notify_mail.sh $FROM $SUBJECT
}

Мой notify_mail.sh:

#!/bin/bash

echo -e "Hi,\n\nNew e-mail has arrived:\n\nFROM: $1\nSUBJECT $2" | mail -s "$2" [email protected]

решение1

Ваш скрипт должен работать таким образом, но вы не заполняете переменные FROMи SUBJECT, и вы должны, как правило,заключите переменные оболочки в кавычки.

Попробуй это:

0
* ! ^From:.*email@example\.org
* ! ^From:.*support@example\.com
* ! ^From:.*santa@northpole\.no
{ }
:0 E
{
  :0 c
  ! [email protected]

  FROM=`formail -rtzxTo:`
  SUBJECT=`formail -zxSubject:`
  :0 h
  | /usr/local/bin/notify_mail.sh "$FROM" "$SUBJECT"
}

Эта formail -rtzxTo:идиома немного сложна и объясняется, например, здесь:https://stackoverflow.com/a/50890026/874188

Обратите внимание также на обратные косые черты перед точками в регулярных выражениях.

Скрипт, вероятно, должен предпочесть printf. echo -eЗдесь нет ничего специфичного для Bash, поэтому я также взял на себя смелость изменить шебанг.

#!/bin/sh
printf "Hi,\n\nNew e-mail has arrived:\n\nFROM: %s\nSUBJECT %s\n" "$1" "$2" |
mail -s "$2" [email protected]

Связанный контент