Przejdź do treści
correct.email
Dostarczalność

Higiena listy adresowej bez sondowania skrzynek przez SMTP

Dlaczego sprawdzanie skrzynek poleceniem RCPT TO jest zawodne i ryzykowne oraz co naprawdę utrzymuje listę w porządku: składnia, domena, double opt-in, odbicia.

Autor: Exmoor Software6 min czytania

Higiena listy adresowej polega na tym, by trzymać na niej tylko adresy, które działają i należą do osób chcących dostawać Twoją pocztę. Kusi droga na skróty — zapytać każdy serwer odbiorcy, czy dana skrzynka istnieje — ale ta metoda nie daje wiarygodnej odpowiedzi ani na jedno, ani na drugie i może zaszkodzić reputacji, którą próbujesz chronić. Poniżej wyjaśniamy dlaczego i co robić zamiast tego.

Jak działa sondowanie skrzynek

„Weryfikacja adresów” oparta na sondowaniu otwiera połączenie SMTP z serwerem poczty domeny, dochodzi do etapu podania odbiorcy i rozłącza się, niczego nie wysyłając:

S: 220 mx.example.net ESMTP
C: EHLO probe.example.com
S: 250 mx.example.net
C: MAIL FROM:<check@example.com>
S: 250 OK
C: RCPT TO:<alice@example.net>
S: 250 OK                      ← odczytywane jako „skrzynka istnieje”
C: QUIT

Odpowiedź 250 jest traktowana jako dowód, że skrzynka istnieje, a 550 5.1.1 — że nie istnieje. Do tego pytania przeznaczone jest polecenie VRFY, ale RFC 5321 pozwala ją wyłączyć ze względów bezpieczeństwa. Serwer odpowiada wtedy 252 („nie mogę zweryfikować, ale przyjmę wiadomość”), co nic nie mówi.

Dlaczego odpowiedź jest niewiarygodna

  • Domeny catch-all przyjmują w trakcie rozmowy SMTP każdego odbiorcę i rozstrzygają sprawę później, więc każdy adres wygląda na poprawny.
  • Sprawdzanie odroczone. Sam RFC 5321 zauważa, że gdy serwer ocenia poprawność adresu dopiero po otrzymaniu treści wiadomości, odpowiedź na RCPT może nie zawierać żadnej informacji. Taki serwer przyjmuje wiadomość, a odbicie wysyła później.
  • Greylisting i limity tempa odpowiadają nieznanym klientom tymczasowymi kodami 4xx (RFC 6647). Sonda dostaje „spróbuj później”, a nie odpowiedź.
  • Ochrona przed zbieraniem adresów. Ponieważ odpowiedzi na RCPT można wykorzystać do zbierania istniejących adresów, część operatorów celowo sprawia, że nieznani klienci nie dowiadują się z nich niczego.
  • Istnienie to nie zgoda. Istniejąca skrzynka może być porzucona, należeć do kogoś, kto nigdy się nie zapisał, albo być pułapką spamową (spam trap). Pułapki to prawdziwe adresy, które przyjmują pocztę, więc sondowanie uznaje je za poprawne.
  • Odpowiedzi się starzeją. Skrzynka, która istnieje dziś, za miesiąc może zostać zamknięta.

Dlaczego to może Ci zaszkodzić

Połączenia, w których pada wiele adresów odbiorców, a żadna wiadomość nie zostaje dostarczona, wyglądają jak atak typu directory harvest, czyli masowe zbieranie istniejących adresów. RFC 5321 przywołuje takie zbieranie adresów, wyjaśniając, dlaczego serwery ograniczają VRFY i EXPN. Systemy odbiorcze mogą spowalniać, odrzucać albo blokować połączenia z adresu IP, który to robi, a sam adres może trafić na listy blokad. Jeśli to ten sam adres IP lub domena, z których wysyłasz pocztę, zapłacisz za to dostarczalnością.

Zewnętrzne usługi weryfikacji sondują ze swojej infrastruktury, więc ryzyko blokady ponoszą one, ale ich odpowiedzi mają te same ograniczenia. Dlatego narzędzia correct.email sprawdzają składnię i DNS, ale nigdy nie sprawdzają, czy skrzynka istnieje.

Co robić zamiast tego

1. Sprawdzaj składnię w chwili wpisywania adresu

