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

В чем заключается функция протокола smtp. Исходящая почта SMTP-сервера

В чем заключается функция протокола smtp. Исходящая почта SMTP-сервера

В этой статье рассмотрены наиболее часто используемые протоколы электронной почты в Интернете - POP3, IMAP и SMTP. Каждый из них имеет определенную функцию и способ работы. В содержании статьи разъясняется, какая конфигурация лучше всего подходит для конкретных потребностей пользователя при использовании e-mail-клиента. А также раскрывается ответ на вопрос о том, какой протокол поддерживает электронную почту e-mail.

Что такое POP3?

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

По умолчанию протокол POP3 работает на двух портах:

    порт 110 — это незашифрованный порт POP3;

    порт 995 — его нужно использовать, если вы хотите безопасно подключиться к POP3.

Что такое IMAP?

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

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

Протокол IMAP работает на двух портах:

    порт 143 - это незашифрованный порт IMAP по умолчанию;

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

Что такое SMTP?

Протокол - это стандартный протокол для отправки электронной почты через Интернет.

SMTP работает в трех портах:

    порт 25 — это незашифрованный по умолчанию;

    порт 2525 — он открывается на всех серверах SiteGround, если порт 25 фильтруется (например, вашим интернет-провайдером), и вы хотите отправлять незашифрованные электронные письма с помощью SMTP;

    порт 465 — он используется, если вы хотите безопасно отправлять сообщения с помощью SMTP.

По каким протоколам происходит обмен электронной почтой? Понятия и термины

Термин «сервер электронной почты» относится к двум серверам, необходимым для отправки и получения писем, то есть к SMTP и POP.

Сервер входящей почты — это сервер, связанный с вашей учетной записью адреса электронной почты. Для нее не может быть более одного входящего почтового сервера. Для доступа к входящим сообщениям необходим почтовый клиент — программа, которая может получать электронную почту из учетной записи, позволяя пользователю читать, пересылать, удалять и отвечать на сообщения. В зависимости от вашего сервера, вы можете использовать выделенный почтовый клиент (например, Outlook Express) или веб-браузер. Так, Internet Explorer применяют для доступа к учетным записям на основе электронной почты. Письма хранятся на сервере входящей почты до его загрузки. После того, как вы загрузили свою почту с почтового сервера, сделать повторно это будет нельзя. Чтобы успешно загрузить данные, необходимо ввести правильные настройки в электронной почтовой программе. Большинство входящих почтовых серверов используют один из следующих протоколов: IMAP, POP3, HTTP.

Исходящий почтовый сервер (SMTP)

Это сервер, используемый только для отправки писем (для переноса их из вашей почтовой клиентской программы в приемник). Большинство исходящих почтовых серверов используют Protocol) для отправки корреспонденции. В зависимости от ваших сетевых параметров сервер исходящей почты может принадлежать вашему интернет-провайдеру или серверу, на котором вы настраиваете свою учетную запись. В качестве альтернативы вы можете использовать SMTP-сервер на основе подписки, который позволит вам отправлять электронные письма с любой учетной записи. Из-за проблем со спамом большинство исходящих почтовых серверов не позволяют отправлять электронные письма, если вы не вошли в свою сеть. Сервер с открытым ретранслятором позволит вам использовать его для отправки электронных писем, независимо от того, принадлежите ли вы к его сетевой группе или нет.

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

Для сетей порт означает конечную точку логического соединения. Номер порта определяет его тип. Ниже перечислены порты электронной почты по умолчанию:

    POP3 - порт 110;

    IMAP - порт 143;

    SMTP - порт 25;

    HTTP - порт 80;

    безопасный SMTP (SSMTP) - порт 465;

    безопасный IMAP (IMAP4-SSL) - порт 585;

    IMAP4 через SSL (IMAPS) - порт 993;

    Secure POP3 (SSL-POP) - порт 995.

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

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

Протокол IMAP

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

Протокол POP3

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

При использовании протокола POP все ваши сообщения электронной почты будут загружены с почтового сервера на локальный компьютер. Вы также можете оставить копии своих электронных писем на сервере. Преимущество заключается в том, что после загрузки ваших сообщений вы можете отключить интернет-соединение и прочитать свой e-mail на досуге, не прибегая к дополнительным расходам на связь. С другой стороны, с помощью этого протокола вы получаете и загружаете много нежелательных сообщений (включая спам или вирусы).

Протокол SMTP

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

Протоколы HTTP

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

Управляемые передачи файлов и сетевые решения

Ваша способность отправлять и получать электронную почту в основном обусловлена ​тремя протоколами TCP. Ими являются SMTP, IMAP и POP3.

SMTP

Начнем с SMTP, потому что его основная функция отличается от двух других. Протокол SMTP, или Simple Mail Transfer Protocol, в основном используется для отправки электронной почты от почтового клиента (например, Microsoft Outlook, Thunderbird или Apple Mail) на сервер электронной почты. Он также используется для ретрансляции или пересылки почтовых сообщений с одного почтового сервера на другой. Это необходимо в случае, если у отправителя и получателя есть разные поставщики услуг электронной почты.

SMTP, который указан в RFC 5321, использует порт 25 по умолчанию. Он также может использовать порт 587 и порт 465. Последний, который был представлен как порт выбора для безопасного SMTP (a.k.a. SMTPS), считается устаревшим. Но на самом деле он по-прежнему используется несколькими поставщиками почтовых услуг.

POP3

Протокол почтового отделения, или POP, используется для извлечения сообщений электронной почты с Последняя версия, которая широко используется, - это версия 3, отсюда и термин «POP3».

POP, версия 3, указанная в RFC 1939, поддерживает расширения и несколько механизмов аутентификации. Функции проверки подлинности необходимы, чтобы злоумышленники не получали доступ к сообщениям пользователей.

Клиент POP3 получает электронную почту следующим образом:

    подключается к почтовому серверу на порту 110 (или 995 для соединений SSL/TLS);

    удаляет копии сообщений, хранящихся на сервере;

    отключается от сервера.

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

    IMAP

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

    Логика работы (настройки imap4):

    • подключается к почтовому серверу через порт 143 (или 993 для соединений SSL / TLS);

      извлекает сообщения электронной почты;

      служит для подключения до закрытия приложения почтового клиента и загрузки сообщений по требованию.

    Обратите внимание, что сообщения не удаляются на сервере. Это может иметь серьезные последствия. Спецификации IMAP можно найти в RFC 3501.

    Выбор между IMAP и POP3

    Поскольку основная функция SMTP принципиально отлична, дилемма выбора лучшего протокола обычно включает только IMAP и POP3.

    Если для вас важно место для хранения на сервере, то выбирайте POP3. Сервер с ограниченным объемом памяти является одним из основных факторов, которые могут заставить вас поддержать POP3. Поскольку IMAP оставляет сообщения на сервере, он может потреблять пространство памяти быстрее, чем POP3.

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

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

    Например, если вы читаете сообщения A, B и C, то хотите, чтобы они также были помечены как «прочитанные» на других устройствах. Если вы удалили письма B и C, то захотите, чтобы те же сообщения удалялись из вашего почтового ящика на всех гаджетах. Все эти синхронизации могут быть достигнуты только в том случае, если вы используете IMAP.

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

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

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

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

    Однако если все сообщения на сервере должны загружаться каждый раз, то POP3 будет работать гораздо быстрее.

    Как вы можете увидеть, каждый из описываемых протоколов имеет свои преимущества и недостатки. Вам решать, какие функции или возможности важнее.

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

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

    Спам-брандмауэры с SMTP, IMAP и POP3

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

    Брандмауэры SMTP прозрачны для конечных пользователей; для клиентов нет изменений конфигурации. Пользователи по-прежнему получают и отправляют почтовые сообщения на сервер электронной почты. Так, Exchange или Dominos должны настраивать маршрутизацию сообщений на брандмауэр на основе прокси-сервера при отправке электронной почты, а также обеспечивать возможность отправки писем с брандмауэра.

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

Набор разнообразных протоколов, при помощи которых взаимодействуют между собой прикладные программы.

