{"id":236,"date":"2009-04-21T20:56:57","date_gmt":"2009-04-21T18:56:57","guid":{"rendered":"http:\/\/www.butschek.de\/?page_id=236"},"modified":"2009-04-21T20:56:57","modified_gmt":"2009-04-21T18:56:57","slug":"procmail-faq","status":"publish","type":"page","link":"https:\/\/www.butschek.de\/procmail-faq\/","title":{"rendered":"Procmail-FAQ"},"content":{"rendered":"

1. Zu diesem FAQ<\/h2>\n

Ich hatte lange Zeit das Problem, dass ich beim \u00c4ndern der Filter grunds\u00e4tzlich entweder riesige Anleitungen oder nichtsnutzige Webseiten lesen musste. Das Problem ist, dass entweder jeder einzelne Parameter beschrieben wird (viel zu komplex) oder eben wichtige Regeln fehlen oder nicht ausreichend erkl\u00e4rt werden. Ich habe mir hier die M\u00fche gemacht, die wichtigsten Punkte in Deutsch zusammen zutragen. Mit diesen Informationen d\u00fcrften die meisten Standard-F\u00e4lle l\u00f6sbar sein.<\/p>\n

\u00dcbrigens, ich wurde darauf hingewiesen, da\u00df ich die Themen nicht in der korrekten Reihenfolge nenne. Ich m\u00f6chte dazu sagen, da\u00df ich dies als FAQ verstehe, nicht als Ersatz f\u00fcr eine vern\u00fcnftige Anleitung.<\/p>\n

2. Weitere Informationen<\/h2>\n

Sollten die Informationen in diesem FAQ nicht gen\u00fcgen, so stehen die MAN-Pages (man procmail, man procmailrc, man procmailex) zur Verf\u00fcgung. Weiterhin gibt es eine Vielzahl von Websites, die sich mit dem Problem ProcMail besch\u00e4ftigen.<\/p>\n

3. Was ist ProcMail?<\/h2>\n

ProcMail ist ein eMail-Filter. Alle f\u00fcr Ihren Account ankommenden Nachrichten werden durch den Filter geschickt, sofern es installiert und korrekt konfiguriert ist. Hier lassen sich die Nachrichten entsprechend der Filterregeln weiterleiten, l\u00f6schen, beantworten oder zustellen.<\/p>\n

4. Was ist ein Receipe?<\/h2>\n

Ein Receipe definiert eine oder mehrere Bedingungen und eine oder mehrere Aktionen, die ausgef\u00fchrt werden, wenn die Bedingung erf\u00fcllt ist. Als Beispiel sei genannt: „Wenn der Empf\u00e4nger xyz@abc.de ist (=Bedingung), dann l\u00f6sche diese Nachricht (=Aktion)“.<\/p>\n

Werden mehrere Bedingungen angegeben, so wird die Aktion ausgef\u00fchrt, wenn alle angegebenen Bedingungen erf\u00fcllt sind. Um jedoch nicht in eine f\u00fcr viele unverst\u00e4ndliche Fachsprache zu verfallen, werde ich in diesem FAQ Receipes einfach als Filterregel bezeichnen.<\/p>\n

5. In welcher Datei stehen die Filterregeln?<\/h2>\n

Im Home-Verzeichnis des entsprechenden Users muss die Datei .procmailrc angelegt werden. In dieser Datei werden die Filterregeln f\u00fcr diesen Benutzer angelegt. Damit dies funktionert, darf weder das Homeverzeichnis (in dem sich die .procmailrc befindet), noch die Datei .procmailrc selbst f\u00fcr andere (Group\/Others) beschreibbar sein, sonst wird die Datei von Procmail abgelehnt. Schlie\u00dflich kann eine von fremden editierbare Datei genutzt werden, um eMails abzufangen.<\/p>\n

Haben Sie eine Domain mit Catch-All, so kommen also alle eMails in Ihr Postfach, damit sind die Filterregeln f\u00fcr alle g\u00fcltig. Legen Sie jedoch weitere Benutzer an, so hat jeder Benutzer ein eigenes Home-Verzeichnis und ein eigenes Postfach. Damit gelten Ihre Regeln f\u00fcr den Benutzer nicht, da er selbst seine Regeln in der Datei .procmailrc in seinem Home-Verzeichnis festlegen muss.<\/p>\n

Bei einigen Providers ist Procmail zwar installiert, doch l\u00e4\u00dft sich aufgrund des Umstands nicht nutzen, da\u00df man nicht in die Home-Verzeichnisse der Mail-User kommt. Beispiel: Der Kunde hat einen Account mit dem Namen „kunde123“, w\u00e4hrend seine Mail-Accounts unter „kunde123p1“, „kunde123p2“, … gespeichert sind. Da der Kunde keinen direkten Zugang zum Home-Verzeichnis von kunde123p2 hat, kann er f\u00fcr diesen auch keine Filer
\nerstellen.<\/p>\n

6. Kann ich meine Regeln kommentieren?<\/h2>\n

Alle Zeilen, die mit einer # beginnen werden von ProcMail ignoriert. Damit ist es m\u00f6glich, Kommentare in der Regeldatei zu vermerken.<\/p>\n

7. Wie lege ich eine Filterregel an?<\/h2>\n

Eine Filterregel beginnt immer mit :0 eventuell gefolgt von Flags. Danach kann eine oder mehrere Bedingungszeilen folgen. Wird keine Bedingungszeile angegeben, so trifft diese Regel auf alle Nachrichten zu. Die letzte Zeile ist die sog. Action-Line, hier wird angegeben, was mit der Nachricht passieren soll, wenn die Regel auf diese Nachricht zutrifft.<\/p>\n

8. Was sind Flags?<\/h2>\n

Nur die wichtigsten Flags werden hier genannt. Bitte beachten Sie, dass die Gross \/ Kleinschrift eine Rolle spielt.<\/p>\n

  H\n  Die Regeln gelten f\u00fcr den Header der Nachricht (Standart)\n\n  B\n  Die Regeln gelten f\u00fcr den Body (eigentliche Nachricht)\n\n  D\n  Unterscheide zwischen Gross- und Kleinschreibung\n\n  c\n  Erzeugt eine Kopie der Nachricht. Die Regel wird auf die\n  Kopie der Nachricht angewendet, die Orginalnachricht wird\n  zugestellt (sofern nicht eine folgende Regel dies\n  verhindert).<\/pre>\n

9. Wie sehen Bedingungszeilen aus?<\/h2>\n

Enth\u00e4lt eine Filterregel keine Bedingungszeile, so gilt die Regel f\u00fcr alle Nachrichten. Andernfalls beginnt die Regel mit einem Stern. Danach folgt eine Bedingung. Hierbei gelten folgende Sonderzeichen:<\/p>\n

^\nAnfang der Zeile\n\n$\nEnde der Zeile\n\n. (Punkt)\nEin beliebiges Zeichen, ausgenommen eine neue Zeile\n\n*\nDas vorhergehende Zeichen kommt 0 mal oder \u00f6fter vor. Beispiel:\nx* heisst also, dass entweder kein Zeichen oder ein oder\nmehrere x?en vorkommen d\u00fcrfen.  \n\n+\nWie der Stern, jedoch muss mindestens ein Zeichen vorkommen\n(nicht keines). \n\n?\nWie der Stern, jedoch muss entweder ein oder kein Zeichen\nvorkommen (nicht mehrere). \n\n[a-x]\nEs darf ein Buchstabe zwischen a und x vorkommen. In\nKombination mit dem Pluszeichen [a-z]+ erwartet diese Bedingung\nalso ein oder mehrere Zeichen des Alphabetes.  \n\n[a-z]*\nPraxisbeispiel: Es d\u00fcrfen beliebig viele Buchstaben vorkommen\n\n[a-z]+\nPraxisbeispiel: Es d\u00fcrfen beliebig viele Buchstaben, mindestens\njedoch ein Buchstabe vorkommen\n\nabc|de\nDiese Bedingung besagt, dass entweder die Zeichenfolge abc oder\ndie Zeichenfolge de vorkommen muss. \n\n(abc)*\nBesagt, dass keinmal, einmal oder mehrmals die Zeichenfolge abc\nvorkommen muss (in der Praxis ein eher un\u00fcbliches Beispiel). \n\n!\nEin Ausrufezeichen vor einer Bedingung kehrt diese um. Sie ist\nalso dann erf\u00fcllt, wenn die nachfolgende Bedingung nicht\nerf\u00fcllt ist.<\/pre>\n

10. Wie wendet man diese Bedingungen in der Praxis an?<\/h2>\n

Sie pr\u00fcfen \u00fcblicherweise den Header der Nachricht auf das Vorkommen bestimmter Zeilen. M\u00f6chten Sie also eine Bedingung erstellen die dann erf\u00fcllt sein soll, wenn der Absender xyz@abc.de war, so sehen sie sich erst einmal eine Nachricht an. Hier werden Sie eine Zeile im Kopf finden, der etwa so aussieht:<\/p>\n

  From: Hans Mustermann <xyz@abc.de><\/pre>\n

Damit sollte Ihre Bedingung klar sein. Sie suchen ein FROM am Zeilenanfang, dann beliebig viele Zeichen gefolgt von der gesuchten eMail-Adresse. Alle Zeichen nach der eMail-Adresse interessieren nicht mehr, da die Regel hier bereits erf\u00fcllt ist.<\/p>\n

  Zeilenanfang: ^\n  Was ist zu Suchen in der neuen Zeile: From\n  Keines, eins oder mehrere beliebige Zeichen: .*\n  Die gesuchte eMail-Adresse: xyz@abc.de\n\n  Die fertige Regel: ^From.*xyz@abc.de<\/pre>\n

Suchen sie eine Bedingung f\u00fcr alle Nachrichten, die nicht an Sie (mustermann@provider.de) gesendet wurden, so benutzen Sie diese Bedingung: Am Zeilenanfang muss To stehen, dann beliebige Zeichen gefolgt von Ihrer eMail-Adresse, jedoch darf diese Regel NICHT zutreffen. Die Bedingung lautet also:<\/p>\n

  !^To.*mustermann@provider.de<\/pre>\n

11. Besondere Zeichen in der Regel<\/h2>\n

Mit den Zeichen < und > k\u00f6nnen Sie pr\u00fcfen, ob eine Nachricht gr\u00f6sser oder kleiner als die angegebene Zahl ist. Somit besteht zum Beispiel die M\u00f6glichkeit, dass alle Nachrichten gr\u00f6sser als 20 MB automatisch gel\u00f6scht werden und der Absender eine Nachricht zur\u00fcck bekommt. Dies ist sinnvoll, wenn Ihr Plattenplatz begrenzt ist.<\/p>\n

12. Was passiert nun mit meiner Nachricht weiter?<\/h2>\n

Das h\u00e4ngt davon ab, welche Action-Line Sie angeben. Die Action-Line ist die letzte Zeile einer Regel. Hier geben Sie an, was mit der Nachricht geschehen soll, nat\u00fcrlich nur, wenn die vorhergehende Regel zutrifft. Folgende M\u00f6glichkeiten ergeben sich hier:<\/p>\n

  mailboxname\n  Geben Sie einfach nur einen Mailboxnamen ein, so wird diese\n  Nachricht in der betreffenden Mailbox abgelegt.\n\n  \/pfad\/dateiname\n  Die Nachricht wird in der angegebenen Datei gespeichert.\n  Existiert die Datei schon, so wird die Nachricht an die Datei\n  angeh\u00e4ngt.  \n\n  ! email@adresse.de\n  Die Nachricht wird an die angegebene eMail-Adresse\n  weitergeleitet. Beachten Sie aber, die Nachricht nicht an\n  eine Adresse zu Ihrem Postfach zu leiten, sonst senden Sie\n  die Nachricht dauerhaft im Kreis.   \n\n  | Programmname\n  Die Nachricht wird an das genannte Programm \u00fcbergeben.\n  Erl\u00e4uterungen siehe n\u00e4chste Frage.\n\n  { ... }\n  Alle Befehle zwischen den Klammern werden ausgef\u00fchrt. Dies\n  entspricht einem Unterprogramm.<\/pre>\n

13. Wozu andere Programme?<\/h2>\n

2 weitere, oft in diesem Zusammenhang ben\u00f6tigten Programme sind Formail und Sendmail. Formail dient zur Bearbeitung der Header einer Nachricht. Dadurch lassen sich Antwortnachrichten generieren. Sendmail dient zum Versenden von eMails. Ich m\u00f6chte hier lediglich die allerwichtigsten Parameter nennen.<\/p>\n

13.1. Formail<\/h3>\n
  -r\n  Erstellt aus dem \u00fcbergebenen Header einen Antwort-Header\n  (Reply). \n\n  -t\n  Formail vertraut dem Absender, dass seine eMail-Adresse im\n  FROM-Feld richtig eingetragen ist. \n\n  -a Kopfzeile\n  Die angegebene Kopfzeile wird der Nachricht angef\u00fcgt, jedoch\n  nur, wenn eine entsprechende Kopfzeile noch nicht existiert.\n\n  -A Kopfzeile\n  Die angegebene Kopfzeile wird der Nachricht angef\u00fcgt, auch\n  wenn eine entsprechende Kopfzeile bereits existiert.\n\n  -i Kopfzeile\n  Die angegebene Kopfzeile wird der Nachricht angef\u00fcgt.\n  Existiert eine entsprechende Kopfzeile schon, so wird Sie\n  umbenannt in \"Old-.....\".  \n\n  -I Kopfzeile\n  Die angegebene Kopfzeile wird der Nachricht angef\u00fcgt.\n  Existiert eine entsprechende Kopfzeile schon, so wird Sie\n  einfach gel\u00f6scht.<\/pre>\n

13.2. Sendmail<\/h3>\n
  -Btyp\n  Typ kann 7BIT oder 8BITMIME sein. Hiermit wird der Typ der\n  Nachricht festgelegt. \n\n  -hx\n  Mit dem h-Parameter legen Sie die Anzahl der Hops fest, die\n  eine Nachricht zur\u00fccklegen darf, bevor sie mit einer\n  Fehlermeldung zur\u00fcckkommt. X ist dabei die Anzahl der Hops.\n  Damit lassen sich Loops (Nachrichten, die immer im Kreis\n  geschickt werden) vermeiden.    \n\n  -t\n  Liesst die Header der \u00fcbergebenen Nachricht und sucht dort\n  nach dem Absender und dem Empf\u00e4nger. BCC-Zeilen werden vor\n  dem Absenden gel\u00f6scht.<\/pre>\n

14. Gibt es auch Beispiele?<\/h2>\n

Klar. Hier werden jetzt einige Regeln ver\u00f6ffentlicht, die wohl die meisten Probleme regeln d\u00fcrfte. Vorweg muss ich sagen, dass ich keinerlei Garantie f\u00fcr diese Regeln \u00fcbernehmen kann.<\/p>\n

Beachten Sie bitte: In der Datei .procmailrc werden mehrere Regeln verarbeitet. Wird die Nachricht durch eine oben stehende Regel verarbeitet, so gelten weiter unten stehende Regeln nat\u00fcrlich nicht mehr f\u00fcr diese Nachricht.<\/p>\n

Weiterleiten aller Nachrichten an xyz@abc.de<\/p>\n

  :0\n  ! xyz@abc.de<\/pre>\n

Weiterleiten aller Nachrichten an xyz@abc.de, wenn die Absenderadresse @web.de enth\u00e4lt<\/p>\n

  :0\n  * ^From.*@web.de\n  ! xyz@abc.de<\/pre>\n

Weiterleiten aller Nachrichten an xyz@abc.de, wenn im Titel „TEST“ vorkommt<\/p>\n

  :0\n  * ^Subject.*TEST\n  ! xyz@abc.de<\/pre>\n

Weiterleiten aller Nachrichten, wenn im Absender „Mailer-Daemon“ und wenn im Titel „Return“ vorkommt<\/p>\n

  :0\n  * ^From.*Mailer-Daemon\n  * ^Subject.*Return\n  ! xyz@abc.de<\/pre>\n

Alle Nachrichten, die im Empf\u00e4nger nicht qwe@asd.de stehen haben sollten mit einer Fehlermeldung zur\u00fcckgeschickt werden. Aber Vorsicht dabei, sowas kann bei Spam-Attacken grauenhaft sein, da der eigene Mailer so tausende Fehlermeldungen erzeugt.<\/p>\n

  :0\n  * !^To.*qwe@asd.de\n  {\n  EXITCODE=67\n  HOST\n  }<\/pre>\n

Alle Nachrichten, die an news@asd.de geschickt werden, in einer Datei speichern.<\/p>\n

  :0\n  * ^To.*news@asd.de\n  ! \/home\/user\/dateiname.txt<\/pre>\n

Alle Nachrichten an spam@asd.de und junk@asd.de sofort l\u00f6schen<\/p>\n

M\u00f6glichkeit 1:<\/p>\n

  :0\n  * ^To.*(spam|junk)@asd.de\n  \/dev\/null<\/pre>\n

M\u00f6glichkeit 2:<\/p>\n

  :0\n  * ^To.*spam@asd.de\n  \/dev\/null\n\n  :0\n  * ^To.*junk@asd.de\n  \/dev\/null<\/pre>\n

Die Datei test.txt zur\u00fccksenden, wenn die Nachricht an
\ntest@asd.de geht<\/p>\n

  :0c\n  * ^TO.*test@asd.de\n  | (formail -r -t -I \"Return-path: <test@asd.de>\"\n    -I \"From: test@asd.de\"\n    -I \"Subject: Titel der Nachricht\";\n    cat \/home\/user\/test.txt) | $SENDMAIL -t<\/pre>\n

Alle Nachrichten, die an verteiler@asd.de gehen an 3
\neMail-Adressen weiterleiten<\/p>\n

  :0\n  * ^TO.*verteiler@asd.de\n  {\n  :0c\n  ! erste@adresse.de\n  :0c\n  ! zweite@adresse.de\n  :0\n  ! letzte@adresse.de\n  }<\/pre>\n

Wichtig hierbei: Alle Adressen bekommen eine Kopie (:0c), nur der Letzte bekommt die originale Nachricht. Der Grund hierf\u00fcr ist klar: W\u00fcrde der Erste Empf\u00e4nger die Originalnachricht bekommen, so w\u00e4re beim zweiten Empf\u00e4nger keine Nachricht mehr da.<\/p>\n

Alternativ kann man mehrere Adresse auch mit einem Leerzeichen getrennt eintragen:<\/p>\n

  :0\n  * ^TO.*verteiler@asd.de\n  :0\n  ! erste@adresse.de zweite@adresse.de letzte@adresse.de<\/pre>\n

Eine Kopie der Nachricht an xyz@abc.de senden, wenn im Titel „Re:“ vorkommt.<\/p>\n

  :0c\n  * ^Subject.*Re:\n  ! xyz@abc.de<\/pre>\n

15. Gibt es auch eine komplette Datei zum runterladen?<\/h2>\n

Nein. Wozu auch? Filter m\u00fcssen ja sowieso immer individuell eingestellt werden. Ich kann nat\u00fcrlich eine Beispiel-Datei ver\u00f6ffentlichen, doch die Filter m\u00fcssen Sie schon selbst anpassen.<\/p>\n

  #\n  # Zuerst werden alle Nachrichten gefiltert, die wie Spam\n  # aussehen. F\u00fcr Nutzer, die eMail nur national nutzen, sind\n  # englische Nachrichten mit \"wichtigem\" Inhalt meist Spam.\n  # Hierbei wird nur die eigentliche Nachricht untersucht.\n  #\n\n  :0B\n  * (important|do not delete|sale|advertise|brandnew)\n  \/home\/dafit\/couldbespam.txt\n\n  #\n  # Nun l\u00f6sche ich alle Nachrichten, die von einem Absender\n  # oder von einem Mailer kommen, von denen ich schon einmal\n  # Spam erhalten habe\n  #\n\n  :0\n  * ^Reply-to.*@juno.com\n  \/dev\/null\n\n  :0\n  * ^Received.*63.36.154.196\n  \/dev\/null\n\n  :0B\n  * gotours@techie.com\n  \/dev\/null\n\n  :0B\n  * signin4@123india.com\n  \/dev\/null\n\n  #\n  # Nachrichten von einem Mailer-Daemon umleiten\n  #\n\n  :0\n  * ^From.*MAILER-DAEMON\n  ! error@butschek.de\n\n  #\n  # Nachrichten an freunde@butschek.de werden an alle meine\n  # Freunde weitergeleitet, jedoch nur, wenn Sie mit meinem\n  # Mailprogramm geschrieben wurden und von meiner Adresse\n  # kamen.\n  #\n\n  :0\n  * ^To.*freunde@butschek.de\n  * ^From.*(mail|webmaster)@butschek.de\n  * ^X-Mailer.*The Bat\n  {\n  :0c\n  ! freund1@xyz.de\n  :0c\n  ! freund2@xyz.de\n  :0c\n  ! freund3@xyz.de\n  :0c\n  ! freund4@xyz.de\n  :0\n  ! freund5@xyz.de\n  }\n\n  #\n  # Eine Nachricht an pgp@butschek.de wird mit meinem PGP-\n  # Schl\u00fcssel beantwortet. Dazu wird die Datei pgp.msg\n  # an den Absender zur\u00fcckgeschickt. Diese muss nat\u00fcrlich\n  # zuvor erstellt werden.\n  #\n  # WICHTIG: Alles von \"(formail\" bis \"$SENDMAIL -t\" muss\n  # in eine Zeile geschrieben werden!\n  #\n\n  :0c\n  * ^TO.*pgp@butschek.de\n  | (formail -r -t\n  -I \"Return-path: <pgp@dafit.de>\"\n  -I \"From: pgp@dafit.de\"\n  -I \"Subject: PGP-Key von webmaster@dafit.de\"\n  -I \"X-Loop: dafit.de\";\n  cat \/home\/dafit\/pgp.msg) | $SENDMAIL -t\n\n  #\n  # Um verschiedene Projekte mit verschiedenen eMail-Adressen\n  # zu versorgen, hat mein Freund Bernd bei mir auch eine\n  # Adresse, die alle Nachrichten an seinen Account bei\n  # seinem Provider weiterleitet. Und zwar alle Adressen,\n  # die mit bernd@butschek.de enden, also auch Adressen wie\n  # test.bernd@butschek.de oder xyz.bernd@butschek.de\n  #\n\n  :0\n  * ^TO.*bernd@butschek.de\n  ! bernd@provider.de\n\n  #\n  # Zum Schluss werden alle noch nicht sortierten Nachrichten\n  # und auch alle Nachrichten an unbekannte Adressen mit\n  # einer Fehlermeldung zur\u00fcckgesendet.\n  #\n\n  :0\n  * !^TO.*(mail|webmaster|mike|michael|butschek)@butschek.de\n  {\n  EXITCODE = 67\n  HOST\n  }\n  \/home\/user\/.procmailrc<\/pre>\n

16. Kann ich auch externe Dateien einbinden?<\/h2>\n

Klar, mit dem Befehl INCLUDERC=\/pfad\/dateiname l\u00e4\u00dft sich eine externe Datei in die Filterdatei .procmailrc einbinden. Wichtig ist jedoch, da\u00df Sie Leserechte auf die externe Datei besitzen.<\/p>\n

Sinnvoll ist dieser Befehl, wenn Sie zum Beispiel eine Spam-Datei f\u00fcr mehrere Benutzer anlegen m\u00f6chten. Jeder Benutzer bindet die \u00f6ffentliche Spam-Filter-Datei ein, wodurch sich diese Datei leicht administrieren l\u00e4\u00dft. Leider ist dies aufgrund des hohen Spam-Aufkommens heutzutage kaum noch m\u00f6glich.<\/p>\n

17. Kann ich ein Logfile erstellen lassen?<\/h2>\n

Zur Fehlersuche ist ein Logfile immer gut. Mit dem Befehl LOGFILE=procmail.log, m\u00f6glichst am Anfang der Datei, l\u00e4\u00dft sich die Datei definieren, in der geloggt wird, in diesem Fall procmail.log im Home-Verzeichnis.<\/p>\n

Die Logfiles sollten jedoch nicht im regul\u00e4rbetrieb mitlaufen, zu gro\u00df ist die Gefahr, da\u00df bei dem heutigen Spam-Aufkommen irgendwann die Platte mit Log-Daten voll ist.<\/p>\n

18. Weitere Links zum Thema Procmail?<\/h2>\n

Etwas dreist, aber dennoch ein guter Tipp:
\nhttp:\/\/www.google.com\/search?q=procmail<\/p>\n

19. Ich habe noch Fragen, an wen kann ich mich wenden?<\/h2>\n

Keine Ahnung :-) Aber fragen Sie doch einfach mich, sofern ich
\nhelfen kann, mache ich das gerne.<\/p>\n

20. Virenschutz<\/h2>\n

Um ausf\u00fchrbare Dateien (meist eh nur Viren) auszufiltern nutze selbst Spamassassin und pr\u00fcfe danach mit Procmail einfach auf den Spamassassin-Header, welcher die Tests enth\u00e4lt. Ausf\u00fchrbare Dateien werden mit dem Test „MICROSOFT_EXECUTABLE“ getaggt.<\/p>\n

Klappt bisher Prima, seitdem habe ich absolut keine Viren mehr erhalten. Nachteil: Mir kann auch niemand mehr ausf\u00fchrbare Dateien oder Bildschirmschoner schicken. Aber gut, damit lebe ist, meine Bekannten kennen ZIP, womit das Problem wieder gel\u00f6st w\u00e4re.<\/p>\n

21. Mail an ein Script weiterleiten<\/h2>\n

Manchmal w\u00fcnscht man sich, bestimmte Mails an ein Script weiterzuleiten, um irgendwelche Dinge auszuf\u00fchren (Mailingliste, etc). Dies ist nicht schwer, zuerst m\u00fcssen wir Procmail sagen, da\u00df die Mail an ein Script geht:<\/p>\n

  :0\n  * ^To.*script@butschek.de\n  | \/home\/butschek\/mailscript.php<\/pre>\n

Nun m\u00fcssen sie noch ein passendes Script schreiben, das die Mail von Standardeingabe liest und weder eine Ausgabe erzeugt noch mit einem Exitcode <> 0 endet.<\/p>\n

Im Beispiel hier ein PHP-Script, da auch diese Frage schon aufkam, wie man bei PHP die Standardeingabe liest. Daher hier ein kleines Beispiel:<\/p>\n

  #! \/usr\/bin\/php4 -q\n  <?\n   # Standardeingabe \u00f6ffnen\n   $stdin = fopen(\"php:\/\/stdin\",\"r\");\n\n   \/*\n   Innerhalb dieses Scripts steht $stdin als\n   normales Dateihandle (read only) zur\n   Verf\u00fcgung.\n   *\/\n\n   # Standardeingabe schliessen\n   fclose($stdin);\n  ?><\/pre>\n

F\u00fcr alle, die noch nie ein Shell-Script in PHP geschrieben haben: Die erste Zeile gibt Linux den Pfad des PHP-Interpreters an (unbedingt n\u00f6tig, evtl Pfad anpassen), die Option q bedeutet, da\u00df PHP der Ausgabe keine Header hinzuf\u00fcgen kann.<\/p>\n

22. Darf ich dieses FAQ kopieren?<\/h2>\n

Ja. Ich habe diese FAQ nicht aus kommerziellem Hintergrund erstellt. F\u00fcr mich war es einfach wichtig, alles \u00fcbersichtlich zu haben. Ich selbst blicke oft auf diese Seite, wenn ich was \u00e4ndern mu\u00df und mal wieder 1\/4 Jahr nichts damit gemacht habe.<\/p>\n

Wer will, darf sich die Seite gern kopieren. Ich w\u00fcrde nur gerne als Autor genannt werden. Da das Procmail-FAQ von mir gelegentlich \u00fcberarbeitet wird, empfehle ich, entweder regelm\u00e4\u00dfig auf die Seite zu gucken, oder einen Link darauf anzubieten.<\/p>\n","protected":false},"excerpt":{"rendered":"

1. Zu diesem FAQ Ich hatte lange Zeit das Problem, dass ich beim \u00c4ndern der Filter grunds\u00e4tzlich entweder riesige Anleitungen oder nichtsnutzige Webseiten lesen musste. Das Problem ist, dass entweder jeder einzelne Parameter beschrieben wird (viel zu komplex) oder eben wichtige Regeln fehlen oder nicht ausreichend erkl\u00e4rt werden. Ich habe mir hier die M\u00fche gemacht, […]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/pages\/236"}],"collection":[{"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/comments?post=236"}],"version-history":[{"count":0,"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/pages\/236\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/media?parent=236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}