Mailserver der möglichst viel Spam stoppt

alex27

Well-Known Member
Was würdet Ihr für ein Setup für einen Mailserver empfehlen der am Tag so ca. 2000 Spam Mails erhält ?

Sendmail oder eher Postfix und dann mit ClamAV und SpamAssassin nehme ich an? Was kann man sonst noch machen um z.B. die ganzen fake Absender zu stoppen.
 
Graylisting.
Eine der effektivsten Möglichkeiten, die mir bisher begegnet sind. Grad bei so nem kleinen Setup hilft es enorm.

Edith ist der Meinung, dass ich ne langsame Schnarchnase bin
 
Greylisting klingt ja sehr interessant aber die zeitlichen Verzögerungen die bei diesem System entstehen können scheinen ja doch teilweise extrem zu sein. Das schreckt mich eher ab.
 
Hallo,

also ich nutze Postfix mit entsprechenden Restrictions und RBL Listen was schon reicht um den meisten Blödsinn zu blocken. Für den Rest ist Spamassassin zuständig und wenn wirklich noch etwas durch kommen sollte wird es manuell eingepflegt.Ich hatte auch Dspam mal zwischengeschaltet (amavisd-new) aber so wirklich ans arbeiten habe ich das nie bekommen. Soll wohl mit entsprechenden Training sehr gut arbeiten.

Es erreicht mich nur noch Spam über die Maillinglisten, hier ist besonders die von OpenBSD zu nennen.

Greylisting nutze ich nicht, ich lese es nur hin und wieder mal in den Logs wenn die Emails nicht direkt gesendet werden und man sich wundert was passiert ist.

Silvio
 
Ich krieg fast allen Spam aussortiert mit RBLs und policyd-weight. Policyd-weight checkt helo, reverse-dns etc. alles und gewichtet das - sprich ist z.B. der Helo nicht der reverse-dns Name o.Ä. wird nicht gleich die Mail abgewiesen. RBLs wie z.B. die zen-policy (DSL-Einwahl-IPs) nutzt der auch zur Gewichtung mit.

Wenn das alles durchgelaufen ist kommt die Mail nochmal durch amavis (spamassasin und clamav) - vor dem wirklichen annehmen, d.h. reject direkt nach DATA falls es Spam ist.

Was vermutlich nicht soviel bringt (und ich schlecht messen kann): per fail2ban blocke ich IPs die mit typischer Spam-Absender Adresse schreiben ("thisisjusttestletter@…") oder an kaputte E-Mail Adressen schicken… Offenbar haben einige Spammer kaputte Adresslisten.

Wenn meine Adresse example@example.net wäre schreiben viele an mple@example.net o.Ä., das ist auch in meinem fail2ban filter.
 
Ich benutze überhaupt keine Online-Checks/Prüfsummen. Das nervt, wenn der Rechner dauernd irgendwo hin telefoniert.

Ich habe [PORT]mail/bogofilter[/PORT] im Einsatz. Das braucht etwas, um sich einzuschwingen und macht am Anfang ziemlich viel Unsinn, aber es funktioniert genauso gut, wie jeder andere Filter, nur dass es äußerst effizient ist.

Zugegeben, ich mache das aber auch anders als andere Leute. Ich schmeiße Spams nie weg ohne sie durchzusehen (jede Woche/Monat reicht, je nach Durchsatz), sondern lege sie in einen anderen Ordner. Ist eine E-Mail falsch beurteilt worden, schiebe ich sie in den Learn-Ordner.

Wir haben auch an der Uni Filter und sie sortieren auch Hams unberechtigterweise in Spam-Boxen. Das passiert öfters. Besonders Spamassassin ist dafür anfällig, weil es einfach Unsinn stark bewertet wie "ausländischer Zeichensatz" etc. Und eine Lernfunktion gibt es an der Uni nicht.
 
Erst einmal vielen Dank für die Tips.

Policyd-weight sieht sehr interessant aus, soweit ich sehen kann gibt es den nur für Postfix oder gibt es etwas vergleichbares auch für Sendmail ? Wie schwer ist es von Sendmail auf Postfix umzustellen, ich habe bisher immer nur mit Sendmail oder Exim gearbeitet.

Fail2ban sieht auch interessant aus, das könnte man ja gleichzeitig auch zum stoppen von SSH, FTP und POP3 Brute Force Angriffen verwenden oder gibt es dafür etwas besseres ?
 
wie konfigurierst du fail2ban für diese Verhalten?

Im Prinzip kann man neue Filter relativ einfach schreiben, man gibt nur regularexpressions an. Für meine Postfix Blacklist ist das wie folgt:

Code:
[Definition]

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
failregex = \[<HOST>\]: 554 5\.7\.1
        \[<HOST>\]: 550 5\.1\.1 <thisisjusttestletter
        \[<HOST>\]: 550 5\.1\.1 <iamjustsendingthisleter

        \[<HOST>\]: 550 5\.1\.1 <muelleimer@tusrecke.de>
        \[<HOST>\]: 550 5\.1\.1 <page@example\.net>
        \[<HOST>\]: 550 5\.1\.1 <lleyball@example\.net>
        \[<HOST>\]: 550 5\.1\.1 <johnsmithsvt@example\.de>

Die erste Zeile (mit 554) match übrigens auf Relay-Access Denied.

Die Config muss dann noch in der jail.local aktiviert werden, der Vollständigkeit halber hier einmal komplett:

Code:
[postfix-blacklist]

enabled  = true
port     = smtp,ssmtp
filter   = postfix-blacklist
logpath  = /var/log/mail.log
maxretry = 1
bantime = 3600
 
Fail2ban sieht auch interessant aus, das könnte man ja gleichzeitig auch zum stoppen von SSH, FTP und POP3 Brute Force Angriffen verwenden oder gibt es dafür etwas besseres ?

Eigentlich ist fail2ban ursprünglich für SSH Brute Force blocken gedacht. FTP und Pop3 ist glaube ich auch schon mit an Board.

Im Prinzip was es macht ist Logdateien überwachen und bei bestimmten Matches bestimmte Actions durchzuführen (typischerweise IP blocken) und nach einer gewissen Zeit wieder eine Action ausführen (IP entblocken).
 
da sind alle bekannten Protokolle vordefiniert,

@oxy, danke für den Tip, das kannte ich noch nicht. Bei mir blockt er bisher nur alle Login-Fails ab dem 4. Versuch ab ;-)

Grußré
 
Hat jemand Erfahrung mit iRedMail ? Laut Info soll es von Sendmail auf Postfix umstellen und dabei alles was benötigt wird aus dem Portstree installieren.

Wenn das zuverlässig funktionert, wäre das ja eine einfache Methode auf Postfix umzustellen, wenn man vorher noch nicht mit Postfix gearbeitet hat.
 
Hallo,

@oxy

Das mit fail2ban klingt interessant. Könntest du mal grob erklären wie du das einsetzt, was an Konfiguration hinter steckt und wie zufrieden du bist. Wenn du möchtest.


Silvio
 
Das mit fail2ban klingt interessant. Könntest du mal grob erklären wie du das einsetzt, was an Konfiguration hinter steckt und wie zufrieden du bist. Wenn du möchtest.

Config hatte ich oben schon gepostet, ist soweit eigentlich vollständig.

Mir fällt noch ein, bei Postfix habe ich noch smtpd_error_sleep_time auf 30 gedreht. D.h. bei einem Fehler sendet er die Meldung dem einliefernden Server erst nach 30 Sekunden. fail2ban braucht einen kleinen Moment bis es Einträge aus den Logdateien in IP sperren umgesetzt hat. Wenn der Fehler sofort gesendet würde, könnte der Spammer ja direkt wieder eine Connection aufbauen um mehr Spam einzuliefern noch bevor die Firewall zum blocken instruiert wurde.

Zufriedenheit - wie schon gesagt, es lässt sich schwer messen. Ich müsste mal loggen wieviele Pakete wirklich dann geblockt werden.
Den meisten Spam an sich kriege ich mit den anderen genannten Techniken denke ich schon geblockt.

Meine Idee mit dem fail2ban Kram war einfach, dass ich möglichst den Spammern Resourcen kosten möchte. Ich will nicht lange mit denen diskutieren und den SMTPD denen erklären lassen "ja, ne du bist Spam, das wollen wir nicht", sondern die einfach vor der Tür stehen lassen - die kriegen plötzlich Timeouts.

Am besten wäre ja noch, wenn man die TCP Connection auf Kernel Ebene wegschmeißen könnte ohne überhaupt die Connection Close Pakete zu verschicken ;)
 
Hoi,

Greylisting mit Postfixbär und paar Header Checks und so bärig wär mal gute Anfang.

Gruß Bummibär
 
Ich habe da mal eine Frage die nur indirekt mit dem ursprünglichen Thema zu tun hat. Ich bin nun also gerade dabei Postfix mit Mysql und Dovecot 2 zu installieren und da muss ich ja ein paar .cf Dateien für die Mysql config anlegen.

Nun habe ich da z.B.:

user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'

wobei die letzte Zeile sich mit Copy und Paste absolut nicht einfügen lässt. Aus '%s' und '1' wird etwas nicht verwendbares. Ich mache das jetzt halt von Hand aber generell, woran liegt das und wie kann man das beheben ?
 
Ich habe jetzt Postfix und den policyd-weight am laufen. Den policyd-weight habe ich praktisch im Testbetrieb, indem ich

warn_if_reject check_policy_service inet:127.0.0.1:12525

in die postfix main.cf eingefügt habe.

Ich wüsste gerne, ob es eine Möglichkeit gibt, das man wie z.B. bei Spamassassin die Score bei den Emails in den Header einfügen kann. Auf die Art wäre es einfach die Effektivität in der Test Zeit zu beurteilen.
 
Hi

Dafür gibt's die Einstellungen

Code:
$sa_spam_subject_tag = '***SPAM*** ';
$sa_tag_level_deflt  = 2.0;  # add spam info headers if at, or above that level                                                                                                                                                             
$sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.31; # triggers spam evasive actions
$sa_dsn_cutoff_level = 10;   # spam level beyond which a DSN is not sent

Mit den Stichworten solltest du in der Manpage fündig werden, genauer weiß ich das auch nicht ;)
 
Hi

Dafür gibt's die Einstellungen

Code:
$sa_spam_subject_tag = '***SPAM*** ';
$sa_tag_level_deflt  = 2.0;  # add spam info headers if at, or above that level                                                                                                                                                             
$sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.31; # triggers spam evasive actions
$sa_dsn_cutoff_level = 10;   # spam level beyond which a DSN is not sent

Mit den Stichworten solltest du in der Manpage fündig werden, genauer weiß ich das auch nicht ;)


Danke Dir aber das scheint vom Amavisd zu sein ?! Den benutze ich nicht, ich würde halt gerne das Rating vom policyd-weight dem Header hinzufügen.
 
Nah, sorry, da habe ich nicht richtig gelesen. Ja, ist für amavis und Spamassasin.

Für policyd-weight gibt es eigentlich $ADD_X_HEADER = 1, das sollte den Mails einen Header hinzufügen - scheint bei mir aber glaube ich nicht so zu laufen.

Ansonsten ist die Ausgabe in der Logdatei auch recht ausführlich: was weshalb wie gescored wurde.
 
Zurück
Oben