Wenn von bestimmten E-Mail-Adressen eine E-Mail eingeht, möchte ich diese E-Mail an eine E-Mail-Adresse weiterleiten und eine Benachrichtigung an eine andere senden.
Ich habe versucht, sowohl Formail zu verwenden als auch ein Bash-Skript direkt von Procmail aus auszuführen, aber ich bekomme es nicht zum Laufen.
Die E-Mail sollte unverändert weitergeleitet werden, die Benachrichtigungs-E-Mail sollte jedoch nach Möglichkeit nur die E-Mail-Adresse und den Betreff des Absenders enthalten (keine Voraussetzung).
Hier ist mein neuster Versuch eines Procmail-Rezeptes:
: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
}
Mein notify_mail.sh
:
#!/bin/bash
echo -e "Hi,\n\nNew e-mail has arrived:\n\nFROM: $1\nSUBJECT $2" | mail -s "$2" [email protected]
Antwort1
Ihr Skript sollte so funktionieren, aber Sie füllen die Variablen und nicht aus FROM
. SUBJECT
Sie sollten im AllgemeinenSetzen Sie für Ihre Shellvariablen Zitierungen.
Versuche dies:
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"
}
Die formail -rtzxTo:
Redewendung ist etwas knifflig und wird beispielsweise hier erklärt:https://stackoverflow.com/a/50890026/874188
Beachten Sie auch die Backslashes vor den wörtlichen Punkten in den regulären Ausdrücken.
Das Skript sollte wahrscheinlich printf
over bevorzugen echo -e
. Es gibt hier nichts Bash-spezifisches, also habe ich mir auch die Freiheit genommen, den Shebang zu ändern.
#!/bin/sh
printf "Hi,\n\nNew e-mail has arrived:\n\nFROM: %s\nSUBJECT %s\n" "$1" "$2" |
mail -s "$2" [email protected]