Moin,
* David Haller
Am Tue, 14 Oct 2003, Thorsten Haude schrieb: [..]
Lies Dir mal meinen Absatz oben durch, und vergleiche das mit einem ähnlich simplen Beispiel von Procmail. Wer würde Schwierigkeiten haben, 0: als Anfang eines Filters zu verstehen, oder eine Leerzeile als dessen Ende? Antwort: Mehr Leute als hier scheinbar viele annehmen.
Die Leerzeile hat damit genau garnix zu tun, die dient nur der Lesbarkeit :)
Ach.
Ich halte es für nicht angebracht, auf die Frage nach einem Mailfilter reflexartig mit "Procmail!" zu antworten,
Soweit Ack.
Na, das merkt man aber bei den wenigsten hier.
Und noch ein Vergleich: Ich kann mir immer noch nicht merken, ob man bei Procmail ein AND simuliert, indem man zwei Ausdrücke in einen Filter schreibt oder indem man zwei Filter untereinanderschreibt, wobei man den ersten Filter qualifiziert..
:0 # WENN (Beginn einer Regel, ggfs. mit "Flags") * ^Foo # UND (Bedingung 1) * ^Bar # UND (Bedingung 2) ACTION # DANN
Es ist bezeichnend, daß Du Kommentare brauchst, um das Beispiel lesbar zu machen. Das ist bei Maildrop nicht nötig: if (/^Foo/ && /^Bar/) { ACTION }
Für Maildrop gilt: AND: && OR: || So, jetzt versuch das mal wieder zu vergessen.
Wer nicht programmiert (bash, perl, C, C++), der hat sich das nicht gemerkt, zu vergessen ist da nix.
Klar, nur ist erstens die Syntax deutlich einfacher und naheliegender (ich wiederhole: AND: &&, OR: ||). Zweitens ist es bei Procmail ganz und gar und vollkommen ausgeschlossen, einen zweiten Anwendungsbereich zu finden, der Procmail auch nur annähernd ähnelt. Jegliche Investition in Procmail ist für jeden anderen Bereich vollkommen nutzlos. Wer sich dagegen mit Maildrop auseinandersetzt, hat schon eine Grundlage für die Shellprogrammierung, und Du wirst mir sicher zustimmen, daß das ein Vorteil ist.
Ja, das "Oder" ist leider etwas sperrig (via "score") zu realsieren
Natürlich, das versuche ich ja schon die ganze Zeit klarzumachen. Warum behauptest Du aber weiterhin, daß Du die Unterschiede nicht siehst?
hat man aber mal _eine_ Regel, dann ist der Rest einfach.
Meinst Du dank Copy und Paste?
### expires: never * 1^0 ^From.*ob_ok@gmx.net
1^0 = 1, oder? Da ist die Syntax von Procmail ja mal wieder ein Ausbund von Klarheit und Eleganz. (Allerdings muß ich zugeben, daß ich keine Ahnung habe, wie Maildrops Scoring aussieht.)
# viele weitere '* 1^0' und Kommentare geschnippelt
### Mon Jan 27 23:27:40 CET 2003 ### expires: never, lernresistent * 1^0 ^From:.*marcel-stein@t-online.de * 1^0 ^From:.*marcel-stein@arcor.de
# noch mehr '* 1^0' und Kommentare geschnippelt
### AND_ACTION ### lists/suse-linux-${MONTH} ====
Ich verstehe nicht, wie wird da gefiltert? Da werden doch nur Mails mit einer Punktzahl versehen, oder? Gibt es einen Defaultwert, unter dem Mails gedropt werden?
Bei maildrop waere das wohl ein aehnlich (un-)uebersichtliches Konstrukt:
if ( /^From.../ || /From.../ || /From.../ ) { ### AND ACTION ### ... <was auch immer> }
Fast genau so sieht die Syntax aus, nur das Escapen der Zeilenwechsel fehlt, das geht also auch ohne Manpage. Glaubst Du, es wäre bei Procmail möglich gewesen, aus dem Stehgreif die richtige Syntax zu raten? Allerdings ist das nur die ein-paar-Minuten-Lösung, von der ich gesprochen habe, besser würde man Code und Daten trennen: if (lookup(getaddr($FROM), "/home/user/.mutt/killfile")) { log "Found known spammer!" to /dev/null } Das Killfile wäre dann ein einfache Liste von Adressen: - - - Schnipp - - - marcel-stein@t-online.de marcel-stein@arcor.de dem.stein.sein.marcel@yahoo.de marcellus-von-steinheimer@aol.com usw@usw.de - - - Schnapp - - - Jetzt erklär bitte nochmal, inwieweit die beiden Lösungen gleichwertig sind oder warum Procmail hier sonst überzeugen kann.
Und ein nicht unwesentlicher Teil meiner Procmail-Regeln stammt von irgendwo aus dem Netz und ist sehr hilfreich...
Klar, die wirst Du aber schnell übersetzt haben. Maildrops Syntax ähnelt bekannten Sprachen so sehr, daß Du in vielen Fällen sogar auf die Manpage verzichten kannst.
Definiere "bekannte Sprachen".
Habe ich schon. Etwas überspitzt ausgedrückt alles mit 'if'. Du hast jedenfalls oben richtig geraten, also geh einfach im Kopf durch, was Du so kannst.
Zum Abschluß noch ein Beispiel: Was bedeutet wohl bei Maildrop die folgende Anweisung: cc backup
Das gleiche wie:
:0 * <BEDINGUNG> { :0 c backup
:0 <sonstwas> }
Uh, ich hoffe nicht. Was soll das für eine Bedingung sein? Es geht aber eher darum, daß schon rudimentäre Kenntnisse über Email ausreichen, damit man versteht, was die Anweisung macht. Das ist bei Procmail sicher nicht so.
Apropos: wie sieht bei Maildrop eigentlich die Einbindung von _beliebigen_ externen Filtern, die z.B. einen bel. Header setzen fuer alle / bestimmte Bedingungen aus?
Es gibt ein Äquivalent zu formail, falls Du das meinst. Durch einen externen Prozeß durchpipen geht natürlich auch. Thorsten -- There must be a parallel universe where Starbucks sells cocaine in dilute, controlled, taxed doses, but where (crack) caffiene is sniffed and smoked in huge binges, and smuggled in by evil Columbian cartels. - Rogerborg