Протоколы прикладного уровня HTTP , FTP , SMTP , IMAP , POP 3, TELNET .

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

HTTP (Hyper Text Transfer Protocol)- протокол передачи гипертекста, работает на 80 порту. Исп-ся в WWW для передачи гипертекстовых HTML-страниц. При работе по этому протоколу, каждый элемент HTML - страницы загружается отдельно, причем соединение между загрузками прерывается и никакой инф-ии о соединении не сохраняется. Это сделано для того, чтобы пользователя Web- страниц каждый получал "по чуть-чуть, в порядке общей очереди". В противном случае могла бы создаться ситуация, когда один человек качает страницу с большим количеством рисунков высокого разрешения, а все остальные ждут пока он это закончит.

FTP (File Transfer Protocol.) - протокол передачи файлов, работает на 20 и 21 порту. Предназначен для копирование файлов между компами. Полностью занимает канал, пока не будет получен файл, сохраняет информацию о соединении. При сбое возможна докачка с того места, где произошел сбой.

SMTP , IMAP -4, РОРЗ - почтовые протоколы (электронная почта). SMTP - 25 порт, IMAP-4 - 143 порт, РОРЗ - 110 порт. Отличие: SMTP - протокол расчитанный на доставку почты до конкретного получателя, РОРЗ и IMAP-4 - протоколы взаимодействия пользователя со своим почтовым ящиком на сервере. При использовании SMTP предполагается, что почтовый адрес указывает на комп конечного получателя, и на этом компе запущена специальная прога, которая принимает и обрабатывает почту. Однако чаще всего бывает, что почта не доставляется на комп каждого отдельного пользователя, а обрабатывается централизованно, на отдельном почтовом сервере. В таком случае, каждый пользователь имеет на почтовом сервере свой почтовый ящик. Почта доставляется до сервера по протоколу SMTP (конечный получатель - сервер) и помещается в почтовые ящики пользователей. Затем пользователи подключаются к своим почтовым ящикам по протоколу РОРЗ или IMAP-4 и забирают почту. Протокол РОРЗ требует полностью скачать себе всю почту, а затем разбираться: нужна она вам была или нет. Протокол IMAP-4 позволяет просматривать на сервере заголовки писем (указывается статус письма: новое, отвеченное и т.п.) и скачивать с сервера только необходимые письма или даже часть некоторого письма. IMAP4 дублирует функции почтовых программ пользователя.

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

Программирование сокетов.

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

Когда серверный процесс запущен, клиент может инициировать установку ТСР-соединения с сервером. Первым действием клиентской программы является создание сокета, при этом программа указывает адрес серверного процесса, состоящий из IP-адреса и номера порта процесса. После создания сокета клиентская сторона протокола TCP осуществляет процедуру тройного рукопожатия с сервером, оканчивающуюся установлением соединения. Заметим, что процедура рукопожатия никак не сказывается на работе приложения.

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

В примере, который последует ниже, входной дверью является объект ServerSocket с именем welcomeSocket. Когда клиент стучит в эту дверь, вызывается метод accept() объекта welcomeSocket, создающий новую дверь для клиента. По окончании процедуры рукопожатия устанавливается TCP-соединение между сокетом клиента и новым сокетом сервера, который называют сокетом соединения.

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

Сервисы и службы Интернет.

В этом пункте мы даем краткую характеристику основным службам, которые в той или иной степени функционируют в составе современной глобальной Сети. В следующем пункте отдельно рассматривается "главная" служба Сети - "Всемирная паутина" (WWW).

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

FTP. Так называют протокол (File Transfer Protocol - протокол передачи файлов) и программы, которые обслуживают работу с каталогами и файлами удаленной машины. Средства FTP позволяют просматривать каталоги и файлы сервера, переходить из одного каталога в другой, копировать и обновлять файлы.

Archie. Так называют специальные серверы (Archie-серверы), которые собирают и хранят поисковую информацию о содержимом FTP- серверов на узлах Internet. Если вы ищите какой-то файл, имя которого (или часть имени) вам известно, надо запустить Archie-клиента, и он укажет вам адрес (адреса) соответсвующего FTP-сервера.

WAIS. Wide Area Information Servers - распределенная информационная система (база данных и программное обеспечение), которая обслуживает поиск инф-ии в сетевых БД и библиотеках. В частности, WAIS исп-ся для индексирования неструктурированных документов в Internet и организации поиска в них.

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

Internet-телефония. Ныне быстро развивается новый вид услуг Сети Internet-телефония. Принцип голосовой связи в Internet нельзя считать оригинальным: такая связь - лишь частный случай обмена произвольными электронными сообщениями по протоколу TCP/IP. Человеческая речь преобразуется в цифровой файл (точно так же, как создаются аудиофайлы) и передается по сети в виде обычного набора электронных пакетов. Правда, пока единственным достоинством Internet-телефонии, по сравнению с обычным телефоном, явл-ся ее необычайная дешевизна (в расчете на минуту разговора). Многие технические проблемы (перегрузка каналов связи, задержки в передаче речи и др.) пока не решены.

26. Архитектура «клиент-сервер», «клиент-серверные» технологии. Распределенная обработка данных. Администрирование сервера баз данных. Web-технологии. Гипертекстовый документ. Язык гипертекстовой разметки HTML. Установка и настройка Web-сервера. Web-программирование с использованием скриптовых языков и баз данных.

Архитектура клиент-сервер.

Вообще говоря, клиент-серверная система характеризуется наличием двух взаимодействующих самостоятельных процессов - клиента и сервера, которые, в общем случае, могут выполняться на разных компьютерах, обмениваясь данными по сети. По такой схеме могут быть построены системы обработки данных на основе СУБД, почтовые и другие системы. Мы будем говорить, конечно, о базах данных и системах на их основе. И здесь удобнее будет не просто рассматривать клиент-серверную архитектуру, а сравнить ее с другой - файл-серверной.

В файл-серверной системе данные хранятся на файловом сервере (например, Novell NetWare или Windows NT Server), а их обработка осуществляется на рабочих станциях, на которых, как правило, функционирует одна из, так называемых, "настольных СУБД" - Access, FoxPro, Paradox и т.п..

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

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

В клиент-серверной системе функционируют (как минимум) два приложения - клиент и сервер, делящие между собой те функции, которые в файл-серверной архитектуре целиком выполняет приложение на рабочей станции. Хранением и непосредственным манипулированием данными занимается сервер баз данных, в качестве которого может выступать Microsoft SQL Server, Oracle, Sybase и т.п..

Формированием пользовательского интерфейса занимается клиент, для построения которого можно использовать целый ряд специальных инструментов, а также большинство настольных СУБД. Логика обработки данных может выполняться как на клиенте, так и на сервере. Клиент посылает на сервер запросы, сформулированные, как правило, на языке SQL. Сервер обрабатывает эти запросы и передает клиенту результат (разумеется, клиентов может быть много).

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

Распределенная обработка данных

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

Обмен: программы различных систем посылают друг другу сообщения (как правило, файлы);

Разделение: имеется непосредственный доступ к ресурсам нескольких машин (совместное пользование файлом, например);

Совместная работа: машины играют в реализации программы взаимодополняющие роли.

Рассмотрим пример, иллюстрирующий эту эволюцию. Речь пойдет о проектировании в области механики; традиционный подход заключается в следующем:

Построение "проволочной модели" (maillage) (графического представления геометрии физической модели) на рабочей станции;

Перенос на ЭВМ Cray файла модели, вводящего код вычислений;

Результаты расчетов, выполненных на ЭВМ Cray переносятся на рабочую станцию и обрабатываются графическим постпроцессором.

Этот способ обладает следующими недостатками:

Обмен данными производится посредством переноса файлов с одной машины на другую;

Обработка файлов осуществляется последовательно, в то время как расчеты на ЭВМ Cray только выиграли бы, если было бы возможно обеспечить взаимодействие с пользователем, используя графические и эргономические возможности рабочей станции, а некоторые расчеты, осуществляемые на последней, лучше было бы выполнить на машине Cray.

