6 modulis · 6.1
Kaip skaityti klaidos pranešimą (bounce)
6 modulis: Klaidų pranešimų ir problemų sprendimas · Skaitymo trukmė: 11 min.
Mokymosi tikslas: Baigę šią pamoką galėsite iššifruoti pranešimą apie nepristatytą laišką (bounce): kuris serveris pranešė klaidą, kokiam adresui, ką reiškia kodas ir ar problema 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, atsako 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 nusiunčia pranešimą atgal siuntėjui. Tai vadinama bounce (arba: non-delivery report, NDR). Jis ateina nuo 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 anglų kalbos teksto. Gaila, nes bounce beveik visada tiksliai pasako, kas negerai. Reikia tik žinoti, kur žiūrėti.
Bounce visada turi tuščią envelope sender lauką (Return-Path: <>). Tai padaryta sąmoningai: bounce į bounce galėtų sukelti begalinį ciklą (RFC 5321).
Kas atmetė laišką?
Laiškas keliauja bent per du serverius: Jūsų paslaugų teikėjo ir gavėjo. Bounce gali susidaryti dviem atvejais:
- Gaunantysis serveris atmeta laišką SMTP pokalbio metu (pamoka 1.2), pavyzdžiui, po
RCPT TO(adresas nežinomas) arba po turinio patikrinimo (šlamštas arba DMARC). Jūsų pačių serveris gauna šį atmetimą ir paruošia iš jo bounce Jums. Tokiu atveju klaidą sukėlė gavėjas, o bounce atsiuntė 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 patys pasiekėte limitą.
Šis skirtumas yra svarbus: pirmuoju atveju reikia sužinoti, kas nepatiko gavėjui, antruoju atveju problema yra arčiau namų.
Žmonėms skirta 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, kuriam nepavyko pristatyti (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 | Klaidą pranešė gavėjas, o ne Jūsų pačių serveris |
after RCPT TO | Kuriuo pokalbio momentu: čia nurodant gavėją |
550 5.1.1 ... User unknown | Gavėjo kodas ir tekstas: šis adresas neegzistuoja |
Programoms skirta dalis: DSN
Po tekstu paprastai yra dalis, skirta programoms, vadinama delivery status notification (RFC 3464). Ji visada sudaryta taip pat, 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, parašęs šį bounce (dažniausiai Jūsų pačių siuntimo serveris) |
Final-Recipient | Adresas, apie kurį kalbama |
Action | failed (nepavyko, galutinai), delayed (atidėta, dar bus bandoma), kartais delivered arba relayed |
Status | Išplėstinis statuso kodas, žr. žemiau |
Remote-MTA | Serveris kitoje pusėje, kuris atsiuntė atsakymą |
Diagnostic-Code | Tikslus to serverio atsakymas: čia nurodyta tikroji priežastis |
Will-Retry-Until | Kai delayed: iki kada serveris dar bandys |
Visai apačioje yra originalus laiškas arba tik jo antraštės. Ten matote, koks laiškas tai buvo, ir koks siuntėjo adresas bei Return-Path buvo naudojami. Kartais tai yra sprendimo raktas (žr. DMARC pavyzdį užduotyje).
Kodų skaitymas
Yra dviejų tipų kodai, ir paprastai bounce pranešime pateikiami abu.
Atsako 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 | Atsisako ir siunčia bounce |
Išplėstinis statuso kodas (RFC 3463): trys skaičiai, atskirti taškais, pavyzdžiui, 5.1.1 arba 4.7.500. Pirmasis skaičius vėl yra 2, 4 arba 5. Antrasis skaičius nurodo, kur slypi problema:
| Antras skaičius | Sritis | 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 dėžutė pilna, 5.2.1 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 laukia 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čiasis skaičius nurodo tikslią priežastį. 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 nurodyti jų pačių dokumentacijoje (pamoka 6.2).
Paprasta taisyklė: kodas, prasidedantis 5 ir turintis 7 viduryje (5.7.x), beveik visada yra politikos klausimas: autentifikavimas, reputacija arba šlamštas. Siuntimas iš naujo čia 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 iš naujo. RFC 5321 rekomenduoja tęsti bandymus bent keturias penkias dienas, su bent puse valandos tarp bandymų. Daugelis serverių po kelių valandų arba 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 pasiųsite dar kartą, gavėjas galbūt gaus laišką du kartus. Jei galiausiai nepavyksta iki Will-Retry-Until nurodyto laiko, ateis tikras bounce, 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? Pažiūrėkite į originalų laišką apačioje. Jei ten nurodytas Jūsų domeno siuntėjas, bet serveris ir tekstas Jums nepažįstami, vadinasi, šlamšto siuntėjas panaudojo Jūsų adresą kaip siuntėjo adresą. Gavėjai siunčia savo bounce pranešimus Jums. Tai vadinama backscatter.
Tokiu atveju Jūsų el. pašto dėžutė dažniausiai nėra nulaužta (žr. pamoką 3.4, kur paaiškintas skirtumas). Padeda DMARC politika, kuri palaipsniui griežtėja (pamoka 4.4), kad gavėjai atmestų suklastotus laiškus dar prieš susidarant bounce. Vis tiek patikrinkite išsiųstus laiškus ir pasiteiraukite savo paslaugų teikėjo, ar iš tiesų nieko nebuvo išsiųsta iš Jūsų el. pašto dėžutės.
Praktikoje: taip tai atrodo
Naudodami WebOké, šalia bounce pranešimo galite pamatyti ir DirectAdmin skiltyje El. pašto sekimas, ką serveris padarė su pranešimu: Pristatyta, Atidėta arba Nepavyko, kartu su gavusio serverio atsakymu. Kiti valdymo skydeliai dažnai turi panašų pašto žurnalą arba "pranešimo pėdsaką"; pavyzdžiui, Microsoft 365 tai vadinama pranešimų sekimu. Patartina pirmiausia pažiūrėti ten, jei negavote bounce pranešimo arba jei kas nors sako, kad Jūsų laiškas neatėjo.
Santrauka
- Bounce ateina nuo Mailer-Daemon ir turi tuščią Return-Path lauką. Perskaitykite jį, jis dažniausiai tiksliai pasako, kas negerai.
- Pirmiausia pažiūrėkite, kas pranešė klaidą (
SMTP error from remote mail server= gavėjas) ir kokiam adresui. - Programoms skirtoje dalyje:
Action,Status,Remote-MTAir ypačDiagnostic-Code. - Pirmas skaitmuo: 4 = laikina, 5 = galutinė. Antras skaičius: 1 adresas, 2 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ų atmestų 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ą, kuriam nepavyko pristatyti, serverį, pranešusį klaidą (Remote-MTA), statuso kodą, ar klaida laikina, ar galutinė, ir ką turėtų daryti siuntėjas (pasirinkite iš sąrašo). Programa patikrina pagal fiksuotą raktą ir pateikia paaiškinimą kiekvienam laukui.
Skaitykite daugiau
Šiuose straipsniuose nurodyti veiksmai galioja WebOké valdymo skydeliams; kitų paslaugų teikėjų atveju veikimo principas 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 (atsako kodai) bei 4.5.4.1 skirsnis (bandymas iš naujo)
