Czyli między innymi o tym, że adres e-mail może mieć więcej niż jedną”@”.
Nie wróżka a specyfikacja prawdę Ci powie
Myślałeś, że proste jest weryfikować czy to co użytkownik wpisał w formularzu to faktycznie adres e-mail skoro powstało na ten temat tyle porad czy gotowych wzorców regex? Nic bardziej mylnego.
Jak wygląda adres e-mail? Mamy nazwę użytkownika, po której następuje znak @, po którym następuje nazwa domeny i gotowe. Na przykład: office@teamquest.pl. Niestety, okazuje się, że nie jest to takie proste. Aby naprawdę zrozumieć, co jest ważne (nawet jeśli niekoniecznie jest to powszechnie akceptowane), a co nieważne (nawet jeśli być może nadal jest akceptowane przez niektóre serwery pocztowe), musimy oczywiście wrócić do specyfikacji RFC.
Adresy e-mail mogą zawierać wiele znaków „@”
Podczas próby zweryfikowania adresu e-mail większość ludzi sugeruje się tym, że możemy podzielić adres na dwie części rozdzielone „małpką”. Ale jest coś takiego jak RFC1711 Service Routing. Tak więc dziwny, ale prawidłowy adres e-mail to na przykład: @rekrutacja.pierwszy,@rekrutacja.drugi:office@teamquest.pl. Fun fact: o tym, że to jest prawdziwy e-mail nie wie nawet Word, który nie przerobił mi tego zapisu na hiperłącze podczas pisania artykułu.
Prawdopodobnie następny rekruter jaki się z nami skontaktuje nie poda nam takiego dziwoląga a i niewiele serwerów pocztowych będzie go honorować ale popularne publiczne usługi pocztowe i MTA akceptują te adresy i po prostu dostarczą wiadomość na adres office@teamquest.pl.
Można używać wykrzyknika po lewej stronie od znaku „@”
Tak, rekrutujemy.it!zawsze@teamquest.pl jest prawidłowym adresem e-mail. Tymczasem niektóre implementacje serwera pocztowego interpretując to jako próbę przekazania poczty i wiadomość może zostać odrzucona: 554 5.7.1 <teamquest.pl!jakis_adres@jakisserwer.pl>: Relay access denied
.
Podobnie sprawy się mają ze znakiem „%”. Jest on jak najbardziej „legalny” po lewej stronie od małpki ale na przykład Postfix zaprotestuje przez 501 5.1.3 Bad recipient address any other % constructs
.
Dozwolone są różne znaki interpunkcyjne
Wykrzykniki i procenty to nie jedyne znaki dozwolone przez RFC5321, o których zapominają nawet doświadczeni admini. BNF w RFC5321 / RFC5322 dopuszcza jeden lub więcej znaków a-zA-Z0-9!#$%&'*+/=?^_`{|}~-
. Tak tak, to też jest prawidłowy adres: '*+-/=?^_`{|}~#$@teamquest.pl. Word znowu uważa inaczej…
Znaki plus nie są specjalne, chyba że są
Jak pokazuje poprzedni przykład, znak + to tylko kolejny zwykły znak, jeśli chodzi o to co uważa o nim RFC5321. Jednak niektóre usługi pocztowe zdecydowały się nadać mu specjalne znaczenie i traktują wszystkie trzy poniższe adresy jako takie same:
office@teamquest.pl
office+backend@teamquest.pl
offce+frontend@teamquest.pl
Na przykład Gmail traktuje to jako „adresowanie dodatkowe”.
Kropki są wyjątkowe
Taaak, kropki są wyjątkowe. Nawet jeśli Gmail zdecydował się je zignorować i traktować taki adres jak office@teamquest.pl jako identyczny z o.f.f.i.c.e.@teamquest.pl. Ale kropki są wyjątkowe: nie możesz rozpoczynać ani kończyć części przed „@” od kropki ani też nie możesz mieć dwóch kolejnych kropek. Nieprawidłowe adresy e-mail to więc na przykład:
.office@teamquest.pl
office.@teamquest.pl
off..ice@teamquest.pl