Что такое протокол электронной почты

Что такое протокол электронной почты

Многие пользователи, сталкиваясь с необходимостью настройки того или иного почтового клиента, задаются вопросом: «Что такое протокол электронной почты». Действительно, чтобы «заставить» такую программу нормально функционировать, а затем комфортно ею пользоваться, важно понимать, какой из доступных вариантов следует выбрать, и в чем его отличие от остальных. Именно о почтовых протоколах, принципе их работы и сфере применения, а также о некоторых других нюансах будет рассказано в этой статье.

Протоколы электронной почты

Всего существует три общепринятых стандарта, используемых для обмена электронными письмами (их отправки и получения) – это IMAP, POP3 и SMTP. Есть еще HTTP, который часто называют web-почтой, но прямого отношения к нашей сегодняшней теме он не имеет. Ниже рассмотрим подробнее каждый из протоколов, определив их характерные особенности и возможные различия, но прежде дадим определение самому термину.

Протокол электронной почты, если говорить максимально простым и понятным языком – это то, как именно осуществляется обмен электронной корреспонденцией, то есть, какой путь и с какими «остановками» проходит письмо от отправителя к получателю.

SMTP (Simple Mail Transfer Protocol)

Простой протокол передачи почты – именно так переводится и расшифровывается полное название SMTP. Этот стандарт широко используется для передачи электронной почты в сетях типа TCP/IP (конкретно для передачи исходящей почты используется порт TCP 25). Существует также его более «новая» разновидность – принятое в 2008 году расширение ESMTP (Extended SMTP), хотя от Simple Mail Transfer Protocol его сейчас не отделяют.

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

Большинство почтовых приложений, к числу которых относятся общеизвестные Mozilla Thunderbird, The Bat!, Microsoft Outlook, для получения писем используют либо POP, либо IMAP, о которых пойдет речь далее. При этом клиент от Майкрософт (Аутлук) для получения доступа к пользовательской учетной записи на собственном сервере может задействовать проприетарный протокол, но это уже выходит за рамки нашей темы.

POP3 (Post Office Protocol Version 3)

Протокол почтового отделения третьей версии (перевод с англ.) – это стандарт прикладного уровня, который используется специализированными программами-клиентами для получения электронной корреспонденции с удаленного сервера посредством того же типа соединения, что и в случае с SMTP – TCP/IP. Непосредственно в своей работе POP3 задействует порт под номером 110, однако в случае с SSL/TLS-соединением используется 995.

Как уже было сказано выше, именно этот почтовый протокол (как и следующий представитель нашего списка) наиболее часто применяется для непосредственного извлечения почты. Не в последнюю очередь это обосновано тем фактом, что POP3, наряду с IMAP, не только поддерживается большинством специализированных программ-почтовиков, но и используется лидирующими поставщиками соответствующих услуг – Gmail, Yahoo!, Hotmail и т.д.

Примечание: Стандартом в сфере является именно третья версия данного протокола. Предшествующие ей первая и вторая (POP, POP2 соответственно) на сегодняшний день считаются морально устаревшими.

IMAP (Internet Message Access Protocol)

Это – протокол прикладного уровня, используемый для доступа к электронной корреспонденции. Как и рассмотренные нами выше стандарты, IMAP основан на транспортном протоколе TCP, а для выполнения возлагаемых на него задач используется порт 143 (или 993 для соединений типа SSL/TLS).

Собственно, именно Internet Message Access Protocol предоставляет наиболее широкие возможности по работе с письмами и непосредственно почтовыми ящиками, размещенными на центральном сервере. Приложение-клиент, использующее для своей работы данный протокол, имеет полный доступ к электронной корреспонденции так, как будто она хранится не на сервере, а на компьютере пользователя.

IMAP позволяет выполнять все необходимые действия с письмами и ящиком (ящиками) непосредственно на ПК без необходимости постоянной отправки на сервер прикрепленных файлов и текстового содержимого и обратного их получения. Рассмотренный выше POP3, как мы уже обозначили, работает несколько иначе, «подтягивая» необходимые данные при подключении.

Как было сказано в самом начале статьи, HTTP – это протокол, который не предназначен для связи по электронной почте. При этом он может использоваться для доступа к почтовому ящику, составления (но не отправки) и получения электронных писем. То есть он выполняет лишь часть функций, характерных для рассмотренных выше почтовых стандартов. И все же, даже при этом его нередко называют веб-почтой. Возможно, определенную роль в этом сыграл некогда популярный сервис Hotmail, в котором используется именно HTTP.

Выбор протокола электронной почты

Итак, ознакомившись с тем, что представляет собой каждый из существующих почтовых протоколов, мы можем смело переходить к непосредственному выбору наиболее подходящего. HTTP, в силу обозначенных выше причин, интереса в данном контексте не представляет, а SMTP ориентирован на решение задач, отличных от тех, которые выдвигает перед собой рядовой пользователь. Следовательно, когда речь заходит о настройке и обеспечении корректной работы почтового клиента, выбирать следует между POP3 и IMAP.

