• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Amavis anlernen

Status
Für weitere Antworten geschlossen.

theBruce

Newbie
Hallo,

ich benutze Amavis in der Konstellation Postfix, Cyrus, Squirrelmail, Amavis,Spamassassin und ClamAv. Das ganze von der Suse9.1

Ich habe schon viel gegoogelt und gelesen, dass man Spamassassin mit dem Programm salearn anlernen kann. Nun finde ich diese Prog aber leider nirgends auf dem System und auch nicht auf der Distribution.

Muss man das irgendwo in Amavis direkt konfigurieren?

Wär schön wenn mir jemand helfen könnte, da im Moment recht viel ham ausgefiltert wird.

lg thebruce
 

ThomasF

Hacker
Hi,

hast Du vielleicht nur perl-spamassassin installiert ???

Versuch mal :

rpm -ql spamassassin

So long

ThomasF
 
OP
T

theBruce

Newbie
Hallo,

ja ich habe nur das perlmodul von spamassassin installiert. Habe mir schon fast gedacht, dass es daran liegt. kann ich spamassasin problemlos nachinstallieren?

Was muss ich dann noch tun damit die Bayes Filter aktiviert werden?

Vielen Dank noch für die schnelle Antwort.

lg theBruce
 

ThomasF

Hacker
Hmm,

also ich würde schon darauf achten das beide Versionen gleich sind ...

Aber ich habe auch schon mit einer neueren perl Version von CPAN gearbeitet ;-)

Ansonsten gibt es keine Probleme mit den Paketen von SuSE ...

Was die genaue Umsetztung angeht gibt es viele schöne Anleitungen *g*

Da Du Imap verwendest kannst Du den Users ja sagen sie sollen für SPAM der false negativ und HAM der false positiv ist jeweils einen eigenen IMAP Ordner anlegen und die Mails entsprechend dort reinkopieren.

Dann kannst Du per Cronjob einmal täglich Dir diese Mails holen und lernen lassen ....

Aber vorsicht ... als erstes mußt Du die Mails als root holen und sa-learn wird dann vom amavis-user ausgeführt also müssen die Mails nach dem kopieren auch von amavis lesbar sein !!!

Auch eine nette Variante ist z.B : Maia Mailguard

http://www.renaissoft.com/maia/

Wenn es einmal läuft eine sehr feine Sache :) da jeder User entscheiden kann, ob und wie seine Mails gescannt werden. (Wichtig wegen Datenschutz und Privatsphere der User ;-)

In der Version die ich hier nutze muß man sich um sa-learn aber dennoch selber kümmern ...


So long

ThomasF
 
OP
T

theBruce

Newbie
Hallo,

also Amavis läuft nur auf dem Relay-Server. Unsere Produktiven Systeme sind zwei Lotus Notes Domino Server die in einem Cluster laufen, somit haben die User keine große Entscheidungsfreiheit ;)

Rechtlich gesehen ist das in Ordnung, da private E-MAil verboten ist und der Personalrat seine Zustimmung gegeben hat.

Ich habe aber trotzdem einigen Usern den Auftrag gegeben, die Spammails die durchschlüpfen zu sammeln. Die HAM MAils habe ich ja schon auf dem Server.

Wie sieht es denn aus wenn die USer die Mails wieder an ein zentrales Postfach weiterleiten und ich die Mails dann aus diesem auslese?
Werden die User dann von SA als Spammer identifiziert?

Gibt es eine Möglichkeit zu prüfen ob Amavis und SA die Bayes DB verwendet oder ob Sie ignoriert wird?

Sorry wenn ich nerve, hab mich aber schon fast zu tode gegoogelt....

lg theBruce
 

ThomasF

Hacker
Hmmm,

also wenn ich das rchtig verstehe ist der Mail-Relay in der DMZ eine Linux-Kiste, also die Konfiguration die Du jetzt ändern möchtest ?!?

Im interen Netz stehen dann die Domino-Server ...

Wenn die User die false positiv an ein anderes Postfach schicken liegen diese also auch wieder auf dem Domino Server, oder nicht ?

Der Domino-Server kontrolliert aber nicht die Mail auf Spam sondern der Relay, also werden die User zumindest nicht als Spammer verurteilt ;-)

Da ich auf dem Relay keinen lokalen Mail-User anlegen würde musst Du die false positiv also irgendwie anders auf den Mail-Relay schaffen um sie dort lernen zu lassen ...

