Page 1 of 7

[Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-04-30 22:23
by ffl
Edit: Link zum Changelog: http://www.rootservices.de/spamcheck/changelog.html

Dieses Howto beschreibt, wie man ein System einrichten kann, das ähnlich dem System bei GMX oder web.de täglich eine Mail schickt, in der der Inhalt des Spamordners aufgelistet wird. Ich habe dazu das Skript "mdfrm" von Matthew C. Mead an meine Bedürfnisse angepasst und erweitert. Die Sortierung von Spam in einen "Spamordner" lässt sich pro Account einrichten, ist ohne Aufwand aber auch serverweit nutzbar.

Dieses System wurde auf Debian Woody in Verbindung mit Confixx entwickelt, sollte sich aber ohne weiteres auf andere Linuxe übertragen lassen.

Voraussetzungen:
- funktionierendes Mailsystem mit Spamassassin (in meinem Fall Postfix mit Filterskript für Spamassassin und Anomy Sanitizer)
- Procmail
- Courier-Imapd
- Perl 5.6.1

1.) Einrichten von Postfix für die Auslieferung mit Procmail.
In der Datei /etc/postfix/main.cf folgende Einträge hinzufügen:

Code: Select all

mailbox_command = procmail
local_destination_concurrency_limit = 1
Danach "/etc/init.d/postfix reload".

2.) Einstellungen für den Spamordner vornehmen
In der Datei /etc/courier/imapd folgende Zeile editieren:

Code: Select all

IMAP_EMPTYTRASH=Trash:7,Spam:14,Sent:30
Damit wird erreicht, dass Spammmails älter als 14 Tage automatisch gelöscht werden.

Auch hier tut ein "/etc/init.d/courier-imap reload" das Nötige.

3.) Sortierung für die gewünschten Accounts aktivieren:
Einfach eine Datei .procmailrc in /var/mail/wwwXpY mit folgendem Inhalt anlegen:

Code: Select all

DEFAULT="$HOME/Maildir/"
:0
* ^X-Spam-Status: Yes
$HOME/Maildir/.Spam/
Dateirechte nicht vergessen zu setzen (600 sollte reichen und natürlich ein chown auf den Owner des Mailusers).

Wenn die Sortierung serverweit gewünscht ist, den Eintrag entsprechend in /etc/procmailrc vornehmen.
Von Spamassassin als Spam markierte Mails wandern nun automatisch in den IMAP-Unterordner 'Spam', der auch automatisch angelegt wird falls er nicht existiert.

4.) Die aktuelle Version unter http://www.rootservices.de/spamcheck/ downloaden und in ein beliebiges Verzeichnis entpacken (bei mir ist es in /root/bin).

5.) Anpassungen in "check", "do_check" und "listmaildir" vornehmen. Wichtig hierbei sind $mailhost und $maildomain sowie der Pfad zu den Maildirs und $hours in listmaildir. Der Infotext ist auch beliebig austauschbar ;-)

6.) Den Cronjob anlegen:
crontab -e

Code: Select all

# Spamboxen checken
0 6 * * * /root/bin/spamcheck/do_check
Dieser Eintrag sorgt dafür, dass jeden Morgen um 6 Uhr die Mailboxen der in do_check angegebenen Benutzer auf Spammails geprüft werden und eine Mail an den Benutzer verschickt wird, die in etwa so aussieht:

Code: Select all

Insgesamt befinden sich 59 E-Mails in Ihrem Spam-Ordner.
In den letzen 24 Stunden wurden 48 E-Mails aussortiert:

Datum (mtime)   Absender              Betreff                        Hits
-------------------------------------------------------------------------
13.05.04 21:19  0001085f@hotmail.com  Mail Delivery (failure fabian  14.1
13.05.04 20:56  ferdinand kemper      Fwd: All Drugs Here. V , Xan|  52.9
13.05.04 20:29  Israel Dove           Re:Just take a look            9.5
13.05.04 20:25  Preston               buddhism                       14.8
13.05.04 20:25  Eliza Pearson         bogey kenya                    29.7
13.05.04 19:56  Phillip Blake         Buy Víagra and many other med  29.6
13.05.04 19:14  Adolfo Brunson        Your frsiend sent this eemail  13.3
13.05.04 19:07  melynda woodbury      Fwd: Here's All Meds. V1AgR@   54.7
13.05.04 18:56  theo bocchini         Cxkepafdyg When Re-fi-nance m  7.6
13.05.04 18:45  Jimmie Jarrett        Re:Dirt Cheap Homes embroil    17.1
13.05.04 18:15  Amado                 danielson                      25.1
13.05.04 18:08  Colette               couple                         7.6

...

Bitte pruefen Sie ob evtl. erwuenschte Nachrichten aussortiert wurden.
Dazu loggen Sie sich entweder per IMAP in Ihr Postfach ein oder
verwenden den Webmailer unter http://webmail.maildomain/

Mit freundlichen Gruessen
postmaster@maildomain
Abschließend möchte ich sagen, dass ich mir das Skript innerhalb der letzten 3 Tage zusammengebastelt habe. Es tut was es soll, ist aber quick 'n' dirty. Falls jemand Verbesserungsvorschläge hat, bitte in diesen Thread posten!

Vielleicht hilfts jemandem was :-)

Changelog:
0.3 (13.05.2004)
- Nun werden auch die Punkte angezeigt, die Spamassassin errechnet hat

0.2 (13.05.2004)
- Skript checkt nun mtime der Maildatei statt Date-Header (wird oft gefälscht)
- mittels $hours in listmaildir kann der Zeitraum der Ã?berprüfung festgelegt werden
- die Mails werden nur dann verschickt wenn auch Spam im Verzeichnis ist
- Ausgabe etwas verschönert
- Skripte umgebaut, checkmaildir überprüft ob überhaupt Mails vorhanden sind und listmaildir zeigt dann den Inhalt an -> nötig für den bedingten Mailversand

0.1 (30.04.2004)
erstes Release

Grüße
ffl

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-01 00:14
by nyxus
Klasse Sache. Kleiner Verbesserungsvorschlag: Spam-Mails, die schon einmal gemeldet worden sollten mit einer Trennlinie separiert werden. Dann muß man nicht immer überlegen wie weit man die Liste durchsuchen muß.

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-01 07:57
by ffl
Hi,

ich denke das erübrigt sich eigentlich dadurch, dass zwischen zwei Tagen immer ein Zeilenumbruch eingefügt wird - dadurch sieht man das auch. Werd aber trotzdem mal schauen ob ich das irgendwie einbauen kann.

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-01 11:25
by thorsten
Sehr schön - das Script gefällt mir!

Ich denke aber, dass du es dem User überlassen könntest wie viele Tage er sich anzeigen lassen möchte.
Evtl. lässt sich ja noch ein config Schalter für jede Mailbox anlegen.

Da die Mail eh jeden Tag kommt, reichen IMHO auch 2-3 Tage in der Anzeige.
Ansonsten kannst du bei stark frequentierten Mailboxen u.U. doch eine recht große Mail lostreten...

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-01 12:42
by nyxus
FFL wrote:ich denke das erübrigt sich eigentlich dadurch, dass zwischen zwei Tagen immer ein Zeilenumbruch eingefügt wird - dadurch sieht man das auch.
ok, dann würde ich den Zeilenumbruch aber um 6:00 machen, denn dort wird ja immer die Mail generiert.

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-01 12:46
by ffl
Gute Ideen, ich schau mal :)

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-01 12:50
by captaincrunch
Wäre das Script nicht etwas für unser "Userprojekte unter freien Lizenzen"? Das ganze ließe sich doch bestimmt noch wunderbar ausbauen.

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-01 13:16
by ffl
Stimmt, wenn du möchtest kannst du den Thread da reinschieben - weiß aber nicht wieviel Zeit ich in die Entwicklung stecken werde, da ich am Studieren bin :roll:

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-01 13:51
by chris76
FFL wrote:Stimmt, wenn du möchtest kannst du den Thread da reinschieben - weiß aber nicht wieviel Zeit ich in die Entwicklung stecken werde, da ich am Studieren bin :roll:
Das mit dem verschieben habe ich schon mal erledigt :)

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-07 22:08
by adjustman
feines Teil. Respect. :-D Wie wendet man denn den Befehl in do_check

Code: Select all

./check web9p1
auf mehrere User an? ./check web9p1 web9p2 web9p3 ? Oder wie?

Und wie kann man Confixx-Webmail dazu bewegen, dieses Unterverzeichnis anzuzeigen.

Ich arbeite mit Maildir, nicht mit IMAP. Ansonsten klappt aber alles. Danke.

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-10 20:29
by ffl
Hi,

einfach nacheinander aufrufen. Man könnte auch eine Schleife einbauen aber soweit bin ich noch net ;)