Internet Message Access Protocol (IMAP)

В том случае, если вы желаете иметь оперативный доступ ко всей, даже не самой актуальной электронной корреспонденции, настоятельно рекомендуем остановить свой выбор на IMAP. К достоинствам данного протокола можно причислить налаженную синхронизацию, позволяющую работать с почтой на разных устройствах – как одновременно, так и в порядке очереди, благодаря чему необходимые письма всегда будут под рукой. Основной же недостаток Internet Message Access Protocol вытекает из особенностей его функционирования и заключается в сравнительно быстром заполнении дискового пространства.

Есть у IMAP и другие, не менее важные достоинства – он позволяет упорядочивать письма в программе-почтовике в иерархическом порядке, создавать отдельные директории и помещать сообщения туда, то есть выполнять их сортировку. Благодаря этому можно довольно легко организовать эффективную и комфортную работу с электронной корреспонденцией. Однако из столь полезной функции вытекает еще один недостаток – наряду с потреблением свободного места на диске, оказывается повышенная нагрузка на процессор и оперативную память. К счастью, это заметно только в процессе синхронизации, причем исключительно на маломощных устройствах.

Post Office Protocol 3 (POP3)

POP3 подойдет для настройки почтового клиента в том случае, если для вас первостепенную роль играет наличие свободного места на сервере (накопителе) и высокая скорость работы. При этом важно понимать следующее: останавливая свой выбор на этом протоколе, вы отказываете себе в синхронизации между устройствами. То есть, если вы получили, например, три письма на устройство №1 и отметили их как прочитанные, то на устройстве №2, тоже работающем по Post Office Protocol 3, они не будут отмечены таковыми.

Достоинства POP3 состоят не только в экономии дискового пространства, но и в отсутствии хотя бы мало-мальски заметной нагрузки на ЦПУ и ОЗУ. Данный протокол, независимо от качества интернет-соединения, позволяет загружать электронные письма целиком, то есть со всем текстовым содержимым и вложениями. Да, это происходит только при подключении, но вот более функциональный IMAP, при условии ограниченного трафика или низкой скорости, загрузит сообщения лишь частично, а то и вовсе покажет только их заголовки, а большую часть содержимого оставит на сервере «до лучших времен».

Заключение

В этой статье мы постарались дать максимально развернутый и понятный ответ на вопрос, что же такое протокол электронной почты. Несмотря на то, что всего их существует четыре, интерес для рядового пользователя представляют лишь два – IMAP и POP3. Первый заинтересует тех, кто привык пользоваться почтой с разных устройств, иметь быстрый доступ абсолютно ко всем (или необходимым) письмам, упорядочивать их и организовывать. Второй же является более узконаправленным – значительно более быстрым в работе, но не позволяющим организовывать ее сразу на нескольких устройствах.

Что такое протокол электронной почты

Электронная почта (англ. email, e-mail , от англ. electronic mail ) — технология и предоставляемые ею услуги по пересылке и получению электронных сообщений (называемых «письма» или «электронные письма») по распределённой (в том числе глобальной) компьютерной сети. (ВикипедиЯ)

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

Достоинствами электронной почты являются: легко воспринимаемые и запоминаемые человеком адреса вида имя_пользователя@имя_домена (например somebody@example.com); возможность передачи как простого текста, так и форматированного, а также произвольных файлов; независимость серверов (в общем случае они обращаются друг к другу непосредственно); достаточно высокая надёжность доставки сообщения; простота использования человеком и программами.

Недостатки электронной почты: наличие такого явления, как спам (массовые рекламные и вирусные рассылки); теоретическая невозможность гарантированной доставки конкретного письма; возможные задержки доставки сообщения (до нескольких суток); ограничения на размер одного сообщения и на общий размер сообщений в почтовом ящике (персональные для пользователей).

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

Согласно отчету исследовательской компании comScore (февраль 2012 года), самыми популярными сервисами электронной почты в мире по размеру суточной аудитории на январь 2012 г. являются:

  • Hotmail, принадлежащая Microsoft,
  • Yahoo,
  • Gmail.com,
  • Mail.ru (12,1 млн)
  • AOL (10,6 млн)
  • QQ Mail (10,2 млн),
  • Mail 163 (5,9 млн человек в сутки),
  • «Почта Яндекса», (в отличие от данных ComScore (3,9 млн), по подсчетам TNS в январе 2012 г. среднесуточная аудитория «Яндекс.Почты» составляла 5,1 млн.)
  • Orange Mail, принадлежащая France Telecom и
  • 126.com.

Mail.ru остается единственным в пятерке лидеров сервисом, не предоставляющим пользователям возможности обращаться к почтовому ящику с помощью протокола IMAP4.

Основными почтовыми протоколами в Интернете (не считая частных протоколов, шлюзуемых или туннелируемых через Интернет) являются SMTP (Simple Mail Transport Protocol), POP (Post Office Protocol) и IMAP (Internet Mail Access Protocol).

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

