Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Amavis anlernen

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Gesperrt
theBruce
Newbie
Newbie
Beiträge: 25
Registriert: 25. Nov 2004, 15:07

Amavis anlernen

Beitrag von theBruce »

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
Benutzeravatar
ThomasF
Hacker
Hacker
Beiträge: 578
Registriert: 1. Mai 2004, 12:37
Wohnort: Köln

Beitrag von ThomasF »

Hi,

hast Du vielleicht nur perl-spamassassin installiert ???

Versuch mal :

rpm -ql spamassassin

So long

ThomasF
______________________

Ich bin /root, ich darf das !
theBruce
Newbie
Newbie
Beiträge: 25
Registriert: 25. Nov 2004, 15:07

Beitrag von theBruce »

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
Benutzeravatar
ThomasF
Hacker
Hacker
Beiträge: 578
Registriert: 1. Mai 2004, 12:37
Wohnort: Köln

Beitrag von ThomasF »

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
______________________

Ich bin /root, ich darf das !
theBruce
Newbie
Newbie
Beiträge: 25
Registriert: 25. Nov 2004, 15:07

Beitrag von theBruce »

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
Benutzeravatar
ThomasF
Hacker
Hacker
Beiträge: 578
Registriert: 1. Mai 2004, 12:37
Wohnort: Köln

Beitrag von ThomasF »

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
______________________

Ich bin /root, ich darf das !
theBruce
Newbie
Newbie
Beiträge: 25
Registriert: 25. Nov 2004, 15:07

Beitrag von theBruce »

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
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

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: Alles auswählen

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
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

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: Alles auswählen

#!/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: Alles auswählen

#!/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 :)
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
theBruce
Newbie
Newbie
Beiträge: 25
Registriert: 25. Nov 2004, 15:07

Beitrag von theBruce »

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
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

theBruce hat geschrieben: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
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
theBruce
Newbie
Newbie
Beiträge: 25
Registriert: 25. Nov 2004, 15:07

Beitrag von theBruce »

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
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

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?
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
theBruce
Newbie
Newbie
Beiträge: 25
Registriert: 25. Nov 2004, 15:07

Beitrag von theBruce »

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.
Gesperrt