如果有来自某些指定电子邮件地址的电子邮件,我希望将该电子邮件转发到一个电子邮件地址,并向另一个电子邮件地址发送通知。
我曾尝试使用 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
您的脚本应该可以正常工作,但您没有填充FROM
和SUBJECT
变量,并且您通常应该引用你的 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]