0

После начала активного использования моих CGP-хелперов на Solaris — произвел небольшие правки.

Обновились:

Общие обновления коснулись более корректной работы с трэдами. Под линуксом проблем не было, а вот под солярисом проявились. Так же в dspam-cgp.c появилась возможность указывать произвольное имя для X-Junk-Score заголовка. А в findattach-cgp.c добавлены инструкции для сборки под solaris и включен chomp () для типов расширений.

Так же хочу обратить внимание, что вышел релиз GNU mailutils 2.2 со всеми нужными изменениями, так что начиная с этой версии хелпер findattach-cgp.c работает нормально.

24
Aug
2010

dcc-cgp helper

В предыдущей статье DCC для CGP я описывал свой патч для dcc-cgp. В настоящий момент в виде патча мои изменения поддерживать не так удобно, потому я сделал свой тарболл dcc-cgp-1.1.2-dcc-1.3.140.tar.gz

Это модифицированная версия dcc-cgp v1.1.2 и плюс исправленные патчи для накатывания на dcc-1.3.140.

Мои модификации dcc-cgp v1.1.2:

  • изменил коды ошибок GREY_XCODE и DCC_XCODE на x.9.9. Это позволяет сообщать отправляющей стороне о причине ошибки в момент работы greylist-инга;
  • изменил dcc_mk_su () для работы с новыми версиями dcc;
  • изменил GCP_PROTOCOLS – список протоколов, которыми сообщение может попасть в систему и будет обработано этим хелпером. В него добавлены некоторые WEB протоколы, но удалён RPOP;
  • немного исправлены информационные сообщения;
  • переименована функция strcasestr в _strcasestr.

Я уже больше года использую эти модификации на своей системе и пока доволен.

Если вы хотите пользоваться не модифицированной версией от автора dcc-cgp, то вам надо заменить dcc-cgp/dcc-cgp.c на версию из оригинального дистрибутива и модифицировать одну строку:

-      dcc_mk_su(DCCsu, hp->h_addrtype, hp->h_addr, Port);
+      dcc_mk_su(DCCsu, hp->h_addrtype, hp->h_addr, 0, Port);

Установка модифицированной версии аналогична оригинальной:

  • скачать и развернуть архивы dcc и dcc-cgp;
  • содержимое dcc-cgp перенести в дерево dcc;
  • накатить dcc-CGP.patch и для не FreeBSD систем не забыть накатить dcc-CGP-nonFreeBSD.patch;
  • для перехода к не модифицированной версии dcc-cgp заменить dcc-cgp/dcc-cgp.c из оригинального дистрибутива и изменить одну строку как это описано чуть выше;
  • собрать, установить и настроить dcc как это описано в его документации;
  • скопировать получившийся dcc-cgp/dcc-cgp в рабочую папку CGP и настроить его запуск как CGP хелпера.
0
Небольшое, но важное обновление хелпера поиска вложений для CGP: включено mu_message_destroy (). До этого оно было выключено по причине утечек памяти, которые вызывало. Но отсутствие mu_message_destroy () приводило к замусориванию /tmp директории. Сегодня в git версии mailutils появились исправления этих утечек и я включил mu_message_destroy (). После обновления findattach-cgp.c надо удалить мусор в /tmp:
 $ rm /tmp/mu*
0
30
Jul
2010

Kill all humans

Kill all humans

После месячного тестирования решил опубликовать еще один «хелпер» для CGP: findattach-cgp.c

Использовать этот «хелпер» можно для запрещение прохождения через почтовую систему определённых типов файлов. Например так, как описано на сайте РГУ.

Работа фильтра сводится к поиску вложений в проходящих через него сообщениях. Фильтр добавляет в сообщение заголовок с расширением вложенных файлов. Например для *.exe вложений будет добавлен заголовок: «X-AttachExt: exe». Добавляется только один заголовок для каждого типа файлов.

По функционалу фильтр похож на фильтр от компании Niversoft. Он написан на C, потому имеет высокую скорость работы.

Читать полностью »

Прошло несколько месяцев работы dspam-фильтров в промышленных масштабах. Серьёзных проблем не найдено, но захотелось немного изменить граничные точки для X-Junk-Score заголовка.

Было:

/* Defines the bar score ranges. By default the following ratios are used:
* digital    Bar score
* 0          []
* 1-49       [X]
* 50-70      [XX]
* 71-89      [XXX]
* 90-94      [XXXX]
* 95-99      [XXXXX]
* 100        [XXXXXX]
*/
int BARSCORERANGES[] = {0,49,70,89,94,99,100,      -1};

Стало:

/* Defines the bar score ranges. By default the following ratios are used:
* digital    Bar score
* 0          []
* 1-49       [X]
* 50-70      [XX]
* 71-89      [XXX]
* 90-94      [XXXX]
* 95-98      [XXXXX]
* 99-100     [XXXXXX]
*/
int BARSCORERANGES[] = {0,49,70,89,94,98,100,      -1};

Изменились два последних диапазона. Это позволяет отделить максимальную вероятность 99 в отдельную группу. И применять к ней более суровые фильтры.

Я соответственно изменил, выложенные на сайте cgp- и zmailer- фильтры. Это единственное изменение в новых версиях.

0

Библиотека для работы с MIMEДля написания некого почтового фильтра на Си понадобилась библиотека для работы с MIME-заголовками. Почтовый фильтр должен уметь вытаскивать из письма список имён вложенных в него файлов. Фильтр предполагался многопоточным(multithreaded) и потому библиотека должна была быть дружественна к многопоточному использованию (thread-safety).

Как оказалось — это не простая задача. Большинство найденных библиотек используют «глобальные области» для хранения разобранных MIME-структур. Отведённое место хранения данных всех потоков — едино. И при параллельной работе потоков происходит перемешивание данных. В лучшем случае приложение работает не правильно, в худшем — падает при очищении памяти одного потока из другого.

Исследованию подверглись библиотеки проектов: altermime, libmime, mimedecode, minimime, renattach, ripmime, uudeview. Для моих целей все эти библиотеки не подошли, и тщательных тестов я не проводил, но пару слов хочу сказать о двух из них:

Читать полностью »