Re: Exim und Spamassassin: Crash, wenn viele Mails
Hallo Andreas, * Andreas Vögele [EMAIL PROTECTED] [11-06-05 14:12]: Wenn Du das Paket exim4-daemon-heavy installierst, kannst Du Nachrichten mit ClamAV und SpamAssassin auf recht einfache Art und Weise gleich beim Eingang überprüfen. Das ist in der Exim- Dokumentation im Abschnitt Content scanning dokumentiert. [...] danke dir, das funktioniert wunderbar, hab jetzt das alte Konzept über Board geworfen. :) -- Gruss Matthias Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. -- Rich Cook pgpvSH6K3AmHO.pgp Description: PGP signature
Re: Exim und Spamassassin: Crash, wenn viele Mails
Hallo, vielen Dank für eure zahlreichen Tips. Anbei eine erste Zusammenfassung. Ich bin offensichtlich beim Googeln auf die schiefe Bahn geraten. :-) Wenn man nach Debian, spamassassin und exim googelt, landet man sehr schnell auf der Schiene Router/Transporter - vermutlich, weil fast alle HowTos sich noch auf Woody beziehen. Nach meiner bisherigen Erfahrung sollte man das keinesfalls so machen. Der Hinweis auf sa-exim war wirklich Gold wert. Wenn man das installiert, kann man, bereits ohne irgendwas zu konfigurieren, in der Prozessliste sehen, das exim jetzt eine Mail nach der anderen abarbeitet und auf spamassassin wartet. Ich habe jetzt noch ein bisschen Finetuning gemacht: - in der /etc/sa-exim.conf muss man explizit die Einlieferung per 127.0.0.1 erlauben, wenn man fetchmail benutzt. - Ich habe noch das Problem, das einige wenige Mails, die anscheinend völlig eindeutig Spam sind, immer noch bei Einliefung abgelehnt werden. Letzteres Verhalten muss ich noch untersuchen, ein durchlesen der Config-Datei hat erstmal noch nichts ergeben. Zumindest habe ich einen Spamassassin-Score entdeckt, ab dem irgendwas passiert, und den habe ich erstmal auf 99.0 hochgesetzt, in der Hoffnung, dass das einem deaktivieren gleichkommt. Gruß und Danke, Ratti -- -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/ signature.asc Description: This is a digitally signed message part
Re: Exim und Spamassassin: Crash, wenn viele Mails
Hallo Ratti, Joerg Rossdeutscher, 11.06.2005 (d.m.y): 1. Jede Mail soll ankommen. Ich will nichts bouncen, ich will nur taggen. Das ist ein Firmenserver, und jeder Mitarbeiter will/soll über seine Filterregeln selbst bestimmen, ob er Spam löschen/markieren/lesen will. Vielleicht waere dazu der MailScanner etwas fuer Dich (Debian-Oaket: mailscanner), siehe auch http://www.mailscanner.info. Die Inbetriebnahme sit etwas tricky, das Teil funktioniert IMHO aber ganz gut. Prinzip: - Eine exim-Instanz nimmt Mails an (oder auch nicht) und wirft sie in eine Art Eingangsqueue. - Diese ueberwacht der MailScanner, prueft die darin liegenden Mails wahlweise auf Spam (mit dem SpamAssassin) und/oder Viren (mittels eines quasi beliebigen Virenscanners), und legt sie dann in eine Ausgangsqueue... - ...die wiederum von einer zweiten und zustellenden Instanz von exim ueberwacht wird. 2. Wir verwenden ausschliesslich Macintosh- und Linuxsysteme. Ich will keinen Virenfilter, weil ich keinen brauche. Von unseren Kunden kommen gerne mal verseuchte Word-Dokumente, die sollen durchaus ankommen, das macht uns ja keine Probleme. Bedenke aber bitte, dass Deine Benutzer dadurch zu (wenn auch unbewussten) Multiplikatoren werden koennen. Ausserdem kann Dir niemand garantieren, dass nicht schon morgen eine Malware im Ulmauf ist, die auch Macs und Linux-Systeme befallen kann und sich ueber ein Word-Dokument verbreitet bzw. verbreiten laesst. (Natürlich ist dieser Umgang diskutabel, ich würde hier aber gern bei meinem technischen Problem bleiben, statt allgemeinen Umgang mit Makrowürmern zu diskutieren. :-) ) Vielen Dank für deine große Mühe, aber der von dir beschriebene Mailserver macht ganz andere Dinge als ich haben will. Das ist aber Konfigurationssache... ;-) Ich will kein direktes ablehnen bei Einlieferung, kein Greylisting, keinen Virenfilter. Du musst die fuer den Virenscan zusaetzlichen ACL-Zeilen ja nicht aktivieren - genauso, wie Du exim beibringen kannst, die empfangenen Mails at SMTP time nur mittels des SpamAssassin zu scannen, ohne sie ab einem bestimmten Score-Wert abzulehnen. Bei dem beschriebenen Verfahren bedient sich exim der Dienste des SpamAssassin uebrigens ueber den spamd, also ueber ein Socket. Dem spamd kannst Du per Konfiguration sagen, dass nur ein Daemon gestartet werden soll, was die Systemlast auch im Zaum halten sollte. So habe ich es auf meinem Heimserver (PII-400, 640 MB RAM, Mails gelangen per fetchmail auf das System und werden zunaechst mittels AVMailgate von HB EDV, dann via Sophos/sophie und SpamAssassin sowie z.T. von bogofilter gescannt) geloest. Vom Abruf bis zur erfolgten Zustellung meiner Mails dauert es zwar immer ein wenig, aber das System ist auch waehrend der Verarbeitung mehrerer hundert Mails durchaus noch benutzbar. Um Missverstaendnisse zu vermeiden: Du moechtest keine SpamAssassin-Regeln pro Benutzer definieren koennen, oder? Wenn Du Vorlagen fuer Deine exim.conf benoetigst, bin ich gerne behilflich (PM genuegt), Gruss, Christian Schmidt -- Den Wert eines Menschenlebens bestimmt nicht seine Länge, sondern seine Tiefe. -- Gustav Frenssen signature.asc Description: Digital signature
Re: Exim und Spamassassin: Crash, wenn viele Mails
Hallo Andreas, Andreas Vögele, 11.06.2005 (d.m.y): Am 11.06.2005 um 17:07 schrieb Joerg Rossdeutscher: Ich habe deine Mail hier neben dieser offen. Tut mir leid - ich sehe nicht, dass da irgendwo spamassassin oder spamc aufgerufen würde. Die SpamAssassin-Unterstützung ist in Exim 4.50 eingebaut (unter Debian nur in exim4-daemon-heavy). Du musst Exim nur mitteilen, wie Nachrichten an spamd weitergeleitet werden sollen. Dafür gibt es die Option spamd_address, die Entweder eine IP-Adresse oder einen Socket als Parameter haben möchte. Exakt. exim kontaktiert den spamd dann ueber diesen Socket bzw. (wenn er auf einer anderen Maschine laeuft) ueber die angegebene IP-Adresse. Dazu muss der spamd natuerlich auch unter der entsprechenden Adresse bzw. via Socket erreichbar sein. [..] Wie in meiner ersten Mail beschrieben, würde ich für dem spamd einen eigenen Benutzer anlegen, damit mögliche Fehler in SpamAssassin nicht mit privilegierten Rechten ausgenutzt werden können. Zusaetzlich koennte man dann unter dieser UID auch z.B. die Bayes-Features des SpamAssi nutzen und/oder zusaetzliche Ueberpruefungen (Razor, DCC) einbinden und konfigurieren. Gruss, Christian Schmidt -- Es gibt vielerlei Lärm, aber es gibt nur eine Stille. -- Kurt Tucholsky signature.asc Description: Digital signature
Re: Exim und Spamassassin: Crash, wenn viele Mails
Hallo Joerg, Joerg Rossdeutscher, 11.06.2005 (d.m.y): spamd_address = /var/run/spamassassin/spamd.sock Wer verwendet wo diesen Socket? Der spamd, also der Daemon-Part des SpamAssassin. Später erfolgt dann noch eine Auswertung der gesetzten Header, zum Beispiel hier: # Reject spam messages with score over 12, using an extra condition. deny message = This message scored $spam_score points. Congratulations! !acl = acl_whitelist_local_deny sender_domains = !+mm_domains condition = ${if {$message_size}{200K}{yes}{no}} spam = nobody:true condition = ${if {$spam_score_int}{120}{yes}{no}} Um das Ablehnen von Mails zu unterbinden, sollte das Kommentieren dieser Zeilen ausreichen. ...aber ich entdecke einfach nirgendwo die Zeile, die besagt, dass die Mail jetzt an spamassassin übergeben würde. Kannst du mir da einen Tip geben? Siehe spamd_address. ;-) [..] Mir war nicht klar, dass es überhaupt anders geht als mit transport/router, und bei Exiscan klingelt bei mir gar nichts. Anscheinend habe ich zu speziell gegoogelt und dabei ist eine komplette Technologie an mir vorbeigerauscht. Der exiscan-acl-Patch (die mittlerweile in die exim-Sources integriert ist) erweitert exim4 um die Faehigkeit, aus bestimmten ACLs heraus den SpamAssassin sowie diverse Virenscanner anzusprechen und die weitere Behandlung der gescannten Mails von den Resultaten dieser Ueberpruefungen abhaengig zu machen. Gruss, Christian Schmidt -- Der Krieg ist zu langsam für das Medium Fernsehen. -- Peter Slotterdijk signature.asc Description: Digital signature
Re: Exim und Spamassassin: Crash, wenn viele Mails
Am 11.06.2005 um 10:36 schrieb Joerg Rossdeutscher: Hallo, Ich bastle mir einen Mailserver, der Spam herausfiltern soll. [..] Es soll ein exim transport/router sein. Warum möchtest Du Deine Post nicht gleich beim Eingang filtern? Wenn Du das Paket exim4-daemon-heavy installierst, kannst Du Nachrichten mit ClamAV und SpamAssassin auf recht einfache Art und Weise gleich beim Eingang überprüfen. Das ist in der Exim- Dokumentation im Abschnitt Content scanning dokumentiert. Ich bin bei uns so vorgegangen: In /etc/exim4/conf.d/main legst Du eine Datei folgenden Inhalts an: acl_smtp_mime = acl_check_mime av_scanner = clamd:/var/run/clamav/clamd.ctl spamd_address = /var/run/spamassassin/spamd.sock Damit ClamAV reinkommende Post prüfen kann, muss der Benutzer clamav in die Gruppe Debian-exim: Debian-exim:x:103:clamav Nicht vergessen, ClamAV nach dieser Änderung neu zu starten! Außerdem würde ich, falls Dein Mailserver direkt ans Internet angeschlossen ist, Greylisting einsetzen. Dazu installierst Du das Paket greylistd, änderst die Exim-Konfiguration mit greylistd-setup- exim4 add -netmask=24 und trägst in /etc/greylistd/whitelist-hosts ggf. die IP-Adressen, von denen Ihr regelmässig Post bekommt, ein. Zur SpamAssassin-Konfiguration weiter unten mehr. Jetzt erstmal zurück zu Exim: Im acl-Unterverzeichnis solltest Du eine Datei folgenden Inhalts anlegen: acl_check_mime: # Decode MIME parts to disk. This will support virus scanners later. warn decode = default # File extension filtering. deny message = Blacklisted file extension detected condition = ${if match \ {${lc:$mime_filename}} \ {\N(\.exe|\.pif|\.bat|\.scr|\.lnk|\.com)$\N} \ {1}{0}} accept Außerdem musst Du 40_exim4-config_check_data ändern oder, wie in 40_exim4-config_check_data beschrieben, das Makro CHECK_DATA_LOCAL_ACL_FILE festlegen. In diese Datei sollte dann in etwa folgendes: # Reject virus infested messages. deny message = This message contains malware ($malware_name) malware = * # Always add X-Spam-Score header, using SA system-wide settings # (user nobody), no matter if over threshold or not. warn message = X-Spam-Score: $spam_score ($spam_bar) sender_domains = !+mm_domains condition = ${if {$message_size}{200K}{yes}{no}} spam = nobody:true # Add X-Spam-Flag if spam is over system-wide threshold warn message = X-Spam-Flag: YES sender_domains = !+mm_domains condition = ${if {$message_size}{200K}{yes}{no}} spam = nobody # Reject spam messages with score over 12, using an extra condition. deny message = This message scored $spam_score points. Congratulations! !acl = acl_whitelist_local_deny sender_domains = !+mm_domains condition = ${if {$message_size}{200K}{yes}{no}} spam = nobody:true condition = ${if {$spam_score_int}{120}{yes}{no}} Mit obigen Regeln werden alle Nachrichten auf Viren hin untersucht und ggf. abgewiesen. Nach Spam wird nur in Mails, die kleiner als 200KB sind, gesucht. Unerwünschte Werbung, deren Score größer als 12 ist, wird gleich beim Empfang abgewiesen. Der Rest wird mit X-Spam- Flag markiert. Die Zeilen mit sender_domains stellen sicher, dass Nachrichten, die unser lokaler Mailman verteilt, nicht doppelt überprüft werden. Entferne sie, wenn Du Mailman nicht einsetzt und mm_domains in Deiner Exim-Konfiguration nicht gesetzt ist. Falls Du fetchmail verwendest, solltest Du in Deiner fetchmailrc den Fehlercode, mit dem Exim unerwünschte Werbung ablehnt, eintragen: defaults antispam 550 Ein Problem bei der Verwendung von fetchmail ist, dass abgewiesene Nachrichten nicht gebounct werden, sondern im Nirvana verschwinden. Deswegen würde ich den Schwellwert, ab dem Spam abgewiesen wird, nicht zu niedrig ansetzen. Fang am besten wie im obigen Beispiel mit einem Schwellwert von 12 an und senke den Wert, wenn Du sicher bist, dass keine false positives abgewiesen werden. Ein weiteres Problem beim Einsatz von fetchmail ist, dass Exim nur die ersten 10 Nachrichten direkt annimmt. Der Rest landet in der Warteschlange. Exim hat einige Parameter, mit denen man dieses Verhalten anpassen kann. Ich würde aber einfach QUEUEINTERVAL in /etc/ default/exim4 auf 5 Minuten runter setzen. Jetzt zu SpamAssassin: Der spamd läuft unter Debian standardmässig mit root-Rechten. Das würde ich ändern. Du legst dazu einen Benutzer namens spamd und folgende Verzeichnisse an: adduser --system --home /var/lib/spamassassin --group spamd chmod 0777 /var/lib/spamassassin mkdir /var/run/spamassassin chown spamd:spamd /var/run/spamassassin In /etc/default/spamassassin setzt Du ENABLED auf 1 und ersetzt die Variablen OPTIONS und PIDFILE durch folgendes: OPTIONS=--username spamd --helper-home-dir /var/lib/spamassassin -- socketpath /var/run/spamassassin/spamd.sock
Re: Exim und Spamassassin: Crash, wenn viele Mails
Am 11.06.2005 um 14:12 schrieb Andreas Vögele: Warum möchtest Du Deine Post nicht gleich beim Eingang filtern? Was ich zu erwähnen vergessen habe: Wenn Du Post beim Empfang ablehnst, gilt die Post als nicht zugestellt und der versendende MTA muss sich darum kümmern. An sich bist Du also fein raus. Allerdings müssen Deine Nutzer dem streng genommen zustimmen, da Du ihnen Post vorenthältst, auch wenn es sich nur um Viren und unerwünschte Werbung handelt. Meine Meinung dazu: Sch*** auf die Juristen :-) PGP.sig Description: Signierter Teil der Nachricht
Re: Exim und Spamassassin: Crash, wenn viele Mails
Hallo, Am Samstag, den 11.06.2005, 14:12 +0200 schrieb Andreas Vögele: Am 11.06.2005 um 10:36 schrieb Joerg Rossdeutscher: Ich bastle mir einen Mailserver, der Spam herausfiltern soll. [..] Es soll ein exim transport/router sein. Warum möchtest Du Deine Post nicht gleich beim Eingang filtern? Wenn Du das Paket exim4-daemon-heavy installierst, kannst Du Nachrichten mit ClamAV und SpamAssassin auf recht einfache Art und Weise gleich beim Eingang überprüfen. Das ist in der Exim- Dokumentation im Abschnitt Content scanning dokumentiert. Ne, das will ich so nicht, das hatte ich ja schon geschrieben. Der Lesbarkeit wegen hatte ich in meiner Anfrage die Begründungen erstmal weggelassen, ich kann aber nachliefern: 1. Jede Mail soll ankommen. Ich will nichts bouncen, ich will nur taggen. Das ist ein Firmenserver, und jeder Mitarbeiter will/soll über seine Filterregeln selbst bestimmen, ob er Spam löschen/markieren/lesen will. 2. Wir verwenden ausschliesslich Macintosh- und Linuxsysteme. Ich will keinen Virenfilter, weil ich keinen brauche. Von unseren Kunden kommen gerne mal verseuchte Word-Dokumente, die sollen durchaus ankommen, das macht uns ja keine Probleme. (Natürlich ist dieser Umgang diskutabel, ich würde hier aber gern bei meinem technischen Problem bleiben, statt allgemeinen Umgang mit Makrowürmern zu diskutieren. :-) ) Vielen Dank für deine große Mühe, aber der von dir beschriebene Mailserver macht ganz andere Dinge als ich haben will. Ich will kein direktes ablehnen bei Einlieferung, kein Greylisting, keinen Virenfilter. Die Zeilen mit sender_domains stellen sicher, dass Nachrichten, die unser lokaler Mailman verteilt, nicht doppelt überprüft werden. Entferne sie, wenn Du Mailman nicht einsetzt und mm_domains in Deiner Exim-Konfiguration nicht gesetzt ist. Nein, ich verwende sympa, weil mailman immer noch keine offizielle Mysql-Unterstützung hat (Kopfschüttel). Falls Du fetchmail verwendest, solltest Du in Deiner fetchmailrc den Fehlercode, mit dem Exim unerwünschte Werbung ablehnt, eintragen: Nein, der Rechner ist im MX der Domain, hat eine feste IP und bekommt mail ganz regulär eingeliefert. Ein weiteres Problem beim Einsatz von fetchmail ist, dass Exim nur die ersten 10 Nachrichten direkt annimmt. Der Rest landet in der Warteschlange. Exim hat einige Parameter, mit denen man dieses Verhalten anpassen kann. Ich würde aber einfach QUEUEINTERVAL in /etc/ default/exim4 auf 5 Minuten runter setzen. Die 10 Nachrichten habe ich bereits hochgesetzt. Wenn Du nicht allen Benutzern, die auf Deinem Mailserver einen Shell- Zugang haben, vertraust, kannst Du anstelle von 0777 eingeschränktere Berechtigungen verwenden. Ich arbeite nur mit virtuellen Usern. Vielen Dank für deine Mühe! Gruß, Ratti -- -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/ signature.asc Description: This is a digitally signed message part
Re: Exim und Spamassassin: Crash, wenn viele Mails
Am 11.06.2005 um 15:13 schrieb Joerg Rossdeutscher: Vielen Dank für deine große Mühe, aber der von dir beschriebene Mailserver macht ganz andere Dinge als ich haben will. Ich will kein direktes ablehnen bei Einlieferung, kein Greylisting, keinen Virenfilter. Die von mir vorgeschlagene Konfiguration lässt sich problemlos so anpassen, dass sie Deine Anforderungen erfüllt. Du musst nur die av_scanner-Option und die drei deny-ACLs weglassen. Hast Du Dir den Abschnitt Content scanning in der Exim-Dokumentation überhaupt schon mal angeschaut oder erwartest Du, dass hier jemand eine fertige Lösung postet? Ich verstehe beim besten Willen nicht, warum Du, wie es unter Exim 3 üblich war, einen Transport und einen Router zur Spamfilterung einsetzen möchtest. Der von mir beschriebene Vorschlag basiert auf dem in Exim 4.50 offiziell integrierten Exiscan-Patch. Warum möchtest Du eine andere Lösung verwenden? Wo ist der Sinn? Und warum willst Du eigentlich kein Greylisting einsetzen? Greylisting ist momentan das effektivste Mittel zur Spambekämpfung. Und mit einer guten Whitelist gibt es nur bei neuen Kontakten eine Verzögerung, die sich normalerweise verschmerzen lässt. Zudem ist die Integration von greylistd in Exim dank des mitgelieferten Setup- Skripts trivial. PGP.sig Description: Signierter Teil der Nachricht
Re: Exim und Spamassassin: Crash, wenn viele Mails
Hallo, Am Samstag, den 11.06.2005, 15:47 +0200 schrieb Andreas Vögele: Am 11.06.2005 um 15:13 schrieb Joerg Rossdeutscher: Vielen Dank für deine große Mühe, aber der von dir beschriebene Mailserver macht ganz andere Dinge als ich haben will. Ich will kein direktes ablehnen bei Einlieferung, kein Greylisting, keinen Virenfilter. Die von mir vorgeschlagene Konfiguration lässt sich problemlos so anpassen, dass sie Deine Anforderungen erfüllt. Du musst nur die av_scanner-Option und die drei deny-ACLs weglassen. Ich habe deine Mail hier neben dieser offen. Tut mir leid - ich sehe nicht, dass da irgendwo spamassassin oder spamc aufgerufen würde. Deswegen bin ich davon ausgegangen, dass spamassassin von innerhalb ClamAV aufgerufen würde, und das wäre für mich nicht möglich (weil ich ja keinen ClamAV laufen lassen will). Kannst du mir einen Tip geben? Den einzigen Verweis auf Spamassassin in deiner Mail entdecke ich hier: spamd_address = /var/run/spamassassin/spamd.sock Wer verwendet wo diesen Socket? Später erfolgt dann noch eine Auswertung der gesetzten Header, zum Beispiel hier: # Reject spam messages with score over 12, using an extra condition. deny message = This message scored $spam_score points. Congratulations! !acl = acl_whitelist_local_deny sender_domains = !+mm_domains condition = ${if {$message_size}{200K}{yes}{no}} spam = nobody:true condition = ${if {$spam_score_int}{120}{yes}{no}} ...aber ich entdecke einfach nirgendwo die Zeile, die besagt, dass die Mail jetzt an spamassassin übergeben würde. Kannst du mir da einen Tip geben? Ich verstehe beim besten Willen nicht, warum Du, wie es unter Exim 3 üblich war, einen Transport und einen Router zur Spamfilterung einsetzen möchtest. Der von mir beschriebene Vorschlag basiert auf dem in Exim 4.50 offiziell integrierten Exiscan-Patch. Warum möchtest Du eine andere Lösung verwenden? Wo ist der Sinn? Mir war nicht klar, dass es überhaupt anders geht als mit transport/router, und bei Exiscan klingelt bei mir gar nichts. Anscheinend habe ich zu speziell gegoogelt und dabei ist eine komplette Technologie an mir vorbeigerauscht. Danke für den Hinweis, da setze ich dann nochmal an. Ich versichere dir, dass ich mich seit Monaten mit dem Thema auseinandersetze und nix vorgekaut haben will. Nützt ja eh nix - ich muss das Teil hinterher verwalten, und ohne das begriffen zu haben geht es eh in die Hose. Und warum willst Du eigentlich kein Greylisting einsetzen? Greylisting ist momentan das effektivste Mittel zur Spambekämpfung. Und mit einer guten Whitelist gibt es nur bei neuen Kontakten eine Verzögerung, die sich normalerweise verschmerzen lässt. Zudem ist die Integration von greylistd in Exim dank des mitgelieferten Setup- Skripts trivial. Wie ich schon sagte: Weil /jede/ Mail /sofort/ ankommen soll. Es geht hier ausschliesslich um den X-Spam: Yes-Header, anhand dessen jeder Mitarbeiter selbst entscheiden kann, ob er die Mail in AppleMail einfach nur einfärbt, sie verschiebt, löscht oder whatever. Auf eigene Verantwortung. Jede Ablehnung oder Verzögerung ist für uns völlig unakzeptabel. Alles muss sofort zugestellt werden. Hier sitzen Leute, die telefonieren miteinander und hämmern dabei auf den Mail abholen-Knopf, weil sie über das beigelegte PDF sprechen wollen. ...und wenn ich alle Mails bouncen würde, deren angehängte Word-Dokumente einen Wurm enthalten, würde bei uns wohl gar nichts mehr ankommen. :-) Gruß, Ratti -- -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/ signature.asc Description: This is a digitally signed message part
Re: Exim und Spamassassin: Crash, wenn viele Mails
Am 11.06.2005 um 17:07 schrieb Joerg Rossdeutscher: Ich habe deine Mail hier neben dieser offen. Tut mir leid - ich sehe nicht, dass da irgendwo spamassassin oder spamc aufgerufen würde. Die SpamAssassin-Unterstützung ist in Exim 4.50 eingebaut (unter Debian nur in exim4-daemon-heavy). Du musst Exim nur mitteilen, wie Nachrichten an spamd weitergeleitet werden sollen. Dafür gibt es die Option spamd_address, die Entweder eine IP-Adresse oder einen Socket als Parameter haben möchte. Wenn Du SpamAssassin auf dem Mailserver installiert und ENABLED=1 in / etc/default/spamassassin gesetzt hast, damit spamd gestartet wird, verwendest Du folgende Einstellung: spamd_address = 127.0.0.1 Mehr dazu in der Exim-Dokumentation unter URL:http://www.exim.org/ exim-html-4.50/doc/html/spec_40.html#SECT40.2. Wie in meiner ersten Mail beschrieben, würde ich für dem spamd einen eigenen Benutzer anlegen, damit mögliche Fehler in SpamAssassin nicht mit privilegierten Rechten ausgenutzt werden können. Kannst du mir einen Tip geben? Den einzigen Verweis auf Spamassassin in deiner Mail entdecke ich hier: spamd_address = /var/run/spamassassin/spamd.sock Wer verwendet wo diesen Socket? Um Nachrichten nach unerwünschter Werbung zu durchsuchen, erweiterst Du die Access-Control-List in /etc/exim4/conf.d/40_exim4- config_check_data. Diese ACL wird von Exim nach dem Empfang einer Nachricht abgearbeitet. Hier ein Beispiel, das Du vor dem abschliessenden accept einfügen könntest: warn message = X-Spam-Flag: YES !acl = acl_whitelist_local_deny condition = ${if {$message_size}{200K}{yes}{no}} spam = nobody Mit warn und message legst Du fest, dass dem Nachrichtenkopf das Feld X-Spam-Flag: YES hinzugefügt wird, falls es sich bei der zu überprüfenden Nachricht um unerwünschte Werbung handelt. Die Zeile mit acl_whitelist_local_deny sorgt dafür, dass Nachrichten, die von in der Datei /etc/exim4/local_host_whitelist gelisteten Hosts stammen, nicht nach Spam durchsucht werden. In dieser Datei kannst Du zum Beispiel die Adresse Eures lokalen Netzes in der Form 192.168.1.0/24 eintragen. Anstelle dieser Zeile sind auch andere Bedingungen denkbar, z.B. !hosts = +relay_from_hosts. ACLs sind relativ kompliziert, aber in der Exim-Dokumentation findest Du etliche Beispiele. Die nächste Zeile bewirkt, dass nur Nachrichten, die kleiner als 200KB groß sind, überprüft werden. Größere Nachrichten enthalten selten Spam, verursachen bei der Überprüfung mit SpamAssassin aber eine hohe Last, so dass es Sinn macht, sie auszuschliessen. Für den Aufruf von SpamAssassin ist die letzte Zeile verantwortlich. Wenn diese Bedingung wahr ist, wird der mit message festgelegte Kopf in die Nachricht eingefügt. PGP.sig Description: Signierter Teil der Nachricht
Exim und Spamassassin: Crash, wenn viele Mails
Hallo, Ich bastle mir einen Mailserver, der Spam herausfiltern soll. Da ich mit virtuellen Usern herumspiele, möchte ich Spamassassin explizit in exim direkt einbinden und nicht mit forward/procmail/mailfilter arbeiten, und ich will sa auch nicht innerhalb eines anderen Scanners (Amavis oder so) einbinden. Es soll ein exim transport/router sein. Ich habe mir folgende Config zusammengeklaut/gegebaut, die eigentlich auch funktioniert ...aber: Wenn viele Mails gleichzeitig aufschlagen, zum Beispiel weil die Leitung hing, der Provider-Mailserver klemmt oder einfach jemand eine Spam-Attacke loslässt, dann bricht mir die Kiste weg: /usr/sbin/exim4 -bd -q30m \_ /usr/sbin/exim4 -bd -q30m \_ /usr/sbin/exim4 -Mc 1Dg5Gz-s3-OP | \_ /usr/sbin/exim4 -Mc 1Dg5Gz-s3-OP | \_ /usr/sbin/exim -oMr spam-scanned -bS | \_ /usr/sbin/exim4 -Mc 1Dg5Gz-s3-OP | \_ /usr/bin/spamc | \_ [exim4] defunct \_ /usr/sbin/exim4 -Mc 1Dg5H4-s3-Em | \_ /usr/sbin/exim4 -Mc 1Dg5H4-s3-Em | \_ /usr/sbin/exim -oMr spam-scanned -bS | \_ /usr/sbin/exim4 -Mc 1Dg5H4-s3-Em | \_ /usr/bin/spamc | \_ [exim4] defunct \_ /usr/sbin/exim4 -Mc 1Dg5HC-s3-93 | \_ /usr/sbin/exim4 -Mc 1Dg5HC-s3-93 | \_ /usr/sbin/exim -oMr spam-scanned -bS | \_ /usr/sbin/exim4 -Mc 1Dg5HC-s3-93 | \_ /usr/bin/spamc | \_ [exim4] defunct \_ /usr/sbin/exim4 -Mc 1Dg5HD-s3-Fr | \_ /usr/sbin/exim4 -Mc 1Dg5HD-s3-Fr | \_ /usr/sbin/exim -oMr spam-scanned -bS | \_ /usr/sbin/exim4 -Mc 1Dg5HD-s3-Fr | \_ /usr/bin/spamc | \_ [exim4] defunct [Hunderte weitere Einträge...] Ich habe unter /etc/default/spamassassin einen Eintrag, der maximal 5 Children zulassen soll: OPTIONS=--create-prefs --max-children 5 --helper-home-dir ...aber es tut nicht. Ich habe den Verdacht, dass es unklug von mir ist, im exim-Filter eine pipe aufzumachen und dass ich deswegen die 5-Prozesse-Beschränkung selbst kaputtmache. Es gab in der Config einen Kommentar, der besagte, pipes-transporter sein nicht mehr zeitgemäss, ein Risiko, und nur was für Deppen - naja, stimmt anscheinend. :-) Hat jemand einen Tip für mich? Anbei meine exim-config: Router: spamcheck_router: no_verify # check_local_user # When to scan a message : # - it isnt already flagged as spam # - it isnt already scanned condition = ${if and { {!def:h_X-Spam-Flag:} {!eq {$received_protocol}{spam-scanned}}}{1}{0}} driver = accept transport = spamcheck Transporter: spamcheck: debug_print = T: spamcheck driver = pipe command = /usr/sbin/exim -oMr spam-scanned -bS use_bsmtp = true transport_filter = /usr/bin/spamc home_directory = /tmp current_directory = /tmp user = Debian-exim group = Debian-exim log_output = true return_fail_output = true return_path_add = false message_prefix = message_suffix = (/tmp/ wegen virtuellen Usern. Die haben keine Homedir) -- -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/ signature.asc Description: This is a digitally signed message part