SMTP (Simple Mail Transfer Protocol) — протокол передачи, представленный еще в 1982 году, который предназначен для решения актуальных задач по передачи электронной почты.
Цели использования SMTP
У протокола две основные задачи:
- Проверить правильность настройки и предоставить отправление email.
- Отправить исходящее сообщение и подтвердить успешную доставку. Если отправление не доставлено, то отправителю приходит ответ.
Теоретически SMTP работает со всеми протоколами. Вначале у него было два порта:
- Первый порт -TCP 25 -электронная связь между компьютерами.
- Второй порт- TCP 587, который передает почтовые извещения на компьютер.
SMTP передает исходящую почту, используя TCP 25. Когда порту нужно защищенное SSL-соединение, то используют и порт 465.
В основном применяется только протокол TCP с портом 25. Когда провайдерами доступ к 25 порту закрыт, то применяют другие варианты.
Объем электронного письма:
- «конверт»
- заголовок
- текст
Конверт используют, чтобы передать отправление от клиента на компьютер и обратно. Взаимодействие клиента с компьютером происходит с помощью текста.
Формат поля заголовка Received:
From host
by host
via physical-path
with protocol
id message-id
for final e-mail destination
С помощью поля можно идентифицировать SMTP-протоколы, задействованные для рассылки извещений. Заголовки Received: добавляются каждым почтовым сервером, ретранслирующим данное сообщение.
Return-Path — поле возврата, чтобы определить маршрут передачи отправления. В случае передачи одного сообщения на сервер получателя, то в поле виден один адрес, когда серверов несколько, отображается список.
Команды SMTP
У разработчиков был договор, что длина команд не более четырех символов. Набор основных команд SMTP:
- Команда Helo, чтобы установить соединение, когда известен имя и почтовый адрес клиента.
- Команда Mail, чтобы задать адрес отправителя.
- Команда RCPT, чтобы идентифицировать получателя. Для передачи извещения сразу нескольким получателям, необходимо несколько раз подряд использовать команду RCPT.
- Команда DATA, чтобы уведомить принимающий сервер о завершении конверта, после приходит письмо.
- Команда QUIT, чтобы разорвать соединение с компьютером, когда завершится прием извещений.
Ответы SMTP
Ответы SMTP состоят из двух частей:
- Код. Для изучения корректной и правильной отправки.
- Текст. Для понимания процесса отправки или получения. Большинство сообщений нужны людям, а не компьютерам.
Сообщения кодируются с помощью цифр 2, 3, 5. Начальная цифра 2 в коде означает, что команда выполнена. Если код с «тройки», то значит необходимы еще сведения для успешной отправки. Код с «пятерки» - техническая ошибка или сбой системы.
Принцип работы
Если представить, что установлен и настроен SMTP, то организовать отправку письма возможно выполняя следующий порядок действий:
- Отправитель должен указать адрес, чтобы соединиться с почтой пользователя.
- Системой передаются следующие сведения: тема и текст письма, адреса электронной почты, после чего система ищет SMTP адресата.
- Если после нескольких попыток установления связи, он не найден или не отвечает, то SMTP сообщает о сбое. Протокол выдает код ошибки отправления. Такая проблема может возникнуть в связи с несуществующим адресом или из-за блокировки отправлений.
Работа SMTP
Сеанс SMTP активируется при отправке электронного письма, однако для работы, как правило, нужны дополнительные данные:
Данные соответствуют подключению к почтовому серверу через порт 25. Используя технический язык, это значит, что подключение выполнено по адресу 220 smtp.example.ru ESMTP Postfix на 25 порт. Для начала используется команда HELO, чтобы указать имя собственного домена. После начинает работать сервер, в результате чего появляется статус 250, означающий установление соединения. Затем сервер в тексте сообщения повторно указывает доменное имя.
С помощью команды Mail FROM отображается адрес отправителя. Если сервер возвращает статус 250, то команда выполнена без проблем.
Для указания адресата получателя используется команда RCPT TO. Если в ответ пришел статус 250, значит можно ввести текст письма, выполнив команду DATA, но сначала дождаться ответа 354. Важно, чтобы в заключении появилась отдельная строка с одной точкой.
В составе сообщения всегда две части: заголовок и тело, которые друг от друга нужно разделять пустой строкой с помощью заголовка FROM - это адрес пользователя, который отправил извещение. Еще следует указать имя и заголовок, чтобы получатель смог понять смысл письма. Пустая строка применяется для отделения заголовка от письма.
Например, текст из двух фраз: «Hello, email world!» и «Hello, SMTP!». В завершении письма строка, содержащая только одну точку. Однако эта строчка – техническая, поэтому в процессе передачи удаляется. Если точка нужна, то следует поставить две точки, потому что одна удалится. Для сервера точка обозначает завершение письма, поэтому он выдает статус 250 2.0.0 Ok: queued as 7FD9DC2E0060. То есть письмо ждет своей очереди. Команда QUIT вводится, чтобы завершить сеанс. В ответ приходит статус 221, то есть «пока».
Необходимость собственного сервера SMTP зависит от потребностей пользователя. SMTP нужен, чтобы реализовать широкий спектр задач. Наличие собственного SMTP выгоднее из-за невысокой цены, внимательного отношения разработчиков. Достоинством SMTP является простота внедрения протокола, благодаря обширной документации и развитому сообществу, а также высокий уровень доставки массовых рассылок. Протокол SMTP прост в исполнении настолько, что у него отсутствует защита данных пользователя, поэтому получаемые письма разных компаний, при желании и с использованием соответствующих инструментов могут быть прочитаны. Однако это касается первой версии SMTP. Разработан улучшенный вариант с шифрованием, который можно задействовать, используя команду STARTTLS. Большое количество ненужной рекламы является проблемой SMTP. Сейчас в компьютерах используются внешние механизмы лишь с локальными пользователями, которые обслуживают собственные почтовые ящики с адресом сайта. Компьютеры, работающие в режиме, который позволяет передавать почту на все адреса называются «открытые релеи». Теперь не только обычные пользователи, но и злоумышленники используют этот новый термин. Им он нужен для рассылки спама. Поэтому в целях безопасности стоит проверять работу программы корпоративной сети. Чтобы компьютер не принимал почту от кого попало, необходимо предупреждать администратора. Цифровая подпись с открытым ключом обеспечивает проверку подлинности отправителя, позволяя предотвращать фальсификацию сообщений.
Таким образом, работа SMTP проверена временем. Простота и надежность протокола позволяет отправлять извещения как на одну компьютерную почту, так и на группу сайтов.
Чтобы рассылать массовые отправления с помощью собственного SMTP, нужно добавить обработку статуса доставки письма, отписку от извещений, необходим обход «черных» списков. Для этого разработчики добавили сервис с необходимыми услугами к CRM-системе.