Получить собственный электронный адрес можно на каком-нибудь сервере их бесплатной раздачи либо при регистрации у провайдера. Обычно e-mail состоит из двух частей — имени пользователя и имени хоста (почтового сервера), разделенных знаком @, который, как оказалось, ассоциируется у финнов с кошкой, у корейцев — с червяком, а у нас часто называется «собакой», «обезьянкой», «булькой», «ухом»... Есть такой бородатый анекдот.

Звонит как-то один приятель другому:

- Слушай, скажи мне адрес Толяна, я хочу его сильно предупредить.

- Ага. Записывай: tolik@mail.ru.

- Ну, что Толик - собака, всем известно, а что такое мейлру?

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

Обычное явление — обладание несколькими почтовыми ящиками для того, чтобы избежать проблем со спамом (нежелательной рассылкой). Например, свой адрес private_mail@email.server не стоит публиковать в открытой печати, его можно раздавать только доверенным лицам, а public_mail@email.server не печатается разве что только на спичечных этикетках. Понятно, что как только e-mail публикуется в среде www, он обязательно попадает в одну из баз данных массовой рассылки, и вы сразу узнаете, почем шпингалеты в Нижнем Тагиле и как приобрести супермодный постер с изображением собачки президента. Делается и то и другое часто автоматически, без участия человека. В случае поиска почтовых адресов специальные программы-боты просеивают содержимое Web-серверов на предмет существования строчки вида в исходном тексте документа на языке разметки html, выкусывают из тега адрес и заносят в свою базу данных. Составитель подобных баз данных затем рассортировывает этот мусор по категориям. Например, создаются группы адресов бизнесменов г. Москвы, людей, желающих что-либо купить или «еще не определившихся». Стоит один лишь раз провести эту адскую работу, чтобы потом, особенно не напрягаясь, с помощью программ массовой рассылки вещать на многотысячную аудиторию.

Путешествия почтовых сообщений

Обращаясь к своему почтовому ящику на предмет получения новой корреспонденции в зависимости от личных настроек почтовой программы, пользователь может оставить сообщения храниться на сервере либо уничтожить их, предварительно скопировав себе на компьютер. Получение почты происходит обычно по протоколу POP3 (post office protocol, почтовый протокол, третья версия) или IMAP (interactive mail access protocol, интерактивный протокол доступа к почте). По запросу пользователя по указанным протоколам программа на сервере проверяет наличие новых сообщений в зарегистрированном ящике и обычно выдает их по очереди (рис. 1).

Рис. 1. Получение почты по протоколу POP3 (IMAP)

Процесс отправки почты выглядит несколько иначе. В качестве транспортного средства доставки сообщений в Интернет выступает SMTP (simple mail transfer protocol, простой протокол передачи почты). Упрощенно схема взаимодействия представлена на рис. 2.

Со стороны пользователя обычно одна и та же программа выступает в роли и POP3-клиента, и SMTP-клиента отправителя. На данный момент наиболее распространены MS Outlook, The Bat, Netscape Messenger, Eudora, Pegasus mail, Mutt, Pine и др. При нажатии в них кнопки «Отправить» формируется очередь сообщений (при посылке более чем одного письма) и устанавливается двусторонний сеанс общения с SMTP-сервером провайдера. На рис. 2 у пользователя есть клиентское ПО, а у провайдера — серверная часть приложения. На самом деле это не совсем так. Протокол SMTP делает возможным смену сторон даже в ходе одного сеанса. Условно принято считать клиентом ту сторону, которая начинает взаимодействие и хочет отослать почту, а сервером — ту, что принимает запросы. После того как клиент посылает серверу несколько служебных команд и получает на них положительные ответы, он отправляет SMTP-серверу собственно тело сообщения. Получив его, SMTP-сервер вносит дополнительные заголовки, подтверждающие, что он обработал данное послание, и устанавливает связь со следующим SMTP-сервером по маршруту следования письма. Общение между любыми SMTP-серверами происходит по той же схеме. Инициирует переговоры клиент, сервер отвечает, а затем получает корреспонденцию и «ставит штампик». Все это очень напоминает обычную бумажную почту, где работу по сортировке и отправке выполняют люди.

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

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

Из рассмотренной схемы взаимодействия становится понятной необходимость явного указания в настройках почтовой программы:

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

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

