Подобно на HTTP статус кодовете, които се подават от уеб сървъра за индикация на статуса на клиентската заявка, мейл сървърите също използват статус кодове – SMTP статус кодове. SMTP статус кодовете индикират статуса на доставката на писмото.
Когато дадено писмо не може да се достави успешно, получаващият мейл сървър връща автоматично съобщение (Delivery Status Notification) към подателя. Това съобщение се нарича още “bounce message” или само “bounce”. Съобщението съдържа SMTP статус код за доставката и е с изпращач Mailer-Daemon@senderdomain.com (Mail Delivery System).
В уеб един от най-разпознаваемите статус кодове е 404 Not Found. Когато се опитате да заредите даден уебсайт и получите съобщение 404, знаете, че търсеният от Вас уеб ресурс не е наличен на сървъра.
По същият начин, когато изпратите писмо и в отговор получите bounce съобщение със SMTP статус код 550-5.1.1., ще знаете, че или адресът на получателя е объркан или просто такъв не съществува при получаващия мейл сървър. Може да опитате отново да изпратите писмото, като първо проверите и коригирате имейл адреса на получателя.
SMTP кодове
SMTP статус кодовете се състоят всъщност от два вида кодове – SMTP код на отговора на заявката/командата и SMTP код за статуса на доставката.
Преди да бъдат добавени SMTP статус кодовете (Enhanced Mail System Status Codes), като разширение към имейл услугата, за статус са се използвали SMTP кодовете за отговор. И двата вида кодове се използват и до днес в имейл системата за посочване на статуса на доставката.
Например в съобщението:
550 5.1.1 emailnotvalid@abv.bg: Recipient address rejected:User unknown in virtual mailbox table
- 550 е кодът, с който получаващият мейл сървър е отговорил на командата (RCPT TO:emailnotvalid@abv.bg), подадена от изпращащия мейл сървър;
- 5.1.1 е статус кодът за доставката на писмото.
Пълно описание на съответстващите си SMTP кодове (Code-статус код/Associated basic status code-код на отговора) може да се види в таблицата с кодове на официалната организация, която отговаря за регистрацията на тези кодове: IANA: Simple Mail Transfer Protocol(SMTP) Enhanced Status Codes Registry.
SMTP кодовете за отговор, които са най-често приложими към SMTP статус кодовете за доставка на писмата са:
- 4xx – Временен отказ от изпълнение. Изпращачът може да направи нов опит за изпращане на писмото.
- 5xx – Перманентен отказ от изпълнение. Ще е нужно допълнително действие и промяна на писмото, преди да се направи нов опит.
SMTP статус кодовете, които се добавят след тези за отговор, се състоят от три цифрови части, разделени с точка (x.xxx.xxx):
status-code = class„.“ subject„.“ detail
- class = може да е: 2, 4 или 5
- subject = от 1 до 3 цифри
- detail = от 1 до 3 цифри
Класът на статус кода може да бъде един от трите:
- 2.xxx.xxx (Success) – успех;
- 4.xxx.xxx (Persistent Transient Failure) – временен проблем;
- 5.xxx.xxx (Permanent Failure) – постоянен проблем;
Например статус код: 5.1.1 – Първата част от кода “class” индикира дали доставката е успешна или не (5). Втората част “subject” (1) показва предполагаем източник за проблема с доставката. Третата част “detail” (1) посочва точната причина за грешката.
SMTP статус кодът 5.1.1 означава:
- 5.x.x (Permanent Failure) – Доставката не е успешна и това е постоянен отказ от доставяне. Повторен опит за изпращане на съобщението в този му вид също няма да бъде успешен.
- x.1.x (Addressing Status) – Индикира предполагаем проблем с адреса на получателя – синтаксис или валидност. Този тип код за грешка предполага, че подателят може да извърши корекция на адреса и да направи повторен опит за изпращане.
- x.1.1 (Bad destination mailbox address) – Посочената пощенска кутия не съществува. Адресът, който е преди частта с домейна (преди @) е невалиден. Този код индикира постоянен проблем, който няма да се оправи с повторно изпращане на писмото, без да е нанесена промяна в адреса.
Всички SMTP статус кодове можете да видите в спецификацията: RFC 3463.
SMTP статус кодове 4.x.x и 5.x.x
SMTP статус кодовете за неуспешна доставка (4.x.x и 5.x.x) може да се определят като:
- 4.x.x – “soft bounce” или „мек отказ за доставяне“. Тези кодове индикират временен проблем с доставянето на писмото. Мейл сървърът на изпращача може да направи следващи опити да изпрати писмото.
- 5.x.x – “hard bounce” или “твърд отказ за доставяне” – проблемът с доставянето на писмото е постоянен. Мейл сървърът на изпращача няма да прави опити да изпрати отново писмото.
SMTP статус кодове 4.x.x
SMTP статус кодовете за мек отказ за доставяне започват с 4.x.x и най-честите причини за получаването им са:
- запълнена дискова квота за пощенската кутия;
- писмото е с прекалено голям размер;
- временно отпадане на мейл сървъра на получателя.
Изпращащият мейл сървър знае как да процедира, когато получи определени SMTP статус кодове от мейл сървъра на получателя. За някои от тях той автоматично реагира и изпълнява определени действия. Например когато се върне от получателя код за мек отказ от доставяне, при запълнена квота на получателя например, той ще опита да изпрати писмото отново след известен период от време например 24, 48, 72 часа. След определен брой отхвърляния на писмото изпращащият мейл сървър ще се откаже от по-нататъшни опити да изпрати до този получател.
4.2.2 – Запълнена дискова квота
Този статус код означава, че пощенската кутия на получателя е запълнена. Единствено получателят може да отстрани този проблем. Той ще трябва да освободи място в пощата си, за да може да получава имейл съобщения.
Примерно съобщение с код 4.2.2 за неуспешно доставяне на писмо в имейл акаунт със запълнена квота:
From: Mail Delivery System Mailer-Daemon@goodexample.eu
Subject: Warning: message 1hdwCd-0002nw-BK delayed 24 hours
This message was created automatically by mail delivery software.
A message that you sent has not yet been delivered to one or more of its recipients after more than 24 hours on the queue on goodexample.eu.
The address to which the message has not yet been delivered is:
emailoverquota@gmail.com
host alt4.gmail-smtp-in.l.google.com [173.194.203.27]
SMTP error from remote mail server after RCPT TO:emailoverquota@gmail.com:
452-4.2.2 The email account that you tried to reach is over quota. Please direct
452-4.2.2 the recipient to
452-4.2.2 https://support.google.com/mail/?p=OverQuotaTemp w2plp.271 – gsmtp:
retry timeout exceeded
No action is required on your part. Delivery attempts will continue for some time, and this warning may be repeated at intervals if the message remains undelivered. Eventually the mail delivery software will give up,and when that happens, the message will be returned to you.
Изпращащият мейл сървър ще направи няколко опита да изпрати писмото до получателя, през определен интервал от време. При всеки неуспешен опит към подателя ще се върне съобщение с тема “Warning: message 1hgyyb-00Gcdi-R1 delayed 24/48/72 hours”. Изпращащият мейл сървър ще преустанови опитите си за изпращане на писмото при неуспешен опит до 72 часа.
SMTP статус кодове 5.x.x
SMTP статус кодовете за твърд отказ за доставяне започват с 5.x.x и най-честите причини за получаването им са:
- имейл адресът не съществува (5.1.1);
- домейнът в имейл адреса не съществува;
- твърд отказ от доставяне от получаващия мейл сървър.
При твърд отказ от доставяне изпращащият мейл сървър няма да прави опити отново да изпрати писмото до дадения получател. При този отказ от доставяне ще е нужна проверка и намеса от човешка страна, за се установи кое не е наред с писмото и параметрите му.
5.1.1 – Несъществуващ имейл адрес
Този код означава, че имейл адресът е изписан от подателя грешно или такъв имейл адрес не съществува при получаващия мейл сървър.
Примерно съобщение с код 5.1.1 за неуспешно доставяне на писмо с несъществуващ имейл адрес:
From: Mail Delivery System Mailer-Daemon@goodexample.eu
Subject: Mail delivery failed: returning message to sender
This message was created automatically by mail delivery software.
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:
emailnotvalid@abv.bg
host pmx.abv.bg [194.153.145.203]
SMTP error from remote mail server after RCPT TO:emailnotvalid@abv.bg:
550 5.1.1 emailnotvalid@abv.bg: Recipient address rejected:
User unknown in virtual mailbox table
И други
101 (Can not open connection) – Най-вероятно мейл сървърът или мейл програмата не могат да осъществят SMTP сесия. Възможно грешки са SMTP Error 101, Error opening connection или SMTP Error 101, cannot open SMTP stream. Най-вероятно има грешка в името на сървъра, грешен IP адрес или грешен порт в мейл клиента, който използвате.
111 (Connection refused) – Проявява се, когато мейл клиентът не може да се свърже с мейл сървъра на получателя и най-вероятната причина за това е грешно конфигурирана защитна стена или грешно домейн име. Типично съобщение в този случай е следното: Connection refused, 111 Can’t open SMTP stream.
211 (System Status message or System Help Reply) – Използва се предимно от мейл сървъра, за да се предостави помощна информация/команди, които позволяват да се изпълняват.
214 (Help Reply message) – Подобно на 211 (System Status message or System Help Reply) се показва информация най-често при подаване на командата HELP към мейл сървъра.
220 (ServerName service is running) – Информира, че мейл сървърът работи коректно. Имплементацията на някой от тях може да ви предостави информационно съобщение, че сте готови да използвате мейл сървъра, към който сте се свързали.
221 (The domain service is closing the transmission channel) – Информационен статус, който споделя, че мейл сървърът е обработил заявките, които са му подадени и затваря връзката между двете страни, докато не получи нова заявка за комуникация. Често срещано съобщение е 221 Goodbye или 221 Closing connection, както и 221 Thank you for your business или 221 All messages processed successfully in this session.
250 (Requested mail action OK completed) – Информационен статус, който споделя, че съобщението е получено и обработено.
251 (User not local will forward) – Информира, че съобщение ще бъде препратено към нужния отдалечен мейл сървър.
252 (Cannot VRFY(verify) the user – the server will accept the message and attempt to deliver it) – Получава се в доста частен случай, в който мейл сървърът е разделен на отделни компоненти, които са на различни физически сървъри.
354 (Start mail input end with <CRLF>.<CRLF>, or as a less cryptic description FROM and TO information received, now please provide message body and mark its end with <CRLF>.<CRLF>) – Мейл сървърът информира, че е получил информацията от кого и за кого е имейлът, но му е нужно и съдържанието на имейла, за да може да го обработи.
420 (Timeout communication problem encountered during transmission) – Много рядка грешка, която в повечето случаи означава, че има физически проблем с интернет свързаността.
421 ( <Servername>Service not available – the sending email program should try again later) – Най-честата причина за подобна грешка е рестарт на мейл сървъра или претоварване от огромна мейл комуникация. Типично съобщение в този случай е 421 Too many concurrent SMTP connections from this IPaddress ;please try again later.
422 (The recipient’s mailbox is over its storage limit) – Тази грешка показва, че пощенската кутия или самият домейн е надвишил разрешената квота. Нужно е квотата да се увеличи или да се изтрият ненужни файлове/имейли.
431 (The recipient’s mails server is experiencing a Disk Full condition) – Тази грешка информира, че мейл сървърът или няма свободно дисково пространство или RAM паметта е изчерпана.
432 (The recipient’s Exchange Server incoming mail queue has been stopped) – Тази грешка е единстевено за Microsoft Exchange Server и показва, че мейл сървърът е временно спрян от администратор, най-вероятно за отстраняването на друг проблем.
441 (The recipient’s server is not responding) – Грешката показва, че вашият мейл сървър не може да достъпи отсрещния мейл сървър. Той ще се опитва да се свърже с него, докато изпрати вашия имейл.
442 (The connection was dropped during transmission) – Вашият имейл е бил маркиран за изпращане, но самият процес не е могъл да приключи успешно. Най-вероятна причина за това е мрежови проблем.
446 (The maximum hop count was exceeded for the message) – Най-вероятната причина е мрежови проблем, който ‘върти’ вашия имейл в кръг и не може да достигне до нужната дестинация.
447 (Your outgoing message timed out) – Отсрещният сървър не приема вашия имейл и най-честата причина е множеството получатели, които сте посочили.
449 (Routing error) – Грешка единствено за Microsoft Exchange Server. В повечето случаи това е следствие на мрежови проблем.
450 (Requested action not taken – The mailbox was unavailable at the remote end) – Отсрещният сървър не приема вашия имейл. Вероятни причини за това могат да бъдат: сървърът е спрян, отсрещната пощенска кутия има проблем или мейл сървърът не приема имейла, защото изпращачът е в черен списък. Примерно съобщение 450 Please try again later.
451 (Requested action delayed – Local problem) – Получава се, ако вашият интернет провайдър или някой от мейл сървърите изпитва натоварване на услугата. Типични грешки: SMTP error 451 Unable to complete command, DNS not available or timedout__ или 451 Temporary local problem – please try later.
452 (Requested action not taken – Insufficient storage) – Грешка, която показва, че дисковото пространство на мейл сървъра е към своя край. Възможно съобщение: 452 Out of memory.
471 (Please try again later) – Най-често тази грешка се получава заради анти-вирусния или анти-спам филтър на мейл сървъра.
500 (Syntax error command not recognized) – Мейл клиентът, който използвате, най-вероятно подава грешни SMTP команди към мейл сървъра и той не може да ги обработи. Възможно съобщение: 500 unrecognized command.
501 (Syntax error in parameters or arguments) – Мейл клиентът е подал коректна команда към мейл сървъра, но параметрите са грешни. Примерно съобщение: 501 5.5.4 Invalid Address.
502 (Command not implemented) – Мейл клиентът подава към мейл сървъра команда, която той няма имплементирана.
503 (This mail server requires authentication) – Командите, които мейл клиентът е подал на мейл сървъра, са в грешен ред и не са по SMTP спецификацията.
504 (Command parameter not implemented) – Мейл клиентът е подал коректна команда към мейл сървъра, но параметрите са грешни.
510/511 (Bad Email Address) – Най-вероятна причина е грешно изписан имейл получател.
512 (The host server for the recipient’s domain name cannot be found (DNS error)) – Грешка, която информира, че мейл сървърът не може да разпознае(resolve) коректно домейна, от който се получава или до който се изпраща имейлът.
513 (Relaying denied or Authentication required) – Типично се използва ако в мейл клиента не е изписан правилно получателят, най-често ако е ограден в кавички. Типично съобщение: 553 5.1.3 User address required! или SMTP error 501 5.1.3 Bad recipient address syntax.
523 (The Recipient’s mailbox cannot receive messages this big) – Грешката се проявява, ако имейлът и прикачените файлове към него надвишават позволения размер на един мейл. Типично съобщение: SMTP Error 552 5.2.3 Message exceeds maximum fixed size.
530 (Your server has been blacklisted by the recipient’s server) – Използва се предимно, ако мейл сървърът е попаднал в черен списък.
541 (Recipient Address Rejected – Access denied) – Пълен еквивалент на грешка 530 (Your server has been blacklisted by the recipient’s server). Типично съобщение: SMTP error from remote mail server – 550 5.4.1 Recipient address rejected.
550 (Requested actions not taken as the mailbox is unavailable) – Причините за грешката са две: или защитната стена на мейл сървъра, който изпраща имейла, го блокира, или няма такава пощенска кутия. Типично съобщение: 550 No such user here.
552 (Size of the incoming message exceeds the incoming size limit) – Потребителят е достигнал определен лимит на мейл сървъра и не му се позволява да изпраща повече имейл съобщения.
553 (Requested action not taken – Mailbox name invalid) – Грешката може да се прояви, ако имейлът на получателя е изписан погрешно или PTR (reverse DNS) записът на мейл сървъра е сгрешен.
554 (Transaction failed) – Грешката може да се прояви по множество причини, но най-разпространената е попадане в черен списък на изпращача.
Вижте още статус кодове в статията 🔗 Често срещани имейл статуси и грешки при недоставена поща | Help