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]

相關內容