понедельник, 2 мая 2011 г.

Описание SMTP

Для подавляющего большинства людей в настоящее время реальная система электронной почты состоит из двух различных серверов, работающих на серверной машине. Один называется 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 («Отправить»), происходит следующее:

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

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

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

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

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

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

    SMTP сервер понимает очень простые текстовые команды типа HELO, MAIL, RCPT и DATA. Вот наиболее распространенные команды:

  • HELO - представьтесь, указывается IP адрес отправителя 

  • EHLO - представьтесь (указывается IP адрес отправителя) и просьба работать в режиме расширенных SMTP команд 

  • MAIL FROM: - указывается отправитель 

  • RCPT TO: - указывается получатель 

  • DATA - серверу указывается, что передается тело письма (в первых трех строках должны быть адрес получателя, адрес отправителя и тема письма) 

  • RSET - прервать выполнение текущего процесса с удалением всех сохраненных данных 

  • QUIT - завершение сессии 

  • HELP - запрос у сервера полезной помощи по командам 

  • VRFY - проверить адрес 

  • EXPN - просит сервер подтвердить, что переданный аргумент - это список почтовой группы 

  • VERB - подробно

  • Комментариев нет:

    Отправить комментарий