Mailserver mit Postfix, IMAP und Spamfilter
Technischer Stand: Jahr 2001. Dieser Artikel wird nicht mehr aktualisiert.
Die vollständige Konfiguration eines Mail- und Webservers wird
beschrieben in
Dedicated
Server (Rootserver) einrichten. Ich empfehle diesen Artikel als schrittweise
Anleitung.
Der wirksamen Eindämmung von Spam widmet sich der Artikel
Kampf
gegen Spam mit Postfix und Spamassassin.
Die hier beschriebene Mailserver-Konfiguration läuft unter OpenBSD 3.2. Unter Linux sollte das nahezu ohne Änderungen auch funktionieren.
Die folgende Beschreibung geht davon aus, daß Sie in Ihrem lokalen Netz einen eigenen Namensdienst betreiben und die Rechner Namen tragen, die auf intra.mydomain.net enden. Falls Sie Besitzer der Internet-Domain "mydomain.net" sind, ist durch den Domainnamen "intra.mydomain.net" keine Konfusion möglich; Sie können diesen Namensraum gestalten wie Sie wollen. Für Ihren Mailserver könnte der Name mail.intra.mydomain.net lauten.
Fetchmail
Fetchmail fragt externe Postfächer ab, in der Regel über POP3.
In /etc/fetchmailrc werden die Regeln für das Einsammeln von Email definiert:
set daemon 120
set logfile /var/log/fetchmail
poll external.mail.server.net protocol pop3 timeout 120
username myself password "myPasSwoRd" is "myself@mail.intra.mydomain.net" here
fetchall no keep smtphost mail.intra.mydomain.net
smtpaddress mail.intra.mydomain.net
Weitere Anweisungen zum Einsammeln der Email können nach gleichem Muster folgen.
Fetchmail wird gestartet mit:
/usr/local/bin/fetchmail -f /etc/fetchmailrc
Postfix
Postfix ist ein Mailsystem, das als Ersatz für sendmail dient und wesentlich sicherer sowie leichter einzurichten ist. Über Postfix wird lokal Email den entsprechenden Postfächern zugeordnet und externe Email über SMTP versandt.
Die Datei /etc/postfix/main.cf dient zur Konfiguration des Dienstes. Man sollte den Kommentaren in dieser Datei folgen. Auf drei wichtige Einträge sei hier besonders hingewiesen. Der erste dient zum Einrichten von Routen zu Mailrelays, der zweite teilt mit, daß Emails in nutzerspezifische Verzeichnisse "Maildir" abzulegen ist, wie sie Courier-IMAP benötigt. Der dritte setzt die maximale Größe einer Email auf 50 MB, oder was immer Sie wollen.
transport_maps = hash:/etc/postfix/transport home_mailbox = Maildir/ message_size_limit = 50000000
Zumindest ein spezieller Mailrelay ist nötig, wenn Sie selbst Kunde bei T-Online sind. Dazu tragen Sie in /etc/postfix/transport folgende Zeile ein:
t-online.de smtp:[smtprelay.t-online.de]
Courier-IMAP
Courier-IMAP wird in das Verzeichnis /usr/lib/courier-imap installiert. Die Konfigurationsdateien /usr/lib/courier-imap/etc/imapd und /usr/lib/courier-imap/etc/pop3d müssen ggf. entsprechend den Kommentaren angepaßt werden. Mit dem Kommando maildirmake wird für jeden Nutzer die Maildir-Struktur erzeugt. Danach ist der Empfang von Email über POP3 oder IMAP möglich. Man sollte sich für eine der Varianten entscheiden und dann dabei bleiben.
Outlook ist eines der besten IMAP-fähigen Mailprogramme. Das Konto muß als IMAP-Konto in Outlook eingerichtet sein und der Mailservername mail.my.intra.net muß dort eingetragen sein.
IMAP hat den Vorteil, daß mit Verwendung dieses Protokolls
- die Mail auf dem Mailserver dauerhaft verbleibt, sofern sie nicht explizit gelöscht wird (was kompatibler und auf die Dauer besser ist als Archivierung in Outlook, da die Email ihre Textform behält),
- bei Mailabruf zuerst nur die Header übertragen werden und nur auf ausdrückliche Anforderung die gesamte Mail (was unterwegs bei Mailabruf über GSM sehr nützlich sein kann).
Procmail
Procmail muß nur installiert werden, um den Spamfilter Spamassassin zu aktivieren.
In das Heimatverzeichnis jedes Nutzers kommt die Datei ~/.forward mit folgendem Inhalt:
"| /usr/local/bin/procmail -t"
Postfix wertet die Datei .forward automatisch aus.
Spamassassin
Ein alternatives Verfahren auf Basis von Maildrop ist an anderer Stelle beschrieben. Spamassassin dagegen benötigt kaum selbstgeschriebene Regeln, da die Software mit einem gut entwickelten Regelsatz ausgestattet ist. Ein weiterer Vorteil von Spamassassin ist, daß die Meinung von Internetdiensten wie Razor autoimatisch eingeholt werden kann.
Spamassassin erhält die zu überprüfenden Mails über Procmail. Dazu kommt in das Heimatverzeichnis jedes Nutzers die Datei ~/.procmailrc mit folgendem Inhalt;
# SpamAssassin procmailrc
#
# Pipe the mail through spamassassin (replace 'spamassassin' with 'spamc'
# if you use the spamc/spamd combination)
# The condition line ensures that only messages smaller than 250 kB
# (250 * 1024 = 256000 bytes) are processed by SpamAssassin. Most spam
# isn't bigger than a few k and working with big messages can bring
# SpamAssassin to its knees.
:0fw
* < 256000
| /usr/bin/spamc
# All mail tagged as spam (eg. with a score higher than the set threshold)
# is moved to "spam".
# spam not yet listed by Razor will be newly reported there
:0:
* ^X-Spam-Status: Yes
{
:0 c
* ^Subject[ :][ ]*\/.*$
| cat >/dev/null; /usr/bin/logger -t "spamassassin spam" "$MATCH"
:0 HB c
* !^SPAM: RAZOR2_CHECK
* !^Subject: Undeliverable:
| /usr/bin/spamassassin -r >/dev/null; /usr/bin/logger -t "spamassassin report" "(last mail)"
:0
! spam@mail.intra.barnim.net
}
:0 c
* ^X-Spam-Status: No
* ^Subject[ :][ ]*\/.*$
| cat >/dev/null; /usr/bin/logger -t "spamassassin good" "$MATCH"
# Work around procmail bug: any output on stderr will cause the "F" in "From"
# to be dropped. This will re-add it.
:0 H
* ! ^From[ :]
* ^rom[ :]
{
:0 fhw
| sed -e 's/^rom[ :]/F&/'
}
:0:
Maildir/
In /etc/mail/spamassassin/local.cf können gemeinsame Regeln für alle Nutzer auf dem Mailserver hinzugefügt werden:
rewrite_subject 0 fold_headers 0 whitelist_from myfriend@domain.net whitelist_from *@mycompany.com header TO_pop_gmx_de To =~ /pop\.gmx\.de/i describe TO_pop_gmx_de To: pop.gmx.de score TO_pop_gmx_de 5.0 header SUBJECT_3_dots Subject =~ /\.\.\./i describe SUBJECT_3_dots Subject: ... score SUBJECT_3_dots 3.0
etc. Auch die Bewertung bestimmter Kriterien kann nach oben wie unten angepaßt werden:
score CTYPE_JUST_HTML 3.0
Wenn Spamassassin nach seinem Kriterienkatalog eine Mail als Spam erkannt hat, wird sie in ein Postfach "spam" eingereiht, also nicht unmittelbar gelöscht. Jede Mail wird dabei auf Beckmessersche Art mit einem Katalog der Verfehlungen versehen:
SPAM: -------------------- Start SpamAssassin results ---------------------- SPAM: This mail is probably spam. The original message has been altered SPAM: so you can recognise or block similar unwanted mail in future. SPAM: Content analysis details: (7.50 hits, 5 required) SPAM: TO_bez_gmx_net (1.0 points) To: bez@gmx.net SPAM: WEB_BUGS (2.5 points) BODY: Image tag with an ID code to identify you SPAM: SPAM_PHRASE_00_01 (0.8 points) BODY: Spam phrases score is 00 to 01 (low) SPAM: JAVASCRIPT (0.2 points) BODY: JavaScript code SPAM: SUPERLONG_LINE (0.0 points) BODY: Contains a line >=199 characters long SPAM: CTYPE_JUST_HTML (3.0 points) HTML-only mail, with no text version SPAM: -------------------- End of SpamAssassin results ---------------------
Das spam-Postfach sollte ab und zu überprüft werden, ob nicht ein echter Millionengewinn dabei ist. Den Schmutz einmal im Monat zu überfliegen, kostet zwar auch Zeit, nervt aber weniger, als wenn man das jeden Tag tun muß.
Razor
Razor ist ein Internetdienst zur Registrierung von Spam. Das Prinzip: Wer meint, eine neue Spam-Mail entdeckt zu haben, leitet sie an Razor weiter. Wenn eine ausreichend hohe Zahl von Nutzern dieselbe Mail als Spam gemeldet hat, geht Razor davon aus, daß es sich wirklich um Spam handelt.
Um bei Razor zu prüfen, ob eine neu eingegangene Mail als Spam registriert ist, wird aus der Mail eine Prüfsumme erzeugt und diese an Razor geschickt. (Es wandert also nicht die evtl. vertrauliche Mail selbst an Razor ins Internet.)
Wenn Razor antwortet, daß es sich nach seinen Informationen bei der Mail um Spam handelt, wandert die Mail zwar nicht sofort in den Orkus, erhält aber ein paar Sonderpunkte.