Odrzucaj to, co nie może być adresem, i wskazuj prawdopodobne literówki, póki ktoś jeszcze wypełnia formularz. Sprawdzaj zgodność ze składnią skrzynki SMTP — RFC 5321, rozszerzoną o UTF-8 w RFC 6531: jeden @ przed domeną, część lokalna do 64 oktetów, cały adres do 254 oktetów, domena złożona z poprawnych etykiet. Unikaj zbyt restrykcyjnych wyrażeń regularnych, które odrzucają prawdziwe adresy; szczegóły opisujemy w poradniku o walidacji adresów e-mail.

Walidator składni e-mail wykonuje te sprawdzenia dla pojedynczego adresu albo wklejonej listy, obsługuje domeny umiędzynarodowione, oznacza adresy funkcyjne i podpowiada poprawki typowych literówek w domenach.

2. Sprawdź, czy domena może przyjmować pocztę

Poprawnie zapisany adres w domenie, która nie przyjmuje poczty, i tak jest martwy. Sprawdź rekordy MX domeny w Wyszukiwaniu MX:

  • Są rekordy MX — domena przyjmuje pocztę.
  • Brak MX, ale są rekordy A lub AAAA — według RFC 5321 sam host pełni wtedy rolę niejawnego MX. Dostarczenie jest możliwe, ale mniej pewne.
  • Null MX — pojedynczy rekord MX 0 . (RFC 7505, zobacz null MX) oznacza, że domena nie przyjmuje żadnej poczty. Odrzuć adres.
  • Domena nie istnieje — odrzuć adres; zwykle to literówka.
example.net.     3600  IN  MX  10 mx1.example.net.
parked.example.  3600  IN  MX  0 .

Przekroczony czas odpowiedzi DNS albo błąd serwera to nie werdykt. Przyjmij adres, a rozstrzygnięcie zostaw etapowi potwierdzenia. Więcej o interpretacji wyników MX: problemy z rekordami MX.

3. Potwierdzaj zapis (double opt-in)

Jedynym wiarygodnym dowodem, że adres działa i należy do osoby, która go wpisała, jest jej reakcja na wysłaną na niego wiadomość. Wyślij e-mail z linkiem lub kodem potwierdzającym i dopisz adres do listy dopiero po kliknięciu linku lub wpisaniu kodu. Wytyczne Google zalecają potwierdzanie adresu każdego odbiorcy przed zapisaniem go na listę, a Yahoo poleca podwójne potwierdzenie (double/confirmed opt-in), by ograniczyć liczbę nieprawidłowych odbiorców.

Podwójne potwierdzenie zatrzymuje też literówki, boty i zapisywanie cudzych adresów. Niepotwierdzone zapisy wygaszaj, zamiast w kółko ponawiać prośbę o potwierdzenie.

4. Obsługuj odbicia automatycznie

Odbicie to odpowiedź serwera odbiorcy na prawdziwą próbę doręczenia — czyli dokładnie ta informacja, którą sondowanie próbuje zdobyć bez wysyłania czegokolwiek.

Twarde odbicie (hard bounce)Miękkie odbicie (soft bounce)
Odpowiedź SMTP5xx (błąd trwały)4xx (błąd tymczasowy)
Typowe kody rozszerzone5.1.1 skrzynka nie istnieje, 5.1.2 zła domena docelowa, 5.1.10 null MX4.2.2 skrzynka pełna, 4.7.x odroczenia z powodów polityki lub tempa
Co zrobićod razu wyłącz adres z wysyłekpozwól serwerowi ponawiać; wyłącz adres po powtarzających się błędach

W praktyce liczą się trzy szczegóły:

  • Nie każde 5xx dotyczy adresu. Kody z zakresu 5.7.x (RFC 3463: bezpieczeństwo lub polityka) zwykle oznaczają, że serwer odrzucił Ciebie — z powodu uwierzytelnienia, reputacji lub treści. Usuń przyczynę, zamiast kasować odbiorcę.
  • Pełna skrzynka jest zdefiniowana jako stan przejściowy, ale niektóre serwery zgłaszają ją jako 5.2.2. Adres, który od tygodni jest pełny, najpewniej został porzucony.
  • Odbicia przychodzą też później, jako raporty o doręczeniu (DSN) wysyłane na adres nadawcy z koperty (Return-Path). Przetwarzaj je, a nie tylko odpowiedzi w trakcie sesji SMTP.

