SMTP

smtp_протокол_smtp_protokolSMTP (Simple Mail Transfer Protocol)

— простой протокол передачи почты) — базовый сетевой протокол, созданный для передачи электронной почты по сетям TCP/IP.

Главное назначение протокола SMTP — отправка пользовательской почты к серверам, а после, между серверами для доставки получателю. Почтовый клиент, для приема почты пользуется протоколами POP3 и IMAP. Все работ с SMTP осуществляется на сервере получателя. Работа эта заключается в установлении соединения, аутентификации и передаче данных.

Итак, для успешной доставки письма получателю, оно должно быть передано почтовому серверу того домена, который использует адресат. Для этой цели обычно используют запись типа MX (Mail eXchange с английского, то есть обмен почтой) системы DNS. Так же, как запасной вариант, иногда используется запись типа А. Современные реализации серверов могут использовать запись типа SRV.

Протокол SMTP получил широкое распространение в 80-х годах двадцатого века. До него в ходу был протокол UUCP, который был несколько неудобен для пользователей, потому что от них требовалось знание полного маршрута до получателя. Нужно было указать этот маршрут в адресе получателя, или же иметь с этим получателем постоянное или коммутируемое соединение компьютеров.

Считается, что Sendmail был в числе первых агентов отправки сообщений, который использовал SMTP. Многие полагают, что он был самым первым. В настоящее же время, данный протокол считается стандартным, и его используют все почтовые клиенты и серверы.

Протокол был разработан таким образом, что мог передавать только текст в кодировке ASCII, а первые его спецификации требовали обнуления старшего бита каждого передаваемого байта. Данная особенность несколько стесняет пользователей, так как не позволяет передавать тексты на национальных языках, вроде кириллицы, а также двоичные файлы, например, видеоролики, изображения или какие-либо программы. Эту досадную деталь поспешили исправить, разработав стандарт MIME, по которому описывается способ преобразования двоичных файлов в текстовые эквиваленты. Впрочем, современные серверы поддерживают стандарт 8BITMIME, по которому двоичные файлы передаются точно так же, как и текстовые.

Вот несколько основных команд. MAIL —адрес отправителя. RCPT — адрес получателя (таких может быть несколько, и на каждого — отдельная квитанция). DATA — передача данных, то есть, собственно, писем. Производится в ASCII. Данные являются сегментами TCP. Конец письма обозначается точкой в пустой строке. Ну и QUIT — разрыв соединения.

Установление, разрыв соединения и контроль над пользовательскими данными производится по TCP.

По сути, сервер SMTP есть не что иное, как конечный автомат с внутренним состоянием. То есть клиент передают серверу следующая строку: «команда<пробел>параметры<перевод строки>». Сервер же, в свою очередь, отвечает на каждую команду строкой, в которой содержится код ответа и текстовое сообщение, отделенное пробелом. Кодом ответа является число от 100 до 999, которое имеет вид строки, со следующими значениями:

1. 2ХХ — успешное выполнение команды;

2. 3ХХ — от клиента ожидаются дополнительные данные.

3. 4ХХ — означает временную ошибку.

Клиенту предлагается сделать еще одну попытку чуть позже.

4. 5ХХ — ошибка, которую устранить нельзя.

Текстовая же часть ответа, есть само сообщение. Оно предназначено не для машины, но для человека.

ESMPT является расширяемой вариацией протокола SMTP. В тот момент, когда устанавливается соединение, сервер объявляет о наборе возможных расширений (в качестве ответа на команду EHLO). Клиент может использовать нужные расширения в своей работе. Однако, стоит помнить о том, что если сессия начинается с команды EHLO, то никакого списка поддерживаемых расширений не будет.