Also z.B ssh ... (falls dies durch Sicherheitspolitik und/oder interne Firewall erlaubt ist)

Dies ist wohl das erste und ernstere Problem, da der Bayes eine ganze Menge lernen muß bis er richtig funktioniert (ich würde aber auf jeden Fall auch false negativ lernen lassen ...)

Ob der Bayes nun wirklich lernt siehst Du eigentlich nur an den Ändernungen (größe, zugriff) in der DB von Bayes (bayes_seen, bayes_toks)
Sonst mußt Du einfach die Bewertung einer Mail durch SA vor und nach dem lernen vergleichen ....

Hoffe das hilft Dir erst mal weiter ..

So long

ThomasF
 
OP
T

theBruce

Newbie
Hallo,

danke erstmal für die Infos, hat mir schon sehr geholfen. Die Vermutung ist schon richtig, der Relay-Server ist ne Linuxkiste die in der DMZ steht.

Ich habe auf der Linuxmaschiene den Cyrus eingerichtet und zwei Konten erstellt, auf das eine gehen die Spammails und auf das andere die Viren.

Ich wollte die Spammails der User einfach wieder an eine Adresse auf dem Mailserver zurücksenden lassen, nur steht dann im Header der Mail ja der Absender der User drin. Deswegen bin ich etwas skeptisch ob SA dann die Userdomain als Spamdomain identifiziert.

lg theBruce
 

oc2pus

Ultimate Guru
der SA kann eine kleine "Statistik" ausgeben:

z.Bsp:
su - vscan -s "/bin/bash" -c "sa-learn --dump magic"

(mein SA läuft unter dem User vscan)

sieht dann so aus:
Code:
0.000          0          3          0  non-token data: bayes db version
0.000          0        767          0  non-token data: nspam
0.000          0       3011          0  non-token data: nham
0.000          0     141649          0  non-token data: ntokens
0.000          0 1037862867          0  non-token data: oldest atime
0.000          0 1101981533          0  non-token data: newest atime
0.000          0 1101982863          0  non-token data: last journal sync atime
0.000          0 1101863905          0  non-token data: last expiry atime
0.000          0    2764800          0  non-token data: last expire atime delta
0.000          0      12020          0  non-token data: last expire reduction count
 

oc2pus

Ultimate Guru
ad "false positives":

wenn du auf deinem cyrus zwei Postfächer einrichtest SPAM und NOSPAM, können deine user ihre false-positives dort hin kopieren.
Diese Postfächer sollten schreibbar für alle sein, aber NICHT lesbar :)

Dann erstellst du dir einen cron Job, der folgendes script aufruft:
Code:
#!/bin/sh
# /usr/local/sbin/myLearnSpam
# written by oc2pus (c) 2004 GPL2
#

#umask 022
PROGNAME=`basename $0`

logger -p mail.info -t $PROGNAME "learning SPAM/NOSPAM ..."

# stop fetchmail
/sbin/rcfetchmail stop

# IMAPClient-Variante (user: vscan)
su - vscan -s "/bin/bash" -c "/usr/local/sbin/myIMAPSpamClient.pl | logger -p mail.info -t $PROGNAME"

logger -p mail.info -t $PROGNAME "finished"

# start fetchmail
/sbin/rcfetchmail start

exit 0

das myIMAPSpamClient.pl Programm sieht dann so aus:
Code:
#!/usr/bin/perl
#
# written by oc2pus (c) 2004 GPL2
#
# Process mail from imap server shared folder 'SPAM' & 'NOSPAM' through
# spamassassin sa-learn
#
# Things to try if it doesn't work
# 1) Turn debug onto 1 and see if you connect to imap server ad get messages
# 2) Check your /etc/mail/spamassassin/local.cf for spamassassin bayes_path settings.
#
# changelog:
#
# 02.11.2004 deleteMsg flag inserted
# 28.10.2004 debug-total flag inserted
# 27.10.2004 --no-rebuild ==> --no-sync
# 27.10.2004 --rebuild    ==> --sync

use Mail::IMAPClient;

print "========================\nmyIMAPClient.pl started\n";
my $debug=0;
my $debug_total=0;
my $deleteMsg=1;
my $salearn;

#####################
# login as user vscan
#####################
my $imap = Mail::IMAPClient->new( Server=>         'your-mail-server:143',
                                  User =>          'vscan',
                                  Password =>      'password-vscan',
                                  Authmechanism => 'CRAM-MD5',
                                  Debug =>         $debug);
