ProjekteNerdkrams
In eigener Sache: Mailadressen weniger wütend validieren mit libvldmail.

Immer nur auf Web­stan­dards herumzuhack­en ist auf Dauer etwas ein­tönig. Darum hacke ich heute ein­mal auf ein­er anderen Gruppe von Stan­dards herum: Mailadressen.

E‑Mail-Adressen — das haben sie “Mes­sen­gern” und der­gle­ichen voraus — sind bekan­ntlich oft lan­glebig, so manch­er Men­sch im Bekan­ntenkreis kön­nte eine E‑Mail-Adresse haben, deren Alter zwei Jahrzehnte bere­its erre­icht hat. Viele der heuti­gen Dig­i­tal­isierten waren damals noch gar nicht geboren.

Zugrunde liegen, jew­eils aufgeteilt in ver­schiedene RFC-Doku­mente, zwei ver­schiedene Stan­dards (ein­er für den Teil vor dem @, den so genan­nten “local part”, und ein­er für den Teil nach dem @, den so genan­nten “domain part”), wobei mit dem Aufkom­men von Uni­code­do­mains bei­de Stan­dards eine Erweiterung beka­men, die die Nutzung von UTF-8-Zeichen in bei­den Hälften option­al erlauben, so lange das “@” beste­hen bleibt. Einige der definieren­den RFC-Doku­mente dienen nur dem Zweck, die anderen RFC-Doku­mente zu erk­lären: RFC 3696 etwa gibt einen groben Überblick über die Vali­dierung von URL- und URI-For­mat­en, sozusagen “für Dum­mies”. Das sowieso schon unüber­sichtliche Regel­w­erk ken­nt wiederum so viele Aus­nah­men, dass sog­ar in der englis­chsprachi­gen Wikipedia beispiel­haft Mailadressen als “ungültig” ste­hen, von denen allerd­ings anscheinend nie­mand — die RFCs eingeschlossen — weiß, warum.

Hinzu kommt, dass zwis­chen Stan­dard und gelebter Prax­is wie auch im Web ein größer wer­den­der Graben aufge­tan wurde, oft inner­halb des­sel­ben Dien­stes; so unter­stützt etwa die Webober­fläche von Google Mail das Anle­gen von Mailadressen mit Son­derze­ichen darin nicht, der dazu gehörende Mailserv­er allerd­ings — tech­nisch gese­hen — dur­chaus. Eine Vali­dierung nach dem Kri­teri­um, welche Mailadressen der eigene Anbi­eter für “gültig” hält, ist allerd­ings ohne direk­ten Zugriff auf diese Mailserv­er nicht ohne weit­eres möglich.

Als wären die Stan­dards nicht auch ohne solche Speren­zchen merk­würdig genug. Es gilt zum Beispiel die Regel, dass sehr wohl bes­timmte Zeichen oder Zeichen­fol­gen nachträglich als “ungültig” (dep­re­cat­ed) gekennze­ich­net wer­den kön­nen, was aber natür­lich nicht heißt, dass man seine alten Mailadressen nicht mehr weit­er­be­nutzen darf. Ein Beispiel: Ich hätte mir vor langer Zeit die Mailadresse musik.ist.“supi”@provider.tld anle­gen kön­nen. Da gemäß RFC 5322 von ein­er Kom­bi­na­tion aus Text inner­halb und außer­halb von Anführungsze­ichen im “local part” aber inzwis­chen abger­at­en wird, dürfte ich sie bei einem Anbi­eter, der sich strikt an den Stan­dard hält, nicht mehr anle­gen — nur nutzen dürfte ich sie noch, denn damit eine Mailadresse existieren kann, muss sie erst ein­mal gültig sein und sollte damit eben auch über­all akzep­tiert wer­den. Schrödingers Mailadresse.

Wie man erken­nen kann, ist die regelkon­forme Vali­dierung eine sehr anstren­gende Arbeit. Eine Abdeck­ung der Stan­dards mit einem reg­ulären Aus­druck, wie es im Web gemein­hin emp­fohlen wird, wäre ver­mut­lich mach­bar, aber kaum mehr vernün­ftig les­bar. Selb­stver­ständlich kön­nte sich die Men­schheit auch darauf eini­gen, dass in E‑Mail-Adressen nur ein klein­er Teil des ASCII-Zeichen­satzes erlaubt sein darf, oder eine E‑Mail-Adresse valide ist, sobald genau ein einziges “@” darin vorkommt, aber der Sinn hin­ter Stan­dards ist es ja, dass die Men­schheit nicht beson­ders gut darin ist, sich ohne aufgeschriebene Regeln auf irgen­det­was zu eini­gen.

Um selb­st kün­ftig ein wenig weniger gen­ervt von diesem Wild­wuchs zu sein, habe ich lib­vld­mail pro­gram­miert. Hier­bei han­delt es sich um eine portable Bib­lio­thek ohne beson­dere Abhängigkeit­en mit einem kom­pak­ten API, deren einziger Zweck es ist, E‑Mail-Adressen stan­dard­kon­form als “ist valide” oder “ist nicht valide” zu kennze­ich­nen. Die Bib­lio­thek ist ver­mut­lich noch nicht ganz fer­tig, aber dur­chaus schon funk­tions­fähig. Der Quell­code liegt bis auf Weit­eres auf GitHub herum, je nach Erfolg oder Mis­ser­folg schließe ich aber einen Wech­sel zu ein­er anderen Plat­tform nicht aus. GitHub ist mir zutief­st unsym­pa­thisch.

Senfecke:

Comments are closed.

https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/icon_mad.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_arrow2.gif 
mehr …
 

Erlaubte Tags:
<strong> <em> <pre> <code> <a href="" title=""> <img src="" title="" alt=""> <blockquote> <q> <b> <i> <del> <tt> <span style=""> <strike>

Datenschutzhinweis: Deine IP-Adresse wird nicht gespeichert. Details findest du hier.