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 SUBJECT
e 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 printf
preferir 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]