Алгоритм работы электронной почты

2. Вы создали письмо. Нажали отправить.
3. Оно ушло на ваш почтовый сервер.
4. Далее сервер смотрит на домен получателя (это после собаки).
5. Делает ДНС-запрос, разрешает имя домена (это после собаки) в АйПи адрес. Т.е. узнает куда подключаться. Тип записи в данном случае - МХ()
6. Подключается на 25 порт удаленного сервера по полученному АйПи. 
7. Проверки/блек-листы/и т.п.
8. Если все ок, складирует письмо.
9. Пользователь подключается к серверу по POP3 или IMAP или веб и видит это письмо.
Вот и весь алгоритм.

 

            Для подавляющего большинства людей в настоящее время реальная система электронной почты состоит из двух различных серверов, работающих на серверной машине. Один называется SMTP Server, сокращение SMTP означает простой протокол электронной почты (Simple Mail Transfer Protocol). SMTP server отвечает за исходящую электронную почту. Другой сервер – это либо сервер POP3, либо сервер IMAP. каждый из них обрабатывает входящую почту. POP построен на базе протокола почтового отделения (Post Office Protocol), а IMAP использует протокол доступа к интернет-сообщениям (Internet Mail Access Protocol). Типичный сервер электронной почты выглядит приблизительно так: 

            Сервер SMTP принимает сигналы по хорошо известному порту 25,
POP3 – по порту 110, а IMAP использует порт 143 (подробности, касающиеся портов, смотрите в статье о том, как работают Web-серверы).
 

Сервер SMTP

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

            Допустим, пользователь хочет отправить сообщение электронной почты. Допустим также, что имя пользователя brain и его учетная запись находится на howstuffworks.com. Он собирается отправить сообщение на jsmith@mindspring.com. Пользователь применяет отдельный почтовый клиент типа Outlook Express. 

            При создании учетной записи на howstuffworks пользователь указал программе имя сервера электронной почты – mail.howstuffworks.com. После того, как написано сообщение и нажата кнопка Send («Отправить»), происходит следующее: 

1)      Outlook Express соединяется с SMTP сервером на mail.howstuffworks.com по порту 25. 

2)      Outlook Express обменивается информацией с SMTP сервером, указывает ему адрес отправителя и адрес получателя, а также передает тело сообщения. 

3)      SMTP сервер принимает адрес, по которому следует отправить сообщение ( jsmith@mindspring.com) и разбивает его на две части: имя получателя (jsmith) и имя домена (mindspring.com). Если адрес, по которому следует отправить сообщение, указывает на пользователя, не находящегося на howstuffworks.com, сервер SMTP просто передаст сообщение POP3 серверу на howstuffworks.com, используя маленькую программу под названием MDA. Поскольку получатель располагается в другом домене, SMTP нужно обменяться информацией с этим доменом. 

4)      SMTP сервер осуществляет диалог с сервером доменных имен (Domain Name Server, DNS) (подробности смотрите в статье о том, как работают Web-серверы). SMTP сервер спрашивает: «Можете мне дать IP адрес SMTP сервера для mindspring.com?» DNS в ответ выдает один или более IP адресов для SMTP сервера (серверов), с которым(и) Mindspring работает. 