Gruß
ff

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-10 20:44
by adjustman

Code: Select all

./check web9p1
./check web9p2
./check web9p3
SO gehts, habs schon "rausgefunden". :wink: Das Problem ist noch ein anderes. Wenn man alle User checken lässt, bekommen die, die noch keinen .Spamordner haben, eine für sie kryptische Mail. Ich habs so gelöst:

Code: Select all

Zeile 30 orig = print "Something is wrong with "$maildir".  Please check its structure and permissions.n";
ändern in

Code: Select all

print "Es gibt ein Problem mit dem Ordner: "$maildir".n";
print "Evtl. haben Sie noch keinen Spam erhalten.n";

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-10 21:10
by ffl
Danke, werd ich bei Gelegenheit einbauen.

Gruß
ff

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-10 21:22
by adjustman
meine Frage weiter nördlich, mit Confixx-Webmail, kannst Du wohl nicht beantworten? :)

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-10 21:52
by ffl
Oh, sorry.

Nein, kann ich nicht. Ich glaube Confixx-Webmail löst den Zugang über POP3 und da gehen Ordner nicht. Nimm doch einfach Squirrelmail, das kann alles :)

Gruß
ff

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-13 18:41
by tastengott
Tolle Sache!
Sowas hab ich schon lange gesucht.

Eine kleinen Verbesserungsvorschlag hätte ich noch.

Es ist vielleicht ganz günstig, wenn man eine Abfrage einbaut, ob in dem Ordner überhaupt Spam ist.
Ansonsten bekommt man ja auch eine Mail, wenn gar kein Spam da ist.

Gruß,
Marcus

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-13 19:11
by adjustman
FFL wrote:....Nimm doch einfach Squirrelmail ..
Genau. Danke. Funktioniert. :)

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-13 20:04
by ffl
Hi,
die Abfrage ist eingebaut, ich werde irgendwann in den nächsten Tagen eine neue Version bereitstellen, da ich mir erst noch eine Funktion bauen möchte, damit nur noch die 50 neuesten Mails angezeigt werden.

Danke für den Tip!

Edit: neue Version ist bereits fertig! (siehe erstes Posting im Thread)

Gruß
ff

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-16 20:33
by syro
Hi, ich habe über YAST Courier-Imap 2.1.1 installiert und danach Daemon gestartet. Wie kriege ich es nun hin, dass die Postfächer in Ordner verschoben werden ?
Ich nutze Confixx3 wie der Author auch, muss ich noch etwas in die confixx_main.conf reinschreiben, sodass der imap server überhaupt von confixx erkannt wird?

mfg syro

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-17 00:51
by adjustman
FFL wrote:Hi,
Edit: neue Version ist bereits fertig! (siehe erstes Posting im Thread)
Perfect. Gratulation. :-D Jetzt fehlt nur noch eins. :wink:
Wenn in den letzten 24 Std. keine Mails aussortiert wurden, sollte "0" oder "keine" stehen. Geht das? Sicher möglich. If - else Abfrage?

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-17 01:05
by adjustman
syro wrote:
..sodass der imap server überhaupt von confixx erkannt wird?
Nein, IMAP hat dann mit Confixx nix zu tun. Is`n separater WebMailer.

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-17 01:53
by adjustman
FFL wrote:

Code: Select all

IMAP_EMPTYTRASH=Trash:7,Spam:14,Sent:30
Damit wird erreicht, dass Spammmails älter als 14 Tage automatisch gelöscht werden.l
Und das funktioniert? Gibts da ne Cronmeldung, wenn was gelöscht wurde?

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-17 11:54
by oxygen
nope, das mach der courier ohne hilfe von cron.

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-17 13:10
by adjustman
:-D ja, ok. Ich wollt bloss wissen, ob ichs direkt mitkriege.

Re: [Spamcheck] Infomail über den Inhalt des Spamordners

Posted: 2004-05-17 14:31
by syro
wie kann ich einstellen das ordner für die postfächer angelegt werden, hinbezüglich von courier-imap. Ich lege Postfächer in Confixx mit Postfix an und die Fächer werden in /var/spool/mail als Einzeldatei angelegt. Doch wie kann ich es ändern, sodass ein Ordner pro Postfach unter /var/spool/mail angelegt wird.
Order muss ich mit Hilfe von Courier-Imap irgendwas erstellen?

Sorry ich stehe dies bezüglich gerade auf dem Schlauch.

mfg