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

mail aus SPAM ordner löschen per cron

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

Moderator: Moderatoren

Gesperrt
Benutzeravatar
komaii
Member
Member
Beiträge: 174
Registriert: 2. Jul 2004, 12:06
Kontaktdaten:

mail aus SPAM ordner löschen per cron

Beitrag von komaii »

hallo zusammen,

ich habe im cyrus 2 ordner (SPAM,HAM) ind die jeder user einsortieren kann. aulesen lass ich die täglich per cron mit dem befehl: "sa-learn --spam /var/spool/imap/user/SPAM"

gibt es ein möglichkeit diese mails dann automatisch per cron(script) anschliessend löschen zu lassen?
wenn ja wäre dankbar um eine lösung.

lg,
komaii
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

OK, einen Seitenhieb auf die Cyrus nutzer :) ich mach das mit Courier und kann einfach auf die Maildirs zugreifen :P

jetzt zu Dir. entweder hat cyrus ein entsprechendes cmd-line-tool oder aber du könntest mit fetchmail die Mails dieses Ordners lokal abrufen und nach /dev/null leiten

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

*fg* ich setze mir mal einen marker auf diesen Thread.....

ich kann dir dann später die scripte/tools dazu posten.
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
komaii
Member
Member
Beiträge: 174
Registriert: 2. Jul 2004, 12:06
Kontaktdaten:

Beitrag von komaii »

oc2pus hat geschrieben:*fg* ich setze mir mal einen marker auf diesen Thread.....

ich kann dir dann später die scripte/tools dazu posten.
danke das wäre super.

lg,
komaii
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

So hier die versprochenen Scripte von mir. No warranty at all ... it works for me ;)

diese Datei als /etc/cron.daily/learnSpam abspeichern.
chmod +x /etc/cron.daily/learnSpam nicht vergessen !

Code: Alles auswählen

#!/bin/sh

#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
diese Datei als /usr/local/sbin/myIMAPSpamClient.pl abspeichern.
chmod +x /usr/local/sbin/myIMAPSpamClient.pl nicht vergessen!

Code: Alles auswählen

#!/usr/bin/perl
#
# 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=>         'dein.server.xxx:143',
                                  User =>          'vscan',
                                  Password =>      'GEHEIMESPW-VON-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";
Dann brauchst du noch dieses Perl-Modul:
http://search.cpan.org/CPAN/authors/id/ ... 2.9.tar.gz

Downloaden und installieren oder mit cpan2rpm in ein RPM umwandeln.
cpan2rpm bekommst du hier:
http://ftp.gwdg.de/pub/linux/suse/apt/S ... noarch.rpm
http://ftp.gwdg.de/pub/linux/suse/apt/S ... noarch.rpm

Damit werden dann jede Nacht wenn der cron-daily läuft, alle SPAMs gelernt und gelöscht. Die false-positives (HAM) werden ebenfalls gelernt und gelöscht.

Vielleicht schaut TeXpert oder notoxp mal über den perl-code und das script und hat einige Verbesserungen ;)
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
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

oc2pus hat geschrieben: Vielleicht schaut TeXpert [...] mal über den perl-code und das script und hat einige Verbesserungen ;)
lol, ich der kein perl spricht ;) aber ich muss Dich loben, Du schaffst es ja sogar perl-code lesbar aussehen zu lassen :)

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Benutzeravatar
komaii
Member
Member
Beiträge: 174
Registriert: 2. Jul 2004, 12:06
Kontaktdaten:

Beitrag von komaii »

vielen danke "oc2pus" für die scripte.

ich habe das mal ausprobier leider bekomme ich kein login zum server, hier das debug output:
========================
myIMAPClient.pl started
Using Mail::IMAPClient version 2.2.9 and perl version 5.8.3 (5.008003)
Read: * OK lin0101004 Cyrus IMAP4 v2.2.3 server ready

Connect: Received this from readline: 0/OUTPUT/* OK lin0101004 Cyrus IMAP4 v2.2.3 server ready

Sending: 1 AUTHENTICATE CRAM-MD5

Sent 25 bytes
Read: 1 NO no mechanism available
========================

das selbe kommt auch wenn ich auf "PAM" umstelle.
idee was das sein könnte?

lg,
komaii
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

Wie ist dein cyrus konfiguriert ?
Probiere mal PLAIN-Authorisierung ...

ansonsten fehlt dir evtl noch eines dieser AUTH Module ...
apt search cyrus
cyrus-sasl - Implementation of Cyrus SASL API
cyrus-sasl-crammd5 - cyrus-sasl plugin for the CRAMMD5 mechanism
cyrus-sasl-digestmd5 - cyrus-sasl plugin for the DIGESTMD5 mechanism
cyrus-sasl-gssapi - cyrus-sasl plugin for the GSSAPI mechanism
cyrus-sasl-otp - cyrus-sasl plugin for the OTP mechanism
cyrus-sasl-plain - cyrus-sasl plugin for the PLAIN mechanism
cyrus-sasl-saslauthd - The SASL Authentication Server
und eine weitere Fehlerquelle: ist der user vscan als cyrus user angelegt ?
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
komaii
Member
Member
Beiträge: 174
Registriert: 2. Jul 2004, 12:06
Kontaktdaten:

Beitrag von komaii »

ups, ja da fehlte doch noch eins, danke.

jetzt geht auch der login, was jetzt noch nicht funktioniert ist laut log file dies hier:
------------------------
Sent 54 bytes
Read: 1 OK Success (no protection)

Sending: 2 STATUS user.SPAM (MESSAGES)

Sent 31 bytes
Read: 2 NO Mailbox does not exist

Sending: 3 STATUS user.HAM (MESSAGES)

Sent 30 bytes
Read: 3 NO Mailbox does not exist

Sending: 4 SELECT user.SPAM

Sent 20 bytes
Read: 4 NO Mailbox does not exist

Sending: 5 UID SEARCH ALL

Sent 18 bytes
Read: 5 BAD Please select a mailbox first

Sending: 6 CAPABILITY
------------------------

versteh ich nicht ganz weil geben tut es diese user ja wenn ich mich mit "cyradm" einlogge:
localhost> lm
user.HAM (\HasNoChildren)
user.SPAM (\HasNoChildren)

den ganzen debug output mag ich hier nicht pasten aber ich kann ihn gerne zur verfügung stellen.

lg,
komaii
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

darf der user vscan, denn in diesen Mailboxen lesen, schreiben löschen ?
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
komaii
Member
Member
Beiträge: 174
Registriert: 2. Jul 2004, 12:06
Kontaktdaten:

Beitrag von komaii »

ähm ja jetzt schon, hatte "setacl" ganz vergessen.

jetzt funktionierts wunderbar.

danke nomml für die hilfe,

lg,
komaii
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

kleine Anmerkung noch:
1.) wenn du viel SPAM/HAM hast solltest du dieses script zu einem Zeitpunkt wo nix los ist laufen lassen. Es ist nicht gerade das schnellste ...

d.h. aus cron.daily rausnehmen und in /etc/crontab eintragen zu einer Zeit wo nix los ist.

ansonsten fein das es funzt ;)
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
komaii
Member
Member
Beiträge: 174
Registriert: 2. Jul 2004, 12:06
Kontaktdaten:

Beitrag von komaii »

vielen dank,
das hatte ich sowieso vor.
jetzt ist es das erste mal gelaufen und es funktioniert wunderbar auf allen servern :)

schönes weekend noch,

lg,
komaii
Gesperrt