Для чего нужен протокол 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. Мы видим, что с текстовой частью все хорошо, команда выполнена, проблем не возникло.
Наступает следующий этап — использование команды Mail FROM для того, чтобы указать адрес отправителя. Если сервер возвращает статус 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».
Что такое SMTP-сервер, зачем нужен и как работает для массовых рассылок
SMTP — это протокол передачи почты (англ. Simple Mail Transfer Protocol). SMTP-сервер используется, когда надо отправить письмо с одной почты на другую.
Если вы изредка отправляете письма друзьям и коллегам через обычные почтовые интерфейсы Google, Mail.ru или Яндекс.Почта, то настройки SMTP не понадобятся: всё уже настроено и готово к использованию.
А если собираетесь заниматься почтовыми рассылками для клиентов, то пригодятся знания: как правильно настроить и использовать SMPT через почтовые клиенты, например, The Bat или Microsoft Outlook.
Зачем нужен SMTP-сервер
Чтобы рассылать письма без ограничений
Часто провайдеры устанавливают ограничения на количество отправляемых писем в сутки. Если ограничения нарушить, почтовый адрес попадает в чёрный список и заблокируется.
SMTP позволяет обходить лимиты и без рисков отправлять массовые рассылки по всей базе подписчиков.
Чтобы повысить доставляемость писем
SMTP-сервер отфильтровывает всё, что похоже на спам или вирусные сообщения, в исходящих сообщениях. Рассылка становится более «чистой», не блокируется и попадает у подписчиков в папку «Входящие».
Чтобы избежать утечки личных данных подписчиков
Данные подписчиков хранятся на сервере отправителя рассылки, а не на сервере SMTP. Через SMTP данные не могут быть похищены или выложены в общий доступ, ведь сервер их не сохраняет.
Чтобы анализировать, почему рассылка не доставлена
При отправке письма сервер присылает ответы — специальные команды. Они известны заранее, поэтому можно понять, почему письмо не было отправлено.
Например, есть команда-ответ, которая означает, что отправка письма невозможна, так как почтовый адрес отправителя занесён в чёрный список.
Чтобы сэкономит деньги на транзакционной рассылке
SMPT-сервер стоит дешевле, чем специальные сервисы email-рассылок. Хотя у SMPT нет возможностей создавать шаблоны, автоматические цепочки, лендинги и сайты, он полезен, когда нужно доставить много писем. Например, транзакционных, в которых не используются картинки, GIF и видео.
Недостатки SMTP-серверов
Отсутствие шифрования
Все письма, которые отправлены с сервера, могут быть перехвачены злоумышленниками и прочитаны. Можно частично защитить данные, если использовать команду STARTTLS в расширенной версии сервера.
Много спама на стороне отправителя
Сервер не имеет защиты от спама, поэтому почтовые ящики отправителя будут переполнены спамом. Его придётся удалять вручную, если сервер не использует внешние механизмы блокировки спама.
Доработка для корректной работы
Чтобы отправлять рассылку через SMTP-сервер без проблем, его надо дорабатывать: настраивать заголовки, исправлять ошибки. Если сервер купить или арендовать, доработкой займётся техническая поддержка. Если он создан своими силами, то нужно найти разработчика.
Какие бывают SMTP-серверы
Обычные
Обычные серверы используются для отправки личной почты. Они принадлежат провайдерам, хостингам или бесплатным почтовым клиентам.
Главный минус — ограничение на отправку писем. Обычно это дневной лимит. Если лимит превысить, рассылка попадёт в спам, а почтовый ящик может быть занесён в чёрный список.
Выделенные
Такие серверы можно купить, арендовать или создать собственные. Они подходят для массовых рассылок, так как не имеют ограничений. Можно отправить сколько угодно писем и не переживать, что почта будет заблокирована.
Как работает SMTP-сервер
SMTP — это комплекс из сервера, жёсткого диска, дополнительного оборудования и программного обеспечения. Сервер выступает в роли посредника между почтой отправителя и почтой получателя письма.
Во время отправки сообщения SMTP-сервер устанавливает связь с компьютером отправителем и компьютером-получателем через команды и ответы.
Команды и ответы: пример SMTP-сессии
Шаг 1. Подготовка к отправке
Отправитель: команда HELO. Используется, когда сервер почты отправителя связывается с сервером почты получателя.
Пример: HELO receiver.com
Получатель: ответ 250. В ответ сервер получателя должен прислать ответную команду, которая разрешит дальнейшие действия.
Пример: 250 sendeer.com
Шаг 2. Уведомление об отправке
Отправитель: команда MAIL FROM. Команда сообщает, от кого будет отправлено письмо.
Пример: MAIL FROM: sender@mail.com
Получатель: ответ 250 2.1.0 Ok. После проверки сервер почты получателя разрешает отправку с ящика отправителя. Если ящик в чёрном списке, придёт сообщение об ошибке.
Шаг 3. Выбор почты получателя
Отправитель: команда RCPT TO. Команда сообщает, на какой почтовый адрес будет отправлено письмо.
Пример: RCPT TO: receiver@mail.com
Получатель: ответ 250 2.1.0 Ok. Сервер согласен принять письмо для этого получателя.
Шаг 4. Передача письма
Отправитель: команда DATA. Сервер отправителя сообщает, что начинает передавать письмо.
Получатель: ответ 250 2.0.0 Ok. Сервер сообщает, что принял письмо. Ещё он назначит ему ID, по которому можно будет узнать, что стало с письмом, если оно не будет доставлено.
Пример: 250 2.0.0 Ok: queued as 1CD5PQ7ERT
Шаг 5. Завершение передачи
Отправитель: команда QUIT. Сервер отправителя сообщает, что передача завершена и сеанс закончен.
Получатель: ответ 221 2.0.0 Bye. Сервер получателя завершает сеанс.
Пример: 221 2.0.0 Bye
Как отправлять рассылку с использованием SMTP-сервера
Если почта заведена на бесплатном почтовом клиенте
Возможности
Вы уже используйте SMTP, если отправляете письма с бесплатных почтовых ящиков, например, Yandex, Google, Yahoo. Чтобы начать работу, необходимо авторизоваться в веб-интерфейсе почты через логин и пароль.
Недостатки
Бесплатные почтовые сервисы не подойдут для массовых рассылок.
Чтобы отправлять письмо, надо соблюдать лимиты. Если превысить лимиты, почтовый сервис заблокирует ящик. Например, Яндекс позволяет отправлять 500 писем в сутки с одного ящика.
Если почта заведена у интернет-провайдера
Возможности
Некоторые провайдеры вместе с услугами связи создают на своих доменах клиентам почтовые ящики. С ящиков также можно отправлять письма через SMTP.
Недостатки
Почта на домене провайдера не подойдёт для массовых рассылок.
Так как провайдеры разрешают клиентам отправлять письма с собственных IP-адресов, они не могут допустить, чтобы писем стало слишком много и их стали помечтать как спам. Поэтому устанавливают лимиты на ежедневную отправку писем.
Пример: как настроить SMTP-сервер на Яндекс.Почте в почтовом клиенте The Bat
Исходные данные
Обычно письма через почту Яндекс отправляют из веб-интерфейса. Но можно делать это и с помощью почтовых клиентов.
Почтовый клиент — это программа. Она работает на компьютере и на смартфоне.
Если у отправителя рассылки несколько почтовых ящиков на разных платформах, то почтовый клиент позволяет всех их объединить. Тогда отправка писем с этих ящиков будет происходить в одном месте — через интерфейс почтового клиента.
Рассмотрим, как отправлять письма через сервер SMTP с Яндекс.Почты, которая подключена в почтовом клиенте The Bat (можно скачать с официального сайта разработчика)
Настройка Яндекс.Почты
Зайдите в Яндекс.Почту и перейдите в настройки:
Открываем настройки
Далее кликнете по разделу «Почтовые программы»
Следующий шаг — переход в «Почтовые программы»
Выберите, по какому протоколу будет работать сервер:
Запустите почтовый клиент The Bat и создайте новый почтовый ящик.
Чтобы отправлять письма через сервер SMTP, нужно создать новый ящик
В окне укажите настройки:
Выбор протокола, имени и электронного адреса
В следующем окне выберите протокол, который ранее указали в Яндекс.Почта. Автоматически подтянутся настройки адреса сервера и порт.
Эти блоки заполняются автоматически
Подтвердите настройки на следующем шаге и не забудьте поставить галочку напротив настроек аутентификации:
Финальный шаг настройки SMTP в The Bat
Готово. Клиент настроен. Можно отправлять письма через сервер SMTP с Яндекс.Почты из интерфейса The Bat.
Стоит ли приобретать дополнительный SMTP-сервер для рассылки
Если нужны массовые рассылки, то использовать онлайн-сервисы и почтовые клиенты невозможно из-за лимитов. Чтобы отправлять письма без ограничений, нужно купить SMPT-сервер, арендовать или настроить самостоятельно. В первых двух случая сервер будет уже настроен или его настройкой займётся техническая поддержка продавца.
Вот цены одного из поставщиков услуг покупки и аренды сервера:
Пример стоимости покупки и аренды SMTP-сервера
Настройка собственного сервера дешевле и надёжнее, хотя справиться своими силами не всегда легко. Лучше доверить работу специалисту, который всё сделает как надо.
Что в итоге
Через SMTP-сервер нельзя отправлять письма с картинками и видео, зато он подойдёт, если необходимо делать массовые рассылки с текстом как, например, в триггерных письмах. Рассылка через SMTP дешевле, чем на специальных сервисах.
Настраивать SMTP-сервер не нужно, если отправляете письма прямо из веб-интерфейсов Google, Yahoo, Mail.ru и так далее — он работает автоматически. А если почта работает через почтовый клиент, например, The Bat, то настройка выполняется через пару кликов. Но какой бы вариант вы ни выбрали, всё равно придётся столкнуться с ежедневными лимитами на отправку писем.
Рассылать письма без ограничений можно, если купить готовый SMTP-сервер, арендовать или подключить собственный. Первые два метода проще, так как настройкой будет заниматься техническая поддержка, а последний — сложнее. Доверить работу лучше специалисту, который всё сделает быстро.
Протокол SMTP что такое и для чего он нужен
SMTP (Simple Mail Transfer Protocol) — простой протокол передачи почты. Протокол SMTP был создан в 1982 году, а расширенная версия SMTP (ESMTP, Extended SMTP) вышла в 2008 году и используется сейчас.
Архитектура электронной почты
Протокол SMTP используется при передаче электронной почты, возможны два варианта использования:
При передачи почты от агента пользователя почтовому серверу и при передачи писем между почтовыми серверами используется протокол SMTP. Для чтения почты используется протоколы POP3 и IMAP.
Место протокола SMTP в стеке TCP/IP
На практике, почти всегда используется один транспортный протокол TCP и порт 25.
Формат электронного письма
Электронное письмо состоит из трех частей, это конверт, заголовок и тело письма. Команды протокола SMTP находятся только в конверте, именно конверт используется при передачи почты между серверами и почтовыми клиентами и данные в конверты определяются, как почта будет передаваться.
Заголовки и тело письма формально не являются частью протокола SMTP, они задаются в отдельном документе RFC2822. Так как заголовки используются при передаче писем, мы их рассмотрим.
Протокол SMTP, также как и протокол HTTP работает в текстовом режиме, это означает, что нет специального формата пакета, клиент и сервер взаимодействуют друг с другом в режиме запрос-ответ передавая друг другу обычные текстовые строки.
Команды SMTP
Команды SMTP состоят из 4-х символов. Никакой особой причины для этого нет, просто разработчики протокола выбрали такую длину команд. Основные команды перечислены на картинке ниже, есть и другие команды, но они используются значительно реже.
Ответы SMTP
Также как и протокол HTTP, SMTP использует ответы состоящие из двух частей:
Заголовки письма
Заголовки письма формально не являются частью стандарта SMTP.
Пример сеанса SMTP
Рассмотрим пример сеанса SMTP, который используется для отправки письма.
Подключаемся к почтовому серверу по адресу 220 smtp.example.ru ESMTP Postfix на 25 порт. Выдаем команду HELO в которой указываем свой домен. Сервер отвечает сообщением со статусом 250 это означает, что соединение установлено и в текстовом сообщении сервер еще раз пишет свое доменное имя.
Само письмо состоит из двух частей, заголовок и тело сообщения.
После того, как введена точка, сервер понимает, что письмо закончено и выдает сообщение со статусом 250 2.0.0 Ok: queued as 7FD9DC2E0060 сообщение поставлено в очередь для передачи. Выдаем команду QUIT, чтобы закончить сеанс связи. Сервер отвечает сообщением со статусом 221 пока.
Расширение SMTP
В 2008 году появилось расширение SMTP — ESMTP. Там появились новые команды. Вместо команды HELO предлагается использовать команду EHLO — Extended HELO. Если мы хотим использовать расширенную версию SMTP, то при установки соединения вместо команды HELO мы должны указывать команду EHLO.
Примеры других новых команд:
Другое важное изменение в расширенной версии протокола SMTP это возможность использования 8-битных наборов символов. В обычном SMTP можно использовать коды символов состоящие из 7 бит, это латинские буквы, цифры и другие символы из набора. Для того, чтобы передавать кириллицу необходимо было применять различные ухищрения. В расширенной версии SMTP ничего такого делать не надо, можно передавать кириллицу напрямую.
Команда EHLO
Если мы хотим использовать расширенную версию протокола SMTP, то для установки соединения, мы должны использовать команду EHLO и после нее указывать домен отправителя, также, как и для обычной команды HELO.
При получении этой команды, почтовый сервер понимает, что мы хотим использовать расширенную версию протокола SMTP и он выдает нам перечень команд расширенной версии, которые он поддерживает.
Безопасность и спам
Протокол SMTP не содержит механизмов для защиты данных. Адреса, которые вы вводите в поля MAIL FROM в конверте и FROM в заголовке никак не проверяются. Во-первых значения этих полей могут отличаться друг от друга. Во-вторых можно использовать любой почтовый адрес, не обязательно ваш, в том числе другие люди, если знают ваш email адрес могут подставить его в эти поля и отправлять почту якобы от вашего имени.
По умолчанию, протокол SMTP не использует шифрование и все письма, которые передаются через интернет могут быть прочитаны. В расширенной версии протокола SMTP появилась возможность использовать шифрование с помощью команды STARTTLS, но эту возможность мало кто использует.
Другая проблема, которая связана с электронной почтой это спам — рассылка нежелательных сообщений, как правило рекламных. Протокол SMTP не содержит никаких механизмов защиты от спама, но современные почтовые серверы пытаются использовать внешние механизмы.
Например, когда клиент подключился к почтовому серверу, выдал команду HELO, указал свое доменное имя, почтовый сервер выполняет проверку соответствия этого доменного имени IP-адресу клиента. Для этого почтовый сервер выполняет реверсивный DNS запрос на IP-адрес с которого подключился клиент и сравнивает полученное доменное имя с тем, которое указал клиент в команде HELO. Если доменные имена отличаются, то в зависимости от настроек почтовый сервер может не принять сообщение.
Многие почтовые серверы настроены так, чтобы принимать почту только для локальных пользователей, т.е. для тех, у которых есть почтовые ящики в том домене, который они обслуживают. Серверы, которые работают в другом режиме и позволяют передавать почту на любые email адреса в интернете называются открытые релеи. Спамеры с помощью специальных программ ищут открытые релеи в интернете и используют их с помощью массовой рассылки писем. Если почтовый сервер работает в режиме открытого релея, это серьезная недоработка администратора этого сервера.
Также есть возможность проверки адреса отправителя с помощью цифровой подписи, для этого также используются взаимодействия с системой DNS. В DNS записях специального вида хранится открытый ключ электронной подписи для данного домена и этот открытый ключ можно использовать для проверки подлинности адреса отправителя.
Заключение
Протокол SMTP — простой протокол передачи почты. Он используется для передачи почтовых сообщений от агента пользователя на почтовый сервер или для передачи почты между разными почтовыми серверами.