что такое протокол smtp

Почтовая кухня #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 что такое и для чего он нужен

SMTP (Simple Mail Transfer Protocol) — простой протокол передачи почты. Протокол SMTP был создан в 1982 году, а расширенная версия SMTP (ESMTP, Extended SMTP) вышла в 2008 году и используется сейчас.

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

Архитектура электронной почты

Протокол SMTP используется при передаче электронной почты, возможны два варианта использования:

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

При передачи почты от агента пользователя почтовому серверу и при передачи писем между почтовыми серверами используется протокол SMTP. Для чтения почты используется протоколы POP3 и IMAP.

Место протокола SMTP в стеке TCP/IP

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

На практике, почти всегда используется один транспортный протокол TCP и порт 25.

Формат электронного письма

Электронное письмо состоит из трех частей, это конверт, заголовок и тело письма. Команды протокола SMTP находятся только в конверте, именно конверт используется при передачи почты между серверами и почтовыми клиентами и данные в конверты определяются, как почта будет передаваться.

Заголовки и тело письма формально не являются частью протокола SMTP, они задаются в отдельном документе RFC2822. Так как заголовки используются при передаче писем, мы их рассмотрим.

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

Команды SMTP

Команды SMTP состоят из 4-х символов. Никакой особой причины для этого нет, просто разработчики протокола выбрали такую длину команд. Основные команды перечислены на картинке ниже, есть и другие команды, но они используются значительно реже.

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

Ответы SMTP

Также как и протокол HTTP, SMTP использует ответы состоящие из двух частей:

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

Заголовки письма

Заголовки письма формально не являются частью стандарта SMTP.

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

Пример сеанса SMTP

Рассмотрим пример сеанса SMTP, который используется для отправки письма.

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

Подключаемся к почтовому серверу по адресу 220 smtp.example.ru ESMTP Postfix на 25 порт. Выдаем команду HELO в которой указываем свой домен. Сервер отвечает сообщением со статусом 250 это означает, что соединение установлено и в текстовом сообщении сервер еще раз пишет свое доменное имя.

Само письмо состоит из двух частей, заголовок и тело сообщения.

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

После того, как введена точка, сервер понимает, что письмо закончено и выдает сообщение со статусом 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. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

Безопасность и спам

Протокол SMTP не содержит механизмов для защиты данных. Адреса, которые вы вводите в поля MAIL FROM в конверте и FROM в заголовке никак не проверяются. Во-первых значения этих полей могут отличаться друг от друга. Во-вторых можно использовать любой почтовый адрес, не обязательно ваш, в том числе другие люди, если знают ваш email адрес могут подставить его в эти поля и отправлять почту якобы от вашего имени.

По умолчанию, протокол SMTP не использует шифрование и все письма, которые передаются через интернет могут быть прочитаны. В расширенной версии протокола SMTP появилась возможность использовать шифрование с помощью команды STARTTLS, но эту возможность мало кто использует.

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

Например, когда клиент подключился к почтовому серверу, выдал команду HELO, указал свое доменное имя, почтовый сервер выполняет проверку соответствия этого доменного имени IP-адресу клиента. Для этого почтовый сервер выполняет реверсивный DNS запрос на IP-адрес с которого подключился клиент и сравнивает полученное доменное имя с тем, которое указал клиент в команде HELO. Если доменные имена отличаются, то в зависимости от настроек почтовый сервер может не принять сообщение.

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

Также есть возможность проверки адреса отправителя с помощью цифровой подписи, для этого также используются взаимодействия с системой DNS. В DNS записях специального вида хранится открытый ключ электронной подписи для данного домена и этот открытый ключ можно использовать для проверки подлинности адреса отправителя.

Заключение

Протокол SMTP — простой протокол передачи почты. Он используется для передачи почтовых сообщений от агента пользователя на почтовый сервер или для передачи почты между разными почтовыми серверами.

Источник

Формат сообщений(EMail)

Стандартные поля заголовка, согласно RFC 822

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

Формат сообщения, согласно 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-сервером (по тому же РРР-соединению) и отдает всю предназначенную для вашего домена почту, которая имеется у него в очереди на отправку.

Источник

Что такое SMTP-протокол и как он устроен?

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол 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.

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол smtp. Фото что такое протокол smtp

Формат поля заголовка 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, который инициализируется при необходимости отправить электронное письмо. На картинке ниже — данные сеанса, с которыми мы будем работать дальше.

что такое протокол smtp. Смотреть фото что такое протокол smtp. Смотреть картинку что такое протокол smtp. Картинка про что такое протокол 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».

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *