Zmscanner — модульный фильтр для MTA Zmailer
Zmscanner — это модульный фильтр для почтовых систем Zmailer и Sendmail. Архитектура этого фильтра позволяет использовать его на высоко-нагруженных почтовых системах (>1'500'000 писем в сутки). Модульность фильтра позволяет гибко конфигурировать его функциональность, добавляя нужные вам модули и отключая не нужные.
Автор: Eugene Crosser
Домашняя страница: http://www.average.org/zmscanner
Дополнительные модули: http://kocmuk.ru/zmscanner
Существующие стандартные модули:
Автор: Eugene Crosser
- check_ct (входит в zmscanner) — позволяет использовать регулярные выражения, для фильтрации сообщений по «Content-Type». Вы можете заблокировать HTML сообщения или сообщения с опасными вложениями (*.exe, *.pif и подобные).
- zms_dehtml (отдельный модуль) — преобразует HTML сообщение в текстовый вид, для дальнейшего анализа следующими фильтрами.
- zms_pcre (отдельный модуль) — PCRE библиотека от Philip Hazel используется для фильтрации писем по регулярным выражениям. Анализируется только текстовое тело письма. Для анализа HTML сообщений следует использовать модуль zms_dehtml для преобразования HTML в текстовый вид.
- zms_clamav (отдельный модуль) — используется библиотека антивируса ClamAV для проверки вложений на вирусы.(Замечание: сам clamd демон не используется, проверка идёт через низкоуровневые вызовы библиотеки).
Авторы: kocmuk.ru и Mike Fandorin
- zms_dcc (отдельный модуль) — адаптер Zmailer и Sendmail MTA к DCC-клиенту. Позволяет организовать проверку входящей почты через контекстный антиспам фильтр Distributed Checksum Clearinghouse (DCC). А так же возможность использовать DCC greylisting механизм для Zmailer.
- zms_restage (отдельный модуль) — PCRE библиотека используется для фильтрации писем по регулярным выражениям. Анализируются: EHLO/HELO, env_From, env_To и wholeRFC822 сообщение. Фильтр позволяет задать условия передачи сообщений для обработки в другие программы (”| exec”).
DCC (Distributed Checksum Clearinghouse)
Некоторое время назад, исследуя средства, которыми сейчас борются со спамом, я натолкнулся на DCC (Distributed Checksum Clearinghouse). Основная идея этой методики заключается в том, что на каждое, приходящее на почтовый сервер письмо, вычисляется контрольная сумма (checksum). Далее эта сумма передаётся на распределённый DCC-сервер хранения этих сумм. В ответ почтовый сервер получает данные о количестве уже существующих таких же сумм на DCC-сервере. Получив этот ответ, почтовый сервер может принять решение о дальнейшей судьбе этого письма: пропустить, отвергнуть или пометить как подозрительное.
Эта технология антиспама хорошо работает, когда есть общее распределённое хранилище сумм, и много клиентов, которые сообщают в этот сервер суммы своих писем. Спам обычно рассылается большим количеством одинаковых писем. И если несколько почтовых серверов сообщили о том, что какое-то письмо с такой контрольной суммой уже прошло большое количество раз, то наш сервер может попросту отвергнуть его, как массовую рассылку. При подсчёте контрольных сумм используется несколько параметров письма, но основные и чаще всего используемые это: Body, Fuz1 и Fuz2. Body — это контрольная сумма тела письма, а для подсчёта Fuz1 и Fuz2 используется fuzzy механизм, который позволяет игнорировать некоторые аспекты письма, которыми пользуются спамеры для усложнения обнаружения таких рассылок (hashbuster).

(статистика с сайта DCC )
Для общения MTA с DCC-сервером используется DCC-клиент, который получает на вход письмо от почтового сервера, высчитывает контрольные суммы, передаёт их DCC-серверу, получает от него ответ, анализирует ответ и сообщает MTA как поступить с письмом. DCC-клиент чаще всего устанавливается непосредственно на почтовый сервер, а DCC-сервер чаще всего удалённый. Давайте попробуем установить DCC и настроить его для разных типов работы.
Моделирование парадокса Монти Холла на python
В фильме «21» режисёра Robert Luketic упоминается задача теории вероятности:
Представьте, что вы стали участником игры, в которой вам нужно выбрать одну из трех дверей. За одной из дверей находится автомобиль, за двумя другими дверями — козы. Вы выбираете одну из дверей, например, номер 1, после этого ведущий, который знает, где находится автомобиль, а где — козы, открывает одну из оставшихся дверей, например, номер 3, за которой находится коза. После этого он спрашивает вас, не желаете ли вы изменить свой выбор и выбрать дверь номер 2. Увеличатся ли ваши шансы выиграть автомобиль, если вы примете предложение ведущего и измените свой выбор ?
Правильным решением этой задачи является ответ: да, шансы выиграть автомобиль увеличиваются в два раза, если игрок будет следовать совету ведущего и изменит свой первоначальный выбор.
Парадокс Монти Холла — одна из известных задач теории вероятностей, решение которой, на первый взгляд, противоречит здравому смыслу. Задача формулируется как описание гипотетической игры, основанной на американском телешоу «Let’s Make a Deal», и названа в честь ведущего этой передачи. Варианты решения и ключи к пониманию достаточно подробно описаны в Википедии.
Мы же попробуем написать программу, которая бы загадывала двери с машинами и козами, случайно выбирала бы одну из дверей и подсчитывала проигрыши и выигрыши.
Выбор лучшей CMS системы для сайта
В отличие от CMS для блогов (где WordPress держит пальму первенства), на рынке CMS для сайтов есть много интересных и заслуживающих внимания CMS.
Сразу хочу уточнить мои критерии выбора CMS: для не большого сайта с каталогом (без магазина) нужна бесплатная CMS с открытым кодом. Всё это должно сносно работать на виртуальном хостинге обычного провайдера (apache, php, mysql). То есть что-нибудь не большое, быстрое и при этом функциональное. С простой внутренней структурой и документацией.
Поискав и посмотрев обзоры в сети — я выбрал: TYPO3, Joomla, Drupal и Cms Made Simple.
Выбор лучшей CMS системы для блога
Выбор лучшей CMS системы для ведения дневника встал для меня еще год назад. Подумав и прикинув своё свободное время, я решил сделать выбор в пользу уже готовой системы управления (англ. Content management system, CMS). Писать свою с нуля — это здорово, но хотелось быстро, всё и сразу.
Первый выбор был между движками: InTerra Blog Machine от Dull.ru и e2 от Ильи Бирмана. Поставив оба и покрутив, я оставил InTerra. Как-то оно мне показалось ближе. А у Ильи уж очень пугающая лицензия. :) Но через 2 месяца я снова начал поиски. Нехватающий функционал надо было дописывать самому и прямо в движок — системы plugin'ов не было. Потому следующим (и пока последним) движком для моего блога стал WordPress. Обилие уже готовых решений, дополнительных модулей и тем, перевод на русский язык, документация. Я быстро смог сделать свой блог таким, каким мне хотелось его видеть. И всё это легко обновлять при выходе очередной версии WordPress.
Потому для меня лучшая CMS для блога — WordPress. Отдельное спасибо порталу WordPress Россия — все о ВордПресс на русском языке. Плагины и темы для Вордпресс. Форумы поддержки и документация.
Google Translate2 wordpress plugin
Вспомнил, что давно уже хотел прикрутить плагин к WordPress, который бы формировал ссылки на Google Translate. Показалось, что это будет удобно тем, кому трудно читать на моём родном языке. Поискав, нашёл два подходящих плагина: google-ajax-translation и google-translate. Но они не понравились. Первый переводит только топики, и только первые 500 символов. Второй немного глючит (не верно определяет url текущей страницы) и сложен и неудобен в конфигурировании.
Потому сделал свой плагин: Google Translate2
В очередном продолжении рассказов про построения web-сервисов, хочу рассмотреть вопросы безопасности и аутентификации общения soap-клиента и soap-сервера.
Пусть условия таковы:
- сервер и клиент общаются друг с другом через публичный интернет, который наполнен снифферами;
- сервер имеет статический ip-адрес, а клиент находится за nat-ом;
- вместе с клиентом за тем же nat-ом находятся опасные соседи, которые могут и хотят получить к чему-нибудь не авторизованный доступ;
- и пусть клиента за этим nat-ом два: у них разное по функциональности ПО, с разными возможностями по построению soap-клиентов;
- ну а мы, естественно, обмениваемся супер секретными данными. :)
И так, как было рассмотрено в предыдущих постах, собираем soap-сервер на apache2:







