sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
woida
Posts: 13
Joined: 2004-06-09 14:39
Location: Erlangen

sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by woida » 2004-06-09 14:51

Hallo,
ich hab Exim 4.3 mit virtuellen Nutzern am laufen. Jetzt will ich Spam- und Vierenkontrolle hinzufügen. Zur Spamerkennung will ich Spamassassin nutzen und jedem Nutzer in Verbindung mit IMAP die Möglichkeit geben, die Spamerkennung mittels Bayes-Filter zu vergbessern.
Bei den Möglichkeiten, die ich gefunden habe, ist dies aber nur Systemweit möglich (die Bayes-Datenbank ist für alle Nutzer gleich), da entweder
a) die Mails nur am Anfang gescannt werden (exisan) und somit bei mehreren RCPTs das nicht möglich ist,
oder
b) das beispielsweise AMAVIS-NEW nru eine Datenbank Systemweit mit seinem Benutzername anlegt.
Soweit ich das gelesen habe, ist diese Konfiguration nur mit procmail möglich.

Oder gibt es da andere Möglichkeiten ?

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by dodolin » 2004-06-09 14:56

Oder gibt es da andere Möglichkeiten ?
Ja. Amavis in die Tonne treten, das ist überflüssig.
Baue den spamc Aufruf in einen Router/Transport von Exim ein.
Diese werden für jeden Benutzer separat durchlaufen.

woida
Posts: 13
Joined: 2004-06-09 14:39
Location: Erlangen

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by woida » 2004-06-10 18:47

Danke, für den Tip, so hab ichs jetzt gemacht.
Wenn ein Mail reinkommt, schnappt sich der Spamassassin-Router die Mail, scannt sie und schickt, sie über Exim an den Mysql-Router.

Wenn ich jetzt einen Vierescanner einbau, ist es schlau, wenn ich mir noch einen Router bastle, der nach dem Spamtest eingreift und dann erst an Mysql übergibt?

Die Mails sind nun im Header als Spam (oder nicht Spam) gekennzeichnet. Um die Spams dann in einen eigenen Ordner zu verschieben, ist es wahrscheinlich am einfachsten Exim-Filter zu verwenden.

Muß ich für jetzt für jeden Virtuellen Nutzer eine .forward erstellen?

Bzw. wie lässt sich das automatisieren, wenn ich neue Virtuelle Nutzer hinzufüge?

Bis jetzt hat es gereicht, wenn ich die in der Datenbank eintrage, die Verw
zeichnisse wurden automatisch angelegt.

Mein Hauptproblem:
Wie krieg ich sa-learn dazu, die Datenank des Virtullen Nutzer, die in /home/mail/benutzername/.spamassassin liegt zu nehmen?
Bei Spamc/Spamd hab ich das über einen -u {local_part} (spamc) bzw. bayes_path gelöst.
Aber sa-learn nimmt nur die Datenbank des aufrufenden Nutzers.

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by dodolin » 2004-06-10 21:25

Wenn ich jetzt einen Vierescanner einbau, ist es schlau, wenn ich mir noch einen Router bastle, der nach dem Spamtest eingreift und dann erst an Mysql übergibt?
Kläre zuerst folgende Frage:
Ist es Usern erlaubt, unterschiedliche Antiviren-Policies zu haben oder gilt auf dem Server eine globale No-Viren-Policy?

Ich würde allerdings in jedem Fall zu exiscan-acl raten und weiterhin den Virentest _vor_ dem Spamtest zu machen, um spamd zu entlasten.
Die Mails sind nun im Header als Spam (oder nicht Spam) gekennzeichnet. Um die Spams dann in einen eigenen Ordner zu verschieben, ist es wahrscheinlich am einfachsten Exim-Filter zu verwenden.

Muß ich für jetzt für jeden Virtuellen Nutzer eine .forward erstellen?

Bzw. wie lässt sich das automatisieren, wenn ich neue Virtuelle Nutzer hinzufüge?
Richte dir noch einen Router/Transport (appendfile) ein, der alles mit X-Spam-Tag in das entsprechende Verzeichnis schreibt. Packe diesen Router direkt vor den normalen appendfile Router, der dann die Zustellung handelt.
Mein Hauptproblem:
Wie krieg ich sa-learn dazu, die Datenank des Virtullen Nutzer, die in /home/mail/benutzername/.spamassassin liegt zu nehmen?
Bei Spamc/Spamd hab ich das über einen -u {local_part} (spamc) bzw. bayes_path gelöst.
Aber sa-learn nimmt nur die Datenbank des aufrufenden Nutzers.
Uh, wenn das so ist, dann ist das ein Problem. ;) Keine Ahnung, das muss ich mir selbst erstmal genauer anschauen...

suntzu
RSAC
Posts: 698
Joined: 2002-12-20 19:47
Location: Mönchengladbach

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by suntzu » 2004-06-10 23:53

Hi,

einfach mal so eingeworfen, bisher hatte ich das Problem noch nicht aber wird vielleicht bald kommen, daher:

Gibt es die Möglichkeit auch für qmail/vpopmail? Also sa-learn für die jeden virtuellen Nutzer einzeln?

Gruß,
Dominik, allmählich die Wirkung des Rotweins bemerkend.

phpexpert
Posts: 12
Joined: 2004-06-06 12:19

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by phpexpert » 2004-06-11 14:06

Hab für sa-learn mal n kleines script geschrieben villeicht hilft es dir wenn ja poste mal das es geklappt hat
http://www.rootforum.org/forum/viewtopic.php?t=27214

woida
Posts: 13
Joined: 2004-06-09 14:39
Location: Erlangen

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by woida » 2004-06-11 15:50

