Smtp что это
Smtp что это
Что такое SMTP-протокол и как он устроен?
SMTP (Simple Mail Transfer Protocol) — протокол передачи почты. Он был представлен еще в 1982 году, но не теряет актуальности до сих пор. В статье разбираемся, какие задачи решает протокол и как он работает.
Для чего используется SMTP
У протокола две главные задачи:
SMTP и его место в стеке TCP/IP
Теоретически SMTP умеет работать с практически любыми протоколами так называемого транспортного уровня, включая TCP, UDP и другие. Еще на заре развития протокола за ним закрепили два номера порта:
В большинстве случаев протокол SMTP используется для передачи исходящей почты с использованием порта TCP 25. То есть можно сказать, что SMTP-порт — это как раз TCP 25, хоть и не всегда. Иногда задействуется еще порт 465. Так происходит, когда порт требует защищенного SSL-соединения.
Но в большинстве случаев используется лишь один транспортный протокол TCP с портом 25 (это SMTP-порт по умолчанию). Другие варианты применяются крайне редко, например, когда провайдеры по какой-то причине закрывают доступ к 25 порту. Они могут делать это, например, для блокировки спам-рассылок.
Электронное письмо и его формат
Сообщение электронной почты всегда состоит из трех элементов:
Конверт применяется для передачи сообщений электронной почты от клиенту к серверу и обратно. При этом как клиент, так и сервер взаимодействуют друг с другом в обычном формате «запрос-ответ». В ходе взаимодействия между ними передаются текстовые строки.
Что касается заголовка и тела письма, то их параметры прописаны в отдельном документе — RFC2822.
Формат поля заголовка Received:
Received:
From host
by host
via physical-path
with protocol
id message-id
for final e-mail destination
Это поле используется для идентификации тех SMTP-серверов, которые были задействованы в процессе доставки сообщения от отправителя к получателю. Любой сервер из цепочки добавляет к сообщению собственное поле Received, где можно видеть техническую информацию об этом сервере.
Return-Path — поле возврата, которое используется для определения маршрута, по которому прошло сообщение. Если оно было отправлено прямо на сервер получателя, то в поле отображается один адрес. Если же серверов несколько, они будут отображаться списком.
Команды и ответы SMTP
Команды
Все они состоят из четырех символов. Сакрального замысла здесь нет, просто в самом начале разработчики договорились, что длина будет именно такой. Ниже — основные команды SMPT. Есть и другие, но они используются реже.
Ответы SMTP
Здесь все одновременно и проще, и сложнее. Ответы в случае SMTP состоят из двух частей:
Коды сообщений начинаются на 2, 3, 5. Если сообщение начинается на 2, это значит, что предыдущая команда успешно завершена. «Тройка» в коде означает успешную отправку с необходимостью предоставить дополнительные данные.
Если сообщение начинается на 5, это означает технический сбой. Так, ошибка 502 — индикатор нереализованной команды, а 503 сообщает о неправильной последовательности команд.
Как работает SMTP — простыми словами
Давайте представим, что вы установили и настроили собственный SMTP-сервер. Далее вы планируете отправить письмо. Работает отправка по определенному алгоритму:
Если все хорошо, то далее в работу вступают уже другие протоколы — POP и IMAP, но о них мы поговорим в другой статье.
Пример работы SMTP
В качестве примера давайте рассмотрим пример сеанса SMTP, который инициализируется при необходимости отправить электронное письмо. На картинке ниже — данные сеанса, с которыми мы будем работать дальше.
Здесь мы видим подключение к почтовому серверу по 25 порту. Говоря техническим языком, подключение выполнено по адресу 220 smtp.example.ru ESMTP Postfix на 25 порт. Начало подключения — использование команды HELO, которая нужна для указания собственного домена. После этого вступает в работу сервер, который возвращает статус 250. Что это такое? Все просто: соединение установилось без проблем. После этого сервер еще раз пишет доменное имя в текстовом сообщении.
Теперь наступает очередь использования команды Mail FROM, которая нужна для отображения адреса отправителя сообщения. Если все хорошо, то сервер снова отвечает сообщением со статусом 250. Мы видим, что с текстовой частью все хорошо, команда выполнена, проблем не возникло.
Наступает следующий этап — использование команды RCPT TO для того, чтобы указать адрес получателя. Если сервер возвращает статус 250, то мы уже знаем, что это означает. Все удалось, теперь нужно выполнить команду DATA для ввода самого письма. В этом случае сервер отвечает уже не статусом 250, а другим — 354. После этого можно начинать вводить текст письма. Важный нюанс: заканчиваться все это должно отдельной строкой, которая содержит всего одну точку.
Сообщение всегда состоит из двух частей. Первая — заголовок, вторая — тело сообщения. Последнее необходимо отделять от заголовка пустой строкой. В этом случае требуется использовать заголовок FROM, это адрес пользователя, отправившего сообщение. Указывать нужно не только сам адрес, но и имя. А еще требуется заголовок, который дает получателю понять, в чем заключается основной посыл сообщения. Что касается пустой строки, то она отделяет заголовки от тела письма.
Возьмем самое простое сообщение, которое состоит из двух строчек текста: это «Hello, email world!» и «Hello, SMTP!». Заканчивается письмо строкой, которая содержит всего одну точку. Но эта строчка не будет видна получателю, она чисто техническая и будет обязательно убрана в ходе передачи. Если же точка нужна, то нужно указать сразу две точки, из которых одна будет удалена.
Наконец, если есть точка, то сервер видит, что письмо полностью завершено, выдавая статус сообщения 250 2.0.0 Ok: queued as 7FD9DC2E0060. Все это означает, что письмо уже находится в очереди ожидания. Для завершения сеанса нужно ввести всего одну команду — QUIT. Сервер ответит сообщением со статусом 221, что означает «пока».
Нужен ли собственный сервер SMTP?
Здесь все зависит от задач, которые будет решать пользователь. SMTP подходит для реализации масштабного спектра задач — от отправки сообщения до доставки его получателю. Чаще всего SMTP используют для транзакционных писем, массовых рассылок или личной переписки.
Собственный SMTP дает немного больше преимуществ перед корпоративными (или, например, Google). Это, как правило, невысокая цена, внимательное отношение со стороны разработчиков и хорошая доставляемость массовых рассылок.
Достоинство SMTP в том, что его достаточно просто внедрить, для этого протокола есть обширная документация и развитое комьюнити.
Немного о безопасности и спаме
Протокол SMTP очень простой, у него нет никаких инструментов для защиты пользовательских данных от злоумышленников. Так, адреса, указанные в соответствующем поле, не проверяются.
Кроме того, у SMTP по дефолту не используется шифрование, так что любые письма, передаваемые разными компаниями, могут быть прочитаны — было бы желание и соответствующие инструменты. Но это относится к SMTP первой версии. В улучшенном варианте разработчики добавили шифрование. Для того, чтобы его задействовать, нужно использовать специальную команду STARTTLS.
Еще одна проблема SMTP — обилие нежелательных рекламных сообщений. К сожалению, протокол не содержит никаких защитных инструментов для ликвидации спама. Правда, многие современные почтовые серверы стараются использовать и внешние механизмы.
Большинство почтовых серверов для безопасности настраиваются на работу лишь с локальными юзерами. То есть это те пользователи, у которых есть ящики с адресом из пула домена, который они и обслуживают. Здесь встречаются и новые термины. Так, серверы, которые работают в ином режиме, позволяя передавать почту абсолютно на все адреса, называются «открытые релеи». Они нужны обычным пользователям, но активнее всего их используют злоумышленники. Зачем? Чтобы рассылать спам, конечно же. Поэтому за режимом работы корпоративных серверов нужно следить. Если при проверке сети окажется, что сервер работает в режиме открытого релея, стоит поговорить с администратором сервера.
А еще можно проверить адрес отправителя посредством цифровой подписи, о чем мы уже упоминали выше.
Например, есть возможность проверки email отправителя, воспользовавшись цифровой подписью. С этой целью используется, например, взаимодействие с системой DNS. В ней хранится открытый ключ электронной подписи для конкретного домена. И этот ключ как раз можно использовать для проверки.
В сухом остатке
SMTP — проверенный временем протокол передачи электронной почты, который просто работает. Да, у него есть свои недостатки, но они нивелируются простотой и надежностью протокола. К слову, он может использоваться как для отправления сообщений на почтовый сервер, так и на целую группу серверов.
Кстати, можно сделать собственный сервер SMTP для того, чтобы отправлять массовые рассылки. Но в этом случае придется выполнить множество разных тасков, включая добавление обработки статуса доставки письма, обход разного рода «черных» и «серых» списков. Требуется еще и удобная статистика отправлений, и возможность отписки от рассылки.
Для того чтобы все реализовать, лучше использовать специализированный сервис, владельцы которого развернули необходимые услуги. В этом случае разработчики требуются лишь для того, чтобы добавить сервис к CRM-системе.
Можно пойти еще дальше и организовать сервисы разных рассылок. Их достоинство состоит в том, что все возможности встроены в пользовательский интерфейс. А возможности не только базовые, ведь в таких сервисах есть функции сбора писем и форм подписки, работы с контактами, настройка цепочек в автоматическом режиме и проведение сплит-тестов.
Добавим, что собственный SMTP-сервер можно реализовать на мощностях Selectel, арендовав для этой задачи выделенные сервер или виртуальную машину в «Облачной платформе Selectel».
Почтовая кухня #2: SMTP
SMTP (англ. Simple Mail Transfer Protocol — простой протокол передачи электронной почты) — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP.
ESMTP (англ. Extended SMTP) — масштабируемое расширение протокола SMTP. В настоящее время под «протоколом SMTP», как правило, подразумевают ESMTP и его расширения.
Сразу отмечу, что в настоящее время SMTP в чистом виде практически не используется, т.к. он даже не поддерживает элементарно авторизацию… Используется ESMTP. Когда/если вы отправляете почту почтовым клиентом (Outlook, Thunderbird, Evolution, TheBat) происходит работа именно по этому протоколу.
Для работы по этому протоколу нужно соединиться с почтовым сервером по определенному порту и отправить некоторую последовательность ESMTP команд.
Команда представляет из себя строку вида
КОМАНДА[пробел]параметр(опционально)
В ответ на команду сервер возвращает строку вида
XXX[пробел]доп. информация
При этом XXX число в ответе сервера обозначает:
2ХХ — команда успешно выполнена
3XX — ожидаются дополнительные данные от клиента
4ХХ — временная ошибка, клиент должен произвести следующую попытку через некоторое время
5ХХ — неустранимая ошибка
Так вот, давайте перейдем ближе к делу — попробуем элементарно отправить e-mail из консоли через какой-нибудь почтовый сервер (не важно, линукс у вас или виндоус). Так будет проще познакомиться с этим протоколом — сразу на практике. Привожу комманды и параллельно объясняю их значение.
Для нашего эксперимента буду использовать почтовый сервер яндекса. Подразумевается, что уже есть там аккаунт…
Сразу предупреждаю, что после соединения все команды нужно вводить максимально быстро, т.к. при задержке около 15 секунд соединение автоматически разрывается. Рекомендую сперва все команды заранее набрать в текстовом редакторе а после просто вставлять их в командную строку.
telnet smtp.yandex.ru 2025 #соединяемся с smtp почтовым сервером. Адрес и порт smtp сервера можно посмотреть в инструкциях на сайте почтовика
Ответ:
Trying 213.180.204.38…
Connected to smtp.yandex.ru.
Escape character is ‘^]’.
220 Yandex ESMTP (NO UCE)(NO UBE) server ready at Mon, 2 Feb 2009 13:47:22 +0300
Код 220 говорит об успешном соединении
EHLO [91.198.212.5] #Приветствуем сервер и отсылаем ему наш внешний IP (IP не обязательно отсылать, можно обойтись просто EHLO, но сервер скорее всего на это ругнется)
UPD: Желательно отправлять даже не IP а доменное имя для этого IP вродеEHLO you.provider.domain без квадратных скобок
Ответ:
250-smtp18.yandex.ru Hello 91.198.212.5
250-SIZE 20971520
250-8BITMIME
250-PIPELINING
250-CHUNKING
250-ENHANCEDSTATUSCODES
250-DSN
250-X-RCPTLIMIT 25
250-AUTH=LOGIN
250-AUTH LOGIN
250-STARTTLS
250 HELP
Сервер принял приветствие и выслал список поддерживаемых команд. Из этого списка нас интересует AUTH LOGIN. Это команда для авторизации на сервере по base64-закодированному логину и паролю. Так вот, нужно заранее подготовить закодированные в base64 пароль и логин от вашей почты. Можно это сделать, например, здесь seriyps.ru/crypt или командой в Linux echo [ваш пароль/логин] | base64
AUTH LOGIN # Сообщаем серверу о намерении пройти авторизацию
Ответ:
Этот самый VXNlcm5hbWU6 — закодированное в base64 слово “Username:”, а номер ответа 3ХХ означает, что сервер ждет от нас дополнительной информации. Не будем его огорчать:
ВАШ_ЛОГИН_ПОЧТЫ_В_BASE_64 #Отправляем ваш логин почты в base64, например dmFzaWFwdXBraW4=
Ответ:
Это, как можно догадаться, “Password:” в base64
ВАШ_ПАРОЛЬ_ПОЧТЫ_В_BASE_64 # Отправляем пароль почты в base64, например MTIzNDU2
Ответ:
т.е. авторизация прошла успешно. Теперь можно отправлять e-mail)
MAIL FROM: vasiapupkin@ya.ru # Сообщаем, что хотим отправить почту с адреса vasiapupkin@ya.ru Адрес может быть любым (в том числе с несуществующих доменов, однако он может проверяться при проверке на спам)
Ответ:
RCPT TO: billy@microsoft.com # Сообщаем, что хотим отправить письмо на адрес billy@microsoft.com
Ответ:
250 2.1.5 Recipient address syntax Ok; rcpt=
DATA # Здесь сообщаем, что начинаем передачу данных.
Ответ:
Т.е. сервер будет считывать введенные в консоли данные до того момента, пока мы не нажмем Энтер точка Энтер (после этой комбинации письмо сразу отправляется)
Два раза Энтер, затем вводим сам текст письма.
Hello, Billy! You’ll die tomorrow!
Энтер. Энтер # Сообщаем, что закончили передачу сообщения
Ответ:
250 2.0.0 accepted; S10436885AbZBBKvs
Т.е. сообщение принято для передачи
Теперь можно отправить еще какое-нибудь письмо (MAIL FROM: RCPT TO:) или завершить сеанс работы
QUIT # Завершаем сеанс
Ответ:
221 2.0.0 smtp18.yandex.ru Out
Connection closed by foreign host.
Это все. Как видно, протокол довольно простой, основные сложности — в формировании самого тела письма.
Конечно, здесь не приведена информация по отправке почты в кодировках текста, отличных от ASCII, не написано про вложенные файлы и MIME но если вам нужны подробности, вот несколько ссылок:
Электронная_почта Wiki
SMTP Wiki
MIME Wiki
rfc5321
При разработке приложений непосредственно с SMTP обычно работать не приходится, для этого используют различные фреймворки или стандартные функции. Для PHP можно посмотреть:
SMTP PEAR расширение
PHPMailer библиотека для работы с электронной почной
Удачных экспериментов!
SMTP-сервер
Simple Mail Transfer Protocol (SMTP) — простой протокол связи, применяемый с целью пересылки электронных писем с сервера отправителя на сервер получателя. Этот протокол не рассчитан на обработку входящих сообщений, его используют для отправки и последующей доставки писем адресату. Преимущественно с помощью SMTP отправляют массовые и транзакционные рассылки.
Иногда протокол SMTP путают с IMAP или POP. Но между ними есть существенная разница. SMTP применяют для пересылки писем, тогда как POP или IMAP используют для обработки этих писем после получения.
Схема отправки письма по протоколу SMTP
SMTP-сервер — сервер, который работает по протоколу SMTP. Его главная задача — выступать ретранслятором (передатчиком) между серверами отправителя и адресата. Каждый SMTP-сервер обладает собственным адресом в формате smtp.serveraddress.com. Это позволяет безошибочно определять нужный сервер при пересылке почты.
Как происходит отправка почты через SMTP
Протокол SMTP работает по несложному набору правил:
Функционал SMTP ограничивается доставкой писем. На стороне адресата электронное письмо извлекается с помощью POP и IMAP.
Отправка писем по SMTP происходит через получение ответов на команды:
Пошагово отправка письма по SMTP выглядит так:
Понять принцип работы SMTP просто, если представить себе почтальона, который забирает письмо у отправителя, находит правильный маршрут назначения и доставляет сообщение в почтовый ящик адресата.
Для работы по протоколу SMTP стандартно применяют 25 порт. Но во избежание спам-рассылок провайдеры могут закрыть к нему доступ. Тогда его заменяют дополнительными портами:
Какие типы SMTP-серверов существуют
Все SMTP-серверы условно разделяют на два типа:
Также SMTP-серверы можно классифицировать в зависимости от источника. Сервер для отправки писем могут предоставить:
Выбор подходящего сервера обусловлен целями компании и масштабами деятельности. При небольшом количестве писем можно обойтись бесплатными вариантами или функционалом своего сайта. Для массовых рассылок, когда количество писем достигает нескольких сотен, тысяч или миллионов, стоит обратить внимание на виртуальные серверы и коммерческие сервисы транзакционных рассылок.
К примеру, UniOne, сервис транзакционных рассылок от UniSender, позволяет отправлять миллионы писем через SMTP-сервер. Для отправки рассылок нужно всего лишь указать хост, логин и пароль.
Преимущества SMTP для email-маркетинга
Высокая доставляемость. Во избежание спама провайдеры могут блокировать отправку почты или ограничивать количество писем с одного почтового ящика. При использовании SMTP вероятность блокировки снижается за счёт обязательной авторизации пользователя. Обычно для авторизации применяют логин и пароль от учётной записи пользователя в конкретном сервисе или аккаунте.
Высокая безопасность взаимодействия. Личные данные подписчиков хранятся на сервере отправителя. SMTP-сервер лишь пересылает письмо, не сохраняя данные.
Не нужно устанавливать дополнительное программное обеспечение. Для запуска достаточно понимать принцип работы протокола и знать необходимый набор команд.
Детальные отчёты о доставке писем и возникающих ошибках. К примеру, ошибка на этапе передачи данных MAIL FROM означает, что ваш обратный адрес не понравился серверу получателя.
Высокая скорость доставки писем. При этом отправитель точно знает, получил ли адресат сообщение.
Низкая стоимость. Отправка писем через SMTP обойдётся в десятки раз дешевле в сравнении с отправкой сообщений через сервисы email-рассылок. Сервисы email-рассылок предоставляют дополнительные возможности для работы с письмами: конструкторы, шаблоны, автоматические цепочки, подробную аналитику. У SMTP-сервера лишь одна задача — доставить сообщение адресату. Когда вам требуется максимально оперативно доставить большое количество писем, например, транзакционных, лучше использовать SMTP.
Особенности применения SMTP
Несмотря на все плюсы SMTP-сервера, у него есть свои особенности, которые нужно учитывать:
Если вы планируете использовать SMTP-сервер для рассылок, но не хотите заморачиваться с настройками, воспользуйтесь готовым решением, выбрав один из сервисов транзакционных рассылок. Самое приятное, что у большинства таких сервисов есть бесплатные тарифы.
SMTP: как работает, для чего нужен и подходит ли для массовых рассылок
Блочный редактор писем, готовые шаблоны email, формы подписки и автоматизация. Запускайте email-рассылки, чтобы быть на связи со своими клиентами.
SMTP (Simple Mail Transfer Protocol) — сетевой протокол, предназначенный для передачи электронной почты. Он используется каждый раз, когда мы отправляем письмо через веб-сервисы (Gmail, Mail.ru), десктопные программы (Outlook, Thunderbird, TheBat) или сервисы рассылок (UniSender).
GMail, Mail.Ru, Yandex и других провайдеров электронной почты можно сравнить с почтовым отделением в вашем районе. Вы приходите туда, указываете на конверте, куда отправлять письмо и отдаёте его почтальону.
SMTP — это всё, что происходит в почтовом отделении, когда вы передали письмо. Например, на почте наклеят марки, проверят посылку на вес, организуют логистику и доставят письмо до адресата.
Тут возникает вопрос: если SMTP такой универсальный, почему нельзя отправлять письма напрямую через него? Можно, но есть несколько «но», о которых я расскажу дальше.
А пока немного теории.
Матчасть: как работает SMTP
Обычному пользователю знание SMTP не нужно, достаточно воспользоваться интерфейсом любого почтовика. С помощью команд из почтовика он будет отправлять запросы к серверу получателя.
Вот пример того, как выглядит общение серверов изнутри (SMTP-сессия):
$ telnet expamle.com 25 — мы пробуем подключиться к example.com по 25 порту, который как раз используется для передачи почты.
Connected to example.com.
Escape character is ‘^]’.
220 mailserver at example.com greets you. Make love not war! — подключение удалось.
250 example.com — поприветствовали друг друга с помощью команды HELO, сервер получателя ответил командой 250, что значит, что возможно дальнейшее «общение».
MAIL FROM: test@test.com > — мы говорим, от кого хотим отправить письмо.
250 2.1.0 Ok — сервер отвечает, что готов принять письмо от этого адресата (бывают ситуации, когда адрес внесен в блэклист на стороне получателя, и тогда уже здесь начнутся ошибки.
RCPT TO: user@example.com > — мы говорим, кому хотим отправить письмо.
250 2.1.5 Ok — сервер отвечает, что готов принять письмо для этого получателя (если адреса не существует, то здесь сервер может сказать что-то вроде 550 No such user here.
DATA — сообщаем серверу, что начинаем передавать письмо.
FROM: test@test.com — начинаем передавать письмо вместе с техническими заголовками.
SUBJECT: test mail from test subject
. — показываем, что мы закончили передачу письма.
250 2.0.0 Ok: queued as 1CF5FC0AAE — сервер отвечает, что принял письмо для доставки и назначил ему id 1CF5FC0AAE (по нему, в случае недоставки, системный администратор принимающего сервера сможет найти, что стало с письмом.
QUIT — сообщаем, что сеанс связи закончен.
221 2.0.0 Bye — сервер прощается с нами.
Connection closed by foreign host. — соединение обрывается.
Это пример самой простой SMTP-сессии. Она может быть намного сложнее, если получателей будет несколько или сервер получателя потребует аутентификацию и шифрование.
Кажется, что мешает подробно изучить документацию по SMTP и отправлять массовые рассылки через своё SMTP-решение? С этим есть проблема.
Предлагаю посмотреть на разные способы отправки массовых рассылок и оценить их по 3 параметрам: необходимость в доработках, доставляемость писем и цена.
Ящик на бесплатной почте
Доработки от разработчиков: ⭐️
Доставляемость массовых рассылок: ⭐️
Почти все почтовые провайдеры (Gmail, Mail.ru) предоставляют доступ к ящику по SMTP. Тем не менее, отправлять массовые рассылки с бесплатной почты не получится.
Преимущества
Ящики на Gmail, Mail.ru или Яндексе бесплатные. На этом преимущества для отправки массовых писем заканчиваются.
Недостатки
Пока вы отправляете небольшое количество писем, вас может устраивать бесплатная почта. Но если подписчиков много, вы столкнётесь с ограничениями по количеству писем:
Почтовый провайдер | Ограничение |
Mail.ru | 1 письмо в минуту |
Yandex.ru | 150 писем в сутки |
Gmail.com | 500 писем в сутки |
Rambler.ru | 200 писем в час |
Ukr.net | 250 писем в сутки |
Meta.ua | 200 писем в сутки |
Больше писем отправить не дадут. Более того, если мы попробуем перешагнуть через допустимый порог, то ящик заблокируют, а все письма начнут попадать в «Спам».
Почтовые провайдеры не могут допустить, чтобы с их серверов отправляли спам. Он ухудшает репутацию серверов почтовиков — из-за этого даже нормальные письма могут не дойти до «Входящих».
Вывод: не подходит для массовых рассылок.
Почта интернет-провайдера
Доработки от разработчиков: ⭐️
Доставляемость массовых рассылок: ⭐️
Этот способ похож на предыдущий: почта интернет-провайдера подходит для личной переписки, но не для массовых рассылок. Отправка писем идёт через IP-адреса провайдера — они не могут допустить, чтобы через них проходил спам. Поэтому на большинстве таких ящиков тоже стоит ограничение на количество писем в сутки.
Вывод: не подходит для массовых рассылок.
Хостинг
Доработки от разработчиков: ⭐️
Доставляемость массовых рассылок: ⭐️⭐️
Преимущества
Плюсы покупки хостинга — вы получаете email-адрес на том же домене, на котором будет располагаться ваш сайт. Это удобно, допустим, когда у вас есть небольшой интернет-магазин, и вам нужно отправлять сообщения со статусом заказа.
Недостатки
Но когда возникнет необходимость массовых рассылок, вы можете столкнуться с ограничениями и трудностями.
Часто хостинг располагается на общих IP-адресах хостинг провайдера, а это значит, что параллельно с вами на данном IP-адреса может находиться еще кто-то, и отправлять спам. Ваши письма из-за этого тоже будут попадать в спам. Именно из-за этого часто провайдеры ограничивают возможность рассылок для владельцев хостинга, и требуют покупки VPS (виртуального сервера) или выделенного сервера, что приводит нас к следующему пункту.
Вывод: подходит для массовых рассылок, если купить виртуальный сервер и настроить его.
Собственное SMTP-решение
Доработки от разработчиков: ⭐️⭐️⭐️
Доставляемость массовых рассылок: ⭐️⭐️⭐️ (при правильной настройке)
Как мы уже сравнили в начале, SMTP — это про всё, что касается отправки и доставки сообщения до получателя. Что именно отправлять и как отправлять — ваша ответственность. SMTP подходит для всего: транзакционных писем, массовых рассылок или личной переписки.
Преимущества
Простота. SMTP — простой протокол: его легко протестировать и внедрить (особенно, если у вас уже было SMTP-решение до этого).
Вот, что говорит CTO UniSender Александр Брычук:
Преимущество SMTP в том, что его можно быстро проверить, потому что это стандартный протокол. В случае с SMTP ссылки отписки, шаблоны, трекинг тоже может работать. Эту информацию можно передавать в X-заголовках письма. Но для этого нужны доработки.
Использование SMTP требует меньше знаний для внедрения, чем, скажем, использование WEB API (на котором построены сервисы транзакционных писем). SMTP хорошо изучен, для него есть подробная документация. Непредвиденные обстоятельства вроде внезапной смены протокола или изменения работы каких-то методов, сведены к минимуму.
Чтобы запустить SMTP-сервер, нужно разобраться, как работает протокол, и изучить набор необходимых команд.
Подробный отчёт об ошибках. Используя SMTP, вы сразу получаете ответ о доставке или ошибке доставки сообщения. Многие сервисы не дают развернутый ответ о причинах недоставки. Если письмо не дошло, то чаще всего они просто выведут причину: несуществующий адрес, блокировка сообщения как спама.
SMTP-сессия покажет, на каком именно этапе возникла ошибка доставки. Иногда это полезно. Например, если ошибка возникла на этапе передачи данных MAIL FROM (смотрите пример SMTP-сессии), то ваш обратный адрес не нравится серверу получателя.
Недостатки
Грейлистинг. Протокол SMTP требует постоянного общения сервера отправителя и получателя. Недостаточно отправить один запрос на отправку письма. Сначала серверы должны «поздороваться», потом отправитель должен сообщить, от кого письмо, потом предоставить содержание письма. На каждый из этих этапов мы ждём ответ сервера получателя. Когда отправляется одно письмо, трудностей не возникает.
Но когда отправляется много писем, может, например, включиться грейлистинг. Это технология защиты от спама, когда сервер получателя сознательно отвечает вашему SMTP-серверу, что он недоступен. В этом случае SMTP, рассылающие спам, обычно прекращают попытки. Знание о таком поведении необходимо закладывать в логику работы вашего SMTP сервера. Например, в сервисах рассылок повторные попытки отправки автоматизированы — письма лучше доходят до получателей.
Необходимость глубокой доработки. Чтобы настроить полноценный email-маркетинг на своём SMTP-сервере, нужно много доработок. Например, чтобы следить за открытиями и переходами из писем, нужны специальные заголовки или трек-пиксели. И так с каждым инструментом — чтобы его сделать, нужно звать разработчиков.
Вывод: подходит для массовых рассылок, но нужна глубокая доработка со стороны разработчиков.
Формат сообщений(EMail)
Стандартные поля заголовка, согласно RFC 822
Формат сообщения, согласно RFC 822
Формат поля заголовка Received: (Принято:) следующий:
Поле заголовка Received используется для идентификации SMTP-серверов, которые принимали участие в процессе доставки сообщения от отправителя получателю. Каждый сервер добавляет к почтовому сообщению свое поле Received, с указанием специфических сведений о себе. Субполя в поле Received указывают на путь, протокол и компьютеры, принимавшие участие в передаче сообщения.
Формат этого поля заголовка следующий:
Последний SMTP-сервер в цепочке пересылки добавляет к сообщению поле возврата (Return-Path). Его цель — определение маршрута, посредством которого сообщение достигло получателя. Если сообщение было послано напрямую на сервер получателя, то в этом поле будет отображаться только один адрес. В противном случае здесь будет отображаться полный список серверов, через которые прошло сообщение, чтобы достичь адресата. Может отличаться от MAIL FROM (то есть обратный адрес может быть указан отличным от адреса отправителя).
В поле Originator указывается адрес отправителя сообщения. Эта информация весьма полезна в ситуации, когда сообщения были отвергнуты несколько раз частными сетями, прежде чем они попали в сеть Internet. Формат этого поля следующий:
Поле Originator является всего лишь небольшим вспомогательным полем в многоцветье полей заголовка. Оно может быть использовано в качестве более простого пути для небольших SMTP-пакетов. При этом необходимость в более сложных полях заголовка, по которым определяется отправитель, отпадает.
Поле заголовка Resent идентифицирует почтовое сообщение, которое по какой-либо причине должно было повторно посылаться клиентом. Формат этого поля следующий:
Данные поля заголовка идентифицируют отправителя электронного сообщения. Формат полей Authentic:
Поле From:(От:) идентифицирует автора сообщения. Обычно в полях From: и Sender:(Отправитель:) указывается один и тот же пользователь, так что в действительности требуется только одно из этих полей. В том случае, когда отправитель почты не является автором сообщения, а оно лишь посылается с его адреса, оба поля все равно должны быть указаны — этим обеспечивается возврат сообщения отправителю, если доставка его адресату оказалась невозможной. Поля заголовка Resent-authentic
Поля Resent-authentic определяют отправителя сообщения, которое по какой-либо причине повторно передавалось программой-клиентом. Формат этих полей следующий:
Resent-From: date-time Resent-Sender: date-time Поля Resent-From: и Resent-Sender: работают подобно полям From: и Sender:. Они лишь отражают, что сообщение было повторно передано клиентом по неизвестной причине.
Поля заголовка Dates
Поля заголовка Dates используются для помещения метки времени в сообщение при передаче его от клиента серверу. Формат полей Dates следующий:
Date: date-time Resent-Date: date-time Поле Date: (Дата) будет пересылать информацию в заголовке сообщения в точном соответствии с оригиналом сообщения. Этот параметр может оказаться полезным при отслеживании времени получения ответов, в особенности — множественных ответов.
В полях заголовка Destination указываются адреса электронной почты получателей сообщения. Эти поля являются чисто информационными. Сервер SMTP в любом случае не будет посылать сообщение в почтовый ящик пользователя, пока на получит команду RCPT, выданную для данного пользователя (см. раздел «Основные команды клиента SMTP»). Формат этих полей следующий:
Поля To:, CC: и BCC: устанавливают стандартный алгоритм обработки электронной почты. Большинство пакетов для работы с электронной почтой используют именно эту терминологию для классификации получателей сообщения. Поле CC: сходно с памяткой, и указанные в нем получатели должны получить «копию» сообщения. Еще одно новое понятие, введенное системами электронной почты, — BCC: или «невидимая копия» (blind carbon copy). В поле «невидимой копии» также указывается получатель копии сообщения, но его адрес не виден посторонним (это не совсем этично). В связи с этой опцией обсуждалась вопросы компьютерной этики, но на сегодняшний день практически все программы для работы с электронной почтой поддерживают эту возможность.
Наиболее полезным и часто используемым из этого набора является поле Subject: (Тема). Большинство программ для работы с электронной почтой допускает ввод отправителем темы сообщения в одну строку, которая описывает для получателя содержание сообщения. Эта строка текста довольно часто используется почтовой программой-клиентом при формировании списков полученных сообщений. Еще одно необязательное поле также помогает идентифицировать почтовое сообщение. Это поле Message-ID: (Идентификатор сообщения). В этом поле сообщению присваивается уникальный идентификационный номер, который может затем отображаться в возвращенном сообщении. Специальное поле шифрования Encrypted: указывает, было ли сообщение в целях безопасности подвергнуто шифрованию, а в Keywords: можно задать ключевые слова, которые можно использовать при поиске определенного текста, встречающегося в сообщении (сообщениях).
Двоичные данные и MIME
В алгоритме кодирования MIME учитывается тип двоичного файла, подвергающегося преобразованию, а также передается дополнительная информация о файле для декодера. Алгоритм MIME позволяет помещать двоичные данные напрямую в стандартное почтовое сообщение, согласно RFC 822. Для описания двоичных данных, вкладываемых в сообщение формата RFC 822, были созданы пять новых полей заголовка. Программы для работы с почтой, которые поддерживают стандарт MIME, должны правильно обрабатывать все эти новые типы заголовков.
Первое из дополнительных полей заголовка содержит версию MIME, которую использовал отправитель при кодировании сообщения. В настоящее время в этом поле всегда 1.0.
Это поле заголовка используется для идентификации сеансов MIME по определенному идентификационному коду, когда содержимое имеет сложную структуру.
Поле заголовка Content-Type
В этом поле заголовка как раз и происходит основное действие нашей пьесы. Это поле идентифицирует данные, заключенные в MIME-сообщение. В настоящее время используется семь основных классов данных, идентифицированных в MIME. В каждом классе имеются свои подклассы, которые более детально характеризуют тип данных, заключенных в сообщении.
Тип данных image определяет вложение в сообщение двоичных данных, которые представляют собой графическое изображение. В настоящее время для этого типа определено два подкласса — jpeg и gif.
Тип данных video, соответственно, определяет, что вложенные в сообщение данные представляют собой видеоданные. В настоящее время для этого типа определен только один подкласс — формат mpeg.
Тип данных audio обозначает содержимое сообщения как аудиоданные (звуковые файлы). Здесь также пока определен только один подкласс basic, который соответствует одному каналу ISDN с частотой дискретизации 8 Кгц.
Тип данных application соответствует двоичным данным, вложенным в сообщение, которые являются приложением (например, электронные таблицы Microsoft Excel или документы, созданные с помощью текстового процессора Microsoft Word). На сегодняшний день определено два подкласса такого рода данных — postscript и octet-stream. Довольно часто подкласс octet-stream используется при вложении в сообщение прикладных данных, таких как документы Microsoft Word или электронные таблицы Microsoft Excel.
Подкласс mixed указывает на то, что каждая из частей сообщения является независимой и все они должны быть представлены получателю в том порядке, в каком они были вложены отправителем. Подкласс parallel указывает то, что каждая из частей сообщения является независимой и все они могут быть представлены получателю в любом порядке. Следующий подкласс alternative указывает, что все части сообщения представляют собой одни и те же данные, но представленные в различном виде. При этом получатель может выбрать наилучшее средство для просмотра полученных данных. Подкласс digest во многом сходен с подклассом mixed, но при этом указывает, что тело сообщения всегда представляется в формате RFC822.
Данные второго типа начинаются со строки 27 и представляют собой форматированный текст с использованием обогащенного текстового формата.
Расширенный протокол SMTP
С момента своего появления в 1982 году протокол SMTP прекрасно справлялся со своими задачами по пересылке сообщений между компьютерами в сети Internet. Однако со временем стали заметны заложенные в протокол ограничения. Тогда, вместо того чтобы заменить стандартный протокол, имевший к тому времени широкое распространение, было решено улучшить некоторые функции протокола SMTP. При этом было принято решение, оставив все спецификации SMTP в первозданном виде, лишь добавить к ним новые функции.
В строке 6 задана SMTP-команда EHLO для подключения к серверу SMTP. Строки 7–16 отображают ответ сервера. Заметьте, сервер сигнализирует о том, что для использования доступно больше команд, т.е. сеанс происходит в «расширенном» режиме. Одна из новых групп команд называется параметрами уведомления о доставке сообщения (Delivery Status Notification). Эти параметры могут использоваться с командами MAIL и RCPT для отображения состояния доставки определенного сообщения электронной почты. Однако для нас как администраторов почтовой системы наибольший интерес представляет команда ETRN.
Здесь в роли name может выступать либо имя хоста, либо доменное имя (если поступает запрос на получение почты для всего домена). Команда ETRN весьма хорошее подспорье для администратора электронной почты. Если почту для вашего почтового сервера хранит провайдер Internet, то с помощью этой команды можно уведомить его о готовности к приему собранной для вас почты. Существует несколько способов реализации такого алгоритма. Один из них — использование специальной программы Perl, которая поставляется с программой sendmail. Ее работа как раз и заключается в том, что после установления соединения с провайдером Internet она выдает команду ETRN с именем вашего домена в качестве аргумента. Получив эту команду, сервер SMTP провайдера инициирует еще одно SMTP-соединение с вашим локальным SMTP-сервером (по тому же РРР-соединению) и отдает всю предназначенную для вашего домена почту, которая имеется у него в очереди на отправку.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
SMTP (Simple Mail Transfer Protocol)
Уровень (по модели OSI): | Прикладной |
---|---|
Семейство: | стек протоколов TCP/IP |
Назначение протокола: | Отправка электронной почты |
Спецификация: | RFC 5321 |
Основные реализации (клиенты): | MUA (The Bat!, MS Outlook, MS Outlook Express, Mozilla Thunderbird, Claws Mail и др.) |
Основные реализации (серверы): | MTA (sendmail, postfix, OpenSMTPD, qmail, exim, Microsoft Exchange Server, MDaemon) |
Расширяемость: | Доп. команды (RFC 2449) |
Вступил в силу с: | 1982 |
SMTP (англ. Simple Mail Transfer Protocol ) – протокол передачи сообщений с компьютера на почтовый сервер для доставки конечному получателю. Этот протокол обеспечивает перенаправление почтовых сообщений (с помощью записей MX, или записей программы обмена электронной почтой, и записей А, или записей хоста в системе DNS), форматирование почтовых сообщений и установление сеансов между почтовыми клиентами и почтовыми серверами. В протоколе SMTP в качестве транспортного протокола обычно используется TCP, но могут применяться и другие протоколы, как определено в документе RFC 821.
Содержание
История
Данный протокол зародился в начале 70-х двадцатого века как стандарт, созданный с целью унификации систем связи различных компьютерных систем, которые не имели ничего общего между собой.
В 1971 г. появился Mail Box Protocol и SNDMSG, который был «изобретён» Рэем Томлинсоном из BBN Technologies для TOPS-20/TENEX-компьютеров, посылающих сообщения по ARPANET (в то время к ней были подсоединены менее 50 хостов). Данный протокол можно считать истоком протокола SMTP.
SMTP впервые был описан в RFC 821 (1982 год); последнее обновление в RFC 5321 (2008) включает масштабируемое расширение – ESMTP (англ. Extended SMTP). В настоящее время под «протоколом SMTP», как правило, подразумевают и его расширения. Протокол SMTP предназначен для передачи исходящей почты с использованием порта TCP 25.
Архитектура
Рисунок 1 – Схема взаимодействия по протоколу SMTP
Канал связи устанавливается непосредственно между отправителем и получателем сообщения. При таком взаимодействии почта достигает абонента в течении нескольких секунд после отправки. [Источник 1]
Принцип работы
Протокол SMTP не несет никакой ответственности за прием почты. Это означает, что в спецификации этого протокола не определены способы настройки почтовых ящиков для отдельных пользователей, а также не упоминаются какие-либо иные задачи (такие как аутентификация), которые должны быть решены при приеме электронной почты. В этой спецификации просто указано, как должна осуществляться передача электронной почты от отправителя к получателю.
Но в спецификации SMTP определен формат электронной почты и указано, какие наборы символов могут применяться в сообщениях электронной почты. Первоначально в спецификации SMTP было определено использование только 7-битовых символов ASCII. Но с появлением [MIME (Multipurpose Internet Mail Extensions)|стандарта многоцелевых почтовых расширений Internet (Multipurpose Internet Mail Extensions – MIME)]] и превращением Internet во всемирную сеть было предложено включить в дополнительные спецификации другие наборы символов. Благодаря этому в настоящее время электронное письмо может быть отправлено практически на любом национальном языке, а к письму могут прилагаться в закодированном виде данные почти любого типа, даже такие как изображения или исполняемые файлы. После внедрения всех этих дополнений протокол SMTP стал более сложным, но вместе с тем и более гибким.
Задачи
Обычный ответ SMTP сервера состоит из номера ответа, за которым через пробел следует дополнительный текст. Номер ответа служит индикатором состояния сервера. [Источник 2]
Команды
Каждая команда SMTP начинается с ключевого слова – названия команды. За ним могут следовать параметры, отделенные пробелом.
Регистр символов, используемых во всех названиях команд и, за редким исключением, в параметрах базового протокола SMTP, не имеет значения. Однако в некоторых элементах расширений строчные и прописные символы могут различаться. Необходимо также учитывать, что левая часть почтового адреса, до символа @, может быть регистрозависимой.
Конец строк в протоколе SMTP обозначается последовательностью символов «возврат каретки» (шестнадцатеричный код 0 D ) и «перевод строки» (шестнадцатеричный код 0А). Эта последовательность обозначается CRLF. Сервер начинает выполнение команды только получив от клиента строку, завершающуюся последовательностью CRLF.
Сервера SMTP должны принимать командные строки длинной до 512 символов. Это значение может быть увеличено по желанию разработчиков. Для серверов, поддерживающих расширения ESMTP, требующие дополнительных параметров, максимально допустимая длина командной строки увеличивается. Соответствующие требования приведены в RFC, описывающих эти расширения.
Если не используется расширение, позволяющее серверу принимать несколько команд подряд, клиент передает серверу следующую команду только после получения ответа на предыдущую.
Рассмотрим команды SMTP, необходимые для отправки сообщения.
EHLO (Расширенное HELO)
Диалог клиента и сервера, как правило, начинается с приветствия. В RFC 821 в качестве приветствия предлагалась команда HELO. Однако с введением расширений ESMTP, эта команда была заменена на EHLO. Использование расширений ESMTP возможно только после выполнения команды EHLO.
Передача почты возможна только после выполнения одной из двух названых команд. Другие команды, не связанные с передачей почты ( NOOP, HELP, EXPN, VRFY, RSET и QUIT ), в принципе могут быть исполнены и без приветствия.
В качестве аргумента клиент передает серверу свое полное доменное имя, если таковое имеется. Если клиент не имеет доменного имени, например, если в качестве клиента выступает MUA, установленный на компьютере, получающем адрес динамически, то в качестве аргумента передается адрес электронной почты отправителя. Желательно, чтоб полученная от клиента информация была исчерпывающей для его идентификации.
Сервер проверяет соответствие указанного клиентом в приветствии доменного имени его адресу IP. Результат проверки добавляется к заголовку письма, но диалог продолжается независимо от достоверности полученного сервером идентификатора.
В ответ на команду EHLO сервер присылает список, каждая строка которого содержит ключевое слово, соответствующее расширению, поддерживаемому вызываемым сервером, и, при необходимости, уточняющие параметры. Это единственный предусмотренный базовым протоколом SMTP ответ сервера, в котором клиентская программа должна проанализировать не только числовой код ответа, но и его текст. Из ответа на команду EHLO клиент узнает, какие дополнительные функции он может использовать при отправке сообщения.
Если устаревшее программное обеспечение сервера не поддерживает команду EHLO, то выдается сообщение об ошибке. В этом случае клиент должен попытаться повторить приветствие, используя команду HELO. Естественно, расширениями ESMTP уже не удастся воспользоваться.
HELO (Приветствие)
RFC 2821 рекомендует использовать команду HELO, только если программное обеспечение не поддерживает команду EHLO. Отличие этой команды только в том, что она делает невозможным использование расширений ESMTP.
В ответ на эту команду сервер сообщает, готов ли он к продолжению диалога.
MAIL (Отправитель)
Отправка электронного сообщения невозможна без успешного выполнения этой команды, для каждого письма команда MAIL должна быть выполнена только один раз.
Команда MAIL может быть выполнена только после успешного выполнения команды EHLO или H E LO.
С помощью этой команды серверу сообщается адрес отправителя письма. На этот адрес письмо должно вернуться в случае невозможности доставки. Если возврат не желателен, адрес может быть оставлен пустым: <>:
Обычно это бывает, если отправляемое сообщение уже и есть возвращаемое письмо. Это делается для того, чтобы избежать петли: письмо не может быть доставлено адресату и возвращается отправителю, но, если оно не может быть доставлено отправителю, то посылается обратно и так далее. Если же адрес отправителя не известен, то попытки вернуть его предприниматься не будут: в случае невозможности доставки получателю, письмо будет удалено.
Поскольку базовый протокол SMTP не предусматривает никакой авторизации отправителя, адрес отправителя может быть указан произвольно и не может считаться достоверным. В последние годы большинство MTA проверяют существование почтового домена отправителя и отвергают сообщения с адресами отправителей в несуществующих доменах. К сожалению, более детальная проверка возможна только при использовании дополнительных средств авторизации и обычно не применяется.
Базовый протокол SMTP не предусматривает дополнительных параметров для команды MAIL, но такие параметры использует ряд расширений ESMTP.
RCPT (Получатель)
Доставка сообщения возможна, только если указан хотя бы один доступный адрес получателя. Команда RCPT принимает в качестве аргумента только один адрес. Если нужно послать письмо большему числу адресатов, то команду RCPT следует повторять для каждого. Согласно RFC 2821, сервера SMTP должны быть готовы принять до ста команд RCPT на одно сообщение. Если письмо адресовано большему числу получателей, то для оставшихся клиент должен передать сообщение повторно. Максимальное число получателей может быть изменено администратором.
Команда RCPT может быть выполнена только после успешного выполнения команды MAIL.
Сервер анализирует каждый адрес и после каждой команды RCPT выдает сообщение, свидетельствующее о возможности или невозможности доставки письма по указанному адресу.
Базовый протокол SMTP не предусматривает дополнительных параметров для команды RCPT, но такие параметры использует ряд расширений ESMTP.
DATA (Текст сообщения)
C помощью этой команды серверу передается текст сообщения, состоящий из заголовка и отделенного от него пустой строкой тела сообщения.
Команда DATA может быть выполнена только после успешного выполнения хотя бы одной команды RCPT.
Команда DATA не требует никаких параметров и завершается последовательностью CRLF.
В ответ на правильно введенную команду DATA сервер сообщает о готовности к приему или об ошибке, если прием сообщения невозможен.
В случае положительного ответа сервера, клиент передает сообщение.
Передача заканчивается строкой, состоящей из одной точки. Эта строка не является частью сообщения и удаляется на приемной стороне. Чтобы исключить ложное срабатывание в случае, если сообщение содержит строку, состоящую из одной точки, на передающей стороне к началу каждой строки, начинающейся с точки, добавляется еще одна точка. На приемной стороне добавленные точки удаляются.
Распознав окончание сообщения, сервер должен принять решение о возможности или невозможности доставки и послать соответствующий ответ клиенту. Сделать это следует как можно быстрее, если нет явных свидетельств невозможности доставки сообщения, его рекомендуется принять, сообщив клиенту об успешном завершении операции. Если доставка в последствии окажется невозможна, следует просто отправить письмо обратно, сообщив в квитанции причину отказа. Это делается для того, чтобы избежать проблемы, описанной в RFC1047 : не дождавшись ответа сервера, клиент разрывает соединение, считая передачу закончившейся неудачей, хотя сервер, возможно, позже осуществил доставку. Через некоторое время клиент снова пытается послать то же самое сообщение, что может привести к многократной передаче одного и того же письма. На ожидание ответа после завершения отправки сообщения рекомендуется выделять не меньше десяти минут. На ожидание других ответов отводятся от двух до пяти минут.
Необходимо принимать строки сообщения длиной до 1000 символов, включая последовательность CRLF, но не включая точку, добавляемую в начало строки во избежание ложного обнаружения конца сообщения.
Минимальный размер письма, которое должен принимать сервер SMTP – 64 килобайта, включая как тело сообщения, так и его заголовок.
QUIT (Выход)
Командой QUIT клиент заканчивает диалог с сервером. Сервер посылает подтверждение и закрывает соединение. Получив это подтверждение, клиент тоже прекращает связь.
Перечисленных команд вполне достаточно для того, чтобы передать сообщение. Однако RFC 2821 предусматривает еще ряд команд, которые могут быть использованы в основном в процессе отладки сервера.
HELP (Помощь)
Если команда HELP вызывается без параметров, сервер посылает клиенту список доступных команд. Если в качестве параметра передано название команды, то клиенту посылается описание этой команды. Серверам SMTP рекомендуется поддерживать эту команду без параметров. Описание отдельных команд посылать не обязательно.
VRFY (Проверить), EXPN (Раскрыть)
Команда VRFY используется для проверки наличия указанного в качестве аргумента почтового ящика. В ответ сервер посылает информацию о владельце ящика или сообщение об ошибке, свидетельствующее о том, что указанный ящик не существует.
Если указанный адрес указывает на несколько почтовых ящиков, команда VRFY возвращает список пользователей, внесенных в соответствующую рассылку, либо сообщение об ошибке, свидетельствующее о неоднозначности ответа на полученный запрос.
Для получения адресов, внесенных в список рассылки, используется команда EXPN.
Используя эти команду, злоумышленники могут получить список адресов пользователей сервера.
Обе команды могут быть полезны в процессе отладки сервера, потому они, как правило, поддерживаются. Но на серверах, используемых в реальном окружении, их обычно отключают. Возможен также вариант, при котором вызов команд возможен, но они проверяют только синтаксическую верность адреса.
Согласно RFC 821, команды VRFY и EXPN не являются обязательными. Поэтому, если сервер их поддерживает, они должны быть перечислены в ответе сервера на команду EHLO, как расширения ESMTP.
NOOP (Пустая команда)
В ответ на команду NOOP сервер посылает подтверждение выполнения. Никаких действий на сервере не производится, параметры команды игнорируются.
RSET (Сброс)
Команда RSET аннулирует все переданные до нее на сервер данные. Процесс передачи сообщения следует начать заново.
Перечисленные команды используются вместо команды MAIL для передачи сообщения на терминал получателя (SEND) или в его почтовый ящик, если пользователь не активен или запретил прием сообщений ( SOML ) или и на терминал, и в почтовый ящик (SAML).
Описанные в RFC 821 устаревшими. Если их все же используют, то они должны быть перечислены в ответе на команду EHLO, как расширения ESMTP.
TURN (Смена направления передачи)
Эта команда предназначена для почтовых серверов, не имеющих постоянного соединения с сетью. Они должны периодически, обычно по телефонной сети, соединяться с серверами, выполняющими функции промежуточных хранилищ сообщений, и забирать накопившуюся почту. Поскольку протокол SMTP предусматривает отправку сообщений только от клиента к серверу, для передачи в обратном направлении им необходимо поменяться ролями.
Команда TURN представляет потенциальную опасность, так как она может быть использована для перехвата чужой почты. Потому RFC 2821 категорически не рекомендует ее использовать. Хорошими альтернативами команде TURN являются расширения ESMTP ETRN и ATRN, рассматриваемые ниже.
Ответы сервера SMTP
На каждую команду клиента сервер посылает ответ, состоящий из числового кода и отделенной от него пробелом текстовой строки.
В большинстве случаев для правильной интерпретации ответа клиенту достаточно числового кода. Текстовая строка нужна для интерпретации ответа человеком. Исключение составляет ответ на команду EHLO, содержащий список расширений ESMTP, поддерживаемых сервером, а так же ответы на некоторые команды ESMTP.
Согласно RFC 2821, код ответа состоит из трех цифр. Первая цифра кода может принимать следующие значения:
Предварительный положительный результат. Команда принята, но для ее выполнения сервер ожидает реакции клиента на посылаемую в этом ответе информацию. Клиент должен послать следующую команду для продолжения работы. В базовом протоколе SMTP не предусмотрено команд, требующих ответов такого типа.
Вторая цифра может принимать следующие значения:
Если ответ состоит из нескольких строк, то каждая из них начинается числовым кодом, который отделяется от сопровождающего текста не пробелом, а символом «минус» (-). В последней строке цифровой код отделяется от текста пробелом. Каждая строка ответа заканчивается последовательностью CRLF.
В таблице ниже собраны ответы, предусмотренные для команд SMTP.
Код | Расшифровка | Команды |
---|---|---|
211 | Состояние системы | HELP |
214 | Информация об использовании команд | HELP |
220 | Готовность к работе | Установление соединения |
221 | Канал передачи закрыт | QUIT |
250 | Команда выполнена успешно | EHLO, HELO, MAIL, RCPT DATA, RSET, VRFY, EXPN, NOOP |
251 | Почта для данного пользователя переадресована и будет доставлена по новому адресу | RCPT, VRFY |
252 | Команда не будет выполнена, но доставка сообщения возможна. Ответ свидетельствует о том, что выполнение команд заблокировано из соображений безопасности, и не может быть интерпретирован как информация об опрашиваемом почтовом ящике | VRFY, EXPN |
354 | Команда DATA принята, ожидается текст сообщения, заканчивающийся строкой, состоящей из одной точки | DATA |
421 | Служба недоступна, связь прекращается. Ответ выдается при прекращении работы сервера во время сеанса связи | Любая |
450 | Доставка сообщения в данный момент не возможна: почтовый ящик не доступен | RCPT |
451 | Выполнение команды прервано: ошибка сервера | MAIL, RCPT, DATA |
452 | Команда не выполнена: недостаточно памяти | MAIL, RCPT, DATA |
500 | Синтаксическая ошибка, команда не понята (возможно, превышена допустимая длина строки) | Несуществующая команда |
501 | Синтаксическая ошибка в параметрах или аргументах (например, использование параметров в командах, не допускающих параметров) | Любая |
502 | Команда не поддерживается (отключена администратором) | VRFY, EXPN, HELP |
503 | Неправильный порядок команд | MAIL, RCPT, DATA |
504 | Параметр команды не поддерживается | EHLO, HELO, VRFY, EXPN, HELP |
550 | Команда не выполнена: почтовый ящик недоступен (не найден, доступ запрещен, выполнение команды запрещено администратором) | EHLO, HELO, MAIL, RCPT, VRFY, EXPN |
551 | Адрес пользователя изменился | RCPT, VRFY |
552 | Выполнение команды прервано: превышен выделенный объем памяти | MAIL, RCPT, DATA |
553 | Неправильный синтаксис адреса | MAIL, RCPT, VRFY |
554 | Служба SMTP на вызываемой машине не запущена | Установление соединения |
554 | Доставка не может быть осуществлена ни по одному адресу D | ATA |
В случае переадресации почты допускается также использование ответа 250. В этом случае клиент о переадресации не информируется. Сервер может также отказать в приеме почты для уже не существующего пользователя и послать ответ 551 с указанием нового адреса или ответ 550. [Источник 3]
SMTP протокол: Что это и Как настроить?
“Simple Mail Transfer Protocol — (с английского “простой протокол передачи почты”) — это сетевой протокол, который предназначен для передачи почты.“
Термин часто путают с IMAP и POP. Но SMTP это протокол отправки почты, когда IMAP и POP ー обработки внутренностей после получения письма.
Поэтому он не для расшифровки, SMTP Server создан только для передачи, преимущественно для массовой кампании.
Для чего необходим
СМТП сервер выполняет две функции:
Как осуществляется отправка почты СМТП
Протокол электронной почты выполняет функцию ретранслятора, то есть передатчика. У каждого есть уникальный адрес, что дает возможность находить получателя при пересылке.
SMTP протокол сопровождает выполнение ряда команд, в виде последовательностей запросов и ответов.
Основные параметры, которые передают SMTP команды:
Описание стандартных текстовых команд и принципов работы читайте подробно в статье на нашем блоге.
Представим, что у вас уже выполнена настройка SMTP сервера и вы работаете через ePochta Mailer.
Процесс выглядит следующим образом:
На этом его задача заканчивается, поскольку за доставку отвечают POP и IMAP, и это следующий этап в эстафете.
Для чего нужен и какие типы существуют
SMTP сервер это своеобразный почтальон. Его задача забрать “посылку” у одного юзера, найти оптимальный и точный путь трапспортировки и отдать ее другому пользователю.
Условно делятся на:
Классифицируются они и в зависимости от источника:
Как настроить
Основные параметры — это логин и пароль пользователя. Логин и пароль ー значения, которые вводят при регистрации в системе того сервиса, SMTP сервер которого будет использоваться. На их основе будет проводиться аутентификация.
Например, для бесплатного SMTP сервера Gmail, Yandex, Yahoo и т.д. в качестве логина и пароля выступают персональные данные для входа. В случае ручного ввода нужно указывать дополнительную информацию.
Подробно что такое SMTP и о его настройках можно узнать в справке к программе.
Что такое 25 порт?
Это стандартный порт, который работает по умолчанию. Иногда интернет-провайдеры закрывают к нему доступ с целью блокировки спам-рассылок.
В таком случае, можно воспользоваться одним из дополнительных, на которых работает ретранслятор:
Как работает СМТП, какие преимущества и особенности
Где можно получить SMTP для рассылки?
Многие сервисы поддерживают такую отправку, так что вы сможете работать с ePochta Mailer. Как и у Интернет-провайдеров, в нем есть ограничения на число писем.
ePochta Mailer и ePochta Studio могут работать через неограниченное количество аккаунтов, при этом использоваться последовательно: первое сообщение отсылают через первый Simple Mail Transfer Protocol, второе ー через второй и т.д. Вы можете внести их около 10-20, и программа будет функционировать через каждый, пока не достигнет лимита. Подробнее о добавлении и настройке.
Если ограничения по программе в отправке вас не устраивают, то можно купить smtp сервер для рассылки или арендовать его, затем подключить.
Виртуальный сервер (VPS)
VPS или VDS ー это хорошее решение для емейл кампаний без границ. Но этот вариант требует технических знаний: нужно настроить Simple Mail Transfer Protocol или нанять кого-то, кто сможет это сделать. У вас будет выделенный IP и, как правило, хостинговая компания не вмешивается в то, что вы делаете.
Аренда у наших партнеров
Внимание! Мы не несем ответственность за качество работы сторонних СМТП. По всем вопросам обращайтесь в службу поддержки выбранного вами сервиса.
Независимо от того, какой вариант вы выберете, программы для почтовых рассылок ePochta Mailer и ePochta Studio помогут вам построить бизнес-рассылку удобно и качественно.
Задайте вопрос специалисту технической поддержки
SMTP
Simple Mail Transfer Protocol
Простой протокол передачи почты
Сетевой протокол, который служит для перемещения электронной почты в сетях TCP/IP. SMTP – это инструмент, с помощью которого осуществляется отправка почты от пользователя к серверу и между серверами для последующей пересылки к получателю.
Содержание
Для того, чтобы получить свою почту почтовому клиенту необходимо использовать протоколы POP3 или IMAP.Главной задачей данного протокола является обеспечение передачи электронных сообщений (почты). Для организации работы с помощью протокола SMTP клиент проводит TCP соединение с сервером через порт 25. После этого происходит обмен информацией между клиентом и SMTP сервером до тех пор, пока соединение не закроется или не будет прервано.
Этапы работы SMTP
DMARC
В базовом протоколе передачи электронной почты SMTP есть недостаток: он не позволяет на должном уровне проводить аутентификацию внешних отправителей. Говоря простыми словами, при отправке письма в поле From можно подставить абсолютно любой адрес. Например, пользователь, который получил письмо от мамы, не может быть уверен, что ему писала именно она. Подделку email можно распознать, но для этого нужно быть технически подкованным специалистом: необходимо сверять заголовки, служебную информацию, сервер и IP, с которых поступило письмо.
2002: расширение STARTTLS
Разработанный в 1982 г. протокол для отправки электронной почты SMTP не поддерживает шифрование. Он был изобретен тогда, когда интернет только развивался, и необходимости в защите переписки между всего лишь несколькими тысячами подключенных к сети компьютеров не было.
В 2002 г. для SMTP было разработано расширение STARTTLS, позволившее отправлять письма в зашифрованном виде.
После того как в 2013 г. Эдвард Сноуден (Edward Snowden) рассказал о приемах Агенства национальной безопасности США, шифрование набрало популярность. В 2014 г. соцсеть Facebook, отправляющая миллиарды почтовых уведомлений в день, выяснила, что 58% этих уведомлений проходят по защищенным каналам. К августу того же года эта цифра возросла до 95%.
Расширение STARTTLS используется и по сей день, но оно не гарантирует защиту данных, так как содержит в себе ряд изъянов, позволяющих хакерам успешно выполнить свою работу.
Используя недостатки расширения, злоумышленник может фальсифицировать почтовый сервер и убедить приложение на ПК или другой почтовый сервер отправить сообщение в виде простого текста. Сделать это можно путем принудительного отказа от шифрования (в штатном режиме такая необходимость может возникнуть тогда, когда принимающий сервер не поддерживает шифрование) либо путем использования поддельного сертификата.
2016: Google и Microsoft создают новое расширение SMTP, STS (Strict Transport Security))
Авторы инициативы предложили создать расширение STS (Strict Transport Security), которое обеспечит надежную проверку подлинности участников соединения. В теории STS аналогично расширению HSTS для HTTPS. Как и HSTS, оно должно обеспечить зашифрованный обмен служебными сообщениями между сторонами.
STS будет гарантировать безопасное соединение и определит поведение серверов на тот случай, когда подлинность одного из них проверить не удастся. Что будет предприниматься в этом случае, не уточняется.
Правила STS будут задаваться посредством специальных DNS-записей, которые будут добавляться к домену провайдера почтового сервиса.
Предполагается, что это позволит защитить пользователей электронной почты от атак вида «человек посередине», когда злоумышленник имеет возможность фальсифицировать второго участника соединения и получить его данные.
Что такое SMTP-сервер
В статье мы рассмотрим, что такое SMTP-сервер. Для этого сначала разберемся, как работают почтовые серверы, что такое сервер входящей и исходящей почты и в чём их отличия.
Что такое почтовый сервер и как он работает
Почтовый сервер (сервер электронной почты) — это агент, который отвечает за прием и передачу сообщений в системе пересылки электронной почты. Чтобы лучше понять роль почтового сервера в этой системе, рассмотрим, как она устроена.
Система пересылки построена на взаимодействии нескольких сущностей — веб-интерфейса (или почтового клиента) отправителя и сервера отправителя, а также веб-интерфейса (или почтового клиента) получателя и сервера получателя.
Веб-интерфейс — это графический интерфейс электронного ящика. С его помощью отправитель формирует письмо — пишет текст, прикрепляет файлы и указывает адрес, а получатель просматривает содержимое письма и может определить адресата. Веб-интерфейс работает через браузер и требует подключения к сети. Примеры веб-интерфейсов: Mail.ru, Gmail, Яндекс.Почта. Почтовый клиент — это программа, с помощью которой можно контролировать несколько электронных ящиков и работать с ними из одного места. Для работы почтовый клиент не требует подключения к интернету. Примеры клиентов: Thunderbird, Mailbird Lite, Microsoft Outlook,TouchMail. То есть почтовый клиент и веб-интерфейс – это разные способы попасть в тот или иной электронный почтовый ящик.
За любым почтовым ящиком закреплены определенные почтовые серверы. Например, за почтовыми ящиками Mail.ru закреплены серверы компании Mail.ru Group, а за почтовыми ящиками Gmail – серверы компании Google.
Рассмотрим работу системы пересылки на примере. Допустим, ваш электронный адрес — test-site@mail.ru. Чтобы отправить сообщение, вы заходите в веб-интерфейс Mail.ru, пишете текст, указываете адрес и нажимаете «Отправить». После этого письмо попадает на один из серверов Mail.ru Group. Сначала сервер проверит письмо на спам. Затем он определит, какой из серверов соответствует адресу получателя и передаст ему письмо. Допустим, адрес получателя — test@gmail.ru. Значит письмо попадёт на один из серверов Google. Google-сервер также сначала проверит содержание сообщения, а затем отправит на Gmail. Только после этого получатель сможет посмотреть письмо.
Если адресат test@gmail.ru захочет ответить на письмо отправителя test-site@mail.ru, произойдёт то же самое, только в обратном порядке. При этом в пересылке письма могут участвовать уже совершенно другие сервер-отправитель и сервер-получатель. Поскольку между почтовым адресом и сервером нет конкретной привязки, клиент может выбрать любой из серверов системы, который соответствует критерию «входящий» или «исходящий».
Чем отличаются входящий и исходящий серверы
Любой сервер можно настроить по-разному. Выбор настроек будет зависеть от количества используемых машин, общей нагрузки и конкретных целей. Варианты настроек:
Как узнать, сервер входящей или исходящей почты используется? На это укажет тип протокола. В системе пересылки электронных сообщений серверы взаимодействуют между собой с помощью протоколов передачи данных. Сервер входящих сообщений работает благодаря протоколам POP3 и IMAP, а сервер исходящих благодаря протоколу SMTP. По типу протокола можно определить, какие настройки выставлены для машины.
Что такое SMTP-сервер
SMTP (англ. Simple Mail Transfer Protocol) — это сетевой протокол, который отвечает за отправление писем. Серверы, которые работают с помощью этого протокола, называются серверами исходящей почты. Их задачи:
Чтобы передать сообщение, SMTP-серверу сначала нужно установить контакт с сервером получателя (входящим сервером). Для этого серверы обмениваются командами через TCP-соединение. Такой обмен называют SMTP-сессией. Каждая сессия может состоять из одной или нескольких команд. Основные команды сессии:
Для работы SMTP использует три типа портов: 25 и 587 — для соединения без шифрования и 465 порт SSL SMTP (или SMTPS) — в случае защищенного шифрованного соединения.
Где и как можно настроить SMTP-соединение
Чтобы работать через SMTP-соединение, можно настроить сервер самостоятельно или использовать машину с уже готовыми настройками. Можно использовать следующие основные варианты:
Заказать у интернет-провайдера. В этом случае вам не придётся самостоятельно настраивать сервер. Однако вы можете столкнуться с ограничениями скорости и количества пересылаемых писем. Прежде чем выбирать этот вариант, уточните условия договора или свяжитесь со службой поддержки.
Настроить на базе хостинга. Если у вас есть сайт, для обмена сообщениями достаточно настроить сервер хостинг-провайдера. Например, можно настроить почту на хостинге REG.RU. В этом случае вы не будете иметь ограничений по количеству или скорости. При этом стоит учитывать, что ваш домен в любой момент могут заблокировать по жалобе от пользователей. Это скажется на репутации всего сайта.
Заказать на коммерческом сервисе. Этот вариант подойдет в случае, если вы планируете регулярные рассылки в больших масштабах. Использование специальных сервисов увеличивает шанс, что письма будут попадать не в «Спам», а во «Входящие». Чаще всего сервисы предлагают несколько вариантов тарифов. Чтобы выбрать оптимальный, рассчитайте примерное количество писем, которые вы планируете отправлять ежемесячно.
Настроить в бесплатном сервисе. Возможность отправлять письма через SMTP предусмотрена в любом современном почтовом сервисе. Так же как и в случае с хостингом, бесплатные сервисы имеют ограничения на количество рассылаемых писем. Чтобы эффективно использовать данный вариант, можно завести несколько аккаунтов и настроить распределенную рассылку.
Настроить в виртуальной среде. Этот вариант идеально подходит для массовых рассылок. В то же время он имеет значимые недостатки. Чтобы использовать виртуальную среду, её нужно грамотно настроить. Это потребует затрат — финансовых (если вы решите вызвать специалиста) или временных (если вы решите разобраться в настройках самостоятельно). Также вам потребуется выделенный IP-адрес.
Из статьи вы узнали, что такое сервер входящей почты. Теперь вы понимаете, как он работает и какие имеет преимущества, а также какие варианты настройки SMTP-соединения можно использовать.
Smtp что это
Simple Mail Transfer Protocol
Отправка электронной почты
SMTP (англ. Simple Mail Transfer Protocol — простой протокол передачи почты) — это широко используемый сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP.
SMTP впервые был описан в RFC 821 (1982 год); последнее обновление в RFC 5321 (2008) включает масштабируемое расширение — ESMTP (англ. Extended SMTP ). В настоящее время под «протоколом SMTP», как правило, подразумевают и его расширения. Протокол SMTP предназначен для передачи исходящей почты с использованием порта TCP 25.
В то время, как электронные почтовые серверы и другие агенты пересылки сообщений используют SMTP для отправки и получения почтовых сообщений, работающие на пользовательском уровне клиентские почтовые приложения обычно используют SMTP только для отправки сообщений на почтовый сервер для ретрансляции. Для получения сообщений клиентские приложения обычно используют либо POP (англ. Post Office Protocol — протокол почтового отделения), либо IMAP (англ. Internet Message Access Protocol ), либо патентованные системы (такие как Microsoft Exchange и Lotus Notes/Domino) для доступа к учетной записи своего почтового ящика на сервере.
Содержание
История
В 1960-х годах использовались различные виды электронной связи. Люди связывались друг с другом с помощью систем, разработанных для определённых мейнфреймов. Когда всё больше компьютеров становились связанными, особенно в сети Правительства США, ARPANET, были разработаны стандарты для того, чтобы пользователи на различных системах могли писать электронные сообщения друг другу. Эти стандарты, разработанные в 1970-х годах, стали основой для SMTP.
Корни SMTP можно проследить в двух описанных в 1971 г. реализациях — Mail Box Protocol и SNDMSG, который был «изобретен» Рэем Томлинсоном из BBN Technologies для TOPS-20/TENEX-компьютеров, посылающих сообщения по ARPANET (в то время к ней были подсоединены менее 50 хостов).
Дальнейшие реализации включают в себя FTP Mail и Mail Protocol, разработанные в 1973 г. Разработка продолжалась на протяжении 1970-х, пока ARPANET не преобразовалась в современный Интернет около 1980 г. В том же году Джон Постел предложил Mail Transport Protocol (протокол передачи почты), благодаря которому FTP перестал быть основой для передачи почты. SMTP опубликован в RFC 821 (также написанном Постелом) в августе 1982 г.
Стандарт SMTP был разработан примерно в то же время, что и Usenet, сеть передачи данных, имеющая некоторые сходства с SMTP. SMTP стал широко использоваться в ранние 1980-е. В то время, он был дополнением для работающей под Unix почтовой программы Unix Copy Program (UUCP), которая больше подходила для обработки передачи электронных сообщений между периодически связанными устройствами. С другой стороны, SMTP прекрасно работает, когда как отправляющее, так и принимающее устройства связаны в сети постоянно. Оба устройства используют механизм хранения и пересылки и являются примером push-технологии (технологии «проталкивания»). Хотя новостные группы Usenet все еще распространяются между серверами с помощью UUCP, почта UUCP фактически исчезла вместе с маршрутом «bang path» (последовательность хост-машин в сети, по которой сообщение должно дойти до адресата), которые использовались как заголовки маршрутизации. В статье о перезаписи отправителя содержится техническая справочная информация о истории раннего SMTP и маршрутизации от источника до RFC 1123.
Sendmail был одним из первых (если не первым) агентом пересылки сообщений, в котором был реализован SMTP. В число других популярных серверных программ, поддерживающих SMTP, входят Postfix, qmail, Novell GroupWise, Exim, Novell NetMail, Microsoft Exchange Server, Sun Java System Messaging Server.
Предоставление сообщений (RFC 2476) и SMTP-AUTH (RFC 2554) были введены в 1998 и 1999 г.г. и описывали новые тенденции в передаче электронных сообщений. Изначально, SMTP-сервера были обычно внутренними для организации, получая сообщения от организаций извне и ретранслируя сообщения организации во внешнюю среду. Но с течением времени, SMTP-сервера (агенты пересылки сообщений), на деле, расширяли свои функции и в конце концов стали агентами предоставления сообщений для пользовательских почтовых приложений, некоторые из которых теперь ретранслировали почту извне организации (например, руководитель компании, будучи в поездке, хочет отправить электронное сообщение с помощью корпоративного SMTP-сервера).
Данный вопрос, являясь следствием быстрого развития и популярности Всемирной паутины, означает, что SMTP должен был включать в себя особые правила и методы для ретрансляции сообщений и авторизации пользователей для предотвращения таких злоупотреблений, как ретрансляция нежелательной почты (спам).
Поскольку этот протокол сначала был с текстовым (ASCII) интерфейсом, то он плохо работал с бинарными файлами и символами многих неанглийских языков. Такие стандарты, как Multipurpose Internet Mail Extensions (MIME), были разработаны для кодирования двоичных файлов для передачи через SMTP. Разработанные после Sendmail агенты пересылки, как правило, также осуществляли опцию чистых 8 бит, так что альтернативная стратегия «просто посылай восемь» может быть использована для передачи произвольных текстовых данных (в любой восьмибитной ASCII-подобной кодировке символов) через SMTP. Однако все еще оставалась проблема кракозябр, вызванная разным отображением наборов символов у производителей, хотя сами почтовые адреса все еще позволяли использовать исключительно ASCII. Сегодня агенты пересылки, работающие с чистыми 8 битами, как правило, поддерживают расширение 8BITMIME, позволяющее передавать бинарные файлы почти так же легко, как обычный текст. Недавно было создано расширение SMTPUTF8 для поддержки текста в кодировке UTF-8, благодаря чему стало возможным включать международное содержимое и адреса с использованием таких алфавитов, как кириллица или китайский.
Многие выдающиеся люди внесли свой вклад в спецификацию основного SMTP, среди них Джон Постел, Эрик Оллман, Дэйв Крокер, Нед Фрид, Рэндалл Джелленс, Джон Кленсин и Кейт Мур.
Модель обработки почты
Электронная почта представлена почтовым клиентом (MUA, mail user agent — пользовательский почтовый агент) для почтового сервера (MSA, mail submission agent — агент передачи электронной почты) с помощью SMTP по TCP-порту 587. Оттуда MSA доставляет почту своим агентам пересылки сообщений (MTA, mail transfer agent). Часто эти два агента являются просто различными образцами одного и того же программного обеспечения, запущенного с разными параметрами на одном устройстве. Локальная обработка может быть проведена как на отдельной машине, так и разделена между различными устройствами; в первом случае вовлеченные процессы имеют общий доступ к файлам, во втором случае SMTP используется для пересылки сообщения внутренне, причем каждый хост настроен на использование следующего устройства в качестве промежуточного хоста. Каждый процесс — сам по себе MTA, т. е. — SMTP-сервер.
Граничный MTA должен найти целевой хост. Он использует систему доменных имен (DNS) для поиска записей почтового обменника (mail exchanger — MX) домена получателя (часть адреса, находящаяся справа от символа @). Возвращаемая запись почтового MX содержит имя целевого хоста. Затем MTA подключается к серверу обмена в качестве SMTP-клиента.
Как только цель MX принимает входящее сообщение, она передает его агенту доставки почты (mail delivery agent — MDA) для локальной доставки сообщения. MDA предусматривает возможность сохранять сообщения в соответствующем формате почтового ящика. Прием почты, опять же, может быть проведен как несколькими, так и одним компьютером — изображение показывает два ближайших ящика для каждого случая. MDA может доставлять сообщения прямо на хранение или передавать их по сети с помощью SMTP или любых других средств, в том числе протокола локальной пересылки почты (Local Mail Transfer Protocol — LMTP) — производного от SMTP, предназначенного для этой цели.
После доставки на локальный почтовый сервер сообщение хранится для пакетного поиска по аутентифицированным почтовым клиентам (MUA). Сообщение извлекается приложениями конечного пользователя (почтовые клиенты) с использованием Internet Message Access Protocol (IMAP, который облегчает доступ к сообщениям и управляет хранящейся почтой), или же с помощью Post Office Protocol (POP), который обычно использует традиционный mbox-формат файлов, или фирменные системы вроде Miscrosoft Exchange/Outlook или Lotus Notes/Domino. Клиенты сетевой почты могут использовать любой метод, но протокол поиска часто не соответствует официальным стандартам.
SMTP определяет передачу сообщения, а не его содержание. Таким образом, он задает оболочку сообщения и её параметры (такие, как отправитель оболочки), но не заголовок либо тело самого сообщения. STD 10 и RFC 5321 определяют SMTP (оболочку), в то время как STD 11 и RFC 5322 — сообщение (заголовок и тело), официально называемый форматом почтового сообщения (Internet Message Format).
Обзор протокола
SMTP — требующий соединения текстовый протокол, по которому отправитель сообщения связывается с получателем посредством выдачи командных строк и получения необходимых данных через надёжный канал, в роли которого обычно выступает TCP-соединение (Transmission Control Protocol — протокол управления передачей). SMTP-сессия состоит из команд, посылаемых SMTP-клиентом, и соответствующих ответов SMTP-сервера. Когда сессия открыта, сервер и клиент обмениваются её параметрами. Сессия может включать нуль и более SMTP-операций (транзакций).
SMTP-операция состоит из трёх последовательностей команда/ответ (см. пример ниже). Описание последовательностей:
Помимо промежуточных ответов для DATA-команды, каждый ответ сервера может быть положительным (код ответа 2хх) или отрицательным. Последний, в свою очередь, может быть постоянным (код 5хх) либо временным (код 4хх). Отказ SMTP-сервера в передаче сообщения — постоянная ошибка; в этом случае клиент должен отправить возвращённое письмо. После сброса — положительного ответа, сообщение скорее всего будет отвержено. Также сервер может сообщить о том, что ожидаются дополнительные данные от клиента (код 3xx).
Изначальным хостом (SMTP-клиентом) может быть как почтовый клиент конечного пользователя (функционально определяемый как почтовый агент — MUA), так и агент пересылки сообщений (MTA) на сервере, т.е. сервер действует как клиент в соответствующей сессии для ретрансляции сообщения. Полностью функциональные сервера поддерживают очереди сообщений для повторной передачи сообщения в случае ошибок.
MUA знает SMTP-сервер для исходящей почты из своих настроек. SMTP-сервер, действующий как клиент, т. е. пересылающий сообщения, определяет, к какому серверу подключиться, просмотром ресурса записей MX (Mail eXchange) DNS для домена каждого получателя. В случае, если запись MX не найдена, совместимые MTA (не все) возвращаются к простой А-записи. Пересылающие сервера также могут быть настроены на использование Smart host.
SMTP-сервер, действующий как клиент, устанавливает TCP-соединение с сервером по разработанному для SMTP порту 25. MUA должен использовать порт 587 для подключения к агенту предоставления сообщений (MSA). Основное различие между MTA и MSA заключается в том, что SMTP-аутентификация обязательно только для последнего.
SMTP и извлечение сообщений
SMTP — всего лишь протокол доставки. Он не может по требованию взять сообщения с удаленного сервера. Для извлечения почты и управления почтовым ящиком разработаны другие протоколы, такие как POP и IMAP. Тем не менее, SMTP предоставляет возможность начать на удаленном сервере обработку очереди сообщений, при которой запрашивающая система может получать все направленные ей сообщения (см. Remote Message Queue Starting ниже). POP и IMAP предпочтительны, когда компьютер пользователя включен не постоянно, или же временно подключен к Интернету.
Remote Message Queue Starting
Remote Message Queue Starting (запуск удаленной очереди сообщений) — особенность SMTP, позволяющая удаленнному хосту начать обработку очереди сообщений на сервере так, что он может получать предназначенные ему сообщения с помощью команды TURN. Однако эта особенность считалась небезопасной и была расширена в RFC 1985 командой ETRN, которая работает надёжнее благодаря основанному на информации DNS методу аутентификации.
On-Demand Mail Relay
ODMR (On-Demand Mail Relay — ретрансляция почты по требованию) — стандартизированное в RFC 2645 SMTP-расширение, позволяющее проводить ретрансляцию сообщения аутентифицированному пользователю.
Интернационализация
Многие пользователи, чей набор символов отличается от латиницы, сталкиваются с требованием адреса электронной почты на латинице. Для решения этой проблемы был создан RFC 6531, предоставляющий возможности для интернационализации для SMTP — расширение SMTPUTF8. RFC 6531 предоставляет поддержку многобайтных и не-ASCII символов в почтовом адресе, например: δοκιμή@παράδειγμα.δοκιμή или 测试@测试.测试. Текущая поддержка ограничена, но есть большой интерес в широком распространении RFC 6531 и связанных с ним RFC в странах с обширной базой пользователей, для которых латиница не является родным алфавитом.
SMTP-сервер исходящей почты
Почтовый клиент должен знать IP-адрес SMTP-сервера, который задается как часть конфигурации (обыкновенно в виде DNS-имени). Сервер будет доставлять исходящие сообщения от лица пользователя.
Ограничения доступа к серверу исходящей почты
Администраторам сервера необходимо контролировать то, какие клиенты могут использовать сервер. Это позволяет им бороться с такими злоупотреблениями, как спам. Обычно используются два решения:
Ограничение доступа по местоположению
В этом случае SMTP-сервер интернет-провайдера не разрешит допуск пользователям «за пределами» сети провайдера. Точнее, сервер может допустить лишь тех пользователей, чей IP-адрес предоставлен данным провайдером, что эквивалентно требованию соединения с Интернетом с помощью этого провайдера. Мобильный пользователь часто может оказаться в сети, отличной от сети своего провайдера, и потому сообщения не будут отправляться.
У данной системы есть несколько разновидностей. Например, SMTP-сервер организации может предоставлять доступ только пользователям той же сети, блокируя остальных пользователей. Также сервер может проводить ряд проверок клиентского IP-адреса. Эти методы обычно использовались организациями и учреждениями, например университетами, для внутреннего пользования сервером. Однако, большая их часть теперь использует описанные ниже методы аутентификации.
Благодаря ограничению доступа определенным адресам, администраторы сервера могут легко определить адрес любого злоумышленника. Если пользователь может использовать различные провайдеры для соединения с Интернетом, этот вид ограничения становится нецелесообразным, а изменение настроенного адреса SMTP-сервера исходящей почты непрактично. Крайне желательно иметь возможность использовать такую информацию о настройках клиента, которая не нуждается в изменении.
Аутентификация клиента
Вместо описанного ранее ограничения по местоположению, современные SMTP-сервера обычно требуют аутентификацию пользователей перед получением доступа. Эта система, будучи более гибкой, поддерживает мобильных пользователей и предоставляет им фиксированный выбор настроенного сервера исходящей почты.
Открытый релей
Сервер, доступный для широкой сети и не предоставляющий эти виды ограничения доступа, называют открытым релеем. Сейчас такие сервера считаются дурным тоном.
Порты
Некоторые сервера настроены на отклонение всех ретрансляций по порту 25, но пользователям, прошедшим аутентификацию по порту 587, позволено перенаправлять сообщения на любой действительный адрес.
Некоторые провайдеры перехватывают порт 25, перенаправляя трафик на свой собственный SMTP-сервер вне зависимости от адреса назначения. Таким образом, их пользователи не могут получить доступ к серверу за пределами провайдерской сети по порту 25.
Некоторые сервера поддерживают аутентифицированный доступ по дополнительному, отличному от 25, порту, позволяя пользователям соединяться с ними, даже если порт 25 заблокирован.
Пример простейшей SMTP-сессии
C: — клиент, S: — сервер
В результате такой сессии письмо будет доставлено адресату user1@company.tld, но не будет доставлено адресату user2@company.tld, потому что такого адреса не существует.
Дополнительные расширения
Безопасность SMTP и спам
Однако, непрактичность широкого распространения реализации и управления SMTP-AUTH означает, что проблема спама не может быть решена с его помощью.
Обширное изменение SMTP, так же как и полная его замена, считаются непрактичными из-за огромной инсталированной базы SMTP. Internet Mail 2000 был одним из претендентов для такой замены.
Спам функционирует благодаря различным факторам, в том числе не соответствующие стандартам реализации MTA, уязвимости в защите операционных систем (усугубляемые постоянным широкополосным подключением), что позволяет спамерам удаленно контролировать компьютер конечного пользователя и посылать с него спам.
Расширения ESMTP
Если же сервер поддерживает ESMTP, то кроме приветствия он сообщит список поддерживаемых расширений протокола SMTP, например:
SMTP. Описание протокола
Что такое SMTP — описание?
На протяжении нескольких десятков лет, пользователи сети Интернет используют электронную почту, чтобы обмениваться сообщениями и письмами. До начала 90-х годов прошлого века электронными сообщениями пользовались, как правило, сотрудники крупных организаций. С обширной компьютеризацией и распространением всемирной паутины, электронные письма прочно вошли в жизнь обычных пользователей.
Развитие интернет технологий привело к появлению так называемых почтовых протоколов, используемых для сетевой переписки. Они делают возможной обработку больших по размеру писем, оказывая пользователям всевозможные сервисные услуги.
Он не стеснен какими-либо конкретными подсистемами передачи данных. Его работа нуждается только в надежном канале потока их передачи с сохранением порядка.
SMTP используется, в основном, для отправки писем и обращений пользователей на сервер, после чего происходит отправка почты получателям. Для того, чтобы получить письма, нужно чтобы почтовый клиент работал на протоколе IMAP или же POP3.
Для чего используется?
Простой протокол впервые опубликован в 1982 г. Использовался он как дополнительное приложение к популярному тогда клиенту — Unix Copy Program. Первым клиентом, работающим под стеком SMTP, стал Sendmail.
На сегодняшний день это типовой почтовый протокол. Его используют все почтовые программы и серверы.
Принцип работы протокола
SMTP — текстовый протокол, его принцип работы требует соединения, по которому пользователь, отправляющий электронное письмо, связывается с его получателем используя определенную командную строку. А получение данных происходит посредством использования надежного канала связи. Как правило, этим каналом связи является соединение TCP.
Рабочая сессия протокола состоит из отправляемых mail — клиентом SMTP ряда команд и ответов на них сервера. При рабочей сессии и клиент, и сервер обмениваются необходимыми параметрами.
Операция протокола включает в себя комбинацию, состоящую из следующих последовательностей команд и ответов:
Первоначальным SMTP-клиентом вполне может выступать почтовый клиент получателя, или агент пересылки корреспонденции на сервере.
Как работают другие почтовые протоколы
SMTP является лишь протоколом доставки корреспонденции в сети. Он не может по команде взять электронное сообщение с удаленного сервера или как-то управлять e-mail ящиком.
Для этого существуют другие протоколы, например IMAP и POP. Их использование предпочтительнее при временном подключении к сети или когда ПК включается периодически.
Проверка и регистрация доменов SU — зарегистрируйте запоминающийся домен для Вашего проекта.
Post Office Protocol – это простой сетевой протокол, включающий в себя три разновидности: POP, POP2 и POP3. Разработаны они для того, чтобы доставлять корреспонденцию пользователю с центрального почтового сервера, для удаления почты с сервера и для идентификации пользователя. Для идентификации используется сочетание логина и пароля. Стоит отметить, что все три протокола не взаимозаменяемы.
Протокол включает SMTP, используемый для передачи исходящей почты.
В соответствии с POP3, письма, поступающие на определенный e-mail сохраняются на сервере до загрузки их на ПК во время очередного сеанса. Когда загрузка произошла, становится возможным прочитать сообщения, отключившись от сети. Считается, что POP3 — самый быстрый почтовый протокол.
С помощью Internet Message Access Protocol становится возможным хранение сообщений в директориях файлов на сервере и производить поиск любых строк сообщений прямо там.
Данный протокол подходит тем пользователям, компьютеры которых используют непрерывное подключение к интернету. Его отличие от POP в том, что при проверке новых писем загружаются только их заголовки.
iPipe – надёжный хостинг-провайдер с опытом работы более 15 лет.
Что это такое? Спам – в большинстве случаев это рассылка электронной почты по базе пользователей, которые не давали на неё…
Smtp что это
Рис. 5. SMTP протокол в терминах модели OSI
В настоящее время SMTP стал стандартом де-факто. В большой степени такая популярность объясняется сравнительной простотой реализации и широкими возможностями расширяемости без ущерба для обратной совместимости с существующими версиями почтовых систем. Немаловажным фактором является также широкая доступность спецификаций и отсутствие необходимости отчислять средства за их использование.
Отсутствие средств аутентификации входящих соединений не позволило использовать SMTP для обслуживания клиентского доступа. Классическая почтовая SMTP-система требует наличия файлового доступа клиента к своему почтовому ящику для получения и работы с сообщениями. Для реализации работы в режиме клиент-сервер был создан протокол обслуживания почтового офиса (Post Office Protocol или POP). Наиболее удачной оказалась версия POP3, широко используемая в современных SMTP-системах. Наиболее продвинутые реализации поддерживают аутентификацию с шифрованием имени и пароля и шифрование трафика по протоколу Secure Socket Layer (SSL). Однако, при использовании протокола POP3 отсутствует возможность просмотра характеристик сообщения без предварительной загрузки его на станцию клиента. Для решения проблемы просмотра и манипуляции свойствами почтового сообщения непосредственно на сервере, а также преодоления ряда других функциональных ограничений был разработан протокол IMAP4, его поддержка в большинстве коммерческих систем ожидается в ближайшем будущем. Следует заметить, что как для случая использования классического клиента (команда mail), так и для случая применения POP3 или IMAP4 отправка подготовленных клиентом сообщений требует наличия сервера SMTP. На рисунке 1.6 приведена схема представления типичной SMTP-системы, использующей как традиционный для ОС UNIX файловый метод доступа к почтовому ящику, так и доступ по протоколам POP3 и IMAP4.
Изначально SMTP-системы рассчитывались на передачу информации исключительно в текстовом виде и не были ориентированы на передачу символов национальных алфавитов, т.е. использовали 7-битный набор символов. Для решения проблемы передачи двоичных файлов был разработан стандарт UUENCODE, позволяющий внедрять предварительно преобразованные из бинарного в текстовый вид произвольные данные непосредственно в текст сообщения. Однако всеобъемлющим данный подход назвать было трудно, ибо в общем случае никакой информации о природе вложения (типе передаваемых данных и породившем их приложении) принимающая сторона не имела. По мере расширения сети Internet, усложнения программного обеспечения и активного внедрения мультимедиа назрела необходимость создания универсального формата типизации и представления двоичных данных и текста, содержащего национальные символы. Таким универсальным форматом стали многофункциональные расширения почты Internet (Multipurpose Internet Mail Extensions или MIME). Формат MIME оказался чрезвычайно удачным, поскольку в него были заложены возможности неограниченного расширения, как поддерживаемых типов данных, так и национальных кодировок.
Рис. 6. Схема типичной SMTP-системы с поддержкой POP3 и IMAP4
Отличительной особенностью SMTP-систем является то, что в них, как правило, обеспечивается фактическая независимость процесса передачи от формата содержимого. За интерпретацию содержимого должна отвечать только клиентская программа (mail reader). Однако платой за совместимость на уровне MTA в данном случае является неэффективность передачи любых нетекстовых данных или сообщений, использующих символы национальных алфавитов, вследствие предварительной трансляции информации в текстовое представление. В зависимости от используемого алгоритма преобразования размер фактически передаваемых данных может возрасти на 30-100%.
Немаловажной проблемой при передаче данных через SMTP-системы является обеспечение конфиденциальности. Поскольку сообщения передаются в текстовом виде, они могут быть легко перехвачены и произвольным образом изменены. Для решения проблем с защитой информации был создан стандарт на шифрование тела сообщения, так называемый засекреченные многофункциональные расширения почты (Secure MIME или S/MIME). Однако, этот протокол не в состоянии защитить от перехвата заголовки сообщений.
Simple Mail Transfer Protocol не зависит от транспортной среды и может использоваться для доставки почты в сетях с протоколами, отличными от TCP/IP и Х.25. Достигается это за счет концепции IPCE (InterProcess Communication Environment). IPCE позволяет взаимодействовать процессам, поддерживающим SMTP в интерактивном режиме, а не в режиме «STOP-GO».
Рис. 7. Схема взаимодействия по протоколу SMTP
Канал связи устанавливается непосредственно между отправителем и получателем сообщения. При таком взаимодействии почта достигает абонента в течение нескольких секунд после отправки.
Формат почтового сообщения (RFC-822)
Дисциплины работы и команды протокола.
Наиболее распространенной дисциплиной является отправка почтового сообщения, которая начинается по команде MAIL, идентифицирующей отправителя: Следующей командой определяется адрес получателя:
После того, как определен отправитель и получатель почтового сообщения, можно отправлять последнее:
Команда DATA вводится без параметров и идентифицирует начало ввода почтового сообщения. Сообщение вводится до тех пор, пока не будет введена строка с точкой в первой позиции. Согласно стандарту почтового сообщения RFC822 отправитель передает заголовоки тело сообщения, которые разделены пустой строкой. Сам протокол SMTP не накладывает каких-либо ограничений на информацию, которая заключена между командой DATA и «.» в первой позиции последней строки.
Другой дисциплиной, определенной в протоколе SMTP является перенаправление почтового сообщения (forwarding). Если получатель не найден, но известно его местоположение, то сервер может выдать сообщение:
Если сервер может сделать только предположение о дальнейшей рассылке, то ответ будет несколько иным:
Верификация и расширение адресов составляют дисциплину верификации. В ней используются команды VRFY и EXPN. По команде VRFY сервер подтверждает наличие или отсутствие указанного пользователя:
Используя команду EXPN можно получить список местных пользователей:
В список дисциплин, разрешенных протоколом SMTP входит кроме отправки почты еще и прямая рассылка сообщений. В этом случае сообщение будет отправляться не в почтовый ящик, а непосредственно на терминал пользователя, если пользователь в данный момент находится за своим терминалом. Прямая рассылка осуществляется по команде SEND, которая имеет такой же синтаксис, как и команда MAIL. Кроме SEND прямую рассылку осуществляют SOML (Send or Mail) и SAML (Send and Mail). Назначение этих команд легко понять из их названия.
Для инициализации канала обмена почтой и его закрытия используются команды HELO и QUIT соответственно. Первой командой сеанса должна быть команда HELO.
Протокол допускает рассылку почтовых сообщений в режиме оповещения. Для этой цели отправитель в адресе получателя может указать несколько пользователей или групповой адрес. Обычно, программное обеспечение SMTP выбирает эту информацию из заголовка почтового сообщения и на ее основе формирует параметры команд протокола.
Если сообщение по какой-либо причине не может быть разослано, то получатель формирует сообщение о неразосланном сообщении:
При использовании доменных имен следует использовать канонические имена, т.к. некоторые системы не могут определить синоним по базе данных named.
Кроме выше перечисленных дисциплин протокол позволяет отправителю и получателю меняться ролями друг с другом. Происходит это по команде TURN.
Для отладки или проверки соединения по SMTP можно использовать telnet. Для этого вслед за адресом машины следует ввести номер порта:
25 порт используется в Internet для обмена сообщениями по протоколу SMTP. В интерактивном режиме пользователь сам изображает клиента SMTP и может посмотреть реакцию удаленной машины на его действия.
Адресация в SMTP-системах
Рисунок 8 наглядно поясняет принципы SMTP-адресации.
Рис. 8. Иерархическая схема адресации SMTP
В приведенном примере CIT.MSK.RU является субдоменом MSK.RU, который в свою очередь является субдоменом RU. Компания CIT имеет два зарегистрированных имени, и каждый пользователь может иметь два почтовых адреса.
Таким образом, чтобы доставить сообщение на имя адресата JohnDoe@CIT.MSK.RU, сначала будет выполнен запрос к серверу DNS на получение списка ресурсных записей с типом MX. Если список не пуст, по имени компьютера с наименьшим значением стоимости доставки будет получен его адрес (опять же через DNS), после чего будет установлено соединение и отправлена почта. Если для домена CIT.MSK.RU нет MX-записи, домен будет трактоваться как имя компьютера. Будет выполнена попытка получить его IP-адрес и доставить сообщение напрямую.
Несмотря на то, что служба имен DNS полагается источником статической информации, маршрутизация сообщений SMTP в Internet может рассматриваться как динамическая, так как следующая точка маршрута (теоретически) должна определяться заново для каждого сообщения.
В сетях, не имеющих прямого выхода в Internet и не использующих возможности MX-записей DNS, активно применяется статическая схема маршрутизации. Практически все существующие SMTP-системы позволяют использовать языки сценариев для описания статических таблиц.
Большинство современных реализаций SMTP-серверов позволяют сочетать все перечисленные функции на одном компьютере.