UNIX-хосты сделали самым популярным SMTP. Широко используемыми SMTP-серверами являются Sendmail, Smail, MMDF и PP. Самым популярным SMTP-сервером в Unixе является Sendmail, написанный Брайаном Эллманом. Он поддерживает создание очередей сообщений, переписывание заголовков писем, алиасы, списки рассылки и т.д. Обычно он конфигурируется так, что должен работать как привилегированный процесс. Это означает, что если его защиту можно будет обойти каким-нибудь способом, атакующий сможет нанести вред, далеко превышающий удаление электронных писем.

POP — это самый популярный протокол приема электронной почты. POP-сервер позволяет POP-клиенту загрузить письма, которые были получены им от другого почтового сервера. Клиенты могут загрузить все сообщения или только те, которые они еще не читали. Он не поддерживает удаление сообщений перед загрузкой на основе атрибутов сообщения, таких как адрес отправителя или получателя. POP версии 2 поддерживает аутентификацию пользователя с помощью пароля, но пароль передается серверу в открытом (незашифрованном) виде.

POP версии 3 предоставляет дополнительный метод аутентификации, называемый APOP, который прячет пароль. Некоторые реализации POP могут использовать Kerberos для аутентификации.

Читайте также  Чем открыть формат MXF

IMAP — это самый новый, и поэтому менее популярный протокол чтения электронной почты.

IMAP4rev1 поддерживает операции создания, удаления, переименования почтовых ящиков; проверки поступления новых писем; оперативное удаление писем; установку и сброс флагов операций; разбор заголовков в формате RFC-822 и MIME-IMB; поиск среди писем; выборочное чтение писем.

IMAP более удобен для чтения почты в путешествии, чем POP, так как сообщения могут быть оставлены на сервере, что избавляет от необходимости синхронизировать списки прочитанных писем на локальном хосте и на сервере.

MIME — это сокращение для Многоцелевых расширений интернетовской почты (Multipurpose Internet Mail Extensions). Как сказано в RFC 2045, он переопределяет формат сообщений электронной почты, чтобы позволить:

    Передачу текстов в кодировке, отличной от US-ASCII,

Он может использоваться для поддержки таких средств безопасности, как цифровые подписи и шифрованные сообщения. Он также позволяет посылать по почте выполняемые файлы, зараженные вирусами, или письма с РПС.

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

Угрозы, связанные с электронной почтой

Основные протоколы передачи почты(SMTP, POP3,IMAP4) обычно не осуществляют надежной аутентификации, что позволяет легко создать письма с фальшивыми адресами. Ни один из этих протоколов не использует криптографию, которая могла бы гарантировать конфиденциальность электронных писем. Хотя существуют расширения этих протоколов, решение использовать их должно быть явно принято как составная часть политики администрации почтового сервера. Некоторые такие расширения используют уже имеющиеся средства аутентификации, а другие позволяют клиенту и серверу согласовать тип аутентификации, который будет использоваться в данном соединении.

Фальшивые адреса отправителя

Адресу отправителя в электронной почте Интернета нельзя доверять, так как отправитель может указать

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

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

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

Типовые варианты выхода почтового сервера из строя:

  • Почтовые сообщения принимаются до тех пор, пока диск, где они размещаются. Не переполнится. Следующие письма не принимаются. Если этот диск также основной системный диск, то вся система может аварийно завершиться.
  • Входная очередь переполняется сообщениями, которые нужно обработать и передать дальше, до тех пор, пока не будет достигнут предельный размер очереди. Последующие сообщения не попадут в очередь.
  • У некоторых почтовых систем можно установить максимальное число почтовых сообщений или максимальный общий размер сообщений, которые пользователь может принять за один раз. Последующие сообщения будут отвергнуты или уничтожены.
  • Может быть превышена квота диска для данного пользователя. Это помешает принять последующие письма, и может помешать ему выполнять другие действия. Восстановление может оказаться трудным для пользователя, так как ему может понадобиться дополнительное дисковое пространство для удаления писем.
  • Большой размер почтового ящика может сделать трудным для системного администратора получение системных предупреждений и сообщений об ошибках
  • Посылка почтовых бомб в список рассылки может привести к тому, что его члены могут отписаться от списка.

Угрожающие письма

Так как любой человек в мире может послать вам письмо, может оказаться трудным заставить его прекратить

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

Одним часто используемым средством защиты, применяемым некоторыми пользователями Usenet, является конфигурирование своих клиентов для чтения новостей таким образом, что в поле Reply-To (обратный адрес) письма, посылаемого ими в группу новостей, помещается фальшивый адрес, а реальный адрес помещается в сигнатуре или в теле сообщения. Таким образом программы сбора почтовых адресов, собирающие адреса из поля Reply-To, окажутся бесполезными.

Защита от фальшивых адресов

От этого можно защититься с помощью использования шифрования для присоединения к письмам

Защита от перехвата

