Procmail: Encaminha a mensagem recebida e envia a notificação para outro endereço de e-mail

Procmail: Encaminha a mensagem recebida e envia a notificação para outro endereço de e-mail

Se houver um e-mail recebido de alguns endereços de e-mail especificados, desejo encaminhar esse e-mail para um endereço de e-mail e enviar uma notificação para outro.

Tentei usar o formail e executar o script bash diretamente do procmail, mas não consigo fazer funcionar.

O e-mail deverá ser encaminhado inalterado, mas o e-mail de notificação deverá conter apenas o endereço de e-mail do remetente e o assunto, se possível (não obrigatório).

Aqui está minha última tentativa de receita do 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
}

Meu notify_mail.sh:

#!/bin/bash

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

Responder1

Seu script deve funcionar como tal, mas você não está preenchendo as variáveis FROM​​e SUBJECTe geralmente devecite suas variáveis ​​​​do shell.

Experimente isto:

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"
}

O formail -rtzxTo:idioma é um pouco complicado e é explicado, por exemplo, aqui:https://stackoverflow.com/a/50890026/874188

Observe também as barras invertidas antes dos pontos literais nas expressões regulares.

O script provavelmente deveria printfpreferir echo -e. Não há nada específico do Bash aqui, então também tomei a liberdade de mudar a coisa.

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

informação relacionada