Mailserver unter Linux
Martin Klisch
08689
http://www.klitec.de
Übersicht
1 Die elektronische Post 1.1 Was ist elektronische Post 1.2 Geschichte der E-Mail 1.3 Abläufe des E-Mail-Transportsystems im Internet 1.4 Adressierung einer E-Mail 1.5 Aufbau und Formatierung einer E-Mail
2 Protokolle 2.1 Simple Mail Transfer Protocol (SMTP) 2.2 Post Office Protocol Version 3 (POP3)
Übersicht
2.3 Internet Message Access Protocol (IMAP) 2.4 Spam und Malware
3 Betrieb eines Mailservers 3.1 Anforderungen an einen modernen Mailserver 3.2 Was wird alles benötigt? 3.3 Spamfilter
4 Installation eines Mailservers 4.1 Vorraussetzungen 4.2 Installation der Programme 4.3 Anlegen von Benutzern
1 Die elektronische Post
1.1 Was ist elektronische Post? Vergleichbar mit normalen Brief Anschrift entspricht der Adresse Briefkasten entspricht einem Mailserver Abläufe im Postamt entsprechen Abläufe auf
Mailserver Transport nicht mit Postauto, sondern mit Hilfe
eines Netzwerkes (Internet)
1 Die elektronische Post
Hallo,
Wie geht es dir?
Mit freundlichen Grüßen
Hochschule MerseburgGeusaer Straße 8806217 Merseburg
Hochschule MerseburgGeusaer Straße 8806217 Merseburg
Brief
Anschrift
Postkasten
1 Die elektronische Post
Brief
E-Mail Adresse
Server
1 Die elektronische Post
1.2 Geschichte der E-Mail Ursprung im ARPAnet in den 70er Jahren Unter Benutzung schon existierender Protokolle
wie FTP, TELNET oder UUCP Anfang der 70er Jahre: „Mail Box Protocol“ Versand wurde über so genannte Relays
durchgeführt 1982 Einführung des „Simple Mail Transfer
Protocol“ (SMTP) Spätere Erweiterung des zum „Simple Mail
Transfer Protocol Service Extensions“ (ESMTP)
1 Die elektronische Post
Viele Jahrzehnte nur von Akademikern benutzt Erst ab den 90er Jahren weite Verbreitung in der
Öffentlichkeit Ist neben dem World-Wide-Web eine der
wichtigsten Anwendungen im Internet Mail-Aufkommen steigt exponentiell an
1 Die elektronische Post
1.3 Abläufe des E-Mail-Transportsystems im Internet Die meisten TCP/IP Protokolle dienen der
direkten Kommunikation zwischen zwei Hosts Elektronische Post: Kommunikation direkt
zwischen den Anwendern Kommunikation läuft asynchron ab Sehr große Verbreitung und Kompatibilität Verschiedenste Arten von Endgeräten
1 Die elektronische Post
Gesamter Prozess besteht regulär aus fünf Schritten: 1. Erstellung 2. Übertragung 3. Zustellung 4. Empfang und Verarbeitung 5. Zugriff und Abfrage
Erstellung und Übertragung sowie Empfang und Zugriff können auch zusammengefasst werden
1 Die elektronische Post
Mailserver vonBenutzer A
Mailserver vonBenutzer B
Internet
Benutzer A Benutzer B
SMTP
SMTP SMTP
POP3 /
IMA
P
1 Die elektronische Post
Kein einzelner Standard Bildet ein System aus verschiedenen Standards,
die modular zusammengesetzt sind: MTA (Mail Transfer Agent)
Erledigt Transport und Verteilung der Mails MDA (Mail Delivery Agent)
Nimmt E-Mails an und verteilt sie auf Empfänger-Mailboxen MRA (Mail Retrieval Agent)
Bietet gespeicherte E-Mails für den Mail User Agent an MUA (Mail User Agent)
Programm, womit E-Mails gelesen, geschrieben, gesendet und verwaltet werden können
1 Die elektronische Post
Empfänger und Sender müssen nicht direkt miteinander kommunizieren können
Die beteiligten SMTP-Server müssen sich jedoch direkt erreichen können
Die POP3-/IMAP-Server müssen durchgehend von den abrufenden Clients erreichbar sein
-> Vorteil des gesamten Systems: Empfänger und Sender einer E-Mail müssen nicht durchgängig Online sein um E-Mails auszutauschen
Empfänger sucht sich selber aus, wann er die E-Mail abholen will
1 Die elektronische Post
1.4 Adressierung einer E-Mail E-Mail Adresse besteht immer aus zwei Teilen:
Lokaler Teil(Benutzernameoder Mailboxname)
DomainnameTrennzeichen
1 Die elektronische Post
Der lokale Teil: Ist innerhalb der Domain eindeutig Darf nur Buchstaben und Zahlen sowie einige
bestimmte Zeichen enthalten Der lokale Teil einer E-Mailadresse ist Case-Sensitive
Der Domain-Teil: Unterliegt den Regeln des DNS (a-z, 0-9,., -) Domain muss existieren und sollte im Domain-Name-
System einen MX-Eintrag besitzen
1 Die elektronische Post
MX-Eintrag Legt fest zu welchem SMTP-Server eine E-Mail, die an eine
bestimmte Domain adressiert ist, geliefert werden soll Beispiel:
1 Die elektronische Post
1.5 Aufbau und Formatierung einer E-Mail Folge von ASCII Zeichen Codierung in 7 Bit -> Umlaute müssen anders
dargestellt werden Eine E-Mail besitzt zwei Teile: Header, Body
1 Die elektronische Post
Date: 5 Dec 2005 21:23:39 +0100To: [email protected]: Test Received: from 85.116.204.35 (auth. user [email protected]@mail.campus-merseburg.de)by angst.verrissen.org with HTTP;Mon, 05 Dec 2005 20:23:39 +0000 Message-ID:<[email protected]>From: <[email protected]>
Dies ist ein test
Header
Body
1 Die elektronische Post
Header: Die Kopfzeilen der E-Mail Besteht aus einer Folge von Feldern, jedes Feld
entspricht einer Zeile – „Feldname: Feldinhalt“ Beinhaltet alle wichtigen Informationen um eine E-Mail
zu transportieren Kann Auskunft über den zurück gelegten Weg geben Beinhaltet in der jüngsten Zeit auch Informationen auf
durchgeführte Spam- oder Virenscans
1 Die elektronische Post
From Absender
Subject Betreff
To Empfänger
Received Zeigt den Weg, den eine Nachricht vom Sender zum Empfänger gegangen ist
Date Datum der Erstellung
Message-ID Ist eine eindeutige Identifikationsnummer einer E-Mail
CC Carbon Copy – weitere Empfängeradressen
BCC Blind Carbon Copy – weitere „unsichtbare“ Empfängeradressen
1 Die elektronische Post
Body: Folgt nach dem Header (durch eine Leerzeile
getrennt) Besteht nur aus Zeichen mit 7 Bit Maximal 1000 Zeichen pro Zeile Sollen andere Zeichen, Umlaute oder binäre Anhänge
benutzt werden, müssen diese extra kodiert werden Einschränkungen werden durch MIME (Multipurpose
Internet Mail Extensions) größtenteils aufgehoben
2 Protokolle
2.1 Simple Mail Transfer Protocol (SMTP) Transport einer Mail vom Client zum Mailserver Transport einer Mail von Mailserver zu Mailserver SMTP-Server läuft regulär auf Port 25 (TCP) Übertragung im Klartext (ASCII) Ursprünglich in RFC 821 dokumentiert, aktuellste
Version ist RFC 2821 Offizieller Internet Standard Erweiterung ist Simple Mail Transfer Protocol
Service Extensions (ESMTP)
2 Protokolle War ursprünglich ein authentifizierungsfreies
Protokoll Kann er eine Nachricht nicht direkt (lokal)
zustellen, baut er eine Verbindung zu einem anderen Mailserver auf (SMTP Relay)
Problem des Missbrauchs: Jeder Nutzer könnte den SMTP-Server nutzen Spammer nutzen diese Sicherheitslücke aus
Lösung: SMTP-Server akzeptiert Mails unbekannter Absender
nur noch an lokale Benutzer Echtes SMTP Relay ist weiterhin nach einer
Authentifizierung möglich: SMTP-AUTH
2 Protokolle
Weiteres Problem: Übertragung der E-Mails laufen im Klartext ab Somit ist die Möglichkeit einer Spionage gegeben
Lösung: Schaffung eines sicheren Übertragungskanals „Secure SMTP over SSL/TLS“ über Port 465
2 Protokolle
2.2 Post Office Protocol Version 3 (POP3) Abholen von E-Mails von einem Mailserver POP3-Server läuft regulär auf Port 110 (TCP) Übertragung in Klartext (ASCII) Authentifizierung nötig Sehr einfaches Protokoll:
Nachrichten werden vom Client abgeholt Auf Server gelöscht
Entstand mit dem Aufkommen der Personal Computer in den 80er Jahren
2 Protokolle
Problem: Übertragung der E-Mails laufen im Klartext ab Somit ist die Möglichkeit einer Spionage gegeben
Lösung: Schaffung eines sicheren Übertragungskanals „Secure POP3 over SSL/TLS“ über Port 995
2 Protokolle
2.3 Internet Message Access Protocol (IMAP) Zugriff und Verwaltung auf empfangene E-Mails IMAP-Server läuft regulär auf Port 143 (TCP) Übertragung in Klartext (ASCII) Authentifizierung nötig Post bleibt auf Mailserver liegen Nachrichten können selektiv und partiell herunter
geladen werden Unterstützung von Ordnern auf Mailserver
2 Protokolle
Nachrichten können direkt auf Server gesucht und sortiert werden
Auf IMAP-Postfach kann zugegriffen werden, als würden sich die Nachrichten auf lokalen Rechner befinden
Problem: Übertragung der E-Mails laufen im Klartext ab Somit ist die Möglichkeit einer Spionage gegeben
Lösung: Schaffung eines sicheren Übertragungskanals „Secure IMAP over SSL/TLS“ über Port 993
2 Protokolle
2.4 Spam und Malware Spam-Mails sind massenhafte und unerwünschte
Nachrichten, z.B. Werbung Malware: „von Malicious Software“ – Böswillige
Software, z.B. Viren, Trojaner, Würmer Der Großteil des E-Mail-Verkehrs besteht
mittlerweile aus Spam und Malware Urhebern droht meistens keine Strafe Der Grund für die Möglichkeiten von Spam und
Malware ist im SMTP-Protokoll und in der Globalität des Internets zu suchen
Ist nur durch komplexe Filter zu verhindern
3 Betrieb eines Mailservers
3.1 Anforderungen an einen modernen Mailserver Zuverlässigkeit:
Es dürfen keine E-Mails verloren gehen Der Mailserver sollte immer erreichbar sein
Zugriffsmöglichkeiten der Benutzer: SMTP und SMTP-SSL/TLS zum Versenden von E-Mails POP3 und POP3-SSL/TLS zum Empfangen von E-Mails IMAP und IMAP-SSL/TLS zum Empfangen von E-Mails
3 Betrieb eines Mailservers Sicherheit:
Es darf niemand unbefugt Zugriff auf fremde E-Mails bekommen
Es sollten verschlüsselte Protokolle unterstützt werden Mailserver darf nicht als SMTP-Relay benutzt werden SMTP Authentifizierung
Einfache Administration Erstellung eines Webfrontends um Benutzer
hinzuzufügen oder zu löschen Einbindung in existierende Strukturen (Datenbank,
Radius) Unterstützung verschiedener Domains
3 Betrieb eines Mailservers Spam- und Virenfilter
Es sollten leistungsfähige Spam- und Virenfilter installiert sein
Die dazugehörigen Datenbanken sollten immer auf dem aktuellen Stand sein
Gute Treffer-Quote bei geringem False-Positive-Ausschuss
Leichte Bedienbarkeit Leistung und Performance
Das System sollte den Anforderungen des Mailaufkommens entsprechen
Kurzzeitige Fluten von Malware sollten keine negativen Auswirkungen auf die Erreichbarkeit haben
Standortwahl
3 Betrieb eines Mailservers
Weitere benutzerfreundliche Features Webmail Mailinglisten
3 Betrieb eines Mailservers
3.2 Was wird alles benötigt? Qmail
Modularer und sicherer Mail Transfer/Delivery Agent Weit verbreitet Viele Erweiterungen existent „SMTP over SSL/TLS“ fähig
Courier-IMAP Mail Retrieval Agent (MRA) „POP3 over SSL/TLS“ fähig „IMAP over SSL/TLS“ fähig
3 Betrieb eines Mailservers
Qmail-Scanner Erweiterungsscript für Qmail Scannt von Qmail angenommene Mails nach Viren
und Malware SpamAssassin
Bekanntester Spamfilter Wird von qmail-scanner aufgerufen Nutzt zum erkennen von Spam:
Distributed Checksum Clearinghouse (DCC) Vilpul‘s Razor
3 Betrieb eines Mailservers
F-Prot Anti-Viren-Programm Wird von qmail-scanner aufgerufen
VPOPMAIL Verwaltung der Domains und Benutzer
MySQL Beinhaltet User- und Domaindatenbank
Apache und PHP Webserver für die Frontends
3 Betrieb eines Mailservers
3.3 Spamfilter 3.3.1 Statische Regeln
Basieren auf reguläre Ausdrücke Bestimmte Eigenschaften (Wörter) einer E-Mail
werden überprüft und dazu eine Punktzahl festgelegt Es wird nach Fehlern im Header oder Body gesucht,
die typisch für Spam sind Gesamtpunktzahl wird zusammengerechnet Z.B. SpamAssassin
3 Betrieb eines Mailservers
3.3.2 „Collaborative Filtering Networks“ Es werden Checksummen von bestimmten Teilen
einer Mail berechnet und an öffentlichen Datenbanken geschickt
Wenn gleiche Checksummen innerhalb kürzester Zeit eintreffen, ist die Wahrscheinlichkeit hoch, dass es sich um Spam handelt
Z.B. Razor, Pyzor und DCC (laufen wegen Schnelligkeit mit UDP anstatt mit TCP)
Ergebnisse ergeben wiederum eine Punktzahl
3 Betrieb eines Mailservers
3.3.3 „Realtime Blackhole Lists“ (RBL) Überprüfung ob der SMTP-Server, der gerade
versucht eine Mail abzusetzen, in einer öffentlichen schwarzen Liste mit „offenen“ Relay-Servern existiert
Unsicher, da auch Webmail-Anbieter wie GMX gelegentlich in solchen Listen auftauchen
Ergebnis bekommt auch wieder eine Punktezahl
3 Betrieb eines Mailservers
3.3.4 Bayesscher Filter Rechnet anhand des Vorkommens bestimmter Wörter
die Wahrscheinlichkeit aus, ob eine Mail Spam ist Selbstlernend Lernt aus bereits als Spam erkannten E-Mails neue
Wörter – funktioniert bei einer großen Menge an Mails sehr gut
Ergibt wieder eine bestimmte Punkteanzahl
3 Betrieb eines Mailservers
3.3.5 Die Aufgabe von SpamAssassin Die Aufgabe von SpamAssassin ist es nun die
Ergebnisse aus allen Methoden so auszuwerten, dass Spam erkannt wird
Ziel: Möglichst viele Spam-Mails sollen erkannt werden und möglichst wenig Mails sollen fälschlicherweise als Spam erkannt werden (False-Positive)
X-Spam-Status: Yes, hits=16.7 required=5.0 tests=CLICK_BELOW,DOMAIN_4U2,EXCUSE_10,EXCUSE_13,EXCUSE_14, GAPPY_TEXT,LINES_OF_YELLING,LINES_OF_YELLING_2, LINES_OF_YELLING_3,ONLY_COST,PLING_PLING,PRIORITY_NO_NAME, RCVD_IN_DSBL,RCVD_IN_RFCI,REMOVE_IN_QUOTES,REMOVE_SUBJ, REPLY_REMOVE_SUBJECT,SEE_FOR_YOURSELF,SPAM_PHRASE_13_21, SUBJ_DOLLARS,UPPERCASE_25_50X-Spam-Flag: YESX-Spam-Level: ****************X-Spam-Checker-Version: SpamAssassin 2.43 (1.115.2.20-2002-10-15-exp)X-Spam-Report: 16.70 hits, 5 required; * 1.1 -- Subject starts with dollar amount * 0.8 -- BODY: List removal information * 0.7 -- BODY: See for yourself * 0.5 -- BODY: Gives an excuse for why message was sent * 0.5 -- BODY: List removal information * 0.4 -- BODY: Domain name containing a "4u" variant * 0.4 -- BODY: List removal information * 0.3 -- BODY: "if you do not wish to receive any more" * 0.3 -- BODY: Asks you to click below * 0.2 -- BODY: Tells you how to stop further spam * 0.2 -- BODY: Only $$$ * 0.0 -- BODY: Contains 'G.a.p.p.y-T.e.x.t' * 1.3 -- BODY: Spam phrases score is 13 to 21 (high) [score: 19] * 0.3 -- BODY: 3 WHOLE LINES OF YELLING DETECTED * 0.2 -- BODY: 2 WHOLE LINES OF YELLING DETECTED * 0.2 -- BODY: A WHOLE LINE OF YELLING DETECTED * 3.2 -- RBL: Received via a relay in list.dsbl.org [RBL check: found 19.134.91.211.list.dsbl.org] * 2.3 -- RBL: Received via a relay in ipwhois.rfc-ignorant.org [RBL check: found 19.134.91.211.ipwhois.rfc-ignorant.org., type: 127.0.0.6] * 1.0 -- Message has priority setting, but no X-Mailer * 1.5 -- Subject has lots of exclamation marks * 1.3 -- message body is 25-50% uppercase
4 Installation eines Mailservers
4.1 Vorraussetzungen Domain + Zugriff auf DNS Server mit statischer IP-Adresse Distribution: Gentoo Webserver: Apache 2.0.54 PHP 4.4 MySQL 4.1.14 OpenSSL Daemontools PERL
4 Installation eines Mailservers
4.2 Installation der Programme 4.2.1 QMAIL 1.03
Paket installieren bzw. per Hand Compilen (Patches!) RSA Keys für SSL/TLS erstellen Self-signed SSL-Zertifikat erstellen
4 Installation eines Mailservers
4.2.2 Installation von Courier-IMAP Courier Authentication Library als erstes installieren Dann das eigentliche Paket installieren Authlib kann unterschiedliche Backends zu
Authentifizierung benutzen (z.B. MySQL, LDAP u.a.) Unsere Wahl: Authentifizierung der Benutzer über
VPOPMAIL Weitere Konfiguration (z.B. SSL/TLS)
4 Installation eines Mailservers
4.2.3 Installation von VPOPMAIL Paket installieren bzw. per Hand Kompilieren Datenbank anlegen und konfigurieren
mysql> create database vpopmail; mysql> grant select, insert, update, delete, create, drop on vpopmail.* tovpopmail@localhost identified by 'blah123'; mysql> flush privileges; mysql> quit
SMTP-Server von Qmail konfigurieren, dass SMTP-AUTH mit VPOPMAIL geht:
4 Installation eines Mailservers
4.2.4 Installation der SPAM-Datenbank-Clients und des Virenscanners Razor DCC (Distributed Clearinghouse Checksum) F-Prot Einrichten mit Default-Konfiguration Einen Eintrag in der Crontab, dass F-Prot regelmäßig
seine Virendatenbank updated
4 Installation eines Mailservers
4.2.5 Installation von SpamAssassin SpamAssassin soll mehrere „Collaborative Filtering
Networks“ abfragen SpamAssassin soll den internen Bayes Filter
verwenden:required_hits 5.0rewrite_header Subject ****SPAM****use_bayes 1bayes_auto_learn 1bayes_auto_learn_threshold_nonspam 1.5bayes_auto_learn_threshold_spam 6.0use_dcc 1use_pyzor 1
Als Daemon starten
4 Installation eines Mailservers
4.2.6 Installation des Qmail-Scanners Erkennt bei der Installation automatisch
SpamAssassin und F-Prot SMTP-Server muss wissen, dass er qmail-scanner
nutzen soll (Ausschnitt aus „/etc/tcprules.d/tcp.qmail-smtp“):#IPs allowed to relay - don't scan with qmail-scanner## localhost127.0.0.:allow,RELAYCLIENT="",RBLSMTPD=""# Don't relay from other IPs. Scan with qmail-scanner:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue"
4 Installation eines Mailservers
4.3 Anlegen von Benutzern 4.3.1 Anlegen der Domain und des Postmasters
im Mailsystem über die Shell 4.3.2 Anlegen einzelner Benutzer über ein
Frontend 4.3.3 Benutzen von Webmail