sa-learn per Email füttern erweitern

Hallo Huschi,
hab mir mühsam die MailTools "ergooglet" und den Wrapper soweit geändert, dass ich jetzt die spamverdächtige Mail als ursprüngliche Nachricht im zentralen Spam-Ordner habe. Auch das Subject, from und to habe ich mittels parse_MIME_stream erhalten. Noch ein paar Stunden und ich kann dem originalem Empfänger eine Quarantänemail mit voreingestelltem Mailabruf senden, damit der dann selbst entscheiden kann, ob die Mail benötigt wird. Evtl. bastel ich das noch soweit, dass ein cronjob in regelmäßigen Abständen den Ordner durchsucht und Nachrichten über neue Quarantänemails erstellt. Dann wäre ich besser als POSTINI:cool:
Aber hier das nächste Problem:
Ich werden die "Abrufmail" in das spam@postfach senden lassen und will dort anhand des "Betreff" mit procmail die Quarantänemail auswählen (=Dateiname) und diese Mail dann aus dem Spampostfach in das Postfach des Empfängers leiten.
Frage: wie am besten? als copy-Befehl geht nicht, da dann keine Weiterleitung nach extern erfolgt. Also sendmail oder wieder MailTools oder Injekt? Ich hab noch keine zündende Idee, die Mail soll ja auch nicht verändert werden und beim Empfänger "normal" ankommen. SA ist beim internen senden nicht aktiviert!
Bitte Input :)
cu
Jürgen
 
Ich werden die "Abrufmail" in das spam@postfach senden lassen und will dort anhand des "Betreff" mit procmail die Quarantänemail auswählen (=Dateiname) und diese Mail dann aus dem Spampostfach in das Postfach des Empfängers leiten.
Was ist denn die Abrufmail und was hat das mit dem Betreff zu tun?
Das ist irgendwie unklar...

huschi.
 
Hallo,
so, ich habe fertig.
Ist sicher nicht optimal programmiert aber es funktioniert für meine Wünsche.
Hier der Ablauf, damit auch der Begriff "Abrufmail" geklärt ist:) :

Normalfall:
Die Spammail kommt in das System und wird durch SA mit *SPAM* markiert und als "Anlage" an den Empfänger gesendet (SA ist auf dem Server global aufgesetz). Der Empfänger kann dann in seinem Mailprogramm über Filterregeln solche Sachen ausfiltern. Auch habe ich einige User, die per Procmail in .qmail-default alles über Spamfaktor 7 gleich ins Nirwana senden. Läuft prima und 99,99% der User lieben es ....
Problem dabei:
Wenn man diese Mails an ein externes Postfach (zB.T-Online) sendet, wird die Mail oft nicht angenommen und der Postmaster (also ich) bekommt die Fehlermeldung.
Und: die Weiterleitung erfolgt als "gepasselte" Mail: Aber ich habe einen User, der möchte die Mail gern im "Original" erhalten (seltsamerweise blockt T-Online seine englischen und spanischen Newsletter nicht :o
Und: wie auch in diesem Thema geschrieben: es gibt User, die wollen immer die originalen Mails im Posteingang haben...

Also habe ich mit procmail, sa-wrapper, Mime:Tools und in stundenlängen Googleeinsätzen eine Lösung gebastelt, die den Sonderfall abarbeitet:

Die durch SA markierte Mail wird durch procmail (in .qmail-user) an der Wrapper gesendet. Der extrahiert die original Mail in den Mailordner ../users/spam/new/ (oder wo auch immer im Mailverzeichnis)
UND vergibt dabei einen eindeutigen Dateinamen
UND liest den Empfänger, Absender und den Betreff aus
UND sendet eine Quarantänenachricht an den Empfänger, dass eine Mail vom Absender xyz mit Betreff xzy für sein Konto geblockt wurde.
UND (jetzt kommt´s): in der Quarantänenachricht ist ein Link, der eine Abrufmail mit dem Dateinamen im Betreff an spam@domain generiert :cool:

sieht dann so aus:

Unser Server hat eine Mail wegen Junkverdacht/Virenbefall geblockt.

Absender: "Alvaro Nash" <[email protected]>
Betreff : Potenzprobleme? Mit uns nicht mehr

Um die Mail jetzt in ihr Postfach zu senden, klicken Sie bitte auf den Link und dann SENDEN

mailto:[email protected]?subject=meinserver.1222939592.05801&body=Bitte%20auch%20Infos%20unter%20http://huschi.de/quarant.html%20lesen!


Procmail in .qmail-spam wertet den Betreff aus - wenn = Dateiname, dann sende die Datei aus .../users/spam/new/Dateinamen an den Empfänger ...

Leider kann ich die Mail nur an einen "festen" Empfänger senden, da ich das mit der Auflösung des Empfängers noch gepackt habe (läuft ganz primitiv über sendmail).
Aber da das nur ein Weiterleitungkonto betrifft, geht das so. Wenn man die Ablageordner und .qmail-user anpasst, läßt sich das auch für verschiedene Konten nutzen oder gleich direkt in Userpostfächer einsortieren. Muss man halt verschiedene wrap-Dateien anlegen.
Damit hat sich auch meine Frage auf huschi.net erledigt
cu
Jürgen
 
Wenn ich es also richtig verstehe werden die Spam-Mails geblock, aber pro Spam-Mail erhält der Empfänger eine Benachrichtiguns-Mail?
Dann kann ich ihm doch gleich die Spam-Mail mit verändertem Header ausliefern.
Jeder Mail-Client kann doch anhand eines Filters diese markierten Spam's in einen eigenen Ordner verschieben.

Und ich finde meine Lösung von vor 4 Jahren praktischer:
Spam's kommen in ein großes Spam-Postfach und jede Nacht wird für jeden User eine Benachrichtigungs-Mail mit allen From's und Subjekt's generiert. Inkl. Link auf ein PHP-Script welches die Mail auf den Bildschirm bringt.
Das Prinzip ist von GMX oder Web.de längst bekannt, und man macht sich nur einmal am Tag die Arbeit seinen Müllberg durch zu checken.

huschi.
 
Wenn ich es also richtig verstehe werden die Spam-Mails geblock, aber pro Spam-Mail erhält der Empfänger eine Benachrichtiguns-Mail?
Dann kann ich ihm doch gleich die Spam-Mail mit verändertem Header ausliefern.
Jeder Mail-Client kann doch anhand eines Filters diese markierten Spam's in einen eigenen Ordner verschieben.
3x richtig !
aber ich habe einen User, der möchte die unveränderte Mail haben. Wenn ich "unkontrolliert" alles an ihn weiterleite was in seinen Posteingang kommt, habe ich die Blockmails von T-Online, er merkt davon nichts. Mit Quarantäneinfo weiß er das da was reingekommen ist, deshalb die ganze Mühe. Und zeitnah sollte es auch noch sein .... Bei 3-5 Mail täglich im Spamfach/User ist das erträglich.

Und ich finde meine Lösung von vor 4 Jahren praktischer:
Spam's kommen in ein großes Spam-Postfach und jede Nacht wird für jeden User eine Benachrichtigungs-Mail mit allen From's und Subjekt's generiert. Inkl. Link auf ein PHP-Script welches die Mail auf den Bildschirm bringt.
... das Du damit jetzt erst raus rückst... Weis ich, was Du vor 4 Jahren gemacht hast :)
Wo hast Du das vergraben? Bitte Rauchzeichen, damit das bei mir dann auch funktioniert. Ich denke mal, das kann man auch 2x am Tag laufen lassen.
cu
Jürgen
 
aber ich habe einen User, der möchte die unveränderte Mail haben.
Dann soll er sie doch bekommen. Leg für ihn eine eigene local.cf an, in der der Report und der Subject-Rewrite ausgeschaltet sind.
Schon bindet SA nur noch seine Header mit ein.
Ein Filter im Mail-Client kann die Mails dann immer noch in einen eigenen Spam-Ordner schieben.

Also insgesamt habe ich den Verdacht, daß Du hier eine Lösung für ein Problem gesucht hast, welches so gar nicht existiert. ;)

huschi.
 
Hallo,

...habe ich den Verdacht, daß Du hier eine Lösung für ein Problem gesucht hast, welches so gar nicht existiert. ;)
Ich glaub, Du kennst T-Online nicht oder hast keine User, die eine Weiterleitung an T-Online haben (oder mein Mailserver ist "zu klein", T-Online setzt mich nicht auf die Whitelist), darum nochmal:
Der User hat ein Postfach mit einer sofortigen Weiterleitung an T-Online. Wenn ich spamverdächtige Mails direkt weiterleiten lasse, dann wehrt sich T-Online und sendet den Müll an den ursprünglichen Absender - der das nicht bekommt, weil Spamabsender. Dann kommt diese Fehlermail von T-Online in mein POSTMASTER Postfach - ich will das aber nicht haben :(

Ich kann auch nicht einfach alles, was SA (Spamassassin) als Spam definiert blocken, denn manchmal irrt sich SA, da die Usermails in spanisch oder englisch oder französchisch reinkommen - und dann bekomm ich immer Mecker, weil seine Lieferantenmails nicht ankommen.
Und selbst die Mail abrufen will er auch nicht, weil: es ist nur POP3 möglich und dann hätte er ja ALLES im Posteingang und extra noch ein Webmail oder ein Tool starten - will er nicht :mad:
Und SA läuft global für die ganze Domain. Persönliche Whitelisten kann ich nicht aufsetzen lassen. Ich hab das nicht installiert bekommen als ich ganz schnell das System neu aufsetzen mußte und dabei gleich SA installiert habe (glaube wegen vmailmgr).
Nochmal: ich bin kein Programmierer und mach das hier nebenbei. Hier in der Gegend gibt es keinen, da sich mit qmail abmüht. Aber das System wurde mal vor Jahren installiert - und ich kann das nicht einfach auf ein anderes System umstellen (weil sich die Passwörter nicht auslesen lassen).
Mit Deiner 4 Jahre alten Lösung wäre mir schon geholfen, da hätten alle User was von, zumal die User das schon von Postini kennen :)
Aber wenn nicht -wär´st nicht der erste, der mich nicht versteht ;)
cu
Jürgen
 
Last edited by a moderator:
Das Problem ist nicht nur auf T-Online beschränkt.
Und vor allem: Nicht nur auf Spam.

Wenn Dein Kunde also Sicherheit haben möchte, wirklich alle seine Emails zu lesen, sollte er sein System umstellen und die Emails am Server selbst abholen.

huschi.
 
Wenn Dein Kunde also Sicherheit haben möchte, wirklich alle seine Emails zu lesen, sollte er sein System umstellen und die Emails am Server selbst abholen.
ich sag ihm das, wird aber nicht helfen und ändert nix an der Idee, für alle eine Quarantäneinfo einzurichten. Und wenn es 100 Jahre dauert....
 
Hallo Huschi,
Kunde... sollte ... sein System umstellen und die Emails am Server selbst abholen.
Hab ich versucht, Kunde will lieber seine Mails über Webinterface von T-Online lesen, weil ist soooo schön :rolleyes:

Könntest Du bitte Deine Lösung zur Verfügung stellen?
 
Kunde will lieber seine Mails über Webinterface von T-Online lesen
Von solchen Kunden trenne ich mich. Die sind es meistens nicht Wert.

Könntest Du bitte Deine Lösung zur Verfügung stellen?
Sie ist
a) noch nicht ausgereift genug
b) veraltet, da nur mbox-Format
c) unsicher, da wirklich alles an Spam eines Server in nur eine mbox wandert.

Daher kann ich allein aus meiner eigenen Verantwortung diese Scripte nicht weitergeben.

Es ist aber wirklich nicht schwer sowas selber zu programmieren. Sowohl für PHP als auch für Perl gibt es ausreichend Module, die ein Handling einer solchen mbox/IMAP-Konto/IMAP-Verzeichnis easy going machen. Der Rest außen rum ist nur Layout.

huschi.
 
Von solchen Kunden trenne ich mich. Die sind es meistens nicht Wert.
der Kunde ist König - vielleicht ist er deshalb ja noch hier ;)

Daher kann ich allein aus meiner eigenen Verantwortung diese Scripte nicht weitergeben.
o.k. ich übernehme die Verantwortung - bitte direkt an meine Mailadresse :) Ich geb das auch nicht weiter und wenn fertig, sende ich das umgehend zurück...

Es ist aber wirklich nicht schwer sowas selber zu programmieren.
in der Tat - wenn man programmieren kann :confused:
Dann bitte ein Input:
ich lese die Empfängeradresse, Betreff, Absender per Script aus und sende dann eine Mail an den ursprünglichen Empfänger mit Übergabe der Parameter mittels:
"open mail->sendmail(an)->print(von,subject,dateinamen,blabla)->close".
Das dauert pro Mail ein paar Sekunden.
Gibt es eine "schnellere" Lösung, die auch die gelesenen Daten übernimmt?
Wenn ja, bitte Beispiel.
cu
Jürgen
 
Vielleicht hilft ja ein Ansatz weiter, den ich meinen IMAP-Nutzern eigentlich für Spam-Mails bereitgestellt habe.

System: Opensuse 10.3, Plesk 8.6, Qmail, Spamassassin, Courier-Imap

Ankommende Mails werden (sofern der Domain-Inhaber das will) global durch SA geprüft (Zusatzscript in qmail-queue eingebunden in Verbindung mit Qsheff) und bei einem SPAM-Match rejected und an Spamcop gemeldet.

Mails, die lokal erzeugt worden sind, sind davon ausgenommen. Ebenso die speziellen Reporting-Absenderadressen (denn da würde SA ja auch greifen).

Bei jedem IMAP-Nutzer ist ein Ordner .SpamReport angelegt, der durch ein Script alle 15 Minuten geprüft wird. Dort enthaltene Mails werden an Spamcop gemeldet und zum Training von Spamassassin in einen shared-IMAP-Folder geschoben, auf den alle IMAP-Nutzer lesenden Zugriff haben.

Umsetzung für Dein Problem:

Ein einer spezieller IMAP-Ordner dieses zentralen Spam-Accounts wird per Cron regelmässig geprüft, Mails per Script nach Auswertung der entsprechenden Zeilen neu versandt.

Dazu wären Absender und Zieladresse bspw. per Grep aus der ursprünglichen Mail zu extrahieren bzw. dem Script manuell zu übergeben (da die Zieladresse nicht notwendigerweise in der Mail enthalten sein muss wie bei Mailinglisten, BCC, usw. oder auch mehrere Quellen in Frage kommen). Hier wird durch Qsheff die Message in einem eindeutigen Queue-Directory (Quarantäne) abgelegt und über im Log finden sich neben dem Namen des Queue-Directory auch From und To. Auf dieser Basis löst qsheffwatch einen erneuten Versand (allerdings als Anhang).

Code:
FROM=`grep "^From: " <messagefile>`
TO=<gesicherte To-Adresse>
env MAILRC=/dev/null from=$FROM smtp=localhost /usr/bin/mail $TO < <messagefile>

Diese Angabe ist aber bei Empfang der Mail bekannt und müssten in diesem Fall gesichert werden (durch das Umleit-Script oder bspw. durch Nutzung von qsheff).
 
Hallo akxak,
Danke für Dein Input, aber leider hab ich (noch) kein IMAP. Das war bei der Erstinstallation (1996) noch nicht "in" :D
Inzwischen hab ich schon 2x die Hardware ausgetauscht, omail und Spamassassin global für alle per qmail-scanner installiert (mit"toten" Konten (Honypots) zum Spam sammeln und anlernen von SA) und auch clamav per procmail eingebunden.

Die Spammails werden aber weiterhin (markiert) in das POP Postfach weitergeleitet und damit auch durch den Empfänger mit abgeholt. Ich habe bei Postini mal einen Testaccount für alle genutzt, das hat den Usern gefallen: alle Spam in eine übersichtlichen Liste und was man braucht wird direkt in das Postfach "nachgefordert". Im Prinzip also die Lösung, die Huschi wohl schon vor 4 Jahren hatte :cool:
Auch umgehe ich damit zum größten Teil die Bounce von automatischen Weiterleitungen an T-Online.

EDIT:
In den Grundzügen funktioniert das dann so:
-SA markiert die Mails nur mit SCORE im Betreff (hab ich fertig)
-procmail/maildrop filtert die markierten Mails und verschiebt diese in einen zentrales Verzeichnis (funktioniert)
-über diese Verzeichnis läuft per cron ein wrapper, der Maildateiname, Empfänger, Absender, Betreff etc. ausliest, und damit eine SQL Datenbank füllt (ich hab das soweit, dass die Daten in MySQL geschrieben werden:)
- aus der Datenbank wird dann eine Mail an den Empfänger generiert
- die generierte Mail enthält für jeden Empfänger eine Liste der "Spammail" jeweils mit einen Link zum abrufen (ich habe das für ein Konto per procmailauswertung und innerhalb des MAILDIR/user per sendmail hinbekommen)

Bei Interesse von anderen Anwendern machen wir daraus einen neuen Tread.
/EDIT

Andernfalls: ich habe täglich in Summe ca. 800 Spammails in ca. 1000 Konten und da werde ich wohl weiterhin an eine Lösung basteln.
Zum Schluß: wegen User und Filterregeln im Mailclient: ich kenne meine User - entweder lesen die alle Spam oder schmeißen alles ungelesen in den Papierkorb. Und Postini hat mich überzeugt: eine Liste und jeder kann nochmal drüber nachdenken ob ja oder nein (manchmal irrt sich auch SA:)
mfg
Jürgen
 
Last edited by a moderator:
Bei Interesse von anderen Anwendern machen wir daraus einen neuen Tread
machen wir nicht mehr, ich muss nur noch Mailversenden einbinden und dann testen :D
EDIT: Habe fertig :cool:
 
Last edited by a moderator:
ich häng das mal hier ran, vielleicht liest das jemand und schreibt eine Antwort :)
Seit Mittwoch nutze ich die "globale" Quarantäne mit täglicher Info an den ursprünglichen Empfänger :cool:
Seit dem habe ich weniger smtp Verbindungen von außerhalb, das lese ich jedenfalls im mrtg.
Ich meine mal gelesen zu haben, dass der Absender von einer Mail (mit irgendwelchen Tools) "sehen" kann, ob eine Mail abgerufen wird . Durch das Umleiten in Quarantäne ist die dann ja aus dem "Zugriff" des Spammers.
Nun bin ich verwirrt - könnte ja auch Zufall sein, dass seit Mittwoch die Spamwelle abgeflacht ist.
Könnte ich dazu mal einen Status bekommen?
mfg
Jürgen
 
Back
Top