От него можно защититься с помощью шифрования содержимого сообщения или канала, по которому он передается. Если канал связи зашифрован, то системные администраторы на обоих его концах все-таки могут читать или изменять сообщения. Было предложено много различных схем шифрования электронной почты, но ни одна из них не стала массовой. Одним из самых популярных приложений является PGP. В прошлом использование PGP было проблематичным, так как в ней использовалось шифрование, подпадавшее под запрет на экспорт из США. Коммерческая версия PGP включает в себя плагины для нескольких популярных почтовых программ, что делает ее особенно удобной для включения в письмо электронной подписи и шифрования письма клиентом. Последние версии PGP используют лицензированную версию алгоритма шифрования с открытыми ключами RSA.

Протоколы электронной почты: SMTP, POP, IMAP

Доставка почты

Доставка почты от отправителя к получателю проходит через три стадии ( рис. 14.12.).

Первая стадия

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

Вторая стадия

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

Третья стадия

На третьей ступени удаленный агент пользователя применяет протокол POP3 или IMAP4 (оба протокола обсуждаются в следующих секциях), чтобы запустить почтовый ящик и получить почту.

Протоколы почтового доступа

Первая и вторая стадия доставки почты используют SMTP . Однако SMTP не включен в третью стадию, потому что STMP «проталкивает» сообщение от отправителя к получателю, даже если получатель этого не желает. Работу SMTP начинает отправитель, а не получатель. С другой стороны, третья стадия нуждается в протоколе, который «притягивает» сообщение, и эта операция должна начинаться у получателя. Третья ступень использует протокол почтового доступа.

В настоящее время применяются два протокола: Post Office Protocol , Version 3 — POP3 и Internet Mail Access Protocol , Version 4 — IMAP4.

Post Office Protocol , Version 3 ( POP3 ) — протокол простой, но ограниченный функционально. Программное обеспечение клиента POP3 устанавливается в компьютере получателя; программное обеспечение POP3 -сервера устанавливается в почтовом сервере.

Почтовый доступ стартует от клиента, когда пользователю надо загрузить его электронную почту из почтового ящика в почтовый сервер. Клиент ( агент пользователя ) устанавливает с сервером порт 110 и далее посылает ему имя и пароль для доступа к почтовому ящику. Пользователь может затем перечислить и отыскать почтовые сообщения одно за другим. Рисунок 14.13. показывает пример загрузки, использующей POP3 .

POP3 имеет два режима: режим удаления и режим сохранения. В режиме удаления почта удаляется из почтового ящика после каждого запроса. В режиме сохранения почта остается в почтовом ящике после запроса. Режим удаления обычно используют, когда пользователь постоянно работает с компьютером и может сохранить и упорядочить почту после чтения и ответа. Режим сохранения применяют, когда пользователь имеет доступ к своей почте через первичный компьютер (например, переносной компьютер). Почта читается, но сохраняется в системе для дальнейшего запроса и упорядочения.

IMAP4

Другой протокол почтового доступа к сообщениям Интернета — Internet Mail Access Protocol , Version 4 (IMAP4). IMAP4 похож на POP3 , но имеет некоторые особенности: IMAP4 более мощный и более сложный.

POP3 является несовершенным по нескольким причинам. Он не позволяет пользователю организовать почту на сервере; пользователь не может иметь различные «папки». (Конечно, пользователь может организовать папки на собственном компьютере.) В дополнение к этому, POP3 не позволяет пользователю частично проверить содержание почты перед загрузкой.

IMAP4 обеспечивает следующие дополнительные функции:

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

Почта на основе WEB

Услуги электронной почты сегодня могут быть обеспечены для пользователей WEB-сайтов (Yahoo,Yandex и.т. д).

Идея такой связи проста: передача письма проходит с помощью протокола HTTP (см. следующие лекции). Передача сообщения от передающего сервера к входящему почтовому серверу проходит с помощью протокола SMTP . В конечном итоге, сообщение от входящего сервера (он же WEB- сервер ) достигает сервера пользователя Б, используя протокол HTTP . Если пользователь Б хочет получить это сообщение, он посылает запрос на свой WEB-сайт (например, YANDEX). WEB-сайт высылает форму, которая содержит запрос логина (зарегистрированного имени пользователя) и пароля, затем передает сообщение на компьютер пользователя Б в формате HTML .

Краткие итоги

  • Протокол, который поддерживает в сети TCP/IP электронную почту, называется Simple Mail Transfer Protocol (SMTP) — простой протокол почтовой передачи.
  • Клиент и сервер SMTP требуют установки специального программного обеспечения – агента пользователя ( USER Agent — UA) и агента передачи почты (Mail Transfer Agent – MTA ).
  • UA подготавливает сообщение, создает конверт и вкладывает сообщение в конверт.
  • Почтовый адрес содержит две части: локальный адрес (пользовательский почтовый ящик) и доменное имя. Форма localname@domainename.
  • Почтовый шлюз преобразует почтовый формат.
  • SMTP-сообщение может быть задержано на стороне отправителя и на стороне получателя или на промежуточных серверах.
  • Псевдоним позволяет одному пользователю иметь много электронных адресов или многим адресам пользователя иметь групповой доступ к одному и тому же адресу.
  • MTA преобразует почту при прохождении через Интернет.
  • Почта отправителя в общем случае использует UNIX для построения MTA .
  • SMTP использует команды и отклики, чтобы передавать сообщения между MTA клиента и MTA сервера.
  • Шаги для передачи почтовых сообщений:
