Poradnik: weryfikacja adresu e-mail

Jak sprawdzić, czy mail istnieje

Pewność daje tylko odpowiedź serwera odbiorcy, a i ona bywa myląca. Poniżej cztery sposoby, od najprostszego, z tym, co każdy naprawdę mówi o adresie. List Desk to darmowe narzędzie do walidacji listy mailingowej od Przemysława Zalewskiego, niezależnego inżyniera.

Autor: ·

1. Składnia: czy adres w ogóle może działać

Najpierw sam zapis: jedna małpa, część przed nią i domena po niej, bez spacji i bez znaków, których serwery poczty nie przyjmują. Część przed @ może mieć do 64 znaków, a domena do 255 (RFC 5321).

Typowe błędy z formularzy to przecinek zamiast kropki (jan@firma,pl), spacja na końcu, podwójna kropka i literówki w popularnych domenach: gmial.com, wp.pll, onet.p.

Co to mówi: że adres jest zapisany poprawnie. Czego nie mówi: czy domena przyjmuje pocztę i czy skrzynka istnieje.

2. Domena: rekord MX i null MX

Poczta trafia na serwery wskazane w rekordzie MX domeny. Sprawdzisz go w terminalu:

dig +short MX gmail.com          # macOS i Linux
nslookup -type=mx gmail.com      # Windows

Są trzy wyniki, które warto rozróżnić:

  • Domena nie istnieje (NXDOMAIN): adres na pewno nie działa.
  • Rekord MX wskazuje „.” z priorytetem 0: to null MX (RFC 7505), czyli jawna deklaracja, że domena nie przyjmuje żadnej poczty. Tak jest na przykład dla example.com.
  • Brak rekordu MX, ale jest rekord A: serwer nadawcy spróbuje dostarczyć pocztę na adres z rekordu A (RFC 5321). Bywa, że działa, ale częściej to domena bez skonfigurowanej poczty.

Co to mówi: czy domena w ogóle przyjmuje pocztę. Czego nie mówi: czy jest w niej skrzynka jan.kowalski.

3. Rozmowa SMTP: zapytaj serwer, ale nie wierz mu na słowo

Można połączyć się z serwerem z rekordu MX na porcie 25 i zacząć wysyłkę, ale przerwać ją przed treścią wiadomości. Odpowiedź na polecenie RCPT TO mówi, czy serwer przyjmie pocztę dla tego adresu. Tak w uproszczeniu wygląda rozmowa (adresy zmyślone):

220 mx.firma.example ESMTP
EHLO moja-domena.example
250 mx.firma.example
MAIL FROM:<ja@moja-domena.example>
250 2.1.0 Ok
RCPT TO:<jan.kowalski@firma.example>
550 5.1.1 Recipient address rejected: User unknown
QUIT

Kod 550 z rozszerzeniem 5.1.1 znaczy „nie ma takiej skrzynki”. Odpowiedź 250 znaczy tylko, że serwer przyjąłby wiadomość. Tu zaczynają się kłopoty:

  • Domeny catch-all. Domena catch-all przyjmuje pocztę na każdy adres, także nieistniejący, więc odpowiada 250 na wszystko. Wynik „istnieje” nic wtedy nie znaczy.
  • Greylisting. Część serwerów przy pierwszej próbie od nieznanego nadawcy odpowiada kodem tymczasowym 4xx i każe spróbować później. Jednorazowe zapytanie kończy się wynikiem „nie wiadomo”.
  • Odrzucenie po fakcie. Niektóre serwery przyjmują każdy adres na etapie RCPT TO, a odbicie wysyłają dopiero po dostarczeniu treści.
  • Port 25 i reputacja. Wielu dostawców internetu i chmur blokuje połączenia wychodzące na port 25, a serwery odbiorców ograniczają lub blokują adresy IP, które zadają dużo takich pytań. Ręcznie sprawdzisz w ten sposób kilka adresów, listy już nie.