Неясным остался всего лишь один момент. Как первый по пути следования SMTP-сервер выбирает следующий пункт назначения? В случае, если почтовый сервер адресата находится в рабочем состоянии и отвечает на запросы положительно, сообщение сразу скидывается в ящик somebody, находящийся на его жестком диске. Если пункт назначения в данный момент не подключен к Интернету (такая ситуация часто встречается, когда почтовый сервер адресата сам время от времени забирает почту), то на помощь приходит служба доменных имен DNS (domain name service). SMTP-сервер направляет запрос к DNS-серверу о том, что делать, если сервер адресата недоступен. Ему в ответ приходит информация о другом перевалочном пункте, на котором почта будет храниться до тех пор, пока сервер адресата ее не снимет. Если в базе данных DNS не содержится указаний о других возможных почтовых маршрутах (MX-запись), то в действие вступает уже упомянутый алгоритм «Failed delivery».

Просмотрев заголовки уже полученного письма (в них заносится информация о всех транзитных пунктах между отправителем и получателем), можно узнать, какими маршрутами оно путешествовало, сколько времени это заняло, как называлась почтовая программа отправителя, и многое другое. Получить эту информацию можно в «Свойствах письма», кликнув правой кнопкой мыши на самом письме в MS Outlook, нажав ++H в The Bat! или совершив нечто подобное в других почтовых клиентах.

Листинг 1

Приведенный в листинге 1 пример показывает четкую структуру письма. Тело почтового сообщения состоит из заголовочной части и текста плюс вложения (в данном случае слова «Тестовое сообщение»). До слова From: информация заносится промежуточными SMTP-серверами, каждый из которых добавляет свои данные в начало, тем самым постоянно увеличивая количество передаваемых далее байтов. Средняя заголовочная часть (начиная с From: и заканчивая X-UIDL) почти полностью формируется почтовым агентом отправителя. Исключение составляет, например, поле Message-Id:, которое было сформировано первым по пути следования SMTP-сервером — f5.mail.ru. Некоторые поля стандартизованы и желательны для употребления, например From, To, Subject, Reply-To... А некоторые являются дополнительными по отношению к описанным в стандарте текстовых сообщений в среде Интернета (RFC 822) и необязательны. Такие поля начинаются с X- и служат, например, для идентификации самого почтового клиента.

Строки

X-Mailer: mPOP Web-Mail 2.19

и

Received: from [213.59.200.7]
 by win.mail.ru with HTTP

говорят о том, что письмо было отослано с помощью браузера с использованием протокола HTTP (hypertext transfer protocol). На пути от win.mail.ru к dfe3300.karelia.ru встретилось два транзитных SMTP-сервера: f5.mail.ru и mx10.mail.ru. Каждый из них поставил отметку о себе в заголовочную часть сообщения. Наличие нескольких почтовых серверов в домене mail.ru свидетельствует о масштабности данного проекта и особых правилах маршрутизации почты внутри него.

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

Составляя почтовое сообщение, пользователь должен заполнить поле To, куда заносится адрес назначения (запись From подставится в заголовки письма автоматически). В Интернете существуют правила хорошего тона, которые рекомендуют также указывать тему сообщения (поле Subject).

Для рассылки почты по нескольким адресам «в открытую» необходимо воспользоваться полем CC (carbon copy). Сюда заносятся почтовые адреса получателей через запятую. Термин «в открытую» означает, что человек, получивший такое письмо и просмотревший его заголовки, может определить, кому еще оно было послано в виде копии. Если же необходимо доставить один и тот же текст нескольким людям, да так, чтобы каждый из них не знал, кому еще адресовано это письмо, придется воспользоваться полем BCC (blind carbon copy, слепая копия). В этом случае каждый из адресатов, указанных в поле BCC через запятую, получит сообщение как предназначенное только ему. Эту работу по «размножению» почты незаметно для пользователя выполняют его почтовый клиент и первый по пути следования письма SMTP-сервер. Они анализируют заголовочную часть письма, и если обнаруживают заполненные поля CC, BCC, то действуют в соответствии со своими алгоритмами обработки почтовых сообщений.

Немилицейский протокол

Рассмотрим более подробно клиент-серверное взаимодействие по протоколу SMTP. Программа пользователя, выбрав для связи соответствующий почтовый сервер, устанавливает с ним контакт на транспортном и сеансовом уровнях эталонной модели взаимодействия открытых систем OSI/RM (в терминах TCP/IP, transmission control protocol / internet protocol, это TCP-уровень). Взаимодействие на более низких уровнях (канальном, сетевом) происходит прозрачно для обеих сторон. Протокол SMTP — прикладного уровня и базируется поверх TCP. В его рамках не оговариваются ни размер сегментов данных, ни отслеживание ошибок, возникающих при передаче информации.