а) установление соединения;
б) передача почтового сообщения;
в) завершение соединения.

Задачи и упражнения

  1. Приведите пример ситуации, в которой расширитель от «одного ко многим» мог бы быть полезен. Повторите то же самое для расширителя от «многих к одному».
  2. Нужны ли сразу две команды HELLO и FROM TO? Обоснуйте ответ «да» или «нет».
  3. Почему нужно установить соединение для передачи письма, если TCP уже установил соединение?
  4. Покажите установление соединения от aaa@bbb.xxx.com к bbb@yyy.com .
  5. Покажите фазу передачи сообщения от aaa@bbb.xxx.com к bbb@yyy.com . Сообщение — «Будьте здоровы».
  6. Покажите фазу завершения соединения от aaa@bbb.xxx.com к bbb@yyy.com .
  7. Пользователь aaa@xxx.com посылает сообщение к пользователю к bbb@yyy.com , который пересылает его к ccc@zzz.com . Покажите SMTP-команды и отклики.
  8. Пользователь aaa@xxx.com посылает сообщение к пользователю к bbb@yyy.com , который отвечает ему. Покажите SMTP-команды и отклики.
  9. Если с помощью SMTP посылается сообщение из одной строки, сколько строк займут команды и отклики?
  10. Передатчик посылает неформатированный текст. Покажите заголовок MIME.
  11. Передатчик посылает JPEG-сообщение. Покажите заголовок MIME.
  12. Сообщение имеет 1000 байт в коде (не-ASCII), закодировано с помощью Base 64 . Сколько байт в кодированном сообщении? Сколько избыточных байт? Каково отношение избыточных байт к общему числу байт сообщения?
  13. Сообщение 1000 байт закодировано приспособленным к печати кодом. Сообщение содержит 90 процентов ASCII и 10 процентов не-ASCII-символов. Сколько байт в кодированном сообщении? Сколько избыточных байт? Каково отношение избыточных байт к общему числу байт сообщения?
  14. Сравните результаты упражнений12 и 13. Как увеличится эффективность, если сообщение содержит ASCII и не-ASCII-символы?
  15. Закодируйте следующее сообщение в Base 64 :
Читайте также  Установка Ubuntu на VirtualBox

Дополнительный материал для прохождения тестирования к лекции, Вы можете скачать здесь.

Протоколы Интернета и электронной почты

C# и .NET — Сетевое программирование — Протоколы Интернета и электронной почты

После обсуждения базовых протоколов мы можем подняться на более высокий уровень. Протоколы HTTP и FTP охватывают уровни 5—7 модели OSI.

FTP — File Transfer Protocol

FTP используется для копирования файлов с сервера и на сервер, а также для получения списка файлов и каталогов на сервере. FTP — это протокол прикладного уровня, базирующийся на TCP. Команды FTP включаются в блок данных TCP-сообщения.

Модель приложения с FTP-сервером и клиентом проиллюстрирована на следующем рисунке. Приложение-клиент представляет пользовательский интерфейс и создает FTP-запрос в соответствии с запросом пользователя и спецификацией FTP. FTP-команда посылается приложению-серверу через TCP/IP, и интерпретатор на сервере соответственно интерпретирует FTP-команду. В зависимости от FTP-команды в FTP-ответе клиенту возвращается с сервера список файлов или конкретный файл:

Протокол FTP имеет следующие характеристики:

Надежная передача данных через TCP

Анонимный доступ или аутентификация пользователя по имени и паролю

Файлы отправляются в ASCII-коде в форме, поддерживаемой целевой платформой, или как неизмененные двоичные данные.

FTP-команды можно сгруппировать в следующие категории:

Команды контроля доступа

В FTP-командах контроля доступа указывается имя пользователя (USER) и пароль (PASS), установки могут изменяться (REIN), и соединение может быть закончено (QUIT).

Команды параметров передачи

FTP-передачу можно конфигурировать с помощью команд параметров передачи. Эти команды поддерживают изменение ASCII-кода на двоичный код, сжатие данных, изменение портов для отправки.

Команды FTP-сервиса

Копирование файлов с сервера (RETR), копирование файлов на сервер (STOR), удаление файлов (DELE), переименование файлов (RNTO), создание каталогов (MKD) и запрос списка файлов (LIST) — вот некоторые команды FTP-сервиса.

Протокол FTP определен в RFC 959.

FTP-клиенты