Co to mówi: często, czy skrzynka istnieje. Czego nie mówi: nic pewnego o domenach catch-all i serwerach, które nie chcą odpowiadać.

4. Wysyłka testowa: najpewniejsza, ale kosztowna

Wyślij zwykłą wiadomość i poczekaj na odbicie (DSN). Zwrot z kodem 5.1.1 to twarde odbicie: adres nie istnieje i trzeba go usunąć z listy.

Brak odbicia nie jest dowodem: domena catch-all przyjmie wiadomość na nieistniejący adres, a wiadomość mogła trafić do spamu. Ten sposób ma sens dla pojedynczych adresów. Wysyłka na całą niesprawdzoną listę z głównej domeny to prosty sposób na serię twardych odbić i gorszą reputację nadawcy.

Cała lista naraz: List Desk

Przy setkach albo tysiącach adresów robisz to samo automatycznie. List Desk wczytuje plik CSV, XLSX albo wklejone adresy i sprawdza składnię, duplikaty (także kropki i +etykiety w Gmailu), domeny w DNS (MX, null MX, rekord A), adresy jednorazowe, literówki w popularnych domenach i adresy funkcyjne. Adresy zostają w Twojej przeglądarce; na serwer trafiają tylko unikalne domeny.

Uczciwie: List Desk nie prowadzi jeszcze rozmowy SMTP, więc nie powie, czy istnieje konkretna skrzynka. Usunie to, co da się wykryć bez pytania serwera odbiorcy: martwe domeny, literówki i adresy jednorazowe. Jeśli potrzebujesz sprawdzenia skrzynka po skrzynce, użyj płatnego weryfikatora SMTP, a List Desk potraktuj jako darmowe pierwsze przejście.

Sprawdź swoją listę albo zleć resztę

Sprawdzenie listy jest za darmo i bez rejestracji. Jeśli wysyłasz dużo, buduję stronę zgodności: wypisanie jednym kliknięciem, listy wykluczeń, obsługę odbić i zgłoszeń spamu oraz wyrównane SPF, DKIM i DMARC.

Sprawdź listę w List Desk → Programista od poczty →

Pytania

Czy da się sprawdzić, czy mail istnieje, bez wysyłania wiadomości?

Częściowo. Składnię i domenę (rekord MX) sprawdzisz zawsze. Rozmowa SMTP kończy się przed treścią wiadomości, więc nic nie trafia do odbiorcy, ale przy domenach catch-all i greylistingu wynik bywa niepewny.

Czy odpowiedź 250 na RCPT TO oznacza, że skrzynka istnieje?

Nie zawsze. Domena catch-all odpowiada 250 na każdy adres, a niektóre serwery odrzucają nieistniejące adresy dopiero po przyjęciu wiadomości. Pewny jest tylko wynik negatywny z kodem 5.1.1.

Dlaczego z mojego komputera nie mogę połączyć się z serwerem poczty na porcie 25?

Wielu dostawców internetu i platform chmurowych blokuje połączenia wychodzące na port 25, żeby ograniczyć spam. Do ręcznych prób potrzebny jest serwer z odblokowanym portem i dobrą reputacją adresu IP.

Czy List Desk sprawdza, czy skrzynka istnieje?

Jeszcze nie. Sprawdza składnię, duplikaty, domeny w DNS, adresy jednorazowe, literówki i adresy funkcyjne, a adresy zostawia w przeglądarce. Sprawdzanie skrzynek przez SMTP to następny krok; na stronie narzędzia możesz zostawić adres, żeby dostać wiadomość, gdy będzie gotowe.

Przemysław Zalewski

Jak pracuję

Przemysław Zalewski · 15+ lat doświadczenia w tworzeniu oprogramowania

„a true bias for action” CTO klienta, publiczna rekomendacja na LinkedInie

Wszystkie zasady i poziomy ryzyka →