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

Темно-серая пятница

Сам я получаю спам практически ежедневно — в среднем выходит пять — десять писем (около 50 Кбайт) в неделю. Но один день — пятница 7 апреля в этом году — стал печальным исключением: за сутки на мой рабочий адрес поступило более ста «мусорных писем» общим объемом более мегабайта, причем все они были отправлены через один и тот же список рассылки: в поле заголовка To: (кому) стоял адрес list@rassylka.ru*

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

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

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

From: «Адрес турфирмы»

To: «Адрес списка рассылки»

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

Некоторые обезумевшие от «заговора серверов» пользователи (таковых оказалось тоже несколько десятков) издали электронный крик души — послали письма с требованиями или мольбами прекратить рассылку рекламы и антивирусных предупреждений. Для этого они воспользовались функцией «Ответить» (Reply) своей почтовой программы. А поскольку очень многие электронные почтальоны стандартно посылают ответное письмо на все адреса, перечисленные в заголовке исходного (в полях From:, Cc:, Reply-To: и To:) и не совпадающие с собственным адресом получателя, письма возмущенных жертв тут же вернулись им самим и попали в почтовые ящики сотен их товарищей по несчастью.

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

Уроки для «почтальонов»

Рассказанная только что история наглядно иллюстрирует печальный факт: пользователи часто не умеют работать с системой электронной почты. Их познания ограничиваются особенностями интерфейса любимой (или единственно знакомой) почтовой программы — как если бы пользователь обычной почты досконально изучил формы конвертов и виды клея, но не мог бы правильно написать или прочитать адрес и почтовый индекс. Давайте же немного поучимся, чтобы освоить эти несложные навыки.

Сообщение электронной почты состоит из письма и технического конверта. Письмо включает в себя не только основной текст, но и (вопреки расхожему мнению) файловые вложения (attachments), а также поля заголовка (headers), в том числе адрес получателя (поле To:) и адрес отправителя (поле From:). Важно понимать, что эти поля НИКАК НЕ ИСПОЛЬЗУЮТСЯ ПРИ ДОСТАВКЕ ПИСЬМА. Вся информация, необходимая «почтовым отделениям» (серверам электронной почты) для его доставки, содержится ТОЛЬКО в техническом конверте, который заполняется НЕ ПОЧТОВОЙ ПРОГРАММОЙ, а ближайшим сервером электронной почты («со слов» почтовой программы, разумеется).

Так выглядит технический конверт письма в Outlook Express 5

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

При посылке нового письма почтовая программа «советует» серверу сгенерировать технический конверт с указаниями адресов доставки для каждого адреса, заданного в полях заголовка To: и Cc: (Carbon Copy — копия «под копирку»). Большинство программ позволяют заказать также технический конверт для доставки по адресу, не фигурирующему ни в одном из полей заголовка; в диалоговом окне написания письма такой адрес обычно заносится в поле под названием Bcc: (Black Carbon Copy — секретная копия).

При ответе на письмо почтовая программа общается с сервером так же, как при отправке нового письма, но особым образом порождает поля заголовка To: и Cc:. А именно, в первое автоматически переносятся адреса из поля From: или Reply-To: исходного письма (иногда — из обоих полей), а во второе — адреса из его поля Cc:. Часто используется также режим, при котором в поле To: ответа дополнительно помещаются все адреса из поля To: исходного письма, не совпадающие с собственным адресом пользователя. Потом на все адреса из полей To: и Cc: заказываются технические конверты.

Наконец, при переадресации письма, находящегося в почтовом ящике или архиве, почтовая программа заказывает у сервера технический конверт с адресом, никак не связанным ни с одним из адресов в полях заголовка (по-английски данная операция называется Forward или Bounce). Сами поля заголовка при этом никак не меняются. Заметим, впрочем, что в некоторых современных почтовых программах (включая Outlook Express и Netscape Messenger) под переадресацией (Forward) понимается просто порождение нового письма «от своего имени», но с прежним содержимым.

Как видим, почтовая программа ни в каких случаях не использует технический конверт исходного письма, т. е. информацию о его фактическом отправителе и получателе. Например, если A написал письмо B (упомянут в поле To:) и C (секретная копия), а потом C переслал его для ознакомления D (командой Bounce), а затем D решит ответить на это письмо, то его ответ будет направлен A и B (или только A), но не C!