Чтобы понять суть протокола FTP, лучше всего поработать из командной строки с утилитой ftp, как показано на следующем рисунке. Программа ftp работает через приглашение ftp, позволяющее вводить команды. Эти команды отличаются от команд протокола FTP — вы можете увидеть их все, если введете команду ?. При введении команды open ftp.microsoft.com создается соединение с хостом ftp.microsoft.com.

Установка имени пользователя anonymous означает пользователя-гостя. Ответ 230 от сервера указывает, что соединение установлено и можно командой dir получить список файлов на сервере. Получив команду dir, программа ftp отправляет на сервер команду FTP LIST. Команда cd может применяться для смены директории на сервере, а команда get копирует файл клиенту, отправляя команду FTP RETR. Для закрытия соединения утилита ftp использует команду bye:

HTTP — Hypertext Transfer Protocol

HTTP — основной протокол, используемый Web-приложениями. Как и FTP, HTTP является надежным протоколом, и надежность его достигается благодаря использованию TCP. Как и FTP, HTTP также используется для передачи файлов через сеть. Но он в отличие от FTP обладает такими средствами, как кэширование, идентификация приложения-клиента, поддержка разных дополнений в формате MIME и т. д. Эти средства устанавливаются в заголовке HTTP.

Для демонстрации работы, выполняемой браузером Интернета, когда он запрашивает файлы из Web-сервера, мы можем имитировать браузер приложением telnet. Для запуска этого приложения введите telnet в диалоговом окне Run меню Start, и вы увидите приглашение Microsoft Telnet. Введите set local_echo (set localecho для Windows XP), чтобы введенные программы отображались локально. Если не устанавливать эту опцию, команды, которые мы отправляем на сервер, не будут отображаться приложением telnet.

Теперь можно соединиться с Web-cepвeром командой open. Команда open msdn.microsoft.com 80 создает TCP-соединение с портом 80 сервера на msdn.microsoft.com. Приложение telnet использует по умолчанию порт 23, следовательно, надо указать порт для HTTP-запроса. По умолчанию HTTP-сервисы предоставляются портом 80 Web-сервера.

Как только соединение инициировано, можно послать на Web-cepвep HTTP-запрос. Простой запрос состоит из строки запроса, которую нужно завершить двумя нажатиями на клавишу Enter (две последовательности CR-LF). Такая строка запроса может выглядеть, как: GET /default.asp HTTP/1.0. Сервер возвращает HTTP-ответ, содержащий информацию о статусе.

Как видно, элементарный HTTP-запрос состоит лишь из одной строки. Однако полный HTTP-запрос будет состоять из строки запроса с дополнительными заголовками и данными.

В строке запроса можно указывать такие HTTP-команды, как GET, HEAD и POST. И GET, и POST запрашивают данные от сервера. Команда GET включает параметры запроса в URL, а в команде POST параметры находятся в блоке данных. Команда HEAD означает, что мы просто хотим узнать, когда был изменен запрашиваемый файл, чтобы проверить, находится ли в кэше новейшая его версия.

За строкой запроса могут следовать общие заголовки, заголовки запроса и заголовок сущности. Информация, помещаемая в заголовки, позволяет клиенту сообщать серверу об используемом браузере и предпочтительных языках, отправлять файл cookie или запрашивать только изменившиеся файлы. В примере с telnet мы уже видели некоторую информацию из заголовков, возвращенную сервером: дату, версию сервера, длину содержания, тип содержания и признаки управления кэшем.

HTTPS — HTTP поверх SSL (Secure Socket Layer)

Когда требуется обменяться с Web-сервером конфиденциальной информацией, можно воспользоваться протоколом HTTPS. HTTPS — это расширение протокола HTTP, и поэтому к нему применимы все принципы, которые обсуждались в предыдущем разделе. Однако в его основе лежит другой механизм, поскольку HTTPS использует SSL, первоначально разработанный компанией Netscape. SSL располагается поверх TCP и защищает сетевой обмен, используя принцип открытого/секретного ключа для обмена секретными симметричными ключами и симметричный ключ для шифрования сообщений.

Для поддержки HTTPS Web-сервер должен установить сертификат, чтобы его можно было идентифицировать. По умолчанию для HTTPS-запросов используется порт 443.

SMTP — Simple Mail Transfer Protocol

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

Служба SMTP составляет часть установки Internet Information Server в Windows 2000 и Windows XP.

Стандарт протокола SMTP определен в RFC 821; формат сообщений SMTP определен в RFC 822.

POP3 — Post Office Protocol

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

Windows .NET Server включает сервер POP3. Протокол POP3 определен в RFC 1081.

IMAP — Internet Message Access Protocol

Как и РОРЗ, протокол IMAP предназначен для доступа к почте на почтовом сервере. Аналогично клиентам POP3 клиент IMAP может работать в автономном режиме, в котором почта обрабатывается на локальной машине. По сравнению с клиентами POP3 клиенты IMAP обладают более широкими возможностями в оперативном режиме, например, они могут извлекать только заголовки или только основные части указанных почтовых сообщений, искать конкретные сообщения на сервере и устанавливать флаги, например флаг «ответ отправлен». По существу, IMAP позволяет клиенту обрабатывать удаленный почтовый ящик, как если бы он был локальным.