Итак, по уже установленному соединению клиентское ПО передает команды SMTP-серверу, ожидая тут же получить ответы. В арсенал SMTP-клиента, равно как и сервера, входит около десяти команд, причем воспользовавшись всего пятью из них, уже можно легально послать почтовое сообщение. Это HELO, MAIL, RCPT, DATA, QUIT — именно в такой последовательности. HELO (усеченная форма от hello, приветствие) предназначена для идентификации отправителя, MAIL указывает адрес отправителя, RCPT (от англ. recipient — принимающий) — адрес назначения. После команды DATA и ответа на нее клиент посылает серверу тело сообщения, которое должно заканчиваться строкой, содержащей лишь одну точку. Выражаясь языком программистов, сервер узнает о прекращении посылки сообщения, встретив набор символов . или . ( — так называемый возврат каретки с переходом на новую строчку, во многих редакторах это происходит при нажатии клавиши ).

Для демонстрации вышесказанного можно воспользоваться программой telnet. Если выполнить в командной строке Unix-подобных операционных систем следующую команду: telnet name_of_mail_server.ru 25 или, нажав «Пуск?Выполнить», ввести telnet name_of_mail_ server.ru 25 (для пользователей Windows), то установится TCP-соединение с 25-м портом указанного сервера (естественно, вместо слов name_of_mail_server следует набрать имя почтового сервера). Этот TCP-порт служит для обеспечения взаимодействия по протоколу SMTP (например, на 80-м порту обычно находится Web-сервер, принимающий и отсылающий информацию по HTTP-протоколу). Если не будет видно набираемых символов в сеансе telnet, попробуйте изменить параметры вывода на экран («Параметры?Отображение ввода»).

Ниже приведен пример telnet-сеанса общения с несуществующим public_mail_server.ru, абонентом которого является некто с именем test_only и которому предназначается почтовое сообщение.

Непосредственно после установления соединения сервер выдает строчку с кодом ответа 220. В ответ на нее клиент может инициировать сеанс связи по протоколу SMTP, послав команду HELO (можно строчными буквами) и указав у нее в аргументах имя своего компьютера. Сюда можно писать все что вздумается, потому как по принятии команды HELO сервер обязан сделать запрос в DNS и, если это возможно, по IP-адресу определить доменное имя компьютера клиента (на момент установления соединения по TCP-протоколу IP-адрес уже известен). Именно поэтому в строчке 250 public_... присутствует имя as1-52.dialup.onego.ru, соответствующее одному из IP-адресов модемного пула провайдера, а не my_comp.ru, как было указано на стадии приветствия.

Далее в команде MAIL FROM: клиент сообщает обратный адрес отправителя, который проверяется обычно только на корректность (это зависит от настроек SMTP-сервера). После слов RCPT TO: следует набрать адрес электронной почты абонента на данном сервере. Ответ 250 verified свидетельствует о существовании логина с именем test_only. Клиент отсылает команду DATA и ждет приглашения начать пересылку тела письма (код 354).

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

Как будут действовать пользовательское и серверное ПО в случае необходимости «массовой» рассылки? Если клиент посылает сообщение, у которого в заголовочной части в поле CC указаны несколько адресов, первый по пути следования SMTP-сервер должен будет в общем случае установить сеанс продвижения почты с каждым из серверов данного списка и каждому отослать точную копию письма. В случае использования поля BCC клиент, формирующий сообщение, уничтожит запись BCC в теле сообщения и несколько раз (по количеству адресатов) отошлет первому SMTP-серверу команду RCPT TO: каждый раз с новым адресом в качестве аргумента. Таким образом, сервер получит указание разослать почту по многим адресатам. Причем в этом случае получатели писем ничего не будут знать друг о друге, так как рассылка осуществляется посредством команд SMTP-протокола (без использования информации в заголовочной части письма).

Что будет, если попробовать соединиться с каким-нибудь mail-сервером и через него передать почту, предназначенную другому? (В предыдущем примере адресатом был test_only@public_mail_server.ru, поэтому устанавливалось соединение именно с public_mail_server.ru.) Чаще всего на ввод команды RCPT TO: в этом случае вы получите relaying denied (пересылка запрещена). Сделано это для защиты от неконтролируемых и несанкционированных почтовых рассылок.

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

Протокол SMTP существует достаточно давно, с 1982 г. (RFC 821), и впоследствии в него были внесены некоторые дополнения, выразившиеся в появлении ESMTP (Extended SMTP, RFC 1425, 1993 г.). Если клиент поддерживает ESMTP, его первая команда будет EHLO (Extended Hello), а не HELO. Сервер в ответ на нее должен выдать список всех дополнительных команд, которые он умеет обрабатывать. Клиент может ими воспользоваться, а может проигнорировать, послав сообщение продемонстрированным выше способом.

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

Листинг 2
Об авторе

