6 modulis · 6.1
Grąžinto laiško (bounce) skaitymas
6 modulis: Klaidų pranešimai ir problemų sprendimas · Skaitymo trukmė: 11 min.
Mokymosi tikslas: po šios pamokos galėsite išnagrinėti klaidos pranešimą apie nepristatytą laišką (bounce): kuris serveris pranešė klaidą, dėl kurio adreso, ką reiškia kodas ir ar klaida yra laikina, ar galutinė.
Pagrindinės sąvokos: bounce, Mailer-Daemon, delivery status notification (DSN, RFC 3464), Reporting-MTA, Remote-MTA, Final-Recipient, Action (failed, delayed), Status, Diagnostic-Code, Will-Retry-Until, atsakymo kodas (RFC 5321), išplėstinis statuso kodas X.Y.Z (RFC 3463), atidėjimo pranešimas, backscatter
Kas yra bounce?
Jei pašto serveris negali pristatyti laiško, jis siunčia pranešimą atgal siuntėjui. Tai vadinama bounce (arba: non-delivery report, NDR). Jis ateina iš siuntėjo, pavyzdžiui Mailer-Daemon@..., MAILER-DAEMON arba Mail Delivery System, su tema, pavyzdžiui:
Mail delivery failed: returning message to senderUndelivered Mail Returned to SenderDelivery Status Notification (Failure)Warning: message ... delayed 24 hours(tai nėra bounce, o atidėjimo pranešimas, žr. toliau)
Daugelis žmonių tokį pranešimą iškart ištrina arba nusigąsta angliško teksto. Gaila, nes bounce beveik visada tiksliai pasako, kas negerai. Reikia tik žinoti, kur žiūrėti.
Bounce visada turi tuščią envelope sender (Return-Path: <>). Tai padaryta sąmoningai: bounce apie bounce priešingu atveju galėtų sukelti begalinę kilpą (RFC 5321).
Kas atmetė laišką?
Laiškas keliauja bent per du serverius: Jūsų paslaugų teikėjo ir gavėjo. Bounce gali atsirasti dviem atvejais:
- Gaunantysis serveris atmeta laišką SMTP pokalbio metu (1.2 pamoka), pavyzdžiui po
RCPT TO(adresas nežinomas) arba po turinio (spam arba DMARC). Jūsų pačių serveris gauna šį atmetimą ir paverčia jį bounce pranešimu Jums. Klaida tokiu atveju kyla iš gavėjo, o bounce pranešimą siunčia Jūsų pačių serveris. - Jūsų pačių serveris pasiduoda, pavyzdžiui, todėl kad gavėjas kelias dienas buvo nepasiekiamas arba todėl kad Jūs pats pasiekėte limitą.
Šis skirtumas yra svarbus: pirmuoju atveju reikia žinoti, kas netiko gavėjui, antruoju atveju problema yra arčiau namų.
Skaitoma dalis
Viršuje yra tekstas, skirtas žmonėms. Jis skiriasi priklausomai nuo pašto programinės įrangos, tačiau beveik visada apima tuos pačius dalykus:
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
pieter.devries@example.net
host mx1.example.net [198.51.100.20]
SMTP error from remote mail server after RCPT TO:<pieter.devries@example.net>:
550 5.1.1 <pieter.devries@example.net>: Recipient address rejected: User unknownSkaitykite taip:
| Dalis | Ką tai reiškia |
|---|---|
permanent error | Galutinė klaida: serveris nebebandys iš naujo |
pieter.devries@example.net | Adresas, dėl kurio įvyko klaida (jei gavėjų keli: tik šis) |
host mx1.example.net [198.51.100.20] | Gavėjo serveris, su kuriuo buvo bendraujama |
SMTP error from remote mail server | Klaida kilo iš gavėjo, ne iš Jūsų pačių serverio |
after RCPT TO | Kuriuo pokalbio momentu: čia nurodant gavėją |
550 5.1.1 ... User unknown | Gavėjo kodas ir tekstas: šis adresas neegzistuoja |
Mašininė dalis: DSN
Po tekstu paprastai būna programoms skirta dalis, delivery status notification (RFC 3464). Ji visada sudaryta vienodai, todėl ją lengva skaityti:
Reporting-MTA: dns; mail.hosting.example
Action: failed
Final-Recipient: rfc822;pieter.devries@example.net
Status: 5.1.1
Remote-MTA: dns; mx1.example.net
Diagnostic-Code: smtp; 550 5.1.1 <pieter.devries@example.net>: Recipient address rejected: User unknown| Laukas | Reikšmė |
|---|---|
Reporting-MTA | Serveris, kuris parašė šį bounce (dažniausiai Jūsų pačių siunčiantis serveris) |
Final-Recipient | Adresas, apie kurį kalbama |
Action | failed (nepavyko, galutinė klaida), delayed (atidėta, dar bus bandoma), kartais delivered arba relayed |
Status | Išplėstinis statuso kodas, žr. toliau |
Remote-MTA | Kitos pusės serveris, kuris davė atsakymą |
Diagnostic-Code | Pažodinis to serverio atsakymas: čia nurodyta tikroji priežastis |
Will-Retry-Until | Kai delayed: iki kada serveris toliau bandys |
Visai apačioje yra originalus laiškas arba tik jo kopregeliai. Ten matote, koks laiškas tai buvo, ir koks siuntėjo adresas bei Return-Path buvo naudoti. Kartais tai yra sprendimo raktas (žr. DMARC atvejį užduotyje).
Kodų skaitymas
Yra du kodų tipai, ir dažniausiai bounce pranešime jie pateikiami abu.
Atsakymo kodas (RFC 5321): trys skaitmenys, pavyzdžiui 550 arba 451. Pirmas skaitmuo yra svarbiausias:
| Prasideda | Reikšmė | Ką daro siunčiantis serveris |
|---|---|---|
2 | Pavyko | Nieko daugiau, laiškas priimtas |
4 | Laikina klaida | Išsaugo laišką ir vėliau bando iš naujo |
5 | Galutinė klaida | Pasiduoda ir siunčia bounce |
Išplėstinis statuso kodas (RFC 3463): trys skaičiai su taškais, pavyzdžiui 5.1.1 arba 4.7.500. Pirmas skaičius vėl yra 2, 4 arba 5. Antras skaičius nurodo, kur yra problema:
| Antras skaičius | Tema | Pavyzdžiai |
|---|---|---|
X.1 | Adresas | 5.1.1 adresas neegzistuoja, 5.1.2 domenas neegzistuoja |
X.2 | El. pašto dėžutė | 5.2.2 / 4.2.2 el. pašto dėžutė pilna, 5.2.1 el. pašto dėžutė išjungta |
X.3 | Pašto sistema | 5.3.4 pranešimas per didelis |
X.4 | Tinklas ir maršrutas | 4.4.1 jokio atsakymo, 4.4.7 per ilgai eilėje, 5.4.4 nėra maršruto |
X.5 | Protokolas | 5.5.1 neteisinga komanda |
X.6 | Turinys | 5.6.0 problema su turiniu arba kodavimu |
X.7 | Saugumas ir politika | 5.7.1 atmesta, 5.7.26 neautentifikuota (Gmail), 5.7.509 DMARC (Microsoft) |
Trečias skaičius yra tiksli priežastis. Dideli gavėjai čia naudoja savo numerius, pavyzdžiui Gmail su 5.7.25 iki 5.7.30 ir Microsoft su 4.7.500 ir 5.7.509. Jie pateikti jų pačių dokumentacijoje (6.2 pamoka).
Paprasta taisyklė: kodas, kuris prasideda 5 ir viduryje turi 7 (5.7.x), beveik visada yra politikos klausimas: autentifikavimas, reputacija arba šlamštas. Čia pakartotinis siuntimas nepadės; reikia ką nors pakeisti.
Atidėta dar nereiškia, kad nepavyko
Esant laikinai klaidai (4xx), Jūsų serveris išsaugo laišką ir bando jį pristatyti iš naujo. RFC 5321 rekomenduoja tai daryti bent keturias penkias dienas, su bent puse valandos tarp bandymų. Daugelis serverių po kelių valandų ar po dienos siunčia atidėjimo pranešimą:
Action: delayed
Status: 4.7.500
Diagnostic-Code: smtp; 451 4.7.500 Server busy. Please try again later from [203.0.113.25].
Will-Retry-Until: Thu, 12 Nov 2026 08:58:40 +0100Tai reiškia: nesiųskite iš naujo, serveris pats dar bandys. Jei vis tiek pakartotinai išsiųsite, gavėjas galbūt gaus laišką du kartus. Jei iki Will-Retry-Until pristatyti vis tiek nepavyks, ateis tikras bounce pranešimas, dažnai su 4.4.7 (pranešimas pasenęs eilėje).
Netikri bounce pranešimai: backscatter
Staiga gaunate dešimtis bounce pranešimų už laiškus, kurių niekada nesiuntėte? Tuomet pažiūrėkite į originalų laišką apačioje. Jei ten nurodytas siuntėjas iš Jūsų domeno, bet serveris ir tekstas, kurio nepažįstate, tai šlamšto siuntėjas panaudojo Jūsų adresą kaip siuntėjo adresą. Gavėjai siunčia savo bounce pranešimus Jums. Tai vadinama backscatter.
Jūsų el. pašto dėžutė tokiu atveju dažniausiai nėra nulaužta (žr. 3.4 pamoką dėl skirtumo). Padeda tai: DMARC politika, kuri žingsnis po žingsnio tampa griežtesnė (4.4 pamoka), kad gavėjai atmestų suklastotą laišką dar prieš atsirandant bounce pranešimui. Vis dėlto patikrinkite savo išsiųstus laiškus ir pasiteiraukite savo paslaugų teikėjo, ar tikrai niekas nebuvo išsiųsta iš Jūsų el. pašto dėžutės.
Praktikoje: taip tai atrodo
WebOké sistemoje šalia bounce pranešimo matysite ir skiltyje El. pašto sekimas DirectAdmin valdymo skydelyje, ką serveris padarė su pranešimu: Pateikta, Atidėtas arba Nepavyko, kartu su gaunančiojo serverio atsakymu. Kitose valdymo sistemose dažnai yra panašus pašto žurnalas arba "pranešimo pėdsakas"; pavyzdžiui, Microsoft 365 sistemoje tai vadinama pranešimų sekimu. Patartina pirmiausia pažiūrėti ten, jei negavote bounce pranešimo arba jei kažkas sako, kad Jūsų laiškas nepasiekė adresato.
Santrauka
- Bounce pranešimas ateina iš Mailer-Daemon ir turi tuščią Return-Path. Perskaitykite jį, jis dažniausiai tiksliai pasako, kas negerai.
- Pirmiausia pažiūrėkite, kas davė klaidą (
SMTP error from remote mail server= gavėjas) ir dėl kurio adreso. - Mašininėje dalyje:
Action,Status,Remote-MTAir ypačDiagnostic-Code. - Pirmas skaitmuo: 4 = laikina, 5 = galutinė. Antras skaičius: 1 adresas, 2 el. pašto dėžutė, 3 sistema, 4 maršrutas, 5 protokolas, 6 turinys, 7 politika.
- Atidėjimo pranešimas (
delayed): nesiųskite iš naujo. Bounce pranešimai už laiškus, kurių nesiuntėte: backscatter.
Testas
Užduotis
Užduotis Z6.1: Trijų grąžintų laiškų (bounce) analizė. Gausite tris pavyzdinius bounce pranešimus (bounce-1.txt, bounce-2.txt ir bounce-3.txt). Kiekvienam bounce pranešimui užpildykite: adresą, dėl kurio įvyko klaida, serverį, kuris davė klaidą (Remote-MTA), statuso kodą, ar klaida laikina, ar galutinė, ir ką turėtų daryti siuntėjas (pasirinkite iš sąrašo). Programa patikrins pagal nustatytą raktą ir pateiks paaiškinimą kiekvienam laukui.
Skaitykite daugiau
Šių straipsnių žingsniai galioja WebOké valdymo skydeliams; kitų paslaugų teikėjų sistemose veikimas yra panašus.
- Mail delivery failed: kaip perskaityti klaidos pranešimą ir ką reiškia kodai
- Klaidos pranešimas: 550 5.5.0 Requested action not taken: mailbox unavailable
- Kaip patikrinti, ar el. laiškas pristatytas, naudojant DirectAdmin el. laiškų sekimą (Email Tracking)
- DirectAdmin vadovas 9.3: El. pašto sekimas: kur dingo mano laiškas?
- RFC 3464 (DSN struktūra), RFC 3463 (išplėstiniai statuso kodai) ir RFC 5321 4.2 skirsnis (atsakymo kodai) bei 4.5.4.1 (pakartotinis bandymas)