Программы рассылки, спам и «тайные адреса»

Программы рассылки действуют примерно так же, как почтовая программа при отправке «секретной копии» письма или при переадресации. Они хранят список адресов и по заказу пользователя генерируют для этих адресов технические конверты, а поля заголовка From:, To: и Reply-To: заполняют специальным образом. В «нормальных» рассылках эти поля обычно настраиваются так, чтобы на письмо можно было ответить по выбору автору исходного письма, всем членам списка или его владельцу. У спамеров же там в них обычно стоят несуществующие адреса, а иногда адреса роботов, составляющих новые списки рассылки из свежих и проверенных адресов. Именно поэтому, кстати, никогда не следует отвечать на предложения принять извинения и написать, чтобы ваш адрес исключили из списка: ответ лишь подтвердит, что этот адрес существует и активен.

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

Увидеть технический конверт позволяют практически все почтовые программы, хотя и по-разному. Например, Netscape Messenger показывает его вместе с полями заголовка и текстом сообщения при задании параметра All («Все») в меню View? Headers («Вид?Заголовки»), а Outlook Express — в отдельном окне: чтобы увидеть его, нужно, выделив сообщение, выбрать в меню File («Файл») пункт Properties («Свойства») и перейти на закладку Details («Подробности»); на этой странице есть также кнопка Message Source («Исходное сообщение»), нажав которую можно просмотреть письмо вместе с техническим конвертом в текстовом формате. Если вам не удается найти нужную настройку в своей программе, попробуйте сохранить письмо как файл или отдельный архив, а затем открыть полученный файл как «простой текст» в каком-нибудь текстовом редакторе.

Во врезке приведен «технический конверт» письма, отправленного пользователем A пользователю B и переадресованного затем пользователю С. Рассмотрим его строки (своего рода почтовые штемпели) снизу вверх, что соответствует хронологическому порядку. Первая говорит, что письмо получено машиной A_server.kc.ru. Это имя первого почтового сервера после почтовой программы, оно совпадает с доменом отправителя A (обычно так и бывает, однако спамеры могут подделать эту строчку, поскольку первый сервер обычно принадлежит им). Каждая следующая строка, начинающаяся с Received:, сообщает, что очередной сервер получил наше письмо от предыдущего.

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

Строки, начинающиеся с Resent-, относятся к переадресации письма и не требуют пояснений. Верхняя строка (From) была поставлена почтовой программой при пересылке, иначе там стояло бы имя изначального отправителя (A). Анализ этих строк позволяет установить полный адрес того, кто переадресовал письмо, и домен первоначального отправителя, а в случае злонамеренной подделки адресов — домен одного из серверов, принадлежащих фальсификаторам.

Что делать и особенно — от чего воздерживаться

Сформулируем теперь некоторые выводы о том, как пользоваться почтой, как поступать со спамом и как — с вирусами.

Об обычной переписке

Будьте осторожны, применяя функцию «Ответить» почтовой программы, особенно тогда, когда речь идет о циркулярных и коллективных письмах. Не доверяйте автоматике — проверьте адреса перед отправкой.

Некоторые почтовые программы спрашивают, следует ли отправить ответ «всем заинтересованным». Не пропустите этого вопроса. Лучше ответить на него отрицательно, а недостающих адресатов вписать вручную или из адресной книжки программы.

О списках рассылки (причем не обязательно спама)

Возможны три вида ответа на письмо, пришедшее из списка рассылки: автору (его имя часто имеется в поле From:), всем читателям (адрес может быть в поле To: или в поле Reply-To:), администратору списка (человеку либо роботу). Опасайтесь их перепутать — у читателей (которых подчас не одна тысяча) будут все основания возмутиться, получив что-то вроде: «Старик, увидел твое письмо в списке рассылки о торговле ширлями-мырлями; очень рад, что нашлись твои следы. А помнишь, как мы в 1987 году на курорте...» Не стоит полагаться на автоматические настройки: так, одни программы при ответе считают «более главным» адрес в поле From:, другие — Reply-To:. Надо или указывать адреса вручную, или выбирать ответ «всем заинтересованным», а потом стирать в списке ненужные. Пожалуй, есть рациональное зерно в действиях тех администраторов списков рассылки, которые вообще не предоставляют возможности автоматического ответа, а все контактные адреса (списка, автора письма и администратора) указывают в теле письма.