Danke für den Hinweis, aber ich habe nur virtuelle Nutzer und keine Systemnutzer, also wird die Zeile in deinem Skript nicht klappen:
/bin/su -s /bin/bash -l $user -c "/usr/bin/sa-learn --spam --norebuild --dir $foo/Maildir/.Learn Spam/cur"

woida
Posts: 13
Joined: 2004-06-09 14:39
Location: Erlangen

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by woida » 2004-06-15 00:11

Mir kommt da grad eine Idee:
Man könnte doch das Skript von phpexpert soweit abändern, daß man zuerst mal zu dem System-Nutzer, dem die Virtuellen Mailbox-Verzeichnisse gehören, wechselt (bei mir wär das Debian-exim).
Dann wechsle ich in sein Home-Verzeichnis (/var/spool/exim4).
Ich erstelle mir einen Softlink und linke das Maildir und das .spamassassin Verzeichnis ins Homedir.
Jetzt lasse ich sa-learn in diesem Homedir laufen.
Also:

Code: Select all

su Debian-exim
ln -s /home/mail/nutzer/maildir/ maildir
ln -s /home/mail/nutzer/.spamassassin/ .spamassassin
sa-learn --ham maildir/cur
sa-learn --spam maildir/.spamassassin/cur
rm -rf maildir
rm -rf .spamassassin
Das mache ich für jeden Virtuellen Nutzer.
Was meint ihr ? Habt ihr eine elegantere Lösung ?

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by dodolin » 2004-06-15 00:49

Und wie sagst du dem spamd, mit welchem User er Mails scannen soll und wo er die Preferences findet?

woida
Posts: 13
Joined: 2004-06-09 14:39
Location: Erlangen

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by woida » 2004-06-15 09:25

Code: Select all

spamd -x --virtual-config-dir=/home/mail/%u -u Debian-exim
wobei die user_prefs im Wurzelverzeichniss des jeweiligen Nutzers liegen muß (zb. /home/mail/nutzer1/user_prefs).

Spamc wird folgendermaßen aufgerufen:

Code: Select all

spamcheck:
                  debug_print = "T: spamassassin_pipe for local_part@$domain"
                  driver = pipe
                  command = /usr/sbin/exim4 -oMr spam-scanned -bS
                  use_bsmtp
                  transport_filter = /usr/bin/spamc -c ${local_part}
                  user = Debian-exim
                  group = Debian-exim
Hab ich aus einem Howto; gefällt mir aber nicht so richtig, da die Nachricht ein zweites Mal nach Exim geschickt wird

wirsing
RSAC
Posts: 611
Joined: 2002-11-20 21:32
Location: Vaihingen und Karlsruhe

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by wirsing » 2004-06-15 15:25

Dann bau doch den transport_filter in den transport ein, der zuletzt die Mail ins Postfach ausliefert.

woida
Posts: 13
Joined: 2004-06-09 14:39
Location: Erlangen

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by woida » 2004-06-15 16:38

Wie soll ich mir das vorstellen ?
Der Spamcheck transporter braucht doch den pipe-driver, beim ausliefern ins Maildir nehm ich den append-driver. Das passt doch nicht zusammen ?

wirsing
RSAC
Posts: 611
Joined: 2002-11-20 21:32
Location: Vaihingen und Karlsruhe

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by wirsing » 2004-06-15 16:45

Laut http://exim.work.de/exim-html-4.20/doc/ ... tml#IX1757 ist transport_filter eine Option für jegliche transports, also auch für appendfile. Wozu also zusätzlich einen pipe-Transport? Oder habe ich da was übersehen?

woida
Posts: 13
Joined: 2004-06-09 14:39
Location: Erlangen

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by woida » 2004-06-15 17:10

Wenn ein Mail reinkommt, dann wird es über eine pipe an spamc übergeben, der es dann wieder an exim übergibt. Anschließend wird es über appendfile an ein Maildir gehängt. Die beiden kann ich doch aufgrund der verschiedenen driver nicht zusammenfassen (also den spamcheck und den maildir_deliver)?

wirsing
RSAC
Posts: 611
Joined: 2002-11-20 21:32
Location: Vaihingen und Karlsruhe

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by wirsing » 2004-06-15 18:00

Der spamcheck-Transport benutzt doch den pipe-driver, um die Nachricht an exim -oMr ... zu übermitteln, nicht an den spamc, oder? spamc ist hier lediglich ein Filter, durch den das Ganze *vorher* geschickt wird. So in etwa:

Code: Select all

      | -> | spamc (als transport_filter)
exim  | <- |______
(pipe)|     ______
      | -> | exim -oMr ...
Kannst du das mit dem transport_filter im maildir_deliver mal ausprobieren oder hängt da schon was dran? Ganz sicher bin ich mir da jetzt auch nicht mehr.

woida
Posts: 13
Joined: 2004-06-09 14:39
Location: Erlangen

Re: sa-learn mit eigener Datenbank für jeden virtueller Nutzer?

Post by woida » 2004-06-17 14:34

Das geht bei mir leider nicht, da ich im Spamcheck Router überprüfe, ob ein X-Spam-Flag im Header ist. Sollte das der Fall sein, gehts weiter zu dem besagten Spamcheck transport, der das Mail wieder nach Exim schleust. Dann wird in dem Spam-Deliver_router getestet, ob S-Spam-Status einen bestimmten Wert hat und dann etweder ins Spam oder ins Posteingangsverzeichnis geschoben. (so wies dodolin gesagt hat)
Was findet ihr nun meine sa-learn Loesung?
Kann man mit exiscan-acl eigentlich auch so wie bei amavis-new mehere Vierenscanner verwenden, oder nur einen?