Для того, чтобы избавиться от этих неудобств, необходимо перейти от вышеназванных вариантов решения задач к применению методики совместной работы, на основе понятия "прозрачности". Пользователь будет видеть только одну машину (свою станцию) и только одну прикладную программу. Распределенная обработка данных, таким образом, представляет собой программу, выполнение которой осуществляется несколькими системами, объединенными в сеть. Как правило, расчетная часть программы выполняется на мощном процессоре, а визуальное отображение выводится на рабочей станции с улучшенной эргономичностью. Разделение опирается на модель "клиент-сервер", к которой мы еще вернемся. Этот вид обработки данных организуется по принципу треугольника (рис.2.4.):

Пользователь обладает рабочей станцией;

Решение задач требует обращения к устройству обработки данных (спецпроцессору, например) и к серверу данных, и все это прозрачно для пользователя.

Рис 2.4. Треугольная организация вычислительного процесса

Цели распределенной обработки данных

Целью распределенной обработки данных является оптимизация использования ресурсов и упрощение работы пользователя (что может вылиться в усложнение работы разработчика). Каким образом?

Оптимизация использования ресурсов.

Термин ресурс, в данном случае используется в самом широком смысле: мощность обработки (процессоры), емкость накопителей (память или диски), графические возможности (2-х или 3-х мерный графический процессор, в сочетании с растровым дисплеем и общей памятью), периферийные устройства вывода на бумажный но- ситель (принтеры, плоттеры). Эти ресурсы редко бывают собраны на одной машине: ЭВМ Cray обладает мощными расчетными возможностями, но не имеет графических возможностей, а также возможностей эффективного управления данными. Отсюда принцип совместной работы различных систем, используя лучшие качества каждой из них, причем пользователь имеет их в распоряжении при выполнении только одной программы.

Упрощение работы пользователя.

Действительно, распределенная обработка данных позволяет:

Повысить эффективность посредством распределения данных и видов обработки между машинами, способными наилучшим образом управлять ими;

Предложить новые возможности, вытекающие из повышения эффективности;

Повысить удобство пользования. Пользователю более нет необходимости разбираться в различных системах и осуществлять перенос файлов.

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

C другой стороны, преимущества весьма ощутимы:

Распределение и оптимизация использования ресурсов. Это основная причина внедрения распределенной обработки данных;

Новые функциональные возможности и повышение эффективности при решении задач;

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

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

Протокол SMTP использует простые текстовые команды в формате ASCII и возвращает трехзначные кодированные ответы с текстовыми сообщениями. Протокол SMTP описывается документом Internet Request For Comment (RFC) номер 821, который был разработан группой Internet Engineering Task Force (IETF) и опубликован 21 августа 1982 года. С тех пор он претерпел несколько модификаций, но в целом основные команды протокола не изменились.

Основные команды клиента SMTP

Команда HELO

По определению, длина команд протокола SMTP четыре символа. Приветствие, выдаваемое клиентом на сервер, и есть команда HELO. Формат команды следующий:

HELO domain name

Смысл команды HELO заключается в представлении клиента серверу SMTP. К сожалению, этот метод доступа был разработан на начальной стадии развития сети Internet, когда еще не было столь большого числа попыток несанкционированного проникновения в компьютерные системы. Как видите, клиент может назвать себя любым именем в командной строке. Это привело к тому, что в настоящее время большинство серверов SMTP эту команду используют чисто формально. Если они действительно стараются идентифицировать клиента, то подключается механизм обратного преобразования DNS с целью определения действительного имени хоста клиента согласно системе доменных имен по его IP-адресу. Как правило, в целях безопасности серверы SMTP отказывают в установлении соединения хостам, IP-адрес которых не преобразуется в соответствующее имя хоста. Посылая данную команду, клиент уведомляет сервер о желании установить с ним соединение. Отвечая на эту команду, сервер, в свою очередь, уведомляет об установке нового соединения с клиентом и готовности принимать от него последующие команды.

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

Команда AUTH

Расширение диалога SMTP командой AUTH описывается в RFC 4954.

    PLAIN (Uses Base64 encoding.)

    LOGIN (Uses Base64 encoding.)

    GSSAPI (Generic Security Services Application Program Interface)

    DIGEST-MD5 (Digest access authentication)

Разница между PLAIN и LOGIN только в том, что в первом варианте передается логин+пароль одной строкой, а во втором варианте - сначала логин, затем пароль. Но все они кодируются обязательно в Base64 .

Команда MAIL

Команда MAIL используется для организации сеанса обмена электронной почтой с сервером после того, как была послана команда HELO. Она указывает, от кого исходит данное сообщение. Формат команды MAIL следующий:

MAIL reverse-path

Аргумент reverse-path не только определяет отправителя сообщения, но также указывает маршрут, по которому можно вернуть сообщение в случае невозможности его доставки. Если отправитель является пользователем на клиентском компьютере, который инициировал сеанс SMTP, то формат команды будет следующим:

MAIL FROM: [email protected]

Заметьте, что в поле FROM указывается адрес электронной почты отправителя сообщения, включая полное имя клиентского хост-компьютера. Эта информация должна присутствовать в поле FROM почтового сообщения (но об этом позже). Если почтовое сообщение проходило на пути от отправителя к получателю через несколько узлов, то каждый из них будет добавлять сведения о себе в поле . Таким образом документируется путь прохождения сообщения через почтовые серверы. Довольно часто электронная почта от клиентов частных сетей должна проходить через несколько серверов электронной почты, прежде чем попасть в сеть Internet. Информация, которая содержится в поле reverse-path часто полезна при разрешении проблем в системах электронной почты или для обнаружения почтовых серверов, которые пытаются скрыть свою принадлежность, посылая сообщения через неизвестные серверы SMTP.

Команда RCPT

Команда RCPT определяет получателей сообщения. Одно и то же сообщение могут получать несколько пользователей. Обычно каждый получатель указывается отдельной строкой с командой RCPT. Формат команды RCPT следующий:

RCPT forward-path

Аргумент forward-path определяет, куда направляется электронная почта. Как правило, здесь указывается полный адрес электронной почты, но может также указываться и имя пользователя локального сервера SMTP. Рассмотрим для примера следующую команду:

RCPT TO: haley

С помощью этой команды указывается, что сообщение должно быть направлено пользователю haley на сервер SMTP, который обрабатывает сообщения. Таким же образом можно посылать сообщения и пользователям других компьютеров, которые не являются пользователями сервера SMTP, куда направлено сообщение. Рассмотрим, например, следующую команду:

RCPT TO: [email protected]

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

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

    Хост shardrach не может переслать сообщение и уведомляет об этом отправителя, подтверждая в то же время правильность адреса хоста meshach.smallorg.org. Таким образом, отправитель может попытаться повторно отправить сообщение прямо на meshach.smallorg.org.

    Хост shardrach не может переслать сообщение и посылает уведомление о том, что эту операцию невозможно осуществить с данным сервером. Тогда причины случившегося следует проанализировать системному администратору.

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

Команда DATA

Эта команда является основной в протоколе SMTP. После обработки команд MAIL и RCPT команда DATA используется для передачи информационной части сообщения. Формат команды DATA следующий:

Все, что следует за этой командой, интерпретируется как сообщение для передачи. Сервер SMTP, как правило, дополняет заголовок сообщения меткой времени и информацией об обратном маршруте return-path. Программа-клиент обозначает конец сообщения посредством передачи строки с одной точкой. Формат этой строки следующий:

.

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

Команда SEND

Команда SEND используется для передачи почтовых сообщений непосредственно на терминал зарегистрированного пользователя системы. Эта команда выполняется только в том случае, когда пользователь находится в системе, и обычно представляет собой всплывающее сообщение, подобно команде write в ОС UNIX. У этой команды имеется серьезный недостаток: с ее помощью внешний пользователь может легко определить, кто в данный момент находится в системе. Эта "возможность" давно и активно эксплуатируется хакерами для получения идентификаторов пользователя в сети Internet у ничего не подозревающих жертв, находящихся в системе. Из-за угрозы безопасности в настоящее время большинство программных пакетов для работы с SMTP уже не содержат эту команду.