Протокол IMAP определен в RFC 1730.

NNTP — Network News Transfer Protocol

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

Протокол NNTP определен в RFC 850, 977 и 1036.

Email протоколы: SMTP и POP3.

Ярким пунктом многих протоколов прикладного уровня,является то, что они простые. Протоколы, основанные на TCP используют в основном команды и ответы в текстовом формате, что делает их более удобными для пользователей, чтобы понять и программистам для реализации.

Для дальнейшей иллюстрации мы рассмотрим два протокола, которые можно использовать каждый день, чтобы отправлять и получать электронную почту: SMTP и POP3.
Простой протокол передачи почты: SMTP
Simple Mail Transfer Protocol (SMTP) является одним из самых уважаемых интернет-протоколов. Разработанный в начале 1980-х, его функции чисто и просто передают по электронной почте, а также между сетями и другими транспортными системами. Таким образом, его использование не обязательно должно быть ограничено в системах, использующих протокол TCP / IP. Любая система связи способна обрабатывать линии до 1000 7-битных ASCII символов которые могут быть использованы для выполнения сообщений по протоколу SMTP. В TCP / IP сети, однако, TCP обеспечивает транспортный механизм.
В SMTP-отправитель является клиентом, а клиент может взаимодействовать с различными серверами. Сообщения могут отправляться непосредственно от отправляющего хоста на хост-получателя, требующего отдельного соединения TCP и должны быть сделаны каждая копия каждого сообщения. Тем не менее, несколько получателей почты могут запустить свой собственный сервер SMTP.
Это наиболее характерно для назначения SMTP сообщений,сервер, который обслуживает группу пользователей, таких как интернет-домены. Сервер получает всю почту, предназначенную для пользователей, а затем позволяет им собирать, используя POP3 (Post Office Protocol версии 3) или другие почтовые протоколы. Кроме того, большинство SMTP-клиентов посылают сообщения в один «умный хост» сервер, чья работа заключается в том, чтобы передать эти сообщения для своих возможных получателей.
Транзакции SMTP начинаются тогда, когда отправитель клиент открывает TCP соединение с приемником, используя известный номер порта 25. Сервер признает связь, отправив обратно сообщение вида «220 SMTP Server Ready«. SMTP использует похожий формат ответов на FTP, который мы рассмотрели ранее. Полученный трехзначный код, программное обеспечение клиента должно ответить, если все будет ОК. Эта стаья , чтобы помочь людям, которые могли бы устранить неполадки с помощью анализа журнала транзакций. В окне «Application Protocol Ответы кодов» содержится более подробная информация о кодах сообщений ответа.
Сервер SMTP может отказать в связи, отправив обратно сообщение с ответным кодом «421 Служба недоступна». Например, SMTP сервер провайдера услуг Интернета, при условии, для своих абонентов для передачи исходящей почты может отказать в связи с хостом, чей IP-адрес указывает, что он не является абонентом ISP. Основной SMTP протокол не имеет формы контроля доступа — так, как его можно использовать для передачи сообщений и это делает его непрактичным — так что единственный путь ,в котором провайдеры могут предотвратить неподписчиков , таких как спамеров , от использования своих почтовых серверов для отправки сообщений .
Получив подтверждение правильных знаков отправителя на сервер, сервер отправляет строку «HELO имя». HELO знак на команду и имя , является именем хоста. Как мы увидим, имя хоста используется в редакции : заголовок, сервер добавляет сообщение, когда он отправляет его по своему пути. Эта информация позволяет получателю проследить путь по сообщению.
Посылающий сервер
Когда отправитель получает признание «250 OK» он может начать отправку сообщений. Протокол чрезвычайно прост. Всё что отправители должны сделать, это сказать, какие из сообщений должны поставлять содержимое сообщения.
Сообщение задаётся с помощью команды «MAIL FROM: ». Эта команда также сообщает получателю, что он собирается получать новые сообщения, так что он знает, чтобы очистить свой список получателей. Адрес в угловых скобках является обратным путём для сообщения. Обратный путь это адрес, такой ,что любое сообщение об ошибке будет сгенерировано, если сообщение не доставлено или не отправляется.
Оно действительно на обратном пути и является недействительным, как в «MAIL FROM: <>». Это обычно используется при отправки отчета об ошибке. Нулевой путь возврата означает, что отчет об ошибке, не требуется. Его основной целью является не попасть в ситуацию, в которой сообщения невозможно доставить трансферу туда и обратно, потому что оба адреса отправителя и получателя недоступны.
Получатели сообщений определяется с помощью команды «RCPT TO: ». Каждый адрес, заключен в угловые скобки. Сообщение может иметь много получателей, и RCPT TO: команда отправляется для каждого из них. Эти RCPT TO: команды, не все в заголовке сообщения, которые прибывают к месту назначения. В случае скрытых копий сообщений или списка адресов серверов получателя не будут отображаться в заголовке вообще.
Каждый получатель признается с ответом «250 OK». Получатель также может быть отклонён при использовании ответа с кодом 550 ответа. Это зависит от того, как сервер был настроен. Удаленный доступ к серверам провайдера SMTP может принять каждую команду RCPT TO:, даже если указанный адрес, является недействительным, так как сервер не знает, что адрес неверный, пока он не сделаеь поиск DNS на нём. Тем не менее, почтовый сервер, предназначенный для приема сообщений для локальных пользователей или конкретного домена будет отвергать почту для адресов, которые не находятся в этой области.
Могут быть получены и другие ответы в ответ на RCPT TO: сообщения, что сервер SMTP был полезным. Если адрес неправильный, но сервер не знает правильный адрес он может ответить «251 Пользователь не местный; направит » или «551 Пользователь не местный, попробуйте ». Обратите внимание на различные коды ответов означающих что , сервер направляет сообщение или нет. Эти ответы не являются общими, и почтовый клиент может просто отправить ответ 551 , как ошибку, а не пытаться анализировать альтернативные адреса из текста ответа.
Для полноты картины следует отметить, что команды RCPT TO: могут задавать маршруты, а не просто адреса. Маршрут будет выражаться в виде «RCPT TO: ».
Текст сообщений.
После того как все получатели были указаны, всё, что остается сделать отправителю отправить сообщение. Сначала он отправляет команду «DATA», а затем ожидает ответа типа: «354 Start вход почты, с конца .». Сообщение будет отправлено в виде последовательности строк текста. Но не будет получено подтверждений для каждой строки, хотя отправитель должен следить за ответом,который указывает на ошибки.
В конце сообщения, как указано в ответе указанном выше, период (точка) на линии своих собственных. Таким образом, одной из самых простых, но самых важных вещей,это то что почтовый клиент должен сделать — убедиться, что строка, содержащая один период не появляется в самом тексте. В конце сообщения признается с ответом «250 OK». Стоит отметить, что SMTP ни в малейшей степени не заинтересован в содержании сообщения. Это может быть все что угодно, хотя, строго говоря, сообщения не должны содержать любые символы с ASCII значениями в диапазоне от 128 до 255, а строки текста не должны превышать 1000 знаков. Так же не требуется, чтобы заголовки адреса отправителя и получателя, которые использовали команды SMTP, что делает их лёгкими для сообщений , по всей видимости, пришли от кого-то другого, чем истинный отправитель.