if (!defined($imap)) {
        die "IMAP Login Failed";
}
#############################################
# print out the total counts for each mailbox
#############################################
my $spamcount = $imap->message_count('user.SPAM');
print "-------\n", $spamcount, " SPAM to process\n";

my $nonspamcount = $imap->message_count('user.NOSPAM');
print $nonspamcount, " HAM to process\n-------\n";

##########################
# Process the spam mailbox
##########################
$imap->select('user.SPAM');
my @msgs = $imap->search("ALL");
for (my $i=0;$i <= $#msgs; $i++) {
        $imap->message_to_file("/tmp/salearn",$msgs[$i]);

        # execute sa-learn w/data
        if ($debug) {
                $salearn = `/usr/bin/sa-learn -D --no-sync --showdots --spam /tmp/salearn`;
        }
        else {
                $salearn = `/usr/bin/sa-learn --no-sync --spam /tmp/salearn`;
        }
        print "-------\nSPAM: ", $salearn, "\n-------\n" if $debug;

        # delete processed message
        if ($deleteMsg) {
                $imap->delete_message($msgs[$i]);
        }
        unlink("/tmp/salearn");
}
$imap->expunge();
$imap->close();

##############################
# Process the not-spam mailbox
##############################
$imap->select('user.NOSPAM');
my @msgs = $imap->search("ALL");
for (my $i=0;$i <= $#msgs; $i++) {
        $imap->message_to_file("/tmp/salearn",$msgs[$i]);

        # execute sa-learn w/data
        if ($debug) {
                $salearn = `/usr/bin/sa-learn -D --no-sync --showdots --ham /tmp/salearn`;
        }
        else {
                $salearn = `/usr/bin/sa-learn --no-sync --ham /tmp/salearn`;
        }
        print "-------\nNOSPAM: ",$salearn,"\n-------\n" if $debug;

        # delete processed message
        $imap->delete_message($msgs[$i]);
        unlink("/tmp/salearn");
}
$imap->expunge();
$imap->close();

###############
# close session
###############
$imap->logout();

#########################
# integrate learned stuff
#########################
if ($debug_total) {
        my $sarebuild = `/usr/bin/sa-learn -D --sync`;
}
else {
        my $sarebuild = `/usr/bin/sa-learn --sync`;
}
print "-------\nRebuild: ", $sarebuild, "\n-------\nmyIMAPClient.pl finished\n========================\n";

mit deleteMSG und debug kannst du das Verhalten steuern :)
 
OP
T

theBruce

Newbie
Danke dir!!!

Das sieht ja mal sehr gut aus!

Eine Frage noch: wie können meine User Ihre Mails in das Postfach des Cyrus kopieren?

lg theBruce
 

oc2pus

Ultimate Guru
theBruce schrieb:
Eine Frage noch: wie können meine User Ihre Mails in das Postfach des Cyrus kopieren?

du richtest die Postfächer SPAM und NOSPAM mit cyradm ein. Der Besitzer sollte vscan sein. Und die Rechte für diese Postfächer setzt du dann für "alle schreibbar" ....

zum nachlesen:
Managing IMAP - Chapter 9 Cyrus System Administration
http://www.oreilly.com/catalog/mimap/chapter/ch09.html
 
OP
T

theBruce

Newbie
Das ist mir schon klar, nur wie bekomme ich die Mails von der Domino Datenbank in den Cyrus? Du schreibst ich soll Sie kopieren.

Würde auch senden funktionieren? Oder ist das nicht so gut?

lg theBruce
 

oc2pus

Ultimate Guru
wenn deine Mails auf den domino-servern liegen und du sie "zurücksendest" veränderst du die mail ... ==> nicht gut.

also greife ThomasF Vorschlag auf und "kopiere" die mails aus deiner domino-Welt zurück zum Relay Server. Dort "wohnt" die bayes Datenbank.

Evtl könnte es mit forwarding klappen (domino-spam ==> cyrus mailbox)

Wie kommunizieren cyrus und domino-server? Wann werden die mails zum domino Server kopiert? Automatisch oder auf User-Abruf?
 
OP
T

theBruce

Newbie
Im moment kommunizieren die beiden überhaupt nicht. Ich verwende den Cyrus zur Zeit nur um die false negative auszusortieren und an die User weiterzuleiten.

Die Mails werden sofort nach dem Spam-Check an den die Dominoserver weitergeleitet und dort dann in die Userpostfächer einsortiert.
 
Status
Für weitere Antworten geschlossen.
Oben