Dostawcy mówią o tym wprost: Google zaleca automatyczne wypisywanie odbiorców, których wiadomości wielokrotnie się odbiły, a zasady Outlook.com mówią, że po trwałym błędzie nadawca nie może ponawiać wysyłki, a po wielu raportach o niedostarczeniu musi przestać wysyłać do danego odbiorcy. Co oznaczają poszczególne kody: kody odrzuceń poczty.

5. Usuwaj osoby zgłaszające spam i honoruj wypisania

Pętle zwrotne (feedback loops), takie jak Complaint Feedback Loop w Yahoo i Junk Email Reporting Program w Microsofcie, informują, kto oznaczył Twoją pocztę jako spam. Takich odbiorców wyłączaj z wysyłek natychmiast, a prośby o wypisanie realizuj szybko — najlepiej przez wypisanie jednym kliknięciem. Kto nie może łatwo się wypisać, kliknie „Zgłoś spam”.

6. Wygaszaj nieaktywnych odbiorców

Adresy, które przez długi czas nie wykazują żadnej aktywności, są ryzykiem: mogą być porzucone, a porzucone adresy bywają zamieniane w pułapki spamowe. Ustal zasady wygaszania:

  1. Zdefiniuj nieaktywność w odniesieniu do częstotliwości wysyłek — przy codziennym newsletterze decyzję można podjąć szybciej niż przy kwartalnym.
  2. Wyślij prośbę o ponowną zgodę („Czy nadal chcesz dostawać te wiadomości?”). Google sugeruje, by co jakiś czas potwierdzać, że odbiorcy chcą pozostać na liście, a Yahoo — by ponownie potwierdzać subskrypcję nieaktywnych odbiorców.
  3. Usuń tych, którzy nie zareagują.

Otwarcia to słaby sygnał. Funkcja Mail Privacy Protection w poczcie Apple (aplikacja Mail proponuje jej włączenie przy pierwszym uruchomieniu) pobiera zdalne treści w tle, niezależnie od tego, czy ktoś zajrzy do wiadomości, więc „otwarcie” nie musi oznaczać przeczytania, a blokowanie obrazków ukrywa część prawdziwych odczytów. Lepiej opierać się na kliknięciach, odpowiedziach, zakupach i logowaniach.

7. Ostrożnie z adresami funkcyjnymi

Adresy takie jak info@, sales@ czy support@ (RFC 2142 wymienia zwyczajowe nazwy skrzynek funkcyjnych) zwykle trafiają do wspólnej skrzynki, grupy albo systemu zgłoszeń, a nie do jednej osoby, która się zapisała. Do poczty transakcyjnej się nadają — faktury na billing@ to nic dziwnego. W marketingu poproś o adres osobisty albo wymagaj potwierdzenia. Walidator składni oznacza adresy funkcyjne.

8. Podpowiadaj poprawki literówek, nie wprowadzaj ich po cichu

Przy wpisywaniu zaproponuj poprawkę („Czy chodziło o gmail.com?” dla gmial.com) i pozwól ją zaakceptować. Nie poprawiaj adresów w bazie automatycznie: domena różniąca się jedną literą od domeny dużego dostawcy może być prawdziwą domeną.

9. Nigdy nie kupuj, nie wynajmuj i nie zbieraj list ze stron

Wytyczne Google mówią wprost, by nie kupować adresów. Na takich listach kumulują się martwe adresy, pułapki spamowe i zgłoszenia, a żadne czyszczenie nie zamieni ich w zgodę odbiorców.

Rutyna, która utrzymuje listę w porządku

  • Przy zapisie: sprawdzenie składni z podpowiedziami literówek, sprawdzenie domeny, e-mail z potwierdzeniem.
  • Przy każdej wysyłce: automatyczna obsługa odbić, zgłoszeń i wypisań; raz wyłączone adresy pozostają wyłączone.
  • Okresowo: przegląd aktywności, prośby o ponowną zgodę, usuwanie osób, które milczą.
  • Przed wysyłką na starą listę: nie wysyłaj do wszystkich naraz — potraktuj to jak rozgrzewanie i zacznij od adresów z najświeższą aktywnością.

Źródła