Читайте также  Удаляем контакты из адресной книги Viber

Продолжение статьи следует,следите за публикациями .

Почтовая кухня #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 # Здесь сообщаем, что начинаем передачу данных.
Ответ:

354 Start mail input; end with .

Т.е. сервер будет считывать введенные в консоли данные до того момента, пока мы не нажмем Энтер точка Энтер (после этой комбинации письмо сразу отправляется)

Электронное письмо состоит из следующих частей:

  • Заголовков SMTP-протокола (то, что мы вводим при MAIL FROM: и RCPT TO: плюс некоторая служебная информация)
  • Заголовков письма. (отправитель, обратный адрес, адресат, отметки о спам-проверках, тема письма, MIME-тип, кодировка и т.п.)
  • Тела письма. (отделяется от заголовков пустой строкой, обычный ASCII текст либо соответствующий mime типу набор данных)

Начинаем вводить заголовки письма. Можно вставить и файл, закодированный в base64 но это уже немного выходит за рамки статьи:
From: Vasia Pupkin #Заголовок для поля От
To: Billy G #Заголовок для поля Кому
Subject: Hello Billy # Заголовок для темы сообщения
(Кстати, хочу заметить, что MAIL FROM: vasiapupkin@ya.ru и From: Вася Пупкин вовсе не обязаны совпадать! т.е. можно отправить почту с яндекса а притвориться, что она отправлена с mail.ru например… Что поделать — протоколу уже почти 30 лет. Хотя это не очень-то сложно вычислить…)

Два раза Энтер, затем вводим сам текст письма.
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.

Это все. Как видно, протокол довольно простой, основные сложности — в формировании самого тела письма.

Резюмируя:
telnet smtp.yandex.ru 2025
EHLO 91.198.212.5
AUTH LOGIN
ВАШ_ЛОГИН_ПОЧТЫ_В_BASE_64
ВАШ_ПАРОЛЬ_ПОЧТЫ_В_BASE_64
MAIL FROM: vasiapupkin@ya.ru
RCPT TO: billy@microsoft.com
DATA
From: Вася Пупкин
To: Билли Г
Subject: Hello Billy
Hello, Billy! You will be die tomorrow!
Энтер . Энтер
QUIT

Конечно, здесь не приведена информация по отправке почты в кодировках текста, отличных от ASCII, не написано про вложенные файлы и MIME но если вам нужны подробности, вот несколько ссылок:
Электронная_почта Wiki
SMTP Wiki
MIME Wiki
rfc5321

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

Удачных экспериментов!