Procmail:转发收到的消息,并将通知发送到另一个电子邮件地址

Procmail:转发收到的消息,并将通知发送到另一个电子邮件地址

如果有来自某些指定电子邮件地址的电子邮件,我希望将该电子邮件转发到一个电子邮件地址,并向另一个电子邮件地址发送通知。

我曾尝试使用 formail 并直接从 procmail 运行 bash 脚本,但无法使其工作。

电子邮件应不加修改地转发,但如果可能的话,通知电子邮件应该只包含发件人的电子邮件地址和主题(不是必需的)。

这是我最近一次尝试 procmail-recipe:

: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

您的脚本应该可以正常工作,但您没有填充FROMSUBJECT变量,并且您通常应该引用你的 shell 变量。

尝试这个:

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 特有的东西,所以我也擅自更改了 shebang。

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

相关内容