О спаме

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

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

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

Если очень хочется отомстить и «буддистский» подход вас не устраивает, обратитесь к техническому конверту письма, найдите домен сервера спамера и отправьте письмо его администратору (по адресам postmaster@<домен спамера> и root@<домен спамера>). Если сервер российский, писать можно по-русски, иначе — по-английски. Обязательно вышлите само «мусорное» письмо (практика показывает, что достаточно только технического конверта и той части, которая доказывает, что имеет место спам, т. е. полей заголовка) — провайдер по своим протоколам найдет виновного и отключит его. Если это почему-либо не действует, обратитесь к своему провайдеру: есть вероятность, что провайдер спамера находится в «черном списке», и тогда ваш провайдер вообще закроет прием почты с его домена. Или даже сам инициирует процедуру внесения в «черный список». Но не мстите сами — оставьте это профессионалам.

О почтовых вирусах

В идее использования антивируса на шлюзе есть элемент абсурда: почему кто-то должен решать за меня, хочу ли я получить АДРЕСОВАННОЕ МНЕ письмо? Это не слишком хорошо согласуется с правом на тайну переписки. Неужели недостаточно просто предупредить меня? Только адрес для предупреждения должен браться, естественно, не из поля To:, а из технического конверта. Мораль: добивайтесь отказа от контроля почты на шлюзе.

Конечно, можно проверять почту на наличие вирусов уже на локальной машине получателя. Но есть более простой выход: не надо в поте лица искать вирусы — надо их не запускать. Разумеется, вирус может содержаться в любом файловом вложении (например,в zip-архиве с программой), но собственно почтовыми имеет смысл считать лишь те, которые находятся в автоматически открываемых вложениях — документах Word и исполняемых элементах расширенного языка HTML. Существует стопроцентно надежная, бесплатная и не имеющая побочных эффектов защита от таких вирусов: не использовать программы (режимы программ), автоматически открывающие файловые вложения. В конце концов, электронная почта предназначена для переписки, и я с трудом представляю себе адресата, которому важно, чтобы по строкам во время чтения прыгал анимированный человечек и «устно» комментировал содержание письма. А если присланные файлы важны именно как файлы, а не как интегральная часть письма, сохраните их на диске, проверьте антивирусом и открывайте.

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

P. S. Разразившаяся несколькими неделями позже эпидемия почтового вируса «I Love You» еще раз подтвердила все сказанное выше. Пострадали лишь те пользователи, для которых прочтение письма эквивалентно открытию его файловых вложений, причем у большинства почтовая программа автоматически открывала все вновь пришедшие сообщения при просмотре почтового ящика.

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

Об авторе

Суханов Александр Алмазович, e-mail: alsu@sch57.msk.ru


* Все адреса заменены на условные.


Пример «технического конверта» письма

From B Sun Apr 09 23:15:15 2000
Received: by mydomain.dnttm.rssi.ru (UUPC/@ v7.00, 07Jan97)
          id AA05630; Sun,  9 Apr 2000 23:15:15 +0400 (MSD)
Resent-To: C@mydomain.dnttm.rssi.ru
Resent-From: «B real name» 
Resent-Date: Sun,  9 Apr 2000 23:15:14 +0400 (MSD)
Received: by mydomain.dnttm.rssi.ru (UUPC/@ v7.00, 07Jan97) with UUCP
          id AA06299; Thu, 30 Mar 2000 20:58:35 +0400 (MSD)
Received: from aleks.elcom.ru (root@aleks.elcom.ru [193.232.231.98])
        by helios.dnttm.ru (8.9.1/8.9.3/IP-3) with SMTP id UAA23910
        for ; Thu, 30 Mar 2000 20:37:16 +0400
Received: from A_server  with uucp
        by aleks.elcom.ru with uucp
        (/oo/ Smail3.1.29.1 #29.2 #2) id m12ahw1-000UuCC;
 Thu, 30 Mar 100 19:36 GMT+0300
Received: by A_server.kc.ru (UUPC/@ v6.14f, 10May95);
          id AA26854 Thu, 30 Mar 2000 20:29:40 +0400
729