2016-04-13 15 views
-1

Spedition Diese in der Variablen EMAIL_ADDR gespeicherten E-Mails an die Adresse weiterleitetWie lokale Kopie der E-Mail speichern, bevor (in procmail)

:0 
* ^From 
! $EMAIL_ADDR 

Ich möchte vor eine lokale Kopie der E-Mail speichern es weitergeleitet wird. Nicht sicher über die Syntax, um das zu tun. Ich weiß, das es nicht tut:

:0 
* ^From 
| tee $FILE 
! $EMAIL_ADDR 

Antwort

0

die Skript Versuchen unten (Es basiert auf man procmailex).

:0 
* ^From 
{ 
    # use lock file to prevent simultaneous deliveries 
    :0 c:tee.lock 
    | tee $FILE 

    :0 
    ! $EMAIL_ADDR 
} 

Statt | tee $FILE Sie direkt benennen

+0

Arbeitete perfekt. – murspieg

+0

... Bis Sie sich wundern, warum "$ FILE" eines Tages durch einen unglücklichen Zufall verdorben wurde, weil Sie nicht gesperrt haben. – tripleee

+0

@tripleee hat Sperrdatei hinzugefügt – AnFi

1
von Mailbox-Datei verwenden kann

Der gemeinsame Ansatz ist es, einen „Klon“ Flagge zu verwenden.

:0c 
! $EMAIL_ADDR 

# Whatever else you want to do with the message 
:0: 
$FILE 

Da jede Nachricht eine ^From hat ich nehme an, Sie waren einfach nicht bewusst, dass die Bedingung optional ist; bedingungslos etwas tun, einfach die Bedingung Regex-Zeile vollständig weglassen. Wenn das nicht der Fall ist, können Sie Gruppe mehr Aktion unter einer Bedingung mit einem Block von Rezepten in Klammern:

:0 
* common condition 
{ 
    :0c 
    ! $EMAIL_ADDR 

    :0: 
    $FILE 
} 

Dies ist eine alte FAQ; http://www.iki.fi/era/procmail/mini-faq.html#c-flag

Sie können mehrere Bedingungen haben, aber nur eine Aktion. Wenn Sie möchten, können Sie tee verwenden, um eine Kopie in einer Datei zu speichern, und dann stattdessen an $SENDMAIL überleiten; aber ich würde das Gegenteil empfehlen, weil die Ausgabedatei tee eine Sperrdatei haben muss, um zu verhindern, dass mehrere Procmail-Prozesse verschachtelte Fragmente mehrerer Nachrichten zur selben Zeit an dieselbe Datei liefern; siehe zum Beispiel http://www.iki.fi/era/procmail/mini-faq.html#locking.