Если с некоторых указанных адресов электронной почты приходит входящее письмо, я хочу переслать это письмо на один адрес электронной почты и отправить уведомление на другой.
Я пробовал использовать как 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]