500 likes | 613 Views
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
E N D
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 Anschrift Hochschule Merseburg Geusaer Straße 88 06217 Merseburg Hallo, Wie geht es dir? Mit freundlichen Grüßen Postkasten Brief
1 Die elektronische Post E-Mail Adresse Brief 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 von Benutzer B Mailserver von Benutzer A SMTP SMTP Internet POP3 / IMAP SMTP Benutzer B Benutzer A
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: martin.klisch@stud.hs-merseburg.de Lokaler Teil (Benutzername oder Mailboxname) Trennzeichen Domainname
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 +0100 To: mak@klitec.de Subject: Test Received: from 85.116.204.35 (auth. user martin@campus- merseburg.de@mail.campus-merseburg.de) by angst.verrissen.org with HTTP; Mon, 05 Dec 2005 20:23:39 +0000 Message-ID: <HPpDvt8m.1133814219.2424570.martin@campus-merseburg.de> From: <martin@campus-merseburg.de> 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 • 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.* to vpopmail@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.0 rewrite_header Subject ****SPAM**** use_bayes 1 bayes_auto_learn 1 bayes_auto_learn_threshold_nonspam 1.5 bayes_auto_learn_threshold_spam 6.0 use_dcc 1 use_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 ## localhost 127.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