5)      SMTP сервер на howstuffworks.com соединяется с SMTP сервером на Mindspring через порт 25. Далее происходит такой же обмен простой текстовой информацией, как и в случае обмена пользовательского клиента электронной почты с SMTP сервером для HowStuffWorks, при этом сообщение передается на сервер Mindspring. Сервер Mindspring распознает, что доменное имя для jsmith имеется на Mindspring, поэтому он передает сообщение на POP3 сервер, находящийся на Mindspring, а тот в свою очередь помещает сообщение в почтовый ящик jsmith. 

 

            Если по какой-то причине SMTP сервер на HowStuffWorks не может связаться с SMTP сервером на Mindspring, сообщение ставится в очередь. SMTP сервер на большинстве машин использует для самой пересылки программу под названием sendmail, поэтому такая очередь называется очередью sendmail. Sendmail периодически делает попытки повторно отправить сообщения из этой очереди. Эта программа может, например, пытаться отправить сообщение каждые 15 минут. По истечении четырех часов безуспешных попыток обычно пользователю приходит сообщение электронной почты, уведомляющее, что существует некоторая проблема. По прошествии пяти дней, если так и не удалось отправить сообщение, в большинстве конфигураций предусмотрен отказ от дальнейших попыток и возвращение электронного письма отправителю в качестве неотправленного. 

 

            MTA (Mail Transfer Agent) - Это компьютерная программа, которая передаёт сообщения от одного компьютера к другому. Обычно почтовый сервер работает «за кулисами», а пользователи имеют дело с другой программой — клиентом электронной почты 

            MDA (Mail Delivery Agent— программа, принимающая входящие электронные письма и доставляющая их на электронный ящик получателя (если адрес назначения расположен на том же компьютере) или перенаправляющая их на другой почтовый сервер(если адрес назначения расположен на другом компьютере).




 

Протокол SMTP

 

            SMTP (англ. Simple Mail Transfer Protocol — простой протокол передачи почты) — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP.

            ESMTP (англ.  Extended SMTP) — масштабируемое расширение протокола SMTP. В настоящее время под «протоколом SMTP», как правило, подразумевают ESMTP и его расширения.

SMTP используется для отправки почты от пользователей к серверам и между серверами для дальнейшей пересылки к получателю. Для приёма почты почтовый клиент должен использовать протоколы POP3 или IMAP. Работа с SMTP происходит непосредственно на сервере получателя. Поддерживает функции: установление соединения, аутентификация, передача данных

            Чтобы доставить сообщение до адресата, необходимо переслать его почтовому серверу домена, в котором находится адресат. Для этого обычно используется запись типа MX (англ. Mail eXchange — обмен почтой) системы DNS. Если MX запись отсутствует, то для тех же целей может быть использована запись типа A. Некоторые современные реализации SMTP-серверов (например, Exim

[1]) для определения сервера, обслуживающего почту в домене адресата, также могут задействовать SRV-запись (RFC 2782).

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

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

            Протокол был разработан для передачи только текста в кодировке ASCII, кроме того, первые спецификации требовали обнуления старшего бита каждого передаваемого байта. Это не даёт возможности отсылать текст на национальных языках (например, кириллице), а также отправлять двоичные файлы (такие как изображения, видеофайлы, программы или архивы). Для снятия этого ограничения был разработан стандарт MIME, который описывает способ преобразования двоичных файлов в текстовые. В настоящее время большинство серверов поддерживают 8BITMIME, позволяющий отправлять двоичные файлы так же просто, как текст. Основные команды: – MAIL адрес отправителя – RCPT адрес получателя (может быть несколько. На каждого получателя отдельно приходит квитанция) – DATA передача данных (письма). Производится в ASCII. Данные формируются как сегменты ТСР. Конец письма – точка в пустой строке. – QUIT разрыв соединения Установление и закрытие соединения непосредственно с сервером производится по ТСР. Контроль за пользовательскими данными возложен на ТСР.


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

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

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

4ХХ — временная ошибка, клиент должен произвести следующую попытку через некоторое время

5ХХ — неустранимая ошибка

Текстовая часть ответа носит справочный характер и предназначена для человека, а не программы.

            ESMTP — расширяемый протокол, в отличие от SMTP. При установлении соединения сервер объявляет о наборе поддерживаемых расширений (в качестве ответа на команду EHLO). Соответствующие расширения могут быть использованы клиентом при работе. Необходимо помнить, что если сессия начинается с команды HELO (используемой в «классическом» SMTP, RFC 821), то список расширений выводиться не будет.

 

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

            Изначально SMTP не поддерживал единой схемы авторизации. В результате этого спам стал практически неразрешимой проблемой, так как было невозможно определить, кто на самом деле является отправителем сообщения — фактически можно отправить письмо от имени любого человека. В настоящее время производятся попытки решить эту проблему при помощи спецификаций SPF, Sender ID

, DKIM. Единой спецификации на настоящий момент не существует.

 

+

-----------------------

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

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

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

 

 

 

 

 

 

 

 

 

 

 

POP3 (англ. Post Office Protocol Version 3 — протокол почтового отделения,
версия 3) используется
почтовым клиентом для получения сообщений электронной почты с сервера. Обычно используется в паре с протоколом SMTP. Альтернативным протоколом для сбора сообщений с почтового сервера является IMAP.

 

Краткое, но достаточно емкое описание почтового протокола POP3.

 

            Перед работой через протокол POP3 сервер прослушивает порт 110. Когда клиент хочет использовать этот протокол, он должен создать TCP соединение с сервером. Когда соединение установлено, сервер отправляет приглашение. Затем клиент и POP3 сервер обмениваются информацией пока соединение не будет закрыто или прервано.

            Команды POP3 состоят из ключевых слов, за некоторыми следует один или более аргументов. Все команды заканчиваются парой CRLF (в Visual Basic константа vbCrLf). Ключевые слова и аргументы состоят из печатаемых ASCII символов. Ключевое слово и аргументы разделены одиночным пробелом. Ключевое слово состоит от 3-х до 4-х символов, а аргумент может быть длиной до 40-ка символов.

            Ответы в POP3 состоят из индикатора состояния и ключевого слова, за которым может следовать дополнительная информация. Ответ заканчивается парой CRLF. Существует только два индикатора состояния: "+OK" - положительный и "-ERR" - отрицательный.

            Ответы на некоторые команды могут состоять из нескольких строк. В этих случаях каждая строка разделена парой CRLF, а конец ответа заканчивается ASCII символом 46 (".") и парой CRLF.

            POP3 сессия состоит из нескольких режимов. Как только соединение с сервером было установлено и сервер отправил приглашение, то сессия переходит в режим авторизации. В этом режиме клиент должен идентифицировать себя на сервере. После успешной идентификации сессия переходит в режим транзакции. В этом режиме клиент запрашивает сервер выполнить определённые команды. Когда клиент отправляет команду QUIT, сессия переходит в режим обновления. В этом режиме POP3 сервер освобождает все занятые ресурсы и завершает работу. После этого TCP соединение закрывается.

 

Hosted by uCoz