PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Procmail Frage



balduin222
24.02.06, 11:34
Hallo allerseits,

ich hole mit fetchmail Mails von einer POP3 Sammelmailbox ab und filtere sie mit Procmail bevor es weitergeht.

Hier erstmal das, was ich habe in der .procmailrc:


PATH=$HOME/bin:/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail
DEFAULT=/var/spool/mail/admin
LOGFILE=$MAILDIR/procmail.log
VERBOSE=on

:0 c
* ^(To:|Cc:).*christoph
!christoph@localdomain

:0 c
* ^(To:|Cc:).*tom
!tom@localdomain

:0 c
* ^(To:|Cc:).*rse
!rainald@localdomain

:0 c
* ^(To:|Cc:).*bse
!bse@localdomain

:0 c
* ^(To:|Cc:).*michael
!michael@localdomain

:0 c
* ^(To:|Cc:).*hans
!hans@localdomain

:0
* ! ^To:.(christoph|tom|rse|bse|michael|hans)
!muell@localdomain

Mit dem Letzten Filter möche ich bewirken, dass alle Mails, die NICHT an einen dieser User (christoph, tom etc.) gehen, an muell@localdomain gehen.

Die "|" stehen aber für "oder", d.h. wenn eine mail nur an den user "tom" geht, wandert sie trotzdem zusätzlich in muell! Wie kann ich die user denn "UND" verknüpfen? Oder für eine andere Lösung wär ich auch dankbar.

Achso zur Info: der Eintrag
"DEFAULT=/var/spool/mail/admin" nützt mir nichts, weil die Mails an eine andere Maschine weitergeleitet werden.

mfg
balduin222

balduin222
28.02.06, 08:26
Hallo nochmal,

Ich habe die .procmailrc jetzt so abgeändert


PATH=$HOME/bin:/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail
DEFAULT=/var/spool/mail/admin
LOGFILE=$MAILDIR/procmail.log
VERBOSE=on

:0 c
* ^(To:|Cc:).*christoph
!christoph@localdomain

:0 c
* ^(To:|Cc:).*tom
!tom@localdomain

:0 c
* ^(To:|Cc:).*rse
!rainald@localdomain

:0 c
* ^(To:|Cc:).*bse
!bse@localdomain

:0 c
* ^(To:|Cc:).*michael
!michael@localdomain

:0
* ^(To:|Cc:).*hans
!hans@localdomain

:0
* ^To:.*
!muell@localdomain

Das Problem hierbei sind die Kopien der Nachrichten, die mit
:0 c erstellt werden. Die gelangen nämlich auch zur letzten Regel, d.h. ich bin wieder bei Null. Es muss doch irgendwie machbar sein, ein Regel zu erstellen, die besagt, dass sie nur dann angewand wird, wenn keine andere Regel zuvor erfolgreich war. Ich hoffe mir kann jemand helfen :)

Grüße
balduin222

RichieX
28.02.06, 13:49
man procmailrc:


! Invert the condition.


Also bau es doch andersherum auf. Alles was nicht Müll ist wird weiterverarbeitet.

balduin222
01.03.06, 07:47
man procmailrc:


! Invert the condition.


Also bau es doch andersherum auf. Alles was nicht Müll ist wird weiterverarbeitet.

Hallo,

und wie soll ich das anstellen?? So wie es im 1. Post steht funktionierts jedenfalls nicht.

gruß
balduin222

leon
01.03.06, 09:36
Procmail arbeitet Linear. Fängt oben an und hört unten auf

Wie wäre es wenn Du Deine letzte Regel in angepasster Form einfach ganz nach oben schiebst.




Leon

balduin222
02.03.06, 12:36
Procmail arbeitet Linear. Fängt oben an und hört unten auf

Wie wäre es wenn Du Deine letzte Regel in angepasster Form einfach ganz nach oben schiebst.


Jetzt funktioniert es!! Dank auch an RichieX, manchmal muss man das Gehirn einfach nur mal anstubsen damit es weiterarbeitet :ugly:

Das ganze geht jetzt so:


DEFAULT=/dev/null
...
...
:0 c
* ! ^To:.(christoph|tom|rse|bse|michael|hans)
/var/mail/muell

:0 c
* ^(To:|Cc:).*christoph
!christoph@localdomain

:0 c
* ^(To:|Cc:).*tom
!tom@localdomain

:0 c
* ^(To:|Cc:).*rse
!rainald@localdomain

:0 c
* ^(To:|Cc:).*bse
!bse@localdomain

:0 c
* ^(To:|Cc:).*michael
!michael@localdomain

:0 c
* ^(To:|Cc:).*hans
!hans@localdomain

Ich hab mich dann doch dafür entschieden, den anderen MTA von jeglichen Müll zu entlasten, siehe 1. Regel.

Vielen Dank nochmal an alle!!

Grüße
balduin222