Seit einiger Zeit haben sich bedauerlicherweise die Spam-Mails gemehrt, die in meinem Postfach landen. Mit dem Umzug zu Uberspace, war es also nötig hier schnell zu handeln und einen Spamschutz einzurichten.
Um den Spamschutz zu aktivieren habe ich drei Tools lt. Dokumentation von Uberspace eingesetzt, maildrop, DSPM und SpamAssassin. Dabei wurde der Schutz vorerst nur für mein primäres Postfach (info[at]), welches auf Uberspace jedoch ein virtuelles ist, angelegt.
maildrop
maildrop dient hier zur Filterung und Verteilung der Mails.
Zuerst musste ich eine .qmail-info mit dem Inhalt „|maildrop“ erstellen.
1 |
nano /home/intux/.qmail-info |
Dazu wird folgender Eintrag gesetzt und die Datei gespeichert.
1 |
|maildrop |
Die Filterregeln werden in die noch nicht existierende Datei .mailfilter geschrieben.
1 |
nano .mailfilter |
In meinem Fall verwende ich diese Regeln, die auch am Anfang ausreichen sollten und auch so auf andere virtuelle Postfächer problemlos übertragbar sind.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
MAXSPAMSCORE="3" logfile "$HOME/mailfilter.log" # set default Maildir MAILDIR="$HOME/Maildir" # check if we're called from a .qmail-EXT instead of .qmail import EXT if ( $EXT ) { # does a vmailmgr user named $EXT exist? # if yes, deliver mail to his Maildir instead CHECKMAILDIR = `dumpvuser $EXT | grep '^Directory' | awk '{ print $2 }'` if ( $CHECKMAILDIR ) { MAILDIR="$HOME/$CHECKMAILDIR" } } # check folder structure `test -d "$MAILDIR/.0 Spamfilter"` if( $RETURNCODE == 1 ) { `maildirmake "$MAILDIR/.0 Spamfilter"` } `test -d "$MAILDIR/.0 Spamfilter.als Spam erkannt"` if( $RETURNCODE == 1 ) { `maildirmake "$MAILDIR/.0 Spamfilter.als Spam erkannt"` } `test -d "$MAILDIR/.0 Spamfilter.als Spam lernen"` if( $RETURNCODE == 1 ) { `maildirmake "$MAILDIR/.0 Spamfilter.als Spam lernen"` } `test -d "$MAILDIR/.0 Spamfilter.als Ham lernen"` if( $RETURNCODE == 1 ) { `maildirmake "$MAILDIR/.0 Spamfilter.als Ham lernen"` } # show the mail to SpamAssassin xfilter "/usr/bin/spamc" # now show the mail to DSPAM xfilter "/package/host/localhost/dspam/bin/dspam --mode=teft --deliver=innocent,spam --stdout" # if whitelisted by DSPAM just deliver if ( /^X-DSPAM-Result: Whitelisted/) { to "$MAILDIR" } # process SPAM if ( /^X-Spam-Level: \*{$MAXSPAMSCORE,}$/ || /^X-DSPAM-Result: Spam/) { MAILDIR="$MAILDIR/.0 Spamfilter.als Spam erkannt" # mark as read cc "$MAILDIR"; `find "$MAILDIR/new/" -mindepth 1 -maxdepth 1 -type f -printf '%f\0' | xargs -0 -I {} mv "$MAILDIR/new/{}" "$MAILDIR/cur/{}:2,S"` exit } # and finally, deliver everything that survived our filtering to "$MAILDIR" |
Nach dem Speichern müssen die Dateirechte auf 600 gesetzt werden.
1 |
chmod 600 ~/.mailfilter |
SpamAssassin
Nun wird SpamAssassin eingerichtet.
1 |
uberspace-setup-spamd |
Die Ausgabe sieht dann in etwa so aus:
1 2 3 4 5 6 |
Create config directory ~/.spamassassin Create default spamd config ~/.spamassassin/user_prefs Creating the ~/etc/run-spamd/run service run script Creating the ~/etc/run-spamd/log/run logging run script Symlinking ~/etc/run-spamd to ~/service/spamd to start the service Waiting for the service to start ... 1 2 3 started! |
DSPAM
Im Anschluss wird noch das lernfähige Programmpaket DSPAM aktiviert.
Im Wiki steht hierzu:
DSPAM sagen was es falsch und richtig gemacht hat
1 |
test -d ~/service || uberspace-setup-svscan |
1 |
runwhen-conf ~/etc/dspam-learn "/usr/local/bin/dspam-learn" |
1 |
sed -i -e "s/^RUNWHEN=.*/RUNWHEN=\",M=`awk 'BEGIN { srand(); printf("%d\n",rand()*60) }'`\"/" ~/etc/dspam-learn/run |
1 |
ln -s ~/etc/dspam-learn ~/service |
DSPAM fit halten
1 |
test -d ~/service || uberspace-setup-svscan |
1 |
runwhen-conf ~/etc/dspam_clean_hashdb "/usr/local/bin/dspam_clean_hashdb" |
1 |
sed -i -e "s/^RUNWHEN=.*/RUNWHEN=\",H=`awk 'BEGIN { srand(); printf("%d\n",rand()*24) }'`\"/" ~/etc/dspam_clean_hashdb/run |
1 |
ln -s ~/etc/dspam_clean_hashdb ~/service |
Ist dies geschehen, kann man mit einen Syntaxcheck eine leere Testnachricht senden.
1 |
echo | EXT=info maildrop .mailfilter |
Die Testnachricht sollte dann im „als Spam erkannt“ Verzeichnis landen. Die inzwischen frisch erstellten Spamordner „0 Spamfilter“, „als Ham lernen“, „als Spam erkannt“, „als Spam lernen“ müssen in Roundcube jedoch noch sichtbar gemacht werden.
Die nun erstellten Ordner werden nun im Webmailer Roundcube unter Einstellungen => Ordner aktiviert.
Unter Spezialordner wird der „o Spamfilter“ als Spamordner gesetzt.
Das Ganze sieht dann hinterher so aus.
Eine Statistik zur Filterung lässt sich an der Konsole wie folgt noch aufrufen:
1 |
/package/host/localhost/dspam/bin/dspam_stats $USER |
DSPAM muss lt. Wiki noch entsprechend angelernt werden. Dazu verschiebt man einfach nicht erkannten Spam-Mails in „als Spam erkannt“. Mails die fälschlicherweise als Spam erkannt wurden, kopiert man in den Posteingang sowie in „als Ham lernen“. Hierbei muss man aufpassen, dass kopiert und nicht verschoben wird, da die Mails in den Anlern-Verzeichnissen nach einer gewissen Zeit automatisch gelöscht werden.
Will man den Spamfilter noch auf die Uberspace-Mail erweitern, erstellt man hier zusätzlich die Datei .qmail, trägt dort ebenfalls
1 |
|maildrop |
ein und führt analog
1 |
echo | maildrop .mailfilter |
einen Syntaxtest für das Uberspace-Postfach durch. Auch hier sind dann wie zuvor erläutert die entsprechenden Ordner zu aktivieren.
Ein abschließender Test kann mit dem Versand einer Mail an das zu schützende Postfach durchgeführt werden. Hierzu wird der Test-String einfach in eine Mail kopiert und an das Postfach gesendet, wo der Spamschutz eingerichtet wurde. Dabei ist darauf zu achten, dass keine Leerzeichen bzw. Zeilenumbrüche in die Zeile eingefügt werden. Arbeitet SpamAssassin richtig, landet die Mail im Verzeichnis „als Spam erkannt“.
1 |
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X |
Ich hoffe die Zusammenstellung kann dem ein oder anderen neuen Ubernauten helfen schneller einen entsprechenden Spamschutz bei Uberspace einzurichten, als es bei mir der Fall war.
Viel Spaß!
Eine wunderbare und vor allem zusammenhängende Anleitung, die bei Uberspace in dieser Form fehlt. Funktioniert alles einwandfrei.
Sehe ich genauso. Ich finde das uberspace Wiki toll, aber mit spamc hat es bis zu dieser tollen Anleitung nie geklappt.
Vielleicht wäre es möglich das auch direkt im Uberspace Wiki zu ergänzen? Oder zumindest zu verlinken, damit die Anleitung besser gefunden werden kann.
Danke für Deinen Kommentar. Ich habe da leider keinen Einfluss drauf.
Ich lasse es aber jedem frei den Artikel bei Uberspace vorzuschlagen. 😉
Natürlich hätte ich nichts gegen eine Verlinkung die dem User hilft und vllt. auch dem Support etwas entlastet.
Hallo Frank, vielen Dank für diese gut verständliche und relativ «idiotensichere» Zusammenfassung. Seit ich zu Uberspace gewechselt bin, traue ich mich auch an die Konsole, und ab sofort kommt hoffentlich auch weniger Spam ins Postfach …
Eine Frage noch: Gibt es eigentlich auch die Möglichkeit, direkt per .mailfilter bestimmte Absender oder Subjects erst gar nicht zustellen zu lassen? Als eine Regel WENN Absender = X dann ab ins Nirvana damit? Wäre eine elegante Lösung für bestimmte Mails, die ich erst gar nicht im Spamordner haben möchte …
Gruß aus Berlin
Klaus
Deine Frage kann ich leider nicht beantworten. Versuche bitte hierzu vom Support eine entsprechende Antwort zu bekommen. Die Jungs sind fit und können mit Sicherheit helfen.
Man könnte aber, wenn der Spamfilter absolut sicher arbeitet, die Einstellungen in Roundcube so einstellen: „Nachrichten in Spam direkt löschen“
Dazu müsste der Ordner „als Spam erkannt“ jedoch unter Spezialordner als Spam eingestellt werden. Wenn sich jedoch versehentlich eine Mail in den Spam verirrt, die da nicht hingehört, wird diese natürlich auch automatisch gelöscht.
Tipp: Bleib lieber beim manuellen Löschen!
Danke, Frank. Nee, Spam komplett direkt löschen ist keine gute Idee, da hast du recht. Ich werde mal vorsichtig beim Support anklopfen (auch wenn der maildrop-Support ja eigentlich nicht deren Job ist …)
Lass dir doch Zeit damit. Beobachte doch erst einmal über einen gewissen Zeitraum wie der Filter nun arbeitet.
[…] (daemontool-service sollte schon aktiviert sein). Wer den Spamschutz wie im Artikel „Spamschutz auf Uberspace“ schon laufen hat, wird hier keine Probleme […]
Hallo Intux,
ich glaube die Zeile:
sollte geändert werden in:
sonst wird ja die Spamassassin Instanz des Server benutzt, und nicht die, die du als User am laufen hast.
Oder übersehe ich da was?
Grüße
Felix
Schau mal hier (Beispiel-Konfiguration):
https://wiki.uberspace.de/mail:maildrop?s%5B%5D=maildrop
Ja. Schau mal hier:
https://wiki.uberspace.de/mail:spamassassin#betrieb_eines_eigenen_spamd
Der Punkt ist der: so wie es jetzt in deinem Skript steht wird die spamd Instanz des Servers angesprochen, da eben nicht der Socket der spamd Instanz des Users angegeben ist.
Insofern kann man sich dann auch die Einrichtung der spamd Instanz auf userebene sparen.
Super Artikel!
Vielen Dank dafür, mit dem Thema habe ich mich bereits mehrfach beschäftigt aber immer wieder aufgegeben. Jetzt läuft der Filter! Danke dafür!!!
Ich habe es nur niedergeschrieben, weil ich mir dachte, es könnte dem ein oder anderem User genauso gehen. 😉
Vielen Dank für die gute Anleitung! Sowas habe ich lange gesucht. Ich bin gespannt ob es klappt. 🙂
[…] Spamschutz auf Uberspace […]
[…] leicht einen Spam-Schutz einrichten. Frank von intux.de hat auf seinem Blog gezeigt wie man den Spamschutz auf Uberspace […]
Vielen Dank für die wirklich hervorragend Gut geschriebene Anleitung.
Freut mich!
Vielen Dank für die klasse Anleitung, es funktioniert endlich alles wie gewünscht! Nur aus Neugierde zwei Fragen zum Verständnis:
1. Weshalb zweimal „check if we’re called from a .qmail-EXT“?
2. Wie markiere ich erkannten Spam als ungelesen?
Vielen Dank
Marc
Zu 1.: Da hast du recht. Ist mir noch gar nicht aufgefallen. Ich werde das mal überprüfen und dann den Teil ggf. löschen.
Zu 2.: Keine Ahnung! 😉
Du hattest recht. Ich habe den doppelten Eintrag gelöscht. Es funktionierte aber auch so.
Danke erstmal!
Vielen Dank erst mal für das tolle Tut.
Ich habe so weit alles eingerichtet, aber leider bekomme ich beim Syntaxcheck eine Fehlermeldung: „dumpvuser: No such user“
Woran kann das denn liegen?
Ordner sind so weit alle vorhanden.
Danke für eure Hilfe!
Du musst „someuser“ entsprechend ersetzen. In meinem Fall war das „intux“.
Danke, hat mir auch geholfen!
Hallo,
ich bedanke mich ebenfalls für das Tutorial. Ich als kompletter Newbie habe es sogar bis zu einem Punkt umsetzen können. Habe aber wie mein Vorredner die Fehlermeldung: „dumpvuser: No such user“.
Und egal durch was ich „someuser“ ersetze, die Fehermeldung bleibt die gleiche. Was mache ich falsch?
Danke!
Hallo Lena,
Dazu müsste man wissen für welche Adresse Du das eingerichtet hast.
versuche mal den Befehl:
Lass bitte das voran gesetzte „$“ weg und ersetze „intux“ durch Deinen User. Also wenn Deine Mail-Adresse lena[at]domain.tld lautet, dann durch „lena“. In dem Fall dann:
Viel Erfolg!
Hallo,
danke für deine Antwort. Jetzt hat es geklappt und die Ordner sind auch aufgetaucht. Jedoch klappt der SPAM-Test nicht. Ich habe deine Zeile Code in eine Mail gepackt und an meine Emailadresse geschickt, aber kam sie im Postfach an und nicht im Spam-fach. Ideen?
Lena
Das sollte aber funktionieren. Vlt. überprüfst Du nochmal alle Schritte.
Bin nochmal alles durchgegangen. Keine Änderung. Sogar Gmail erkennt dies nicht als Spam (leite meine uberspace-mail an gmail weiter).
Schicke doch mal die Mail an mich. Die Adresse steht im Impressum.
Erledigt
Hier kam nichts an.
Interessant.
Also weder im Posteingang noch im Spam.
Ok, dann liegts mal wieder an mir. Die Zeile Code als Emailtext oder als Betreff einfügen?
Text.
Ok, gerade nochmal verschickt.
Bei mir kommt nichts an.
Dann weiß ichs auch nicht. Gibt es noch eine andere Art einen SPAM Test durchzuführen, ausser auf normalen Spam zu warten?
Signiere doch mal den nächsten Kommentar mit der eMail-Adresse wofür du den Spam-Schutz eingerichtet hast. Ich kann dann dorthin eine Testmail senden.
Ist gemacht.
Ist raus.
Sowohl bei Uberspace als auch bei Gmail normal im Postfach gelandet.
Dann ist mein Latein am Ende. Bitte frage mal den Support von Uberspace an. Die Jungs können auf deine Daten zugreifen und dir schnell helfen.
Deine über die Konsole versendete Test-Mail kam aber an?
Ja die kam an, aber eben auch im Postfach.
Existiert die Datei .qmail-kontakt?
Tolle Anleitung danke dafür!
Das freut mich.
Vielen Dank für Deine ausführliche Schritt-für-Schritt-Anleitung. Nachdem ich selbst erfolglos probiert habe, den Spam auf Uberspace in den Griff zu bekommen, hat mir Dein Tutorial gestern die richtigen Schritte gezeigt. Endlich wieder Ruhe im Postfach – ein großes Dankeschön an Dich. Eine Blogspende ist ebenfalls an Dich unterwegs.
Freut mich, dass es geklappt hat. Danke für die Spende.
Und nicht das Finanzamt vergessen.
Sicher doch!
Danke für das Tutorial. Aber ich glaube was ich nicht finde ist wo ich einstellen kann, dass der Spamschutz für bestimmte Mailadressen funktioniert. Ich hab auf meinem Server zehn Mail-User. Muss ich das für jeden einzeln konfigurieren? Wenn ja, wie?
Danke
Bernd
Ich habe bei Uberspace nachgefragt. Um den Spam-Schutz für alle Mailadressen zu verwenden muss man in die Date .qmail-default den Befehl |maildrop schreiben.
Besten Gruß
Moin!
Danke für die mega Anleitung! Ich habe es schon den ganzen tag mit dem Wiki versucht und hiermit endlich geschafft 😀
Leider wandert der Spam nicht im Spamordner und ich bin die Anleitung 2 mal komplett durchgegangen. Hast du eine Idee?
Hi Jim,
na, du musst den Spam erst trainieren. Also brav die Spamnachrichten eine gewisse Zeit in „als Spam lernen“ schieben. Nach einer gewissen Zeit läuft das dann wie gewünscht von selbst. Das steht auch irgendwo im Wiki beschrieben.
Ne ich meine das alles einfach in mein Postfach wandert. Da steht zwar in Klammern Spam vorn im Header aber in einen von den Spam Ordnern wandert es nicht :/
Ja, und aus dem Posteingang verschiebst du die Mail in „als Spam lernen“ (per Hand). Wenn du das das oft genug gemacht hast, weiß irgendwann dein Spamfilter, dass Nachrichten von diesem Absender zukünftig gleich in den Ordner „als Spam erkannt“ einzusortieren sind (Siehe hierzu https://wiki.uberspace.de/mail:dspam).
Funktioniert diese Anleitung auch für Uberspace in der Version 7?
Diese Anleitung ist fast vier Jahre alt. Ich kann leider nicht bestätigen, dass es mit Uberspace 7 funktioniert. Vlt. können Leser genaueres dazu sagen.
Viel Erfolg!
nein leider nicht, dazu könnt ihr euch diese Anleitungen anschauen:
https://github.com/bhopmann/uberspace7-mailfilter
https://github.com/flowdx/crm114_u7
gruß