Montag, 13. Oktober 2008

entwickler.com Magazine Konferenzen Entwickler Akademie Entwickler-Forum Jobbörse Bücher
Software & Support Verlag

Email-Header analysieren

Frage: Ich muss Mails auswerten. Ich habe ein Problem mit dem Datei-Header, der vor dem Text kommt. Wer hat eine Doku zum Header, und weiss, wo man so etwas bekommen kann (ein Buch, im WWW)?
Ich soll auswerten, vom wem die Mail ursprünglich gekommen ist. Da diese inzwischen aber x- mal weitergeleitet wurde, muss ich wissen, ob auch der erste Absender in der Mail mitgeführt wird?

Antwort: RFC 822 und RFC 2822 (das Update). Diese Standards legen den Umgang mit Textnachrichten bis ins Detail fest (RFC 822: "Standard for the format of ARPA Internet text messages"). Unter [1] und [2] finden Sie ausführliche Informationen im Web.

Fast alle Programmiersprachen stellen Funktionen für diese Aufgabe bereit (Perl, Java, Python etc.). Am Beispiel zweier Python-Programme, zur Einführung in die Thematik, soll aufgezeigt werden, dass die oben erwähnte Aufgabe leicht zu bewältigen ist.

Falls Sie die Beispiele nachvollziehen möchten: auf Ihrer Maschine muss Python installiert sein. Mit which python kann man das in Erfahrung bringen.

Wir verwenden hier das Modul rfc822 und anschliessend das aktuelle Standardmodul email. Es wird empfohlen, stets das Letztere zu nutzen, welches seit Python 2.2 zur Verfügung steht.


#!/usr/bin/env python

import rfc822

if __name__ == '__main__':

datei = 'mail_samp.txt'
msg = rfc822.Message(open(datei))

for k, v in msg.items():
print k, "-", v

Dieses kleine Programm gibt die Header einer Email auf der Konsole aus. Das nächste Programm ist etwas spezieller, es speichert den Received-Header in einer Liste und gibt dieselbe auf der Konsole aus. So kann man sich Stück für Stück vorarbeiten.

#!/usr/bin/env python

import email

if __name__ == '__main__':

datei = 'mail_samp.txt'
msg = email.message_from_file(open(datei))
res = []
for k in msg.keys():
if k == 'Received':
res.append(msg[k])
print res

Das soll es gewesen sein. Viel Spass.

Thomas Kaufmann

Links

[1] RFCs: http://www.faqs.org/rfcs/rfc822.html
[2] RFCs: http://www.faqs.org/rfcs/rfc2822.html




Software & Support Verlag GmbH