phpbar.de logo

Mailinglisten-Archive

[php] Umlaute in Emailadressen

[php] Umlaute in Emailadressen

Johannes Schlueter schlueter at phpbar.de
Mit Apr 27 17:52:27 CEST 2005


Hi,

auch wenn das eigentliche Problem gelöst ist ein paar Anmerkungen:

On Wednesday 27 April 2005 17:04, Frank Liebelt wrote:
> lieschen.müller at würdegernemailsempfangen.de
[...]
> Dann hoffe ich mal, dass Postfix und phpMailer mit umlauten umgehen können!

Wie schon Albert Weinert geschrieben hat sind nur im hostnamen, nicht im local 
part Umlauter erlaubt. Und da grundsätzlich jedes Zeichen was in Unicode 
definiert ist. Dieses wird aber wieder von den verschiedenen Registries 
eingeschränkt, das DENIC erlaubt für .de z.B. nur Zeichen die es auch im 
Latin-1 (iso-8859-1 gibt, etwas genauer, die lateinischen Buchstaben mit den 
verschiedenen Akzentarten sowie solche Dinger wie ß und æ)

Da die verantwortlichen nicht wollten dass jeder Server und alles dafür 
gepatcht werden muss wurde festgelegt, dass der MUA, also das Programm dass 
die E-Mail schickt bzw. Empfängt (MUA = Mail User Agent, in der Regel der 
Mail-Client) für die Konvertierung in die Punycode-Form verantwortlich ist 
und den Servern die zum schicken verwendet werden, sowie dem dNS dasvon 
nichts wissen. Die Punycode-Darstellung ist eine Ersetzung der Sonderzeichen 
durch Zeichen aus dem Bereich [a-z], aus www.schlüter.de wird dann z.B. 
www.xn--schlter-q2a.de. xn-- ist dabei die Kennzeichnung, dass es Punycode 
ist, der Umlaut ist rausgeflogen und q2a ist eine Kodierung der Position und 
des Unicodezeichens ü. Eine Sonderolle spielen die Zeichen wie ß und æ die 
werden anhand der sogenannten stringprep Tabelle in ss bzw. ae umgeschrieben. 
Da wird kein xn-- oder so vorgesehen. mit einem IDN-Fähigen Client sollte man 
also auch die Website der Stadt Essen über www.eßen.de erreichen :-)

Nach dem Ausflug über die Interna wieder zurück zu PHP: Wie gesagt ist der MUA 
verantwortlich. Wer per PHP eine Mail sendet ist MUA und muss sich um die 
Konvertierung kümmern. Da gibt es 1,5 Ansätze. Der funktionierende Ansatz ist 
die PEAR Net_IDNA Klasse die zum Übersetzen verwendet werdne kann. Der halbe 
Weg ist meine idn Extension in PECL - die tut das was ich wollte als ich die 
schnell zusammengehackt habe aber nicht viel mehr. Sie basiert auf der GNU 
libidn die z.B. es auch ermöglichen würde anhand gewisser Tabellen zu checken 
ob nur erlaubte Zeichen im Hostname sind - aber die müsste, wenn ich mal die 
Zeit und Lust habe, rewritten werden.

johannes

P.S. Der RFC-konforme Check für E-Mail-Adressen ist der: 
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html ;-)

php::bar PHP Wiki   -   Listenarchive