Алексей Мощевикин — к.ф.-м.н., Петрозаводский государственный университет.

Окончание в следующем номере


Шаг за шагом избавляемся от спама

Устали от спама? Наш совет — установите почтовый фильтр. Спам не перестанет поступать совсем, но количество надоевших сообщений уменьшится. Итак, установка фильтра в Outlook Express 6.x и Netscape Mail 6.1/6.2 — шаг за шагом.

Outlook Express 6.x
  1. Выберите "СервисoПравила для сообщенийoПочта".
  2. Если у вас уже есть правила, нажмите "Создать".
  3. В окне "Новое правило для сообщений" выберите условия применения правила. Например, можно отметить строку с указанием на поле "Тема".
  4. Выберите желаемое действие, например "Переместить в заданную папку".
  5. В окне "Описание правила" щелкните на подчеркнутой фразе в строке "Искать сообщения, содержащие заданные слова в поле Тема" и внесите слова, которые часто встречаются в спам-сообщениях: деньги, секс, виагра и т. п.
  6. Щелкните на подчеркнутом слове в "Заданной папке", затем в окне "Переместить" выберите "Новая папка" и дайте ей имя, дважды нажмите ОК.

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

Netscape Mail 6.1/6.2
  1. Выберите EditoMessage Filters.
  2. Выберите ящик из списка Filters for и нажмите New.
  3. В окне Filter Rules создайте имя фильтру, выберите Any of the following и в списке отметьте Subject и Contains. Затем щелкните на поле для текста справа и введите ключевые слова (секс, виагра, деньги и т. п.).
  4. Нажмите More, затем выберите Body и Contains, в поле для текста введите дополнительные ключевые слова.
  5. В списке Perform This Action выберите Move to folder и нужный адрес, затем щелкните на New Folder. Введите название папки и отметьте Create as a subfolder of для указанного адреса. После этого трижды нажмите ОК.

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

Со спамом можно расправиться и с помощью одной из специальных программ, например условно-бесплатной Spamkiller (30 долл.) или бесплатной Avirmail (www.avirmail.com). Они сканируют почту в ящике на сервере провайдера и выявляют спам еще до того, как он попадает в ваш ПК.


Клин клином вышибают

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

Умных и хитрых спаммеров в мире все-таки несколько больше, чем простодушных и начинающих. Так почему бы нам не воспользоваться их опытом и не обратить против них их же собственное оружие? Чаще всего «профи» создают специальные поисковики (типа Yahoo или Google), каталоги, сайты рассылок бесплатных футболок, сотовых телефонов, новых ПК и т. д. и т. п. Все это делается лишь для того, чтобы клиент (будущая жертва) зарегистрировался на сайте, указав свой реальный e-mail. Потом майку с телефоном никто ему не пришлет, а цель достигнута: хитрец стал богаче на один реальный адрес. Бороться с такими деятелями сложно. Неопытные же «надоеды» обычно пишут в теле письма примерно следующее :

«...Закажите рассылку вашей информации по предприятиям Москвы, России или СНГ по адресу russia@creative-dr.com, и вас завалят заказами! Пожалуйста, для связи не пользуйтесь обратным адресом данного письма...» Вот здесь-то куча вариантов для мести! Берем указанный в письме реальный адрес спаммера (например, russia@creative-dr.com) — и вперед!

Самый простой и эффективный способ

Заходя на любые эротические, хакерские, рекламные и прочие сомнительные сайты, везде вводите e-mail спаммера для подписки на всевозможные рассылки и уведомления. Это делается обычно на первой же странице всего одним нажатием кнопки SUBMIT. Действует безотказно!

Авторегистрация в поисковых машинах

В какой-либо программе авторегистрации сайтов в поисковых машинах (см. «Web-сайт, открой личико», «Мир ПК», №6/02) заполните форму о любом сайте популярной тематики и форму о его владельце, где в графе e-mail укажите не свой электронный адрес (это глупо), а e-mail того, кто вам надоедает. Разошлите форму автоматически по спискам каталогов и директорий. Результат превзойдет все ожидания!

Бесплатные серверы нам помогут

Конечно, не у всех есть полные версии программ авторегистраций сайтов, но, к счастью, есть бесплатные серверы: www.addme.com, www.uswebsites.com, www.siteowner.com, www.isubmit.org, www.broadcaster.co.uk и т. д. Они прекрасно подойдут для автоматической рассылки электронного адреса спаммера во все рассылочные листы спаммеров-профи.

Не рой другому яму

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

Алексей Набережный

P.S. Автор лично проверил все эти способы на надоедливом хозяине адреса mass@usamailbox.cc.