Команда RSET

Команда RSET - сокращение от reset (англ. сброс - Прим. пер.). Если клиент запутался в ответах, получаемых от сервера, или решил, что соединение потеряно, он может послать команду RSET и вернуть сеанс к его начальной точке - выполнению команды HELO. При этом все ранее посланные команды - MAIL, RCPT и DATA будут аннулированы. Очень часто к этой команде прибегают в качестве "последнего средства", когда клиент либо потерял последовательность команд, либо получил неожиданный ответ от сервера.

VRFY

Команда VRFY является сокращением от verify (англ. проверить - Прим. пер.). Ее можно использовать для определения возможности доставки сервером почты определенному получателю перед выполнением команды RCPT. Формат этой команды следующий:

VRFY username

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

Команда VRFY может оказаться эффективным инструментом при поиске неполадок в работе электронной почты. Довольно часто, отправляя почтовые сообщения, пользователи ошибаются при написании имени адресата или хоста и затем недоумевают, почему их сообщения не были получены. Конечно, первое, что они предпримут, - это пожалуются администратору почтовой системы на отвратительную работу системы электронной почты. Как администратор почтовой системы вы, можете проверить работоспособность адресов электронной почты двумя путями. Во-первых, с помощью команды DNS host, которая позволяет определить правильность доменного имени и наличие почтового сервера, обслуживающего домен. И во-вторых, можно зайти с помощью telnet на порт 25 почтового сервера и затем задать команду VRFY, которая определит правильность имени пользователя. В листинге 5.3 показан пример использования команды VRFY для проверки имен пользователей.

1 [ riley@ shadrach riley] $ telnet localhost 25 2 Trying 127.0.0.1... 3 Connected to localhost. 4 Escape character is "^]" . 5 220 shadrach.smallorg.org ESMTP Sendmail 8.9.3/ 8.9.3; Thu, 26 Aug 1999 19 :20 :16 -050 6 HELO localhost 7 250 shadrach.smallorg.org Hello localhost [ 127.0.0.1] , pleased to meet you 8 VRFY rich 9 250 < rich@ shadrach,smallorg.org> 10 VRFY prez@ mechach.smallorg.org 11 252 < prez@ mechach.smallorg.org> 12 VRFY jessica 13 550 jessica... User unknown 14 QUIT 15 221 shadrach.smallorg.org closing connection 16 Connection closed by -foreign host. 17 [ riley@ shadrach riley] $

В строках 8–13 представлены результаты выполнения команды VRFY. В строке 8 делается попытка выполнить VRFY для локального пользователя rich. Ответ SMTP- сервера в строке 9 подтверждает, что пользователь с таким именем имеется в системе, и клиенту возвращается его полный адрес электронной почты. В строке 10 показан еще один вариант задания команды VRFY. Здесь клиент пытается выполнить команду VRFY для пользователя на удаленном компьютере. Ответ, полученный в строке 11 от системы shadrach, отличается от результата, полученного в строке 9. В разделе "Ответы сервера" значения кодов, возвращаемых сервером, обсуждаются более детально. В нашем случае отметим, что система shadrach уведомляет клиента о том, что почта будет пересылаться пользователю prez на удаленном сервере meshach.smallorg.org. Строка 12 отображает попытку проверить несуществующее имя в системе meshach. Ответ SMTP-сервера в строке 13 в пояснениях не нуждается.

    Проверить существования пользователя используя bash и curl. $ echo -e "VRFY [email protected]\n QUIT" | curl telnet:// mail.example.com:25 220 mail.1-talk.com ESMTP Postfix 252 2.0.0 username@ example.com 221 2.0.0 Bye

Команда NOOP

Команда NOOP - сокращение от no operation (англ. нет операции - Прим. пер.). Эта команда не оказывает никакого воздействия на SMTP-сервер, за исключением того, что сервер возвращает на нее позитивный код ответа. Она используется при тестировании соединения без пересылки сообщения.

Команда QUIT

Команда QUIT делает именно то, что она и означает (англ. выйти - Прим. пер.), т.е. сообщает SMTP-серверу о том, что клиентский компьютер закончил текущий сеанс и хочет закрыть соединение. Сервер SMTP должен ответить на эту команду, а затем инициировать и закрыть TCP-соединение. Если сервер принимает команду QUIT в процессе передачи почты, то все переданные в течение сеанса данные должны быть уничтожены и не поступят получателю.

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

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

Документом RFC 822 предусматривается разбиение сообщения на две части. Первая часть называется заголовком. В нее вносятся все данные, идентифицирующие сообщение. Вторая часть называется телом сообщения. Заголовок состоит из полей данных, которые используются по мере необходимости внесения дополнительной информации в сообщение. Поля заголовка и тело сообщения должны разделяться пустой строкой. Для полей заголовка не существует определенного порядка следования, т.е. поля заголовка могут располагаться в произвольном порядке. Кроме того, в одном сообщении поля заголовка могут повторяться. На рисунке представлен общий вид почтового сообщения, соответствующего требованиям RFC 822.

Формат сообщения, согласно RFC 822

    Поле заголовка Received

Формат поля заголовка Received: (Принято:) следующий:

Received: from host name by host name via physical-path with protocol id message-id for final e-mail destination

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

    Поле заголовка Return-Path

Формат этого поля заголовка следующий:

Return-Path: route

Последний SMTP-сервер в цепочке пересылки добавляет к сообщению поле возврата (Return-Path). Его цель - определение маршрута, посредством которого сообщение достигло получателя. Если сообщение было послано напрямую на сервер получателя, то в этом поле будет отображаться только один адрес. В противном случае здесь будет отображаться полный список серверов, через которые прошло сообщение, чтобы достичь адресата. Может отличаться от MAIL FROM (то есть обратный адрес может быть указан отличным от адреса отправителя).

    Поле заголовка Originator

В поле Originator указывается адрес отправителя сообщения. Эта информация весьма полезна в ситуации, когда сообщения были отвергнуты несколько раз частными сетями, прежде чем они попали в сеть Internet. Формат этого поля следующий:

Reply-To: address

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

    Поле заголовка Resent

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

Resent-Reply-To: address

    Поля заголовка Authentic

Данные поля заголовка идентифицируют отправителя электронного сообщения. Формат полей Authentic:

From: user-name Sender: user-name

Поле 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

В полях заголовка Destination указываются адреса электронной почты получателей сообщения. Эти поля являются чисто информационными. Сервер SMTP в любом случае не будет посылать сообщение в почтовый ящик пользователя, пока на получит команду RCPT, выданную для данного пользователя (см. раздел "Основные команды клиента SMTP"). Формат этих полей следующий:

To: address Resent-To: address CC: address Resent-CC: address BCC: address Resent-BCC: address

Поля To:, CC: и BCC: устанавливают стандартный алгоритм обработки электронной почты. Большинство пакетов для работы с электронной почтой используют именно эту терминологию для классификации получателей сообщения. Поле CC: сходно с памяткой, и указанные в нем получатели должны получить "копию" сообщения. Еще одно новое понятие, введенное системами электронной почты, - BCC: или "невидимая копия" (blind carbon copy). В поле "невидимой копии" также указывается получатель копии сообщения, но его адрес не виден посторонним (это не совсем этично). В связи с этой опцией обсуждалась вопросы компьютерной этики, но на сегодняшний день практически все программы для работы с электронной почтой поддерживают эту возможность.

    Необязательные поля заголовка

Необязательными являются поля, которые более подробно идентифицируют сообщение для сервера SMTP, но, согласно RFC 822, могут и не присутствовать в сообщении. Тем не менее эти поля в настоящее время широко распространены, и многим из вас придется столкнуться с ними. Формат некоторых из них следующий:

Message-ID: message-id Resent-Message-ID: message-id In-Reply-To: message-id References: message-id Keywords: text - list Subject: text Comments: text Encrypted: word

Наиболее полезным и часто используемым из этого набора является поле Subject: (Тема). Большинство программ для работы с электронной почтой допускает ввод отправителем темы сообщения в одну строку, которая описывает для получателя содержание сообщения. Эта строка текста довольно часто используется почтовой программой-клиентом при формировании списков полученных сообщений. Еще одно необязательное поле также помогает идентифицировать почтовое сообщение. Это поле Message-ID: (Идентификатор сообщения). В этом поле сообщению присваивается уникальный идентификационный номер, который может затем отображаться в возвращенном сообщении. Специальное поле шифрования Encrypted: указывает, было ли сообщение в целях безопасности подвергнуто шифрованию, а в Keywords: можно задать ключевые слова, которые можно использовать при поиске определенного текста, встречающегося в сообщении (сообщениях).

Двоичные данные и MIME

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

    Поле заголовка MIME-Version

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

    Поле Content-Transfer-Encoding

В поле заголовка Content-Transfer-Encoding указывается способ помещения двоичных данных в сообщение текстового формата ASCII . На сегодняшний день существует семь различных способов кодирования двоичных данных, однако наиболее часто встречается кодирование base64. При применении этого метода кодирования 6-битовые блоки двоичных данных преобразуются в 8-битовые блоки, воспринимаемые как текст ASCII .

    Поле Content-ID

Это поле заголовка используется для идентификации сеансов MIME по определенному идентификационному коду, когда содержимое имеет сложную структуру.

    Поле Content-Description

Поле заголовка Content-Description используется для текстового описания в формате ASCII данных, помещенных в почтовое сообщение. Это удобно при пересылке документов, созданных при помощи текстового процессора или графики, которые ничем не отличаются, будучи закодированными base64.

Поле заголовка Content-Type

    Поле заголовка Content-Type

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

Тип данных text идентифицирует данные в формате ASCII , которые должны читаться в исходном виде. Здесь существует также два подкласса - plain-текст, т.е. неформатированный ASCII -текст, и enriched-текст, который включает в себя элементы форматирования, схожие с обогащенным текстовым форматом. Новейшие программы для работы с электронной почтой могут работать даже с обогащенным текстовым форматом (RTF).

Тип данных message позволяет почтовой программе отсылать простые сообщения в формате RFC 822. Подклассы этого типа: rfc822, который указывает на то, что вложением является обычное сообщение, соответствующее RFC 822; partial, который позволяет разбивать длинные сообщения на несколько частей, и external-body, который позволяет помещать указатель на объект, не являющийся частью сообщения.

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

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

Тип данных audio обозначает содержимое сообщения как аудиоданные (звуковые файлы). Здесь также пока определен только один подкласс basic, который соответствует одному каналу ISDN с частотой дискретизации 8 Кгц.

Тип данных application соответствует двоичным данным, вложенным в сообщение, которые являются приложением (например, электронные таблицы Microsoft Excel или документы, созданные с помощью текстового процессора Microsoft Word). На сегодняшний день определено два подкласса такого рода данных - postscript и octet-stream. Довольно часто подкласс octet-stream используется при вложении в сообщение прикладных данных, таких как документы Microsoft Word или электронные таблицы Microsoft Excel.

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

Подкласс mixed указывает на то, что каждая из частей сообщения является независимой и все они должны быть представлены получателю в том порядке, в каком они были вложены отправителем. Подкласс parallel указывает то, что каждая из частей сообщения является независимой и все они могут быть представлены получателю в любом порядке. Следующий подкласс alternative указывает, что все части сообщения представляют собой одни и те же данные, но представленные в различном виде. При этом получатель может выбрать наилучшее средство для просмотра полученных данных. Подкласс digest во многом сходен с подклассом mixed, но при этом указывает, что тело сообщения всегда представляется в формате RFC822.

1 $ telnet localhost 25 2 Trying 127.0.0.1... 3 Connected to localhost. 4 Escape character is "^]". 5 220 shadrach.smallorg.org ESMTP Sendmail 8.9.3/8.9.3; Mon, 30 Aug 1999 07:36:58 -050 6 HELO localhost 7 258 shadrach.smallorg.org Hello localhost , pleased to meet you 8 MAIL FROM:rich@localhost 9 250 rich@localhost... Sender ok 10 RCPT TO:rich 11 250 rich... Recipient ok 12 DATA 13 354 Enter mail, end with "." on a line by itself 14 From:"Rich Blum" 15 To:"rich" 16 Subject:Formatted text message test 17 MIME-Version: 1.0 18 Content-Type: multipart/alternative; boundary=bounds1 19 20 –bounds1 21 Content-Type: text/plain; charset=us-ascii 22 23 This is the plain text part of the message that can 24 be read by simple e-mail readers. 25 26 –-bounds1 27 Context-Type: text/enriched 28 29 This is the rich text version of the SAME message. 30 31 –-bounds1-- 32 . 33 250 MAA04305 Message accepted for delivery 34 QUIT 35 221 shadrach.smallorg.org closing connection 36 Connection closed by foreign host. 37 You have new mail in /var/spool/mail/rich 38 $

Листинг 5.6. Пример сеанса SMTP с несколькими вложениями MIME (html, txt) Пример сообщения, представленный в листинге 5.6, является сообщением MIME, которое состоит из двух частей. В строке 18 показан тип данных сообщения. Тип multipart/alternative указывает на то, что в сообщении имеются различные типы данных, которые отделены граничным разделителем bounds1. Данные первого типа начинаются со строки 21 и представляют собой простой ASCII -текст, который может прочесть практически любая почтовая программа.

Данные второго типа начинаются со строки 27 и представляют собой форматированный текст с использованием обогащенного текстового формата.

Так как тип MIME, указанный для сообщения, - multipart/alternative, то определение того, какую версию вложения отобразить, всецело зависит от почтовой программы.

Расширенный протокол SMTP

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

В 1995 году увидел свет документ RFC 1869, где был определен метод расширения возможностей протокола SMTP, который назывался "Расширенные службы SMTP".

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

1 $ telnet localhost 25 2 Trying 127.0.0.1... 3 Connected to localhost. 4 Escape character is "^]". 5 220 shadrach.smallorg.org ESMTP Sendmail 8.9.3/8.9.3; Mon, 30 Aug 1999 16:36:48 -050 6 EHLO localhost 7 250-shadrach.smallorg.org Hello localhost , pleased to meet you 8 250-EXPN 9 250-VERB 10 250-8BITMIME 11 250-SIZE 12 250-DSN 13 250-ONEX 14 250-ETRN 15 250-XUSR 16 250 HELP 17 HELP DSN 18 214-MAIL FROM: [ RET={ FULL || HDRS} ] [ ENVID= ] 19 214-RCPT TO: [ NOTIFY={NEVER,SUCCESS,FAILURE,DELAY} ] 20 214- [ ORCPT= ] 21 214- SMTP Delivery Status Notifications. 22 214-Descriptions: 23 214- RET Return either the full message or only headers. 24 214- ENVID Sender"s "envelope identifier" for tracking. 25 214- NOTIFY When to send a DSN. Multiple options are OK, comma - 26 214- delimited. NEVER must appear by itself. 27 214- ORCPT Original recipient. 28 214 End of HELP info 29 HELP ETRN 30 214-ETRN [ | @ | # ] 31 214- Run the queue for the specified , or 32 214- all hosts within a given , or a specially-named 33 214- (implementation-specific). 34 214 End of HELP info 35 QUIT 36 221 shadrach.smallorg.org closing connection 37 Connection closed by foreign host. 38 $

В строке 6 задана SMTP-команда EHLO для подключения к серверу SMTP. Строки 7–16 отображают ответ сервера. Заметьте, сервер сигнализирует о том, что для использования доступно больше команд, т.е. сеанс происходит в "расширенном" режиме. Одна из новых групп команд называется параметрами уведомления о доставке сообщения (Delivery Status Notification). Эти параметры могут использоваться с командами MAIL и RCPT для отображения состояния доставки определенного сообщения электронной почты. Однако для нас как администраторов почтовой системы наибольший интерес представляет команда ETRN.

Команда TURN уже упоминалась ранее. Эта команда весьма эффективна, но, к сожалению, небезопасна. Чтобы компенсировать этот недостаток, в RFC 1985 определена новая реализация команды TURN, которая обеспечивает больший уровень безопасности. Команда ETRN позволяет SMTP-клиенту выдавать запрос на SMTP-сервер для того, чтобы инициировать еще одно SMTP-соединение с клиентом для передачи ему сообщений. Единственное отличие команды ETRN от TURN заключается в том, что запрос поступает не на использование существующего соединения, а на открытие нового сеанса SMTP. Таким образом, SMTP-сервер может соединиться с клиентским компьютером с помощью обычных алгоритмов преобразования имен системы DNS . При этом открытие нового соединения основывается не на том имени, под которым клиентский компьютер регистрируется на сервере, а на реальном имени хоста клиента. В таком случае, если хакер установит несанкционированное SMTP-соединение и воспользуется командой ETRN, то сервер SMTP просто организует новое соединение с реальным клиентом и перешлет ему электронную почту. В результате, пострадавших нет. Формат команды ETRN следующий:

Здесь в роли name может выступать либо имя хоста, либо доменное имя (если поступает запрос на получение почты для всего домена). Команда ETRN весьма хорошее подспорье для администратора электронной почты. Если почту для вашего почтового сервера хранит провайдер Internet, то с помощью этой команды можно уведомить его о готовности к приему собранной для вас почты. Существует несколько способов реализации такого алгоритма. Один из них - использование специальной программы Perl, которая поставляется с программой sendmail. Ее работа как раз и заключается в том, что после установления соединения с провайдером Internet она выдает команду ETRN с именем вашего домена в качестве аргумента. Получив эту команду, сервер SMTP провайдера инициирует еще одно SMTP-соединение с вашим локальным SMTP-сервером (по тому же РРР-соединению) и отдает всю предназначенную для вашего домена почту, которая имеется у него в очереди на отправку.

Протокол SMTP

O В этой главе:

O Основные команды протокола

O Серверы-ретрансляторы

O Непосредственная пересылка

Для доставки почты в большинстве случаев используется протокол SMTP (Simple Mail Transfer Protocol ).

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

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

В терминологии SMTP-протокола нет таких понятий как «клиент» и «сервер». Вместо этого говорят об отправителе (sender ) и получателе (receiver ). То, что большинство называют «SMTP-сервером», является одновременно и отправителем, и получателем. Когда клиент устанавливает с ним соединение для передачи письма, сервер выступает в роли получателя, а когда доставляет сообщение абоненту, становится отправителем.

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

Приведенный ниже пример демонстрирует, как посредством протокола SMTP отправить абоненту сообщение. Первым шагом необходимо запустить telnet-клиента и, установив соединение с выбранным SMTP-сервером (например, mail.aport.ru) по двадцать пятому порту, дождаться выдачи приглашения.

Рисунок 009 Подключение к серверу mail.aport.ru

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

Для передачи корреспонденции одного лишь TCP-соединения не достаточно, и необходимо установить еще одно, так называемое SMTP-соединение. Это достигается возвращением ответного приветствия серверу с указанием имени узла клиента (если у него есть имя) или IP-адреса (если у клиента нет имени).

Далеко не всегда требуется указывать свой точный адрес. Часто достаточно ввести произвольную текстовую строку, например “ABDCEF”

· HELO ppp-15.krintel.ru

Ответное приветствие осуществляется командой “HELO

”. Сервер, установив SMTP-соединение, возвращает код успешного завершения операции (250) и в большинстве случаев определяет IP-адрес клиента или его доменное имя.

Следующим шагом требуется указать отправителя сообщения. Для этого необходимо воспользоваться командой «MAIL FROM» с указанием собственного почтового адреса при желании заключенного в угловые скобки.

Например:

· HELO ppp-15.krintel.ru

· 250 camel.mail.ru Hello ppp-15.krintel.ru

· MAIL FROM:«[email protected]»

Затем указывается получатель сообщения, передаваемый с помощью команды “RCPT TO”, пример использования которой продемонстрирован ниже:

· HELO ppp-15.krintel.ru

· 250 camel.mail.ru Hello ppp-15.krintel.ru

· MAIL FROM:«[email protected]»

· 250 «[email protected]» is syntactically correct

· RCPT TO:«[email protected]»

При возникновении потребности в отправке одного и того же сообщения нескольким респондентам, достаточно вызвать “RCPT TO” еще один (или более) раз (максимальное количество получателей обычно не ограничено). Если кому-то из них сервер не возьмется доставить сообщение, он вернет ошибку, никак, однако не сказывающуюся на остальных получателях.

Команда “DATA”, вызываемая без аргументов, переводит сервер в ожидание получения текста письма.

· 354 Enter message, ending with "." on a line by itself

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

Пример использования команды “DATA” приведен ниже:

· HELO ppp-15.krintel.ru

· 250 camel.mail.ru Hello ppp-15.krintel.ru

· MAIL FROM:«[email protected]»

· 250 «[email protected]» is syntactically correct

· RCPT TO:«[email protected]»

· 250 «[email protected]» verified

· Hello, Sailor!

· 250 OK id=12ZDEd-000Eks-00

Команда “QUIT” завершает сеанс и закрывает соединение.

· 221 camel.mail.ru closing connection

Содержимое полученного сообщения (механизм получения сообщений на локальный компьютер пользователя рассмотрен в главах «Протокол POP» и «Протокол IMAP4») может выглядеть, например, следующим образом:

· From [email protected] Sun Mar 26 17:38:03 2000

· Received: from ppp-15.krintel.ru ()

· by camel.mail.ru with smtp (Exim 3.02 #107)

· id 12ZDEd-000Eks-00

· Message-Id: «[email protected]»

· From: [email protected]

· Hello,Sailor!

Ниже будет показано, каким образом злоумышленники находят и используют чужие сервера исходящей почты. Один из способов поиска общедоступных SMTP-серверов заключается в анализе заголовков приходящей корреспонденции. Среди узлов, оставивших свои адреса в поле “Received”, порой встречаются сервера, которые не требуют аутентификации пользователя для отправки писем.

Например, ниже показан заголовок письма, вытащенного автором этой книги из его собственного почтового ящика:

· From [email protected] Wed Mar 22 16:57:03 2000

· Received: from gate.chiti.uch.net ()

· by msk2.mail.ru with esmtp (Exim 3.02 #116)

· id 12Xld1-0008jx-00

· Received: from 13.chiti.uch.net ()

· by gate.chiti.uch.net (8.8.8/8.8.8) with SMTP id PAA29678

· From: "irt" «[email protected] »

Анализ заголовка позволяет установить, что письмо было отправлено с адреса 13.chiti.uch.net через сервер исходящей почты gate.chiti.uch.net. Если попробовать установить с ним соединение, то результат может выглядеть так:

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

· HELO kpnc.krintel.ru

· 250 gate.chiti.uch.net Hello kpnc.krintel.ru , pleased to meet you

· MAIL FROM:«[email protected]»

· 250 «[email protected]»… Sender ok

· RCPT TO:«[email protected]»

· 250 «[email protected]»… Recipient ok

Код успешного завершения операции (250) и срока «Recipient ok» свидетельствуют о том, что сервер согласился на пересылку. Остается ввести текст послания и можно отправлять письмо. Спустя какое-то время (обычно не превышающее одной минуты) сообщение должно прийти по назначению. А его заголовок может выглядеть, например, так:

· From [email protected] Sun Mar 26 17:28:33 2000

· Received: from gate.chiti.uch.net ()

· by camel.mail.ru with esmtp (Exim 3.02 #107)

· id 12ZD5a-000Dhm-00

· Received: from kpnc.krintel.ru (kpnc.krintel.ru )

· by gate.chiti.uch.net (8.8.8/8.8.8) with SMTP id QAA02468

· (envelope-from [email protected])

· From: [email protected]

· Message-Id: «[email protected]»

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

Один из анонимных серверов расположен (точнее, был когда-то расположен на момент написания этой главы) по адресу dore.on.ru. Однако его использование посторонними лицами запрещено, что и демонстрирует следующий эксперимент:

· HELO kpnc.krintel.ru

· MAIL FROM:«[email protected]»

· 250 «[email protected]» Sender Ok

· RCPT TO:«[email protected]»

· 550 Relaying denied for «[email protected]»

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

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

Клиент дважды указывает свой адрес: приветствуя сервер, командой “HELO” он сообщает свой домен, а в поле “MAIL FROM” приводит собственный обратный адрес. Некоторые сервера проверяют одно из этих значений, а некоторые оба одновременно.

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

· 220 WITHELD FTGate server ready -Fox Mulder

· HELO dore.on.ru

· MAIL FROM:«[email protected]»

· RCPT TO:«[email protected]»

· 250 Recipient Ok

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

Для массовой рассылки лучшего способа и придумать невозможно, но вот для обычной переписки такая методика не подходит. Ведь ответ на письмо возвратится по адресу [email protected]! Этого можно избежать, если добавить в заголовок поле “Reply-To”, содержащее истинный адрес отправителя (тот, который он захотел оставить сам). Это может выглядеть, например, таким образом:

· 220 WITHELD FTGate server ready -Fox Mulder

· HELO dore.on.ru

· MAIL FROM:«[email protected]»

· 250 «[email protected]» Sender Ok

· RCPT TO:«[email protected]»

· 250 Recipient Ok

· 354 Start mail input; end with «CRLF».«CRLF»

· Reply-To:«[email protected]»

· 250 Ok Message queued

· 221 dore.on.ru Service closing transmission channel

Заголовок такого письма должен выглядеть приблизительно так:

· Received: from relay1.aha.ru ( verified)

· by aha.ru (CommuniGate Pro SMTP 3.1b2)

· Received: from warlock.miem.edu.ru (miem-as.ins.ru )

· by relay1.aha.ru (8.9.3/8.9.3/aha-r/0.04B) with ESMTP id UAA07173

· Received: from dore.miem.edu.ru (rtuis.miem.edu.ru )

· by warlock.miem.edu.ru (8.9.3/8.9.3) with ESMTP id UAA00637

· Received: from fox by dore.on.ru (FTGate 2, 1, 2, 1);

· Message-ID: «000301bec6ff$c87f5220$16fe7dc1@fox»

· From: «[email protected]»

· To: «[email protected]»

· Subject: TEST

· Reply-To:«[email protected]»

При попытке ответить отправителю, почтовый клиент получателя извлечет содержимое поля “Reply-To” и отправит письмо по указанному в нем адресу. Именно этим и пользуются спамеры для достижения полной анонимности с одной стороны, и возможности получения ответов от заинтересованных лиц - с другой.

Если внимательно посмотреть на заголовок письма, в нем можно обнаружить несколько строк “Received”. Их оставили транзитные сервера, иначе называемые Релеями (от английского relay ).

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

Например, чтобы отправить письмо для [email protected] с помощью “OutLock Express” придется зайти в «Учетные записи» (меню «Сервис»), выбрать «Свойства» и перейти к закладке «Серверы», задав для исходящей почты сервер «computerra.ru».

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

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

Ретранслятор - точно такой же SMTP-сервер, как и все остальные, обсуждаемые в этой главе. В зависимости от настоек сервера маршрут пересылки письма может варьироваться. Одно сообщение может отправляться напрямую, а другое - долго «крутиться» на Релеях. Доверие это прекрасно, но только когда не касается вопросов безопасности. Кто рискнет доверять ретрансляторам неизвестного происхождения? Тем более, дальнейший маршрут письма каждым из транзитных серверов определяется самостоятельно, и нет никаких гарантий, что в эту цепочку не вклиниться злоумышленник.

Но протокол SMTP позволяет отправителю самостоятельно задавать маршрут пересылки сообщения Параметр команды “RCPT TO” может содержать не только адрес получателя, но и путь ретрансляции!

Формат его следующий:

· RCPT TO:«@s1,@s2,@s3,@sn:name@host»

где s1,s2,s3,sn - имена (или IP адреса) промежуточных хвостов, а name@host почтовый ящик получателя. В первую очередь сообщение передается узлу s1 - самому левому серверу в цепочке. Он модифицирует параметр команды RCPT TO, «выкусывая» из нее имя своего узла:

· RCPT TO:«@s2,@s3,@sn:name@host»

Затем, извлекается адрес следующего получателя - s2. Если сервер s1 не берется за доставку корреспонденции серверу s2, письмо возвращается назад отправителю с сообщением об ошибке. В противном случае процесс повторяется до тех пор, пока сообщение не окажется в почтовом ящике получателя.

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

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

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

Узнать какие именно команды поддерживаются конкретным SMTP сервером можно с помощью «HELP», а подробнее о назначении каждой из них “HELP command”.

Для получения детальной информации о командах протокола SMTP можно обратиться к RFC-788, RFC-821, RFC-822, RFC-1341, RFC-1342, RFC-1426, RFC-1521, RFC-1806, RFC-1830, RFC-2045, RFC-2046, RFC-2047, RFC-2048, RFC-2049, RFC-2076.

Из книги Техника сетевых атак автора Касперски Крис

Протокол SMTP O В этой главе:O Основные команды протоколаO Серверы-ретрансляторыO Непосредственная пересылкаO Автоматизация почтовой рассылки и спамO Анонимная рассылка писемДля доставки почты в большинстве случаев используется протокол SMTP (Simple Mail Transfer Protocol).При его

автора Реймонд Эрик Стивен

5.3.1. Учебный пример: SMTP, простой протокол передачи почты В примере 5.7. иллюстрируется транзакция SMTP (Simple Mail Transfer Protocol - простой протокол передачи почты), который описан в спецификации RFC 2821. В данном примере строки, начинающиеся с С:, отправляются почтовым транспортным

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

5.3.1. Учебный пример: SMTP, простой протокол передачи почты В примере 5.7. иллюстрируется транзакция SMTP (Simple Mail Transfer Protocol - простой протокол передачи почты), который описан в спецификации RFC 2821. В данном примере строки, начинающиеся с C:, отправляются почтовым транспортным

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

5.24 Протокол ARP Перед тем как датаграмма будет передана с одной системы локальной сети на другую, она будет обрамлена заголовком и завершающей частью кадра. Кадр доставляется на сетевой адаптер, физический адрес которого совпадает с физическим адресом назначения из

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

8.9 Протокол RIP Наиболее широко используемым протоколом IGP является RIP, заимствованный из протокола маршрутизации сетевой системы компании Xerox (Xerox Network System - XNS). Популярность RIP основана на его простоте и доступности.RIP был первоначально реализован в TCP/IP операционной

Из книги Сетевые средства Linux автора Смит Родерик В.

8.17 Протокол BGP В Интернете широко используется протокол граничного шлюза (Border Gateway Protocol - BGP). Текущей версией протокола является BGP-4.В современном Интернете существует множество провайдеров, объединенных между собой на манер сети межсоединений. При движении к точке

Из книги автора

14.6 Протокол FTP С протоколом FTP связаны следующие понятия:? Команды и их параметры, пересылаемые по управляющему соединению? Числовые коды, возвращенные в ответ на команду? Формат пересылаемых данныхНиже рассмотрен набор команд FTP. Они передаются по управляющему

Из книги автора

15.17 Протокол NFS Последней реализацией NFS является версия 3, хотя продолжают успешно применяться реализации версии 2. Программа NFS сервера имеет номер 100003 и, по соглашению, NFS захватывает при инициализации порт

Из книги автора

16.9 Команды SMTP Сценарий из раздела 16.6.1 содержал наиболее часто используемые команды SMTP. Полный набор команд SMTP представлен в таблице 16.1.Таблица 16.1 Команды SMTP Команда Описание HELO Идентифицирует отправителя для получателя. MAIL FROM Начало почтовой транзакции и указание на

Из книги автора

16.12.2 Диалог в улучшенной версии SMTP Показанный ниже пример демонстрирует, как улучшенный агент пересылки почты формирует транзакцию для отправки сообщения MIME в 8-битном формате:? Получатель объявляет о своих улучшенных возможностях, включая 8BITMIME.? Команда MAIL FROM имеет

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

Из книги автора

Из книги автора

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

(SMTP) - это стандарт для e-mail-почты. Изначально был зафиксирован в RFC 821 (1982 г.), последний раз обновлялся в 2008 году с расширенными добавлениями SMTP по RFC 5321 (широко распространенным сегодня протоколом).

Хотя почтовые серверы и другие почтовые агенты применяют SMTP для передачи и получения e-mail-корреспонденции, программное обеспечение пользовательского класса, как правило, использует SMTP-порты только для отправки данных на сервер для ретрансляции. Для получения сообщений клиентские приложения обычно используют либо IMAP, либо POP3. Данные протоколы наиболее удобны и востребованы для этих целей: имеют расширенный функционал и широкий спектр возможностей.

Характерные особенности

SMTP-связь между почтовыми серверами использует порт TCP 25. Почтовые клиенты часто отправляют исходящие письма на почтовый сервер по порту 587. Несмотря на то что устаревшие почтовые провайдеры по-прежнему разрешают использовать нестандартный порт 465 для этой цели.

SMTP-соединения, защищенные TLS, известные как SMTPS, могут быть выполнены с использованием технологии STARTTLS.

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

Назначение SMTP

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

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

Техническая терминология

SMTP — это протокол TCP/IP, используемый для работы с e-mail-почтой. Однако поскольку он ограничен возможностью отправлять сообщения в очередь на принимающей стороне, он обычно используется либо с POP3, либо с IMAP, которые позволяют хранить данные на сервер и при необходимости загружать их. Иными словами, обычно используют приложение, которое выбирает SMTP для отправки e-mail и POP3 или IMAP для получения корреспонденции. В системах на основе Unix sendmail является наиболее широко используемым SMTP-сервером для электронной почты. В коммерческий пакет Sendmail входит сервер POP3. Microsoft Exchange включает в себя SMTP-сервер и так же может быть настроен на поддержку POP3.

SMTP, как правило, используется для работы через интернет-порт 25. Альтернативой SMTP, который широко используется в Европе, является X.400. Многие почтовые серверы теперь поддерживают Extended Simple Mail Transfer Protocol (ESMTP), который позволяет передавать мультимедийные файлы в виде электронной почты.

История

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

Дальнейшие реализации включают FTP Mail Protocol, начиная с 1973 года. Работа по развитию продолжалась в 1970-х гг., пока ARPANET не перешла в современный Интернет в 1980 году. Затем Джон Постель предложил протокол передачи почтовых данных.

SMTP начал широко применяться в начале 1980-х гг. В то время данный протокол был дополнением к Unix для почтовой программы Unix Copy Program. SMTP лучше всего работает, когда отправляющая и принимающая машины подключены к Сети, используют механизм хранения и отправки и являются примерами технологии push.

Модель обработки почты

E-mail-почта отправляется почтовым клиентом (почтовым агентом пользователя, MUA) на почтовый сервер (агент отправки почты, MSA) с использованием SMTP на TCP-порт 587. Большинство провайдеров почтовых ящиков по-прежнему разрешают отправку на традиционный порт 25. MSA доставляет почту на свой почтовый агент (агент передачи почты, MTA). Зачастую эти агенты являются экземплярами общего программного обеспечения, активированного с различными параметрами на одном компьютере. Локальная обработка может выполняться либо на одной машине, либо разделяться между несколькими машинами. Процессы почтового агента на одной машине могут обмениваться файлами, но если обработка выполняется на нескольких машинах, они передают сообщения между собой, используя SMTP-порт, где каждая машина настроена на использование следующей машины в качестве интеллектуального хоста.

Обзор протокола

SMTP представляет собой текстовый протокол, ориентированный на соединение, в котором отправитель почты общается с почтовым получателем путем выдачи командных строк и предоставления необходимых данных по надежному упорядоченному каналу потока данных. Сеанс SMTP состоит из команд, созданных SMTP-клиентом (инициирующим агентом, отправителем или передатчиком) и соответствующими ответами от SMTP-сервера (агента прослушивания или получателя). Сеанс может включать в себя ноль или более SMTP-транзакций, которые состоят из трех последовательностей команд/ответов:


Помимо промежуточного ответа для DATA, ответ каждого сервера может быть либо положительным, либо отрицательным (код 2xx). Отрицательные ответы могут быть постоянными (коды 5xx) или временными (коды 4xx). Отклонение — это постоянный сбой, и клиент должен отправить сообщение отказов на сервер, на который он его получил. Падение - это положительный ответ, за которым следует отказ от сообщения.

Почтовые SMTP-порты и их значение

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

Пуск очереди пустых сообщений

Remote Message Queue Starting - это функция SMTP, которая позволяет удаленному хосту запустить обработку почты на сервере, чтобы она могла получать сообщения, предназначенные для нее, отправив команду TURN. Однако эта функция создавала потенциальную угрозу безопасности данных и была расширена в RFC 1985 командой ETRN, которая более надежно работает с использованием метода аутентификации на основе информации о системе доменных имен.

Международный адрес электронной почты

Пользователи, чей сценарий не является латинским, или которые используют диакритические символы не в наборе символов ASCII, испытывали трудности с требованием адреса электронной почты латинского алфавита (SMTP-порт mail.ru). RFC 6531 был создан для решения этой проблемы, предоставляя возможности интернационализации для SMTP, расширения SMTPUTF8 и поддержки многобайтовых и не-ASCII-символов в адресах электронной почты. Примеры: диакритические знаки и другие языковые символы (греческий и китайский). Также актуально для SMTP-порта Yandex.

Текущая поддержка этого документа на данный момент ограничена, но есть большой интерес к широкому внедрению RFC 6531 и соответствующих RFC в таких странах, как Китай, которые имеют большую пользовательскую базу, где Latin (ASCII) является иностранным сценарием.

Исходящая почта SMTP-сервера

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

Ограничения доступа к серверу исходящей почты

Администраторам сервера необходимо наложить определенный контроль на тех клиентов, которые могут использовать сервер. Это позволяет бороться со злоупотреблениями и спамом. Широко использовались подобные решения:

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

Современные SMTP-серверы обычно предлагают альтернативную систему, требующую аутентификации клиентов по учетным данным, прежде чем разрешать доступ.

SMTP — какой порт используется?

Связь между почтовыми серверами обычно всегда использует стандартное значение порта TCP 25, назначенного для SMTP. Тем не менее почтовые клиенты обычно вместо этого используют определенные порты порта smtp ssl. Большинство провайдеров интернет-услуг теперь блокируют весь трафик исходящего порта от своих клиентов в качестве меры защиты от спама. По той же причине предприятия обычно настраивают свой брандмауэр, чтобы разрешить исходящий порт с назначенных почтовых серверов.

Пример транспорта SMTP

Типичный пример отправки сообщения через SMTP на два почтовых ящика (alice и theboss), расположенных в одном и том же почтовом домене (example.com или localhost.com), воспроизводится в следующем сеансе обмена. После того как отправитель сообщения (клиент SMTP) устанавливает надежный канал связи для приемника сообщений (SMTP-сервер), сеанс открывается с сервером, обычно содержащим его полное доменное имя (FQDN), в этом случае smtp, example или com. Клиент инициирует свое диалоговое окно, отвечая командой HELO, идентифицирующей себя в параметре команды с его полным доменным именем (или литералом адреса, если он недоступен).

Дополнительные расширения

Клиенты узнают, какие опции поддерживает сервер, используя приветствие EHLO, вместо исходного HELO. Клиенты возвращаются в HELO только в том случае, если сервер не поддерживает расширения SMTP.

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

Методы защиты от спама и аутентификация по электронной почте

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

Производятся специальные предложения для изменения SMTP или их замены полностью. Одним из примеров этого является Internet Mail 2000, но ни он, ни какой-либо другой не добились большого успеха перед сетевым эффектом огромной установленной базы классического SMTP. Вместо этого почтовые серверы теперь используют целый ряд методов, в том числе DomainKeys, DomainKeys Identified Mail, Policy Policy Framework и DMARC, DNSBLs и greylisting для отклонения или карантина подозрительных писем.