Ты робот или человек?




В последнем случае спамеру не помогут даже программы распознавания текста, так как ключевое слово вообще отсутствует в теле письма. В двух других случаях имеет смысл создавать указанное кодовое слово случайным образом для каждого нового адреса и устанавливать срок, в течение которого оно действительно.
Если письмо пришло от потерянного друга или нового человека, который, тем не менее, желает общаться, он ответит на него без проблем, что даст почтовому агенту повод обратиться к пользователю с вопросом о занесении данных отправителя в адресную книгу. Если разрешение будет получено, в дальнейшем все письма от него станут приниматься без дополнительных вопросов.
Спамерское письмо без корректного обратного адреса будет попросту уничтожено. Но даже если в заголовке указан корректный обратный адрес, спамер столкнётся с двумя проблемами: необходимостью принять тысячи писем и необходимостью вручную ответить на них или попытаться создать почтового робота, который смог бы это делать автоматически, что весьма дорого и возможно пока только в самых простых случаях. Очевидно, что для написания программы, реализующей эту схему, не требуется больших усилий. Скорее, тут могут возникнуть проблемы, связанные с человеческим восприятием такого способа защиты. Представим возможные потери пользователя такой системы:
1. Старый знакомый счел вас невежей и решил с вами не общаться. Что ж, таков его и ваш выбор. Если вы (и он) сами решили ограничить подобным способом свой круг общения, то не на кого пенять.
2. Потерялось деловое предложение. Да. действительно, если вы ищете работу и оставляете свое резюме на всех сайтах, где только можно, или же, если вы деловой человек и установление новых деловых контактов является необходимой частью вашего бизнеса, то вряд ли вам следует использовать этот метод защиты от спама.
3. Все-таки отсеялось что-то нужное. Увы, это случается. Действующие сейчас механизмы фильтрации с эвристическими критериями тоже могут ошибаться. Процент потерь тут будет достаточно низким по сравнению с тем, что имеется сейчас.
Может встать вопрос, как поступать с письмами, которые придут в ответ на те, что пишу я сам как «потерянный друг»? Очевидно, при отсылке письма корректно было бы занести адрес, на который оно отправляется, в свою книгу (чтобы не заставлять ответное письмо проходить авторизацию). Эту операцию почтовый клиент может выполнять автоматически.
Мы пока не говорили о программах для автоматической рассылки. У большинства из них уже есть механизмы авторизации, похожие на тот, что нужен нам. С программами, управляемыми по почте, никаких проблем не возникает. Для тех же, что имеют веб-интерфейс, желательно, чтобы адрес, с которого будут приходить письма, указывался в форме для подписки и пользователь мог добавить его в «белый» список.
Системы поддержания списков рассылки (такие, как, например, Yahoo Groups) обычно помещают в поле From: адрес отправителя письма, а не робота. В таких случаях правильнее всего дополнить модулем, который будет получать от пользователя пароль (через веб-интерфейс), а затем возвращать его в заголовке каждого письма. Большинство систем рассылки добавляет в заголовок строку Precedence: bulk, а также поля List-Id:, List-Post:, List-Subscribe:, List-UnSubscribe:. Для пароля можно было бы использовать новое поле, например List-password:.
Понятно, что без переделки менеджеров рассылки тут не обойтись. А пока же это не сделано, остается один резервный вариант - при подписке на новую рассылку временно отключать защиту, до получения первого письма от робота. Далее можно занести в базу его адрес или любое поле из заголовка письма, которое будет его однозначно идентифицировать как рассылку. Понятно, что фильтр спама должен позволять гибкую настройку, чтобы пользователь мог сам задавать критерий пропуска подобных писем.

Андрей Студнев,
jelty@iworld.ru


Волею судеб мне довелось участвовать в разработке почтового клиента, который поддерживает описанную схему защиты от спама. Хотя этот почтовый клиент не имел особого коммерческого успеха, я использую его на протяжении последних пяти лет. Схемой защиты я пользуюсь не часто, только в периоды очень интенсивной работы, когда у меня нет времени отвлекаться на те два-три письма со спамом, которые обычно приходят на мой почтовый адрес за день.
Перед написанием этой статьи я в течение недели пользовался системой защиты от спама и одновременно программой Magic Mail Monitor для мониторинга приходящих писем. За этот срок ни одно спам-письмо не прошло через защиту при том, что письма от людей, занесенных в «белый» список, доходили как обычно.
Здесь, конечно, кроется опасность, а именно: отправитель писем, пользующийся почтовым клиентом с защитой от спама, в случае, если отправленные им письма не были доставлены адресату (из-за проблем в сети), не будет получать уведомления об этом. Конечно, такая ситуация возникает редко, но и о ней надо помнить.
Другая опасность состоит в том, что в некоторой ситуации почтовый клиент будет «бесконечно» долго обмениваться сообщениями с неким почтовым роботом, и никто этого не заметит. Решить эту проблему можно двумя путями:
1. Добавлением нового header'a в заголовки письма - таким образом два почтовых клиента смогут договориться между собой.
2. Автоматической блокировкой всех писем с адресов, откуда пришло более определенного числа писем, ни одно из которых не было авторизовано.
Первый метод используется для защиты от нашей же защиты от спама. Ведь, по сути, предлагаемая система есть защита от почтовых роботов при помощи почтовых роботов. А это значит, что может сложиться ситуация, когда два почтовых клиента будут обмениваться сообщениями без ведома людей.
Представим себе двух людей, которые пользуются данной защитой, но не занесены в адресные книги друг друга. Если один из них напишет другому письмо и при отправке не занесет адрес получателя в свою адресную книгу (или удалит его адрес сразу после отправки письма), то произойдет следующее:
1) почтовый клиент адресата, получив письмо с неизвестного адреса, отошлет запрос на подтверждение, что это не спам;
2) почтовый клиент отправителя, получив письмо-запрос с неизвестного адреса, пошлет в ответ свой запрос адресату. После чего повторится пункт первый - получаем бесконечный цикл, вечно живое письмо.
При этом ни отправитель, ни адресат не будут знать об этом «Летучем Голландце». Даже если почтовый клиент сможет отличить обычное письмо от письма-запроса, то он не должен показывать его пользователю, так как в противном случае этой лазейкой можно будет воспользоваться для рассылки спама. Анализируя заголовки писем, почтовый клиент должен уметь отличить письмо-запрос, посланное в ответ на его собственный запрос, от всех остальных писем и удалить его, разорвав тем самым порочный круг.
Суммируя сказанное, можно прийти к выводу, что такой способ защиты от спама подходит для людей с четко очерченным кругом общения, которые не намерены активно устанавливать новые контакты с помощью электронной почты. Конечно, такую защиту нельзя считать универсальным решением проблемы, однако свой вклад в дело борьбы со спамом она вполне может внести. Тем более, что, с точки зрения программиста, добавление такой защиты в почтовый клиент не вызывает большой сложности. По всей видимости, ее можно реализовать, например, в виде add-in для MS Outlook.

Дмитрий Виноградов,
vdima@iworld.ru