Extended SMTP commands that some SMTP servers may support
STARTTLS
The command is used to start a TLS handshake for a secure SMTP session. resets the SMTP protocol to the initial state. Once the response is received from the server, the SMTP client should send or to launch the session. In the case of a negative response (), the client must decide whether to continue the SMTP session or not.
Example:
AUTH
The command is used to authenticate the client to the server. For this, it uses an argument that specifies different levels of security and login methods: , , and . The session is considered authenticated once the server provided a positive response. For more on this, read the SMTP authentication blog post.
Example:
ATRN
The command replaced the obsolete command. It was used to reverse the connection between the local and external SMTP servers (sender and receiver). lacked authentication and hence was deprecated. is devoid of this drawback. Besides, it is available for dynamically assigned IP addresses.
Проверка доступности почтового сервера программным методом
В данной статье описаны лишь некоторые варианты ошибок, которые могут возникнуть при отправке электронных сообщений. Полный перечень достаточно объемен и во многом зависит от настроек конкретного сервера как на стороне отправителя, так и получателя. Некоторые из ошибок могут быть легко устранены обычным пользователем, другие под силу лишь опытным администраторам.
Одним из способов предупреждения появления ошибок является онлайн-проверка доступности почтового сервера с помощью бесплатных инструментов:
- https://mxtoolbox.com
- https://www.ultratools.com
- http://mail2web.com
Эти сервисы пробуют подключиться к почтовому серверу по SMTP, подтверждают, что у него есть запись обратной зоны DNS, и замеряют время отклика. С их помощью можно диагностировать некоторые ошибки службы почтовых серверов или проверить, не занесен ли данный ресурс в черные списки из-за спама.
Прочитав эту статью, обратите внимание на то, как настроен ваш почтовый сервер на получение сторонних писем по SMTP-протоколу
Быть может, в данный момент ваш антиспам или локальная политика фильтрации входящих сообщений блокирует получение очень важного и нужного для вас месседжа? Проверьте сами или обратитесь к системному администратору. Если ошибку с SMTP никак не удается решить, то попробуйте обратиться в службу поддержки почтового сервера
Если ошибку с SMTP никак не удается решить, то попробуйте обратиться в службу поддержки почтового сервера.
Как избежать ошибок при составлении и отправке писем
Причинами возникновения ошибок и, как следствие, неполучения сообщений могут служить разные факторы. Одни из них связаны с неправильным составлением исходящих писем самим пользователем, другие относятся к более глобальным программным настройкам со стороны получателя.
Самый простой способ это понять – отправить тестовое сообщение на свой ящик. Затем следует протестировать его отправку и получение, используя разные внешние почтовые сервисы: gmail, yandex, mail, rambler и другие. Если сообщение получено, следует ответить на него, проверив корректность исполнения команды «RE» вашим почтовым сервером и принятие ответа условным отправителем.
Довольно часто проблемы с попаданием писем в папку «Спам» или программной блокировкой на стороне получателя лежат в неверном оформлении ключевых полей. Особенно это касается массовых рассылок коммерческого характера. Для отправки большого количества однотипных сообщений как минимум потребуется выполнение следующих параметров настройки:
- выделенный IP-адрес с целью исключить блокировку на стороне сервера-ретранслятора или почтовой программы конечного получателя;
- криптографические подписи DKIM и SPF, помогающие подтвердить подлинность домена и минимизировать количество писем, воспринимаемых как спам.
Некорректное использование бота для отправки писем может привести к блокировке отправителя и другим нежелательным последствиям. Даже если информация, которую вы отправляете потенциальным клиентам, реально интересна им, система спам-фильтрации может воспринять данную рассылку как вредоносную. Чтобы избежать этого, лучше всего воспользоваться услугами специализированных компаний.
В моей практике был случай, когда никак не удавалось добиться получения моей электронной корреспонденции одним из сотрудников компании «Лукойл». Письма я отправлял самые простые, используя корпоративный ящик. Только после того, как мой респондент обратился в IT-службу своего предприятия, выяснилось, что данный адрес находится в блэк-листе. Попал он туда из-за каких-то ошибок, допущенных моим предшественником. Понадобилось больше недели, чтобы адрес включили в «белый список». Все это время письма, высылаемые с личного [email protected], доходили без проблем.
Полезно: Почему не приходят письма с сайта. Пример частного случая.
Essential SMTP commands in the order they may be used
Each SMTP command defines a particular function within the SMTP session, which consists of three steps:
- handshake – establishing a TCP connection
- email transfer – manipulations with the email
- termination – closing a TCP connection
Therefore, we decided to list the SMTP commands according to this flow.
HELO/EHLO
The command initiates the SMTP session conversation. The client greets the server and introduces itself. As a rule, is attributed with an argument that specifies the domain name or IP address of the SMTP client.
is an alternative to for servers that support the SMTP service extensions (ESMTP). If the server does not support ESMTP, it will reply with an error.
In any case, or is a MUST command for the SMTP client to commence a mail transfer.
RCPT TO
The command specifies the recipient. As an argument, includes a destination mailbox (forward-path). In case of multiple recipients, will be used to specify each recipient separately.
The command is used only to check whether the server can respond. “” reply in response
HELP
With the command, the client requests a list of commands the server supports. may be used with an argument (a specific command). If the server supports this, it will provide the information accordingly to this request.
VRFY and EXPN
is used to verify whether a mailbox in the argument exists on the local host. The server response includes the user’s mailbox and may include the user’s full name.
Example: (server response)
is used to verify whether a mailing list in the argument exists on the local host. The positive response will specify the membership of the recipients.
Example:
The hyphen (-) between the numerical code and the user’s mailbox indicates that the response is continued on the next line.
RSET
The command resets the SMTP connection to the initial state. It erases all the buffers and state tables (both sender and recipient). gets only the positive server response – . At the same time, the SMTP connection remains open and is ready for a new mail transaction.
QUIT
The command send the request to terminate the SMTP session. Once the server responses with , the client closes the SMTP connection. This command specifies that the receiver MUST send a “” reply and then closes the transmission channel.
Command-response
As you may have noticed above, some codes are command-specific. Actually, only three of them, , , and can be a response to any SMTP command. Others can be categorized as positive and negative (code can be considered as an intermediate response). Let’s see which commands they can refer to.
Command | Positive response | Negative response |
SMTP handshake (establishing a connection) | 220 | 554 |
220 | 454 | |
or | 250 | 502 (response to EHLO for old-time servers)504550 |
235334 | 530535538 | |
250 | 451452455503550552553555 | |
250251 | 450451452455503550551552553555 | |
250354 (intermediate response) | 450451452503550 (rejection for policy reasons)552554 | |
250 | – | |
250251252 | 502504550551553 | |
250252 | 502504550 | |
211214 | 502504 | |
250 | – | |
221 | – |
This is the list of standard response codes. It should be also mentioned that some SMTP servers can generate other three-digit codes. In this case, the SMTP client will have to interpret the first digit that must be in a range from 2 to 5 inclusive. It denotes the essence of the response (successful or not).
Положительные и отрицательные сообщения SMTP-сервера
Данные коды являются трехзначными, каждая его часть несет в себе определенную информацию, расшифровывающую причину сбоя.
Первая цифра комбинации содержит информацию о качестве доставки:
- сообщение доставлено («SMTP OK»);
- возникла неизвестная или временная проблема («SMTP unknown»);
- критическая ошибка («SMTP error»).
Существует четыре варианта значений для первой цифры кода:
- 2xx – положительный результат, есть возможность передачи следующей команды;
- 3xx – отложенный результат, необходимо осуществление дополнительных действий;
- 4xx – сообщение не принято, но проблема носит временный характер, и запрос может быть повторен через какое-то время;
- 5xx – категорический отказ выполнения команды, отправка запроса со стороны передающего сервера в том же виде невозможна.
Вторая цифра в коде сообщает о категории ответа:
- 0 – синтаксические ошибки;
- 1 – ответы на запросы информации;
- 2 – ошибки канала передачи;
- 3 и 4 – неизвестный тип ошибки;
- 5 – статус почтовой системы.
Третья цифра дает более расширенную информацию о значении, указанном во второй цифре SMTP-ответа.
Помимо цифровой комбинации, SMTP-сообщение может содержать дополнительную текстовую информацию.
Полную информацию о кодах, их компоновке и значениях можно найти в спецификациях RFC 5321 и RFC 1893.
Следует учитывать, что SMTP-message говорит об успешном или неудачном варианте доставки именно на уровне взаимодействия почтовых серверов. Положительный ответ вовсе не означает, что ваше письмо не попало в папку «Спам».
Виды почтовых сервисов
На программном уровне существует несколько видов обработки электронной почтовой корреспонденции. К первой группе относятся виртуальные сервисы, доступные чаще всего в бесплатном исполнении через интернет-соединение на сайте почтового сервера. Это всем известные ресурсы:
- Gmail/Google Suite (почта от Google.com);
- Yandex.ru;
- Mail.ru;
- Rambler.ru и другие.
Более подробную информацию о значениях ответов SMTP можно получить на сайтах популярных почтовых сервисов:
- Коды ошибок SMTP почтового сервиса Gmail (Google Suite) (support.google.com)
- Создание и отправка писем на сервисе Яндекс
- Ошибки отправки писем при использовании сервера и сервиса Mail.ru
Ко второй группе относятся почтовые клиенты – программы, обладающие более расширенным функционалом, чем виртуальные сервисы. Наиболее популярными и универсальными почтовыми клиентами для Windows являются:
- Opera Mail;
- Mozilla Thunderbird;
- Koma-Mail;
- SeaMonkey;
- The Bat!;
- Microsoft Outlook.
Принципы работы почтовых клиентов несколько отличаются от процесса обработки корреспонденции виртуальными серверами. При отправке сообщения программа отсылает его не напрямую конечному получателю, а ретранслирует через сервер-релей. Этот процесс осуществляется чаще всего с использованием протокола SMTP, а получение корреспонденции обычно происходит с помощью IMAP или POP.
Коды SMTP-ответов определяются стандартом. Администратор почтового сервера может создать собственные настройки, в том числе и в части кодировки ответов сервера. Особенно это касается локальных почтовых программ, установленных непосредственно на сервере какой-нибудь компании.
О вариантах выбора и способах создания корпоративных почтовых сервисов более подробно можно прочитать здесь: Что такое почтовый сервер и зачем он нужен.
SMTP response codes
The SMTP server responses to the client using a three-digit code. Each digit has a special significance:
- First (2 to 5) – denotes whether the request is accepted, incomplete, or declined
- Second (0 to 5) – denotes the type of error occurred (syntax, information, connections, mail system, or unspecified (two options)).
- Third (0 to 5) – provides finest description (together with textual explanation)
The numerical code is followed by a text meant for a human user to get the point. Different servers can use a modified textual description of the response, while the numerical code is permanent. So, here is what your SMTP server can reply with:
Code | What it means |
101 | Server connection error (wrong server name or connection port) |
211 | System status (response to ) |
214 | Help message (response to ) |
220 | The server is ready (response to the client’s attempt to establish a TCP connection) |
221 | The server closes the transmission channel |
235 | Authentication successful (response to ) |
250 | The requested command is completed. As a rule, the code is followed by OK |
251 | User is not local, but the server will forward the message to <forward-path> |
252 | The server cannot verify the user (response to ). The message will be accepted and attempted for delivery |
334 | Response to the command when the requested security mechanism is accepted |
354 | The server confirms mail content transfer (response to ). After that, the client starts sending the mail. Terminated with a period ( “”) |
421 | The server is not unavailable because it closes the transmission channel |
422 | The recipient’s mailbox has exceeded its storage limit |
431 | File overload (too many messages sent to a particular domain) |
441 | No response from the recipient’s server |
442 | Connection dropped |
446 | Internal loop has occurred |
450 | Mailbox unavailable (busy or temporarily blocked). Requested action aborted |
451 | The server aborted the command due to a local error |
452 | The server aborted the command due to insufficient system storage |
454 | TLS not available due to a temporary reason (response to ) |
455 | Parameters cannot be accommodated |
471 | Mail server error due to the local spam filter |
500 | Syntax error (also a command line may be too long). The server cannot recognize the command |
501 | Syntax error in parameters or arguments |
502 | The server has not implemented the command |
503 | Improper sequence of commands |
504 | The server has not implemented a command parameter |
510 | Invalid email address |
512 | A DNS error (recheck the address of your recipients) |
523 | The total size of your mailing exceeds the recipient server limits |
530 | Authentication problem that mostly requires the STARTTLS command to run |
535 | Authentication failed |
538 | Encryption required for a requested authentication mechanism |
541 | Message rejected by spam filter |
550 | Mailbox is unavailable. Server aborted the command because the mailbox was not found or for policy reasons. Alternatively: Authentication is required for relay |
551 | User not local. The <forward-path> will be specified |
552 | The server aborted the command because the mailbox is full |
553 | Syntactically incorrect mail address |
554 | The transaction failed due to an unknown error orNo SMTP service here as a response to the client’s attempts to establish a connection |
555 | Parameters not recognized/ not implemented (response to or ) |