05 июля 2007

СПАМ и АНТИСПАМ

Поступил запрос:
Не поступает рассылка с 19.06.07. В кабинете было указано, что рассылка остановлена, т.к. адрес в черном списке. Хотелось бы понять причину.
Причина одна - автоматическое внесение адреса в черный список из-за возврата писем. Причина возврата в 90% случаев - корпоративные или провайдерские фильтры антиспама. Ваши действия - поменять адрес на mail.ru или gmail.com, внести его в белый список или добавить нового подписчика через Кабинет.
Объяснение ситуации потребует пространного теоретического введения.

Электронная почта является довольно полезным инструментом, сравнение с icq, rss, skype только подчеркивает ее достоинства:
  • асинхронный характер связи, т.е. не надо ждать ответа
  • более того, требование немедленного ответа часто неприемлемо
  • письмо можно написать или сформировать в спокойной обстановке, оно может быть любой длины
  • легко приложить к нему любые необходимые файлы
  • просматривать и сортировать необходимо только самые новые письма
  • есть удобные и всем привычные почтовые клиенты
  • очень легко ответить на письмо
  • и т.д.
Удобства электронной почты привели к тому, что она стала основным средством делового общения: написать письмо гораздо проще и удобнее чем послать факс. Соответственно поднялась цена письма: неполучение только одного письма может привести к убыткам на миллионы. В самом деле, представим себе, что заказчик рассылает поставщикам предложение делать оферты на крупный заказ, а эти письма не доходят до получателей, причем известно что другого способа доставки сообщений нет. Итак, цена письма стала очень высокой, однако услуга по доставке писем и вся инфраструктура почты являются бесплатными.

Одним из главным фактором почты стало разделение адресов на личные и корпоративные, для компаний считается позорным иметь адреса типа info.corp@gmail.com, а не info@corp.com. Это как бы лицо фирмы, которое нельзя терять.

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

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

Многие ненавидят спам за те усилия, которые приходится тратить, чтобы от него избавиться. Было предложено множество способов борьбы со спамом:
  • скрывать или часто менять свой адрес, но это невозможно для компаний привязанных к своему домену
  • просматривать заголовки и удалять спам на сервере, это экономит трафик, но десятки тысяч писем не просмотреть
  • аналог каптчи - требование подтверждения входящего нового адреса, это нарушает деловую этику
  • серый список - притворный возврат почты, это опять нарушает этику и письма не доходят
  • черные списки - блокирование целых сетей адресов как спамерских с платным выкупом, не ловит спам с зомби-компьютеров
  • белый список, его ведение технически затруднено, т.е. нереально
  • подписывание писем электронной подписью, спамеры тоже могут легко это делать
  • введение платы за письма, но это сделает еще более привлекательным наращивание бот-сети
Ни один из этих простых способов не работает. Распределенные профессиональные системы работают на первый взгляд лучше, однако есть большая разница между статистически решаемой блокировкой спама и гарантированной доставкой почты.
Вот что пишет Алексей Тутубалин (идеолог и разработчик "Спамтест" Ашманова, то же "АнтиСпам" Касперского):

"Вторая существующая проблема связана с ложными определениями легальных рассылок как спама. Эта проблема характерна как для методов, анализирующих всю почту, так и, в меньшей степени, для систем с голосованием пользователей. Решение этой проблемы на локальном уровне возможно путем создания белых списков, включающих все принимаемые данной почтовой системой рассылки. На глобальном уровне можно создавать как всеобщие белые списки (с какой-то политикой), либо вводить методы, позволяющие уверенно и надежно идентифицировать источник рассылки."
В отличие от реально работающих фильтров антиспама это туманные благие пожелания. Ясно, что задача гарантированной доставки писем даже не ставится. Фильтры кое-как решают проблему отбрасывания спама, но цена этого решения может быть несопоставимо выше получаемой пользы если будут потеряны ценные входящие письма. Задача создания глобальных белых списков может быть также сложна как создание с нуля и без ясной пользы системы DNS, т.е. практически невозможна.

Вот две задачи почтовой системы:
  • фильтрация спама, т.е. отбрасывание незапрошенных сообщений
  • гарантированная доставка "легальных" писем
Если обычные пользователи могут мириться с каким-то процентом "ложных срабатываний", то корпоративные - нет. Естественно их желание взять ситуацию фильтрации корпоративной почты под контроль. Закупаются и запускаются Антиспам системы, но поскольку они нуждаются в тонкой и сложной настройке, то они массово начинают блокировать полезные письма, это и приводит к коллапсу системы электронной почты.
Полностью бесполезным для компании является сервис "Спамтеста": спам надо не метить, а удалять. Впрочем авторы Спамтеста прямо заявляют, что их цель - тестирование своей технологии.
"Лаборатория Касперского" перечисляет 7 пунктов вреда от спама, при этом побочный вред Спамтеста, потенциально более опасный чем польза не обсуждается. Электронный Журнал Спамтест публикует новости с анализом и статистикой спама. В этой статистике нет главного параметра - числа ложных срабатываний, что граничит с прямым обманом потребителей.
Ключевая статья Ашманова и Тутубалина "Методика тестирования качества серверных антиспам-фильтров" прямо формулирует дефектную идеологию фильтров:
Целесообразно при тестировании разделить ложные срабатывания на критические ложные срабатывания (ложные срабатывания на важной деловой или личной почте) и некритические (ошибочная классификация массовых новостных и маркетинговых рассылок и тому подобной почты) и подсчитывать процент тех и других отдельно.

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

Что касается нашего локального черного списка, то он формируется на основе возвратов от спам-фильтров, в результате использования метода "серого списка" фильтрами.

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

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

Рассмотрим вначале вырожденный случай, когда все почтовые ящики имеют адрес @gmail.com. В этом случае ведение белых и черных списков не вызовет проблем, а платный сервис и арбитражная служба позволит быстро решать бот-проблемы.
Пропажа ценных писем затруднена, поскольку физически они остаются в ящике отправителя на том же сервере. Получатель письма, по прежнему может объявить его спамом, но в случае неподтверждения его статус спамоопределителя может быть уменьшен. Спам-фильтр по прежнему может быть неправильно настроен, но администрирование одной программы экспоненциально легче чем многих.
Действительно, введение электронной подписи для письма и отчета о доставке (квитанции о вручении), прозрачное шифрование всех писем, ручное модерирование потенциальных бот-сетей, оперативное решение юридических и технических проблем - все это довольно сложно для миллиона автономных серверов, администраторам которых заведомо не хватает образования, ресурсов и возможностей, и все это весьма просто для одного распределенного сервиса, за счет экономии на масштабе и простоте изменения, тестирования и развертывания только одного комплекса программ.

Что касается финансовой стороны дела, то рядовой сервер получает сейчас в месяц 3-4 гигабайта спама, который приходит со стороны китайских серверов и считается зарубежным трафиком. Его надо оплачивать по цене 19$/гигабайт. Это составляет 60-80$ в месяц и примерно 1000$ в год. При цене годовой подписки 1000$ в год миллион фирм-подписчиков принесет 1 млрд. долларов и это каждый год! Даже если цена почтового аутсорсинга будет всего 100$ в год - доступная для каждой фирмы - сумма общего дохода будет более чем заманчивая.

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

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

Пока что таких сервисов не существует. Есть такой платный Спаморез, но он также даже не ставит задачу гарантированного исключения ложных срабатываний. Вероятно, что в такие платные сервисы могут трансформироваться крупные бесплатные почтовые системы gmail.com, mail.ru и т.д. В любом случае спрос на надежные, безопасные и платные почтовые решения будет расти и замена аналога анархии аналогом государства неизбежна. Одна из теорий происхождения государства - гидравлическая, так легче рыть каналы. По аналогии можно сказать, что вместе легче фильтровать и доставлять почту. Иначе говоря, главной причиной вреда фильтров антиспама является распределенная, слишком свободная и "демократичная" или анархичная структура Интернета.

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

В настоящее время почту @yandex.ru, @rabmler.ru использовать нельзя из-за плохих фильтров и увлечения черными списками. Почта mail.ru самая быстрая, но не предусматривает доступ по SSL/TLS без 25 порта, поэтому с ней работать нельзя если ваша сеть случайно оказалась или может оказаться в черном списке. Единственный вариант сейчас - @gmail.com, которая кстати предполагает возможность привязки к домену и использования корпоративных адресов. Интересной является возможность привязать любой адрес к вашему @gmail.com. При создании нового письма можно подставить этот адрес как обратный, а забирать почту с внешнего ящика автоматически.
Недостатки @gmail.com:
  • крайне низкая скорость работы
  • нет возможности фильтром указать на не спам
  • нет удаления заведомого спама
  • нет возможности привязки произвольного адреса через pop3

04 июля 2007

Аукционы-сироты и рейтинг Татарстана

Само по себе сканирование официальных сайтов является формой аудита. Например, на странице электронных аукционов Агентства по госзаказу Татарстана среди примерно 250 аукционов 5-10 не имеют номера тендера. Не получилось ли так, что они осиротели в результате программной ошибки?
Вот примеры сироты - 09.07.07-11962-ЭА. Скорее всего это действительно ошибка, т.к. у всех остальных аукционов единообразные номера (последовательный 5-значный номер вроде 31465) есть. В ответ на мой запрос быстро пришел любезный ответ.
09.07.07-11962-ЭА - это номер аукциона, а 31465 - это номер заявки, т.е. то, что заказчики вводят при заполнении формы тендера. Получается, что в некоторых случаях заказчики номер заявки почему-то не вводят. Однако, если он генерится автоматически (на что похоже и что должно быть), программа генерации работает с ошибкой.
На главной странице этого портала слева от диаграммы, поясняющей что закупки из единого источника (без тендеров) составляют примерно 70% от общего объема закупок, а электронные аукционы, которых так много, всего 6%, находится баннер рейтинга Эксперта.
Рейтинг у Татарстана высший среди всех официальных сайтов, однако, пройдя по ссылке, никаких принципов составления этого рейтинга я обнаружить не смог. Лично я никогда бы Татарстану высокого рейтинга не дал, хотя бы из-за кошмарных программ Норбита (худшее что приходилось видеть), которые он использует, но в самой идее рейтинга есть здравое зерно.

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

Вот крайне беглый первоначальный набор критериев для оценки портала: номер тендера, ЧПН, дата и время публикации и изменений, вменяемый заголовок, наличие текста тендера, архивов, изменений, результатов, прямых ссылок на все документы, файлов документации, полные продуктовые коды, селектор по кодам и регионам, полнотекстовый поиск по документации и архиву.
Это естественные минимальные требования к порталу, ни один из порталов им не удовлетворяет, и не будет удовлетворять в ближайшее время, судя по всему.
Федеральный портал спроектирован несравнимо лучше всех остальных (даже принимая во внимание все его дефекты) и лучшее что можно сделать с региональными порталами - перевести их на федеральный формат, при этом оценивать в рейтинге не вид и дизайн, а
операционные характеристики и поддержку.

Жизненный цикл тендера на портале

После ввода заказчиком текста тендера, как это описано в Руководстве пользователя, тендеры, невидимые для обычного (не Оператора и не Администратора сайта) посетителя, проходят стадии "В работе" (полностью/частично сформированные, но не отправленные на контроль и публикацию), "На контроле" (отправленные на контроль в МЭРТ, но не прошедшие контроля), "Ожидают публикации" (прошедшие контроль, но не опубликованные).
Точные временные промежутки каждого этапа можно установить с помощью пробного опроса и анализа точного времени публикации на портале. Однако одно то, что точная дата публикации доступна, ставит федеральный портал на два порядка выше всех региональных порталов, спроектированных и реализованных довольно коряво.

Из просмотра некоторых тендеров можно предположить, что госзаказчики просто горят на работе. Например, тендер 104931188 опубликован 02.07.2007 в 23:34, а разъяснение конкурсной документации дано 04.07.2007 в 00:13. Может быть это связано с тем, что днем портал не справляется с нагрузкой и его посетители вынуждены переходить на ночной режим работы?

Публикация тендера является первым этапом его жизненного цикла. Вторым этапом является внесение изменений в текст тендера и дополнений в конкурсную документацию (ответы на вопросы и т.д.). Третий этап - завершение приема заявок и процедура вскрытия конвертов, рассмотрение заявок. Четвертый этап - публикация протоколов и результатов.
Как эти 4 этапа отображаются на схему публикации информации о тендере?

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

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

Вот адрес страницы тендера: http://www3.pgz.economy.gov.ru/ trade/view/purchase/general.html?id=103975128, где 103975128 - это наш номер тендера.

Заголовки тендеров группируются в последовательную таблицу по 20 тендеров и состоят из самой главной информации о тендерах: номер тендера, заголовок, форму закупки, дату. Именно эта дата представляет наибольший интерес, т.к. для данного тендера содержит дату его последнего изменения. Тендер может изменяться много раз, чем больше заказчики входят во вкус, тем чаще они начинают его менять, при каждом изменении тендер заново публикуется в таблице тендеров. Таким образом, таблица заголовков тендеров динамически обновляется для текущих тендеров каждый раз при внесении изменений в любой тендер. Фактически, база тендеров имеет поле последнего обновления для тендера и при выводе производится сортировка по этому полю; вопреки тому что написано на портале это не дата поступления, а дата последнего изменения.

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

Количественные оценки подтверждают эту гипотезу. Предположим, что "Все тендеры" = "Текущие" + "На рассмотрении" + "Прошедшие", а "Текущие" = "Новые" + "Измененные".
Если за последний месяц всего тендеров примерно 2900 страниц (по 20 тендеров на странице), текущих - 800 страниц, на рассмотрении - 600, а прошедших - 1500 страниц.

Вот пример - тендер 104625867. Он создан (опубликован 11.06.2007), в него вносилось по крайней мере 7 изменений, одно из последних - 04.07.2007, он опубликован в таблице тендеров за 04.07.2007.

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

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

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

Итак, текущих тендеров - 800 страниц или всего 16000 тендеров, из них примерно 400 стр. просто тендеров (конкурсы, аукционы и т.д.) и 400 стр. котировок, т.е. каждый день публикуется примерно 10-15 стр. тендеров (200-300 штук) и 50 стр.котировок (1000-1200 штук в день). Сколько страниц текущих изменений публикуется каждый день? Это вопрос для исследования. Например, за 04.07.2007 было опубликовано 261 текущих тендеров (без котировок), из них 130 тендеров, т.е. ровно половина - новые, с датой публикации 04.07.2007. В любом случае, тексты этих тендеров и конкурсная документация должны обновляться и изучаться заново.

Интересно, что скорость загрузки в вечернее время на свободном сервере таблицы заголовков в 20 раз выше чем страницы тендера. Например, 10 сек против 0,5 сек. Создается впечатление, что для формирования страницы заголовков делается выборка всех тендеров этой страницы.