The Net Wizard HauptseiteISP SetupNetzwerkeVelotourenSoftwareKryptografieVaria

Filtering Mail

Wer seine eigene Mailplattform betreibt, merkt schnell einmal, dass ein recht grosser Anteil des Verkehrs aus unerwünschten Mails besteht. Einerseits werden Viren per Mail verschickt, andererseits gibt es auch einen sehr grossen Anteil an ungewollten Werbemails (Spam). Um sich dagegen zu schützen, kommt man nicht umhin, Mails zu filtern. Typischerweise benutzt man dazu amavisd-new. Amavisd-new läuft bei mir auf Port 10024, und wird von postfix aufgerufen. Dabei wir das Mail an den daemon übergeben. Amavis selber ruft dann die konfigurierten Komponenten für das Filtern auf.

Viren

Das Filtern von Viren ist recht einfach. Man vergleicht die eingehenden Mails mit einer Reihe von Signaturen, welche der Virenfilter als Virus qualifiziert hat. Als Filtersoftware setze ich ClamAV ein. Clamav wird als daemon gestartet und öffnet einen Socket, auf den amavis sich verbindet. Mails, die als Viren markiert werden, werden nicht ausgeliefert, sonder in der Quarantänezone abgelegt.
Die Liste der Signaturen, welche als Viren interpretiert werden, ist natürlich sehr dynamisch und muss regelmässig aktualisiert werden. Dazu dient die Komponente freshclam. Im Moment (1.1.2018) besteht die Signaturdatenbank von clamav aus 6'381'199 Einträgen (sigtool -l listet alle bekannten Signaturen auf).

Spam

Spam lässt sich nicht anhand von Signaturen bekämpfen. Aber es gibt eine Vielzahl von nützlichen Ansätzen, um das Problem zu verringern. Die ersten beiden Massnahmen machen man sich die Tatsache zu nutze, dass Spam oft von Botnetzen verschickt wird. Dabei werden vorwiegend Skripte verwendet, die nicht auf Antworten eines Mailservers reagieren können. Hinzu kommen noch die Möglickkeiten, welche Spamassassin bietet.
Verlangsamen des SMTP Dialoges
In der postfix Konfiguration findet sich unter den smtpd_client_restrictions die Zeile sleep 2. Das bedeutet, dass nach der Verbindungsaufnahme des Clients mit dem Server erst mal 2 Sekunden lang keine Antwort kommt. Falls der Client den Dialog vorher startet, wird die Verbindung unterbrochen.
Greylisting
Eine erstaunlichermassen immer noch gut funktionierendes Instrument ist das so genannte Greylisting. Dabei wird eine Verbindung von einem bisher unbekannten Computer erst mal mit einem temporären Fehler abgelehnt. Ein korrekt konfigurierter Mailserver sollte damit kein Problem haben, und nach einer gewissen Zeit einen zweiten Versuch unternehmen. Ein Skript, dass keinen vollständigen SMTP Dialog implementiert hat, kann darauf nicht richtig reagieren. Sobald der Mailserver einmal bekannt ist, werden alle nachfolgenden Verbindungen direkt beantwortet.
Spamassessin
Spamassessin ist ein Framework aus Komponenten, welche für die Klassifizierung von Mail angewendet werden können. Im wesentlichen sind die Komponenten Regeln, welche auf das zu untersuchende Mail angewandt werden, und je nachdem, ob die Regeln zutreffen, werden Punkte verteilt. In der Konfiguration von amavis, kann man dann angeben, bei welcher Punktzahl ein Mail markiert oder gelöscht wird.
Baysian Filtering
Spamassassin enthält einen Baysian Filter. Dieser beruht auf der Tatsache, dass die Wahrscheinlichkeit dafür, dass ein Mail Spam ist, davon abhängt, welche Wörter darin vorkommen. Allerdings muss dieser Filter trainiert werden, und das sowohl mit Ham-, als auch mit Spam-Mails. Am effizientesten funktionieren derartige Filter, wenn sie für einzelne Benutzer trainiert werden. Das Problem bei einer Multi-User Plattform ist, dass unterschiedliche Benutzer auch ganz unterschiedliche Mails bekommen, womit das Training weniger effizient ist.
DNSBL (DNS-based Blackhole List)
Es gibt bestimmte Seiten, die recht aktuelle Listen von IP Adressen, welche durch den Versand von Spam aufgefallen sind, zur Verfügung stellen. Als Protokoll wird dabei DNS eingesetzt. Es gibt zwei unterschiedliche Typen von DNSBL's. Einerseits können sie auf IP Adressen basieren, andererseits auch aufgrund von Uniform Resource Identifiern (z. B. URL's). Bei IP Adressen wird im wesentlichen ein reverse DNS lookup angefragt. Wenn man Beispielsweise die Adresse 192.168.2.1 testen möchte, dann löst man nach 1.2.168.192.dnsbl.example.net auf. Bei URI DNSBL's mach man einen einen foreward lookup. Will man also www.example.net auf dnslist.example.com testen, löst man nach example.net.dnslist.example.com auf. Dieser Mechanismus ist in RFC 5782 beschrieben.
Wenn man derartige Listen auf einem Mailserver nutzt, sollte man seinen eigenen caching-oly Nameserver betreiben.
  • Die Konfiguration für Spamassassin
    01:
    02:
    03:
    04:
    05:
    06:
    07:
    08:
    09:
    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:
    # This is the right place to customize your installation of SpamAssassin.
    #
    # See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
    # tweaked.
    #
    ###########################################################################
    #
    rewrite_header Subject *****SPAM*****
    report_safe 1
    trusted_networks ip-addr1, ip-addr2 ....
    # lock_method flock

    # Always add header
    add_header all Status _YESNO_, score=_SCORE_

    rewrite_header Subject *****SPAM*****
    # DCC
    use_dcc 1
    #dcc_timeout 5
    #dcc_body_max 10000
    #dcc_fuz1_max 99999
    #dcc_fuz2_max 99999

    # BAYESEAN FILTERING
    use_bayes 1
    bayes_path /var/amavis/.spamassassin/bayes
    #bayes_mode 0777
    score BAYES_99 4.300
    score BAYES_80 3.000

    # SORBS LIST SCORING
    ##score DCC_CHECK 4.000

    # Enable all network checks
    skip_rbl_checks          0

    score RCVD_IN_SORBS_BLOCK 4
    score RCVD_IN_SORBS_DUL 1.5
    score RCVD_IN_SORBS_HTTP 4
    score RCVD_IN_SORBS_MISC 4
    score RCVD_IN_SORBS_SMTP 4
    score RCVD_IN_SORBS_SOCKS 4
    score RCVD_IN_SORBS_WEB 4
    score RCVD_IN_SORBS_ZOMBIE 4
    score URIBL_DBL_SPAM 2.5
    score URIBL_ABUSE_SURBL 1.7
    score RCVD_IN_BRBL_LASTEXT 1.4
    #score RCVD_IN_SORBS_SPAM 4

    #score FH_DATE_PAST_20XX 0.0

    score SPF_PASS -0.01
    score SPF_FAIL 5.00

    score RDNS_NONE 0.75
    # Custom Rules
    body        XMASSPAM    /spaces\.live\.com/i
    describe    XMASSPAM    Christam spam
    score        XMASSPAM    30.0

  • Powered by w3.css