Протокол smtp является. Почтовые SMTP-порты и их значение. SMTP-сервер исходящей почты

SMTP реализуется в современных сетях стандарта TCP/IP. Впервые информация об использовании протокола появилась еще в 1982 г. Несмотря на то, что сервер SMTP может быть использован и для получения сообщений, на сегодняшний день большинство почтовых клиентов используют его только для отправки, предпочитая другие технологии (например, POP или IMAP) для приема информации. Протокол является одним из наиболее популярных и используется подавляющим числом почтовых программ и серверов.

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

Настройка SMTP

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

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

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

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

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

Команды представляют собой текстовые строки, завершающиеся последовательностью. Команда, как таковая, представляет собой строку букв (обычно это 4 буквы), завершаемую пробелом (при наличии параметров) или. Получателям SMTP рекомендуют быть терпимыми к пробелам перед завершающей последовательностью.


Список команд протокола SMTP:

Команды прямо указанные в RFC 5321:

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

Пример:
HELO orsi1.rsmc.ru

  • MAIL - Определяет отправителя сообщения. Поле аргументов содержит обратный путь и может включать дополнительные параметры. Собственно этой командой задаётся отправитель письма (MAIL FROM)

Пример:
MAIL FROM:

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

Пример:
RCPT TO: root@сайт

  • DATA - Определяет начало сообщения. Не поддерживает параметров. После обработки команд MAIL и RCPT команда DATA используется для передачи информационной части сообщения. Все, что следует за этой командой, интерпретируется как сообщение для передачи. Вот оно, наше письмо! 

Пример:
DATA

  • RSET - Сброс SMTP-соединения па. Не поддерживает параметров. Возвращает сеанс к моменту после ввода команды HELO (EHLO) при этом все ранее посланные команды MAIL, RCPT и DATA считаются аннулированными.
  • VRFY - Проверяет имя пользователя системы. Если на почтовом сервере имеется локальный пользователь с заданным именем, то сервер вернет его полный почтовый адрес. Если такого локального пользователя нет то вернется сообщение об ошибке, либо сообщение о том что сервер будет пересылать письма дальше. В случае имени заданного в примере мы скорее всего получим сообщение об ошибке.

Пример:
VRFY kyrych

  • EXPN - Запрашивает список рассылки и почтовых псевдонимов.

Пример:
EXPN mail-list

  • HELP - Запрашивает список команд поддерживаемых сервером. Если указать в качестве параметра имя команды, то сервер возвращает справку по синтаксису данной командыю

Пример:
HELP VRFY

  • NOOP - No operation — Ничего не делать.

Пример:
NOOP

  • QUIT - Закончить сеанс SMTP. Не поддерживает параметров.

Пример:
QUIT

Прочие команды:

  • SEND - Посылает сообщение на терминал зарегистрированного пользователя. Эта команда выполняется, только если пользователь находится в системе, и обычно выглядит как всплывающее сообщение. Не самая популярная команда.
  • SOML - Если получатели сообщения подключены к системе, то SOML работает как команда SEND. Если не подключен, то как команда MAIL. Из-за небезопасности этой команды её редко реализуют на сервере.
  • SAML - передает сообщение на терминал пользователя, если он находится в системе и одновременно кладет это сообщение в его почтовый ящик.
  • TURN - Реверс ролей в SMTP (клиент становится сервером). Обычно протоколом SMTP предусмотрена пересылка сообщений только в одном направлении через одно TCP-соединение. Назначение команды TURN заключается в организации двустороннего обмена почтовыми сообщениями между двумя компьютерами по имеющемуся TCP-соединению. Из за популярности этой команды у злоумышленников её реализацию не часто можно встретить на сервере.
  • AUTH - Показывает серверу механизм аутентификации. RFC 4954 (заменил RFC 2554).
  • Вперёд
Добавить комментарий


  • Телеметрия в Windows 10. Отключай, не отключай, всё равно получишь лучшее решение
  • Го. Компьютер смог обыграть чемпиона трехкратного чемпиона Европы по игре го
  • Новые "подарки" от Microsoft - "стабильность" и "приватность"
Новые статьи
  • Не включается сетевое обнаружение в Windows 7/8/2008/2012
  • Ошибка: This application failed to start because it could not find or load the Qt platform plugin «windows».

    Итак, после установки путём прямого копирования приложения написанного на С++ с использованием библиотеки Qt Получаем следующую ошибку: This application failed to start...

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

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

Он не стеснен какими-либо конкретными подсистемами передачи данных. Его работа нуждается только в надежном канале потока их передачи с сохранением порядка.

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

Для чего используется?

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

Виртуальный хостинг сайтов для популярных CMS: Принцип работы протокола.

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

Рабочая сессия протокола состоит из отправляемых mail - клиентом SMTP ряда команд и ответов на них сервера. При рабочей сессии и клиент, и сервер обмениваются необходимыми параметрами.

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

  • Команда MAIL FROM - обозначивает обратный электронный адрес;
  • Команда RCPT TO - определяет получателя конкретного письма;
  • DATA - это команда, отвечающая за отправку текста электронного сообщения. Это тело письма, которое включает в себя заголовок и текста письма, разделенных между собой пустой строкой.

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

Как работают другие почтовые протоколы.

SMTP является лишь протоколом доставки корреспонденции в сети. Он не может по команде взять электронное сообщение с удаленного сервера или как-то управлять e-mail ящиком.

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

POP.

Post Office Protocol – это простой сетевой протокол, включающий в себя три разновидности: POP, POP2 и POP3. Разработаны они для того, чтобы доставлять корреспонденцию пользователю с центрального почтового сервера, для удаления почты с сервера и для идентификации пользователя. Для идентификации используется сочетание логина и пароля. Стоит отметить, что все три протокола не взаимозаменяемы.

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

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

IMAP.

С помощью Internet Message Access Protocol становится возможным хранение сообщений в директориях файлов на сервере и производить поиск любых строк сообщений прямо там.

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

Протокол 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 В последующих разделах описываются различные характеристики почтового сервера, которые задаются при его настройке. Чтобы не описывать эти характеристики для каждого сервера, рассмотрим их