Duisburger Linux User Group - http://www.dulug.de
Stammtisch 07.01.2005: E-Mail - Aufbau und Versand
Keine Garantie auf Vollständigkeit und/oder Funktionalität!!!
Autor: M. Franke

Aufbau eine E-Mail-Adresse:
Eine E-Mail-Adresse ist immer eindeutig und kann nicht doppelt vergeben sein. Im Beispiel soll die E-Mail-Adresse dulug-list@dulug.de kurz beschrieben werden:
dulug-list:
Name des Empfängers
@:
Trennzeichen zwischen Empfänger und Postfach (Klammeraffe oder engl. AT)
dulug.de:
Name des Postfachanbieters, meisstens der Internetprovider

Aufbau eine E-Mail:
Eine E-Mail selbst ist ursprünglich im lesbaren Text-Format und besteht aus einem Header in dem relevante Informationen zur E-Mail selbst drin stehen und dem Body, der die eigentlich Nachricht enthält. Beispiel für den Header (unvollständig) gefolgt vom Body:
...
From: Marek Franke <mfranke78@yahoo.de>
To: dulug-list@dulug.de
Subject: [dulug-list] Stammtisch
Date: Mon, 3 Jan 2005 20:16:26 +0000
User-Agent: KMail/1.7.1
MIME-Version: 1.0
Content-Type: text/plain;
charset="iso-8859-1"
...
Wollte nochmal an den Stammtisch der jetzt am Freitag stattfindet erinnern. Zudem möchte ich darum bitten das alle vorbeikommen die was zum Linuxgrillen beitragen wollen.
Gruss und Danke, Marek

Anhand der Information die im Header stehen kann man jetzt schon einiges über die E-Mail erfahren: wer die Mail geschrieben hat (bzw. von welcher Adresse die E-Mail losgeschickt worden ist), wohin sie gehen soll, den Betreff, das Datum, der E-Mail-Agent (das E-Mail-Programm das verwendet wurde) usw. Vielen ist vielleicht schonmal das Wort MIME über den Weg gelaufen aber wissen nicht so genau was damit gemeint ist. MIME ist eine Abkürzung und heisst Multipurpose Internet Mail Extensions (wörtlich übersetzt: Mehrzweck Internet Mail Erweiterungen). Ursprünglich konnte man E-Mail nur mit Informationen füllen die dem US-ASCII-Text einhielten. Viele Nutzer wollten aber auch Multimedia-Inhalte (Bilder, Töne, Videos etc.) und Texte versenden die nicht an den US-ASCII-Text gebunden waren. Dies ermöglichen die 7 verschieden MIME-Typen: text (default), image, audio, video, message, multipart und application. Man kann sich die Erweiterung ähnlich dem jetztigen Vorgang mit SMS vorstellen, zuerst konnte man nur reine Text-Nachrichten verschicken (SMS) und seit geraumer Zeit kann man auch Bilder versenden (MMS) usw. Wie man oben im Beispiel-Header sieht ist die E-Mail im Text-Format verschickt worden.

Versand einer E-Mail:
Zum versenden von E-Mails benutzt man das SMTP (SMTP - Simple Mail Transfer Protocol). Das SMTP kann nicht dafür benutzt werden um E-Mails zu Empfangen (siehe unten POP3), sondern dient wirklich nur der Kommuniktaion zwischen zwei Servern (siehe auch weiter unten Postfix) bzw. der Kommunikation zwischen Server und Client sofern man nur E-Mails versenden will! Das SMTP ist rein textbasiert und hat somit den Vorteil das man die Befehle zum Versand einer E- Mail auch z.B. über eine Telnet-Sitzung verarbeiten kann. Unter anderem können Spammer so auch E-Mail-Adressen (also die Ursprungs-Adresse - denn darauf kommt es ja an) fälschen. Um das mal auszuprobieren kann jeder den SMTP- Server seines Providers nutzen. Um nun telnet zu starten gibt man in der Shell das Kommando telnet gefolgt vom SMTP-Server seines Providers ein gefolgt vom Port. Der SMTP-Port ist meisstens 25, ansonsten kann man auch in der Regel direkt smtp eingeben:
$ telnet mail.arcor.de smtp
Trying 151.189.21.116...
Connected to mail.arcor.de.
Escape character is '^]'.
220 mail-in-08.arcor-online.net ESMTP arcor.de Mailservices usermail
HELO xyz.abc.de
250 mail-in-08.arcor-online.net
MAIL FROM:<xyz@abc.de>
250 Ok
RCPT TO:<mfranke78@yahoo.de>
250 Ok
DATA
354 End data with .
FROM: xyz@abc.de
TO: mfranke78@yahoo.de
SUBJECT: SPAM DULUG
Hallo DuLUG
.
250 Ok: queued as C2B402E02F
quit
221 Bye
Connection closed by foreign host.
$
Schauen wir uns die einzelnen telnet-Kommandos mal genauer an. Zuerst bauen wir eine Verbind zum SMTP-Server auf (hier ist es Arcor):
$ telnet mail.arcor.de smtp
Danach erhalten wir die Meldung das Versucht wird ein Verbindung aufzubauen und anschliessend wird die erfolgreiche Verbindung quittiert. Nun geben wir unser erstes SMTP-Kommando ein:
HELO xyz.abc.de
Damit sagen wir dem Server wer wir sind, bzw. da wir hier spammen wollen geben wir an der Stelle nur vor wer wir sind. Als nächstes fälschen wir unsere E-Mail- Adresse:
MAIL FROM:<xyz@abc.de>
Und nun geben wir unseren Empfänger ein:
RCPT TO:<mfranke78@yahoo.de>
Im Prinzip haben wir jetzt alle relevanten Angaben gemacht, fehlt nur noch der Inhalt den wir versenden wollen:
DATA
Nach Eingabe des Befehls DATA erhalten wir noch einen Hinweis wie die Dateneingabe wieder beenden können, in dem Fall <CR><LF>.<CR><LF>
Das heisst wir müssen einmal Enter drücken, den Punkt und nochmal Enter Drücken. CR heisst Carriage Return und LF heisst Line Feed und beschreibt das was die Enter-Taste auch macht: mit CR erreichen wir einen Wagenrücklauf (der Cursor springt zurück an den Anfang zum 1. Zeichen) und LF verursucht ein Zeilenvorschub (der Cursor springt in die nächste Zeile). Nun zurück zur Dateneingabe! Wir haben ja eben alle nötigen Eingaben dem SMTP-Server mitgeteilt, wer wir sind. von wem die E-Mail kommen soll und an wen die E-Mail versendet werden soll. Das sind Angaben die der Server verarbeitet und die nicht wie oben beschrieben im Mail-Header erscheinen, d.h. erst nach der eingabe von DATA sind wir auch wirklich in der Lage den Mail- Header zu fälschen:
FROM: xyz@abc.de
TO: mfranke78@yahoo.de
SUBJECT: SPAM DULUG
Hallo DuLUG

Zugleich habe ich hier noch die Betreffzeile (Subject) definiert und danach folgt der eigentliche Text der im Mail-Body erscheint. Prinzipiell wäre es auch möglich einen anderen Empfänger anzugeben da wir dem SMTP-Server ja schon den richtigen Empfänger angegeben haben! Wenn wir mit der Dateneingabe fertig sind (Enter-Punkt-Enter) können wir unsere Telnet-Sitzung beenden:
quit
Danach wird die E-Mail zugestellt.

Empfang einer E-Mail:
Hinter dem Empfang einer E-Mail steckt eigentlich nichts sonderlich Spektakuläres weshalb ich hier nicht grossartig drauf eingehen will. Das Gegenstück zu SMTP ist halt POP3 (Post Office Protocol Version 3) und wird nur zum Abholen einer E-Mail und zum Löschen einer E-Mail auf einem Server benutzt. Leider gibt es bei POP3 keine Möglichkeiten wie oben um sich so gegen Spam zu schützen sondern Bedarf einiger Erweiterungen. Natürlich kann man aber auch wie oben mit einer Telnet-Sitzung seine E-Mail vom Server abholen!
Schutz gegen Spam:
Eins vorweg: gegen Spam ist kein wirkliches Kraut gewachsen! Es gibt verschiedene Möglichkeiten und Ansätze die mehr oder weniger gut bzw. schlecht Spam ausfiltern können.
1. Mail-Provider:
Eine Möglichkeit ist das man sich einen Mail-Provider sucht der Spam direkt selbst ausfiltert. Man muss nur noch angeben was mit dieser Mail geschehen soll, z.B. kann man so den Server anweisen das eine Spam-Mail in einem speziellen Ordner gespeichert werden oder direkt gelöscht werden soll. An der Stelle sei z.B. Yahoo zu erwähnen. Natürlich ist auch möglich auf seinem lokalem Rechner einen Mail-Server zu installieren und so Spam-Mails selber zu filtern.
2. Mail-Client:
Einige Mail-Clients bieten die Möglichkeit an bestimmte Filter zu definieren. Diese sind dann aber nur so gut wie der Anwender selbst diese Filter regelt. Z.B. ist es so möglich bestimmte E-Mails die von einer bestimmten Adresse kommen direkt auf dem Server zu löschen.
3. Spamassassin:
Spamassassin ist ein Spamfilter der E-Mails nachdem abholen vom Server auf typische Spam-Sätze wie z.B. "...strong buy..." etc filtert. Spamassassin soll allerdings recht Ressourcenfressend sein aber dabei ca. 90% aller Spam-Mails heurausfiltern können. Zudem soll auch die Installation recht einfach sein und man kann Spamassassin unter http://www.spamassassin.org herunterladen.

Weiterführende Links zum Thema:
Mailserver Postfix:
http://www.linuxnetmag.com/de/issue8/m8mailserver1.html
Desweiteren kann man Postfix auch weiter ausbauen: Webmail (Squirrelmail),
Faxgateway (HylaFAX), Anrufbeantworter (VBOX)
Spam:
http://www.linuxfocus.org/Deutsch/January2003/article279.shtml
http://www.spamassassin.org