Unterschiede zwischen den Revisionen 1 und 14 (über 13 Versionen hinweg)
Revision 1 vom 2005-05-26 22:16:20
Größe: 1763
Autor: lars
Kommentar: vorversion
Revision 14 vom 2012-06-13 21:26:18
Größe: 7774
Autor: anonym
Kommentar: converted to 1.6 markup
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 1: Zeile 1:
[[TableOfContents]] <<TableOfContents>>
Zeile 4: Zeile 4:

= SMTP-Eingangstests (qmail-ldap) =
Derzeit sind folgende Eingangstest in der ''/var/qmail/control/qmail-smtpd.rules'' aktiviert:
 * [[http://www.qmail-ldap.org/wiki/RCPTCHECK|RCPTCHECK]]
 * [[http://www.qmail-ldap.org/wiki/RETURNMXCHECK|RETURNMXCHECK]]
 * [[http://www.qmail-ldap.org/wiki/SANITYCHECK|SANITYCHECK]]
Zeile 9: Zeile 15:
 * `apt-get install spamassassin libnet-ldap-perl libnet-dns-perl`  * `apt-get install spamassassin libnet-ldap-perl libnet-dns-perl pyzor dcc-client libmail-spf-query-perl`
Zeile 12: Zeile 18:
  * zu ''OPTIONS'' muss ''--ldap-config -x'' hinzugefügt werden
 * eine globale Spamassassin-Konfigurationsdatei anlegen (z.B.: ''/etc/spamassassin/local.cf''): {{{
  * zu ''OPTIONS'' muss ''-A 10.0.0. --ldap-config -x'' hinzugefügt werden
  * in ''OPTIONS'' ''--max-children'' anpassen, mehr Kinder = mehr RAM Verbrauch
   * Ab spamassassin v3.0 wird intern ein prefork Modell benutzt, d.h. ein Kindprozess sollte bei geringem Spamaufkommen genügen. Mails werden jeweils in die Warteschlange eines Kindprozesses eingereiht. Wie groß diese ist hängt vom System ab und kann mit folgendem Befehl heraus gefunden werden:{{{
perl -MSocket -e'print SOMAXCONN'
}}}
   * Sind die Warteschlangen aller Kindprozesse voll, werden die Mails ignoriert und in den Logs erscheint z.B.: "spamd[12960]: prefork: server reached --max-children setting, consider
raising it".
  * in ''OPTIONS'' lässt sich die maximale Größe einstellen, bis zu der SA Mails scannt, größere werden ignoriert
 * eine globale Spamassassin-Konfigurationsdatei anlegen (z.B.: ''/etc/spamassassin/local.cf'')
  * jeweils pyzor, dcc konfigurieren (Firewall beachten)
  * {{{
Zeile 17: Zeile 32:
   * siehe http://wiki.apache.org/spamassassin/BetterDocumentation/LdapReadme
Zeile 20: Zeile 36:
  * in die [wiki:WebSvn/sao/etc/ldap/schema/sao.schema /data/etc/schema/sao.schema] folgenden Attribut-Typ einfügen: {{{   * in die [[WebSvn:sao/etc/ldap/schema/sao.schema|/data/etc/schema/sao.schema]] folgenden Attribut-Typ einfügen: {{{
Zeile 26: Zeile 42:
  * die Klassen-Definition (siehe [wiki:WebSvn/sao/etc/ldap/schema/sao.schema /data/etc/schema/sao.schema]) der ldap-Mail-Klasse (''mailDestination'') muss um dieses Attribut als ''MAY''-Klausel erweitert werden   * die Klassen-Definition (siehe [[WebSvn:sao/etc/ldap/schema/sao.schema|/data/etc/schema/sao.schema]]) der ldap-Mail-Klasse (''mailDestination'') muss um dieses Attribut als ''MAY''-Klausel erweitert werden
Zeile 29: Zeile 45:
 * den Spam-Daemon im Debug-Modus starten: `spamd -D 2>&1 | less`  * den Spam-Daemon im Debug-Modus starten: `spamd -D -C /etc/spamassassin 2>&1 | less`
Zeile 32: Zeile 48:

== Optimierung ==
=== sa-learn ===
 * ''sa-learn'' kennt die Optionen -ham und -spam damit lässt sich der bayessche filter trainieren, einfach das Verzeichnis mit den Mals dahinter angeben
  * z.B. `sa-learn -spam /meine/mailbox/nurspam `
  * `sa-learn --dump magic` erzeugt einen Bericht über das bisher Gelernte
   * nspam und nham sollten >200 sein, da sonst der Bayesfilter nicht verwendet wird

=== iXhash ===
 * In ''spamassassin'' lassen sich bequem Erweiterungen einbinden. Eine gut funktionierende besonders für den deutschen Sprachraum ist [[http://ixhash.sf.net/|iXhash]].
 * das tar.gz runterladen entpacken
 * die iXhash.cf & iXhash.pm nach /etc/spamassassin kopieren.
 * in der ersten Zeile der iXhash.cf den Pfad zur .pm Datei anpassen
 * beim nächsten Start von spamd wird der iXhash benutzt (siehe Logdatei)

=== Botnet ===
 * versucht zu ermitteln, ober der Absender einem Botnet entstammt
 * verzögerte die Spamfilterung bei meinen Tests erheblich

=== CompiledRegexps ===
 * beschleunigt die Spamfilterung durch vorcompilieren regulärer Ausdrücke
 * Maketools und ein Compiler werden gebraucht {{{
aptitude install make gcc re2c
}}}
 * in die Spamassassinconfig kommt folgende Zeile: {{{
loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody
}}}
 * mit ''sa-compile'' werden die Ausdrücke compiliert
  * sa-compile nochmal starten, falls beim Neustart von Spamassassin folgende Fehlermeldung auftaucht: {{{
Can't locate Mail/SpamAssassin/CompiledRegexps/body_0.pm
}}}

=== DomainKeys Identified Mail (DKIM) ===
 * siehe: http://de.wikipedia.org/wiki/DomainKeys & http://dkim.org
 * notwendiges Perlmodul installieren {{{
aptitude install libmail-dkim-perl
}}}
 * in die Spamassassinconfig kommt folgende Zeile: {{{
loadplugin Mail::SpamAssassin::Plugin::DKIM
}}}

== Analyse ==
 * `spamd -s /var/log/spamfilter.log ..` sorgt dafür, dass alle Meldungen in der entsprechenden Datei landen
 * nun einige zeit warten
 * dann mit [[http://www.rulesemporium.com/programs/sa-stats-1.0.txt|sa-stats]] wieviel spam pro user gefiltert wurde und wie hoch der Spamanteil insgesamt war

= Einbindung in qmail =
Auf dem mail-Server muss ein Interface-Programm installiert werden. Zur Auswahl stehen:
 * [[http://qmail-scanner.sourceforge.net/|qmail-scanner]]
 * [[http://www.inter7.com/?page=simscan|simscan]]
 * [[http://www.gbnet.net/~jrg/qmail/ifspamh/|ifspamh]]

Wir folgten ansatzweise [[http://www.pycs.net/lateral/stories/9.html|Fighting spam with qmail]] und nutzen [[http://www.gbnet.net/~jrg/qmail/ifspamh/|ifspamh]].

== Spamassassin-Client ==
{{{
apt-get install spamc
}}}

== ifspamh ==
Das ist einfach:
 * die neueste Version von [[http://www.gbnet.net/~jrg/qmail/ifspamh/|ifspamh]] herunterladen
 * das Skript nach ''/usr/local/bin'' kopieren
 * eventuell ''ksh'' (korn-Shell) installieren
 * den Pfad von ''SPAMC'' in ''/usr/local/bin/ifspamh'' anpassen (''/usr/bin/spamc'')
 * da bei uns der spamd auf einem anderen rechner läuft braucht spamc die option ''-d RECHNERNAME''
 * naja, ein Brocken kommt natürlich noch: ''ifspamh'' erfordert [[http://cr.yp.to/mess822.html|mess822]] von djb: {{{
wget http://cr.yp.to/software/mess822-0.58.tar.gz
tar xzf mess822-0.58.tar.gz
cd mess822-0.58
make
make setup check
}}}

== userpsezifische LDAP-Einträge ==
Falls die Spam-Filterung (also inklusive Verschiebung in ein separates Verzeichnis) aktiv sein soll, dann braucht mensch folgende LDAP-Zeile in seinem LDAP-Mailaccount-Eintrag: {{{
| /usr/local/bin/ifspamh spam-_USERNAME_@systemausfall.org
}}}
Falls Spam-Mails lediglich markiert werden sollen, dann hilft folgendes: {{{
| /usr/local/bin/ifspamh spam-_USERNAME_@systemausfall.org || /bin/true
}}}
'''TODO: die Markierungs-Zeile ist nicht korrekt, da die Mails zusaetzlich auch im Spam-Verzeichnis landen'''

== Spam-Verschiebung ==
Alle Mails werden in den virtuellen Account ''spam'' (mit der dash-extension von qmail) umgeleitet. Somit benötigen wir einen LDAP-Eintrag für diesen virtuellen Account: {{{
dn: cn=spamsammler,ou=Roles,o=neofaxe,dc=systemausfall,dc=org
objectClass: virtualUser
objectClass: mailDestination
deliveryMode: nolocal
cn: spamsammler
mail: spam-default@systemausfall.org
mailMessageStore: spam/
qmailDotMode: dotonly
}}}

Jeder Nutzer benötigt nun im Verzeichnis ''/data/maildirs/spam/'' eine dot-qmail-Datei - also beispielsweise ''.qmail-joe'' mit dem folgenden Inhalt: {{{
/data/maildirs/joe/Maildir/.spam
}}}

== Spam-Verzeichnisse anlegen ==
Für jeden Nutzer: {{{
maildirmake /data/maildirs/joe/Maildir/.spam/
}}}

== Testen! ==
los geht's ...

= Nützliche Links und Notizen =
 * [[FaxeMailScanner/Notes]]


SMTP-Eingangstests (qmail-ldap)

Derzeit sind folgende Eingangstest in der /var/qmail/control/qmail-smtpd.rules aktiviert:

Spamassassin

zur Filterung von Spam-Mails ...

Installation

  • apt-get install spamassassin libnet-ldap-perl libnet-dns-perl pyzor dcc-client libmail-spf-query-perl

  • die Datei /etc/default/spamassassin

    • die Variable ENABLED auf 1 setzen

    • zu OPTIONS muss -A 10.0.0. --ldap-config -x hinzugefügt werden

    • in OPTIONS --max-children anpassen, mehr Kinder = mehr RAM Verbrauch

      • Ab spamassassin v3.0 wird intern ein prefork Modell benutzt, d.h. ein Kindprozess sollte bei geringem Spamaufkommen genügen. Mails werden jeweils in die Warteschlange eines Kindprozesses eingereiht. Wie groß diese ist hängt vom System ab und kann mit folgendem Befehl heraus gefunden werden:

        perl -MSocket -e'print SOMAXCONN'
      • Sind die Warteschlangen aller Kindprozesse voll, werden die Mails ignoriert und in den Logs erscheint z.B.: "spamd[12960]: prefork: server reached --max-children setting, consider

raising it".

  • in OPTIONS lässt sich die maximale Größe einstellen, bis zu der SA Mails scannt, größere werden ignoriert

  • eine globale Spamassassin-Konfigurationsdatei anlegen (z.B.: /etc/spamassassin/local.cf)

Einrichtung

  • für die persönlichen Nutzereinstellungen benötgt jeder ldap-Mail-Eintrag ein Attribut namens spamassassin - dies muss zur ldap-Klassendefinition hinzugefügt werden:

    • in die /data/etc/schema/sao.schema folgenden Attribut-Typ einfügen:

      attributetype ( 2.16.840.1.113730.3.1.217
              NAME 'spamassassin'
              DESC 'SpamAssassin user preferences settings'
              EQUALITY caseExactMatch
              SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) 
    • die Klassen-Definition (siehe /data/etc/schema/sao.schema) der ldap-Mail-Klasse (mailDestination) muss um dieses Attribut als MAY-Klausel erweitert werden

erster Test

  • den Spam-Daemon im Debug-Modus starten: spamd -D -C /etc/spamassassin 2>&1 | less

  • die mitgelieferte Spam-Test-Datei prüfen lassen: cat /usr/share/doc/spamassassin/examples/sample-spam.txt | spamc

  • falls dabei der Server-Output lock-Fehler meldet, solltest du chmod 777 /root/.spamassassin ausführen, da die Dateien vom Nutzer nobody angelegt werden

Optimierung

sa-learn

  • sa-learn kennt die Optionen -ham und -spam damit lässt sich der bayessche filter trainieren, einfach das Verzeichnis mit den Mals dahinter angeben

    • z.B. sa-learn -spam /meine/mailbox/nurspam 

    • sa-learn --dump magic erzeugt einen Bericht über das bisher Gelernte

      • nspam und nham sollten >200 sein, da sonst der Bayesfilter nicht verwendet wird

iXhash

  • In spamassassin lassen sich bequem Erweiterungen einbinden. Eine gut funktionierende besonders für den deutschen Sprachraum ist iXhash.

  • das tar.gz runterladen entpacken
  • die iXhash.cf & iXhash.pm nach /etc/spamassassin kopieren.

  • in der ersten Zeile der iXhash.cf den Pfad zur .pm Datei anpassen
  • beim nächsten Start von spamd wird der iXhash benutzt (siehe Logdatei)

Botnet

  • versucht zu ermitteln, ober der Absender einem Botnet entstammt
  • verzögerte die Spamfilterung bei meinen Tests erheblich

CompiledRegexps

  • beschleunigt die Spamfilterung durch vorcompilieren regulärer Ausdrücke
  • Maketools und ein Compiler werden gebraucht

    aptitude install make gcc re2c
  • in die Spamassassinconfig kommt folgende Zeile:

    loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody
  • mit sa-compile werden die Ausdrücke compiliert

    • sa-compile nochmal starten, falls beim Neustart von Spamassassin folgende Fehlermeldung auftaucht:

      Can't locate Mail/SpamAssassin/CompiledRegexps/body_0.pm

DomainKeys Identified Mail (DKIM)

Analyse

  • spamd -s /var/log/spamfilter.log .. sorgt dafür, dass alle Meldungen in der entsprechenden Datei landen

  • nun einige zeit warten
  • dann mit sa-stats wieviel spam pro user gefiltert wurde und wie hoch der Spamanteil insgesamt war

Einbindung in qmail

Auf dem mail-Server muss ein Interface-Programm installiert werden. Zur Auswahl stehen:

Wir folgten ansatzweise Fighting spam with qmail und nutzen ifspamh.

Spamassassin-Client

apt-get install spamc

ifspamh

Das ist einfach:

  • die neueste Version von ifspamh herunterladen

  • das Skript nach /usr/local/bin kopieren

  • eventuell ksh (korn-Shell) installieren

  • den Pfad von SPAMC in /usr/local/bin/ifspamh anpassen (/usr/bin/spamc)

  • da bei uns der spamd auf einem anderen rechner läuft braucht spamc die option -d RECHNERNAME

  • naja, ein Brocken kommt natürlich noch: ifspamh erfordert mess822 von djb:

    wget http://cr.yp.to/software/mess822-0.58.tar.gz
    tar xzf mess822-0.58.tar.gz
    cd mess822-0.58
    make
    make setup check

userpsezifische LDAP-Einträge

Falls die Spam-Filterung (also inklusive Verschiebung in ein separates Verzeichnis) aktiv sein soll, dann braucht mensch folgende LDAP-Zeile in seinem LDAP-Mailaccount-Eintrag:

| /usr/local/bin/ifspamh spam-_USERNAME_@systemausfall.org

Falls Spam-Mails lediglich markiert werden sollen, dann hilft folgendes:

| /usr/local/bin/ifspamh spam-_USERNAME_@systemausfall.org || /bin/true

TODO: die Markierungs-Zeile ist nicht korrekt, da die Mails zusaetzlich auch im Spam-Verzeichnis landen

Spam-Verschiebung

Alle Mails werden in den virtuellen Account spam (mit der dash-extension von qmail) umgeleitet. Somit benötigen wir einen LDAP-Eintrag für diesen virtuellen Account:

dn: cn=spamsammler,ou=Roles,o=neofaxe,dc=systemausfall,dc=org
objectClass: virtualUser
objectClass: mailDestination
deliveryMode: nolocal
cn: spamsammler
mail: spam-default@systemausfall.org
mailMessageStore: spam/
qmailDotMode: dotonly

Jeder Nutzer benötigt nun im Verzeichnis /data/maildirs/spam/ eine dot-qmail-Datei - also beispielsweise .qmail-joe mit dem folgenden Inhalt:

/data/maildirs/joe/Maildir/.spam

Spam-Verzeichnisse anlegen

Für jeden Nutzer:

maildirmake /data/maildirs/joe/Maildir/.spam/

Testen!

los geht's ...

Nützliche Links und Notizen

FaxeMailScanner (zuletzt geändert am 2012-06-13 21:26:18 durch anonym)


Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.