Find Attachments хелпер для CGP
После месячного тестирования решил опубликовать еще один «хелпер» для CGP: findattach-cgp.c
Использовать этот «хелпер» можно для запрещение прохождения через почтовую систему определённых типов файлов. Например так, как .
Работа фильтра сводится к поиску вложений в проходящих через него сообщениях. Фильтр добавляет в сообщение заголовок с расширением вложенных файлов. Например для *.exe вложений будет добавлен заголовок: «X-AttachExt: exe». Добавляется только один заголовок для каждого типа файлов.
По функционалу фильтр похож на фильтр от компании . Он написан на C, потому имеет высокую скорость работы.
Параметры запуска:
- -f : включение искусственного интеллекта (fuzzylogic mode): для определения типа файла у которого нет расширения используется дополнительный заголовок «filetype». Использование этого ключа рекомендовано.
- -d : режим отладки (debug mode), повышенный уровень отладочных сообщений
Некоторые особенности:
- расширения приводятся к нижнему регистру;
- расширения jpeg и pjpeg приводятся к jpg;
- если файл не имеет расширения, то добавляется заголовок: «X-AttachExt: ...» (если не включён режим искусственного интеллекта: -f);
- в случае каких-либо проблем с детектированием расширения добавляется заголовок: «X-AttachExt: .!.» и пишется лог.
Для работы с сообщениями используется библиотека . На настоящее время (8 июня 2010) необходимо использовать версию библиотеки из . Текущая версия 2.1 не содержит необходимых изменений.
Собрать «хелпер» с этой библиотекой можно статически или динамически:
- get mailutils, configure, make, do not make install and compile findattach-cgp statically (enter your path to mailutils distrib instead ../mailutils/mailutils): $ gcc -Wall -I../mailutils/mailutils/include/ -pthread -lcrypt findattach-cgp.c ../mailutils/mailutils/mailbox/.libs/libmailutils.a -o findattach-cgp
- or get mailutils, configure, make, make install and compile findattach-cgp with shared libs: $ gcc -Wall -pthread -lmailutils findattach-cgp.c -o findattach-cgp
Настройки CGP традиционны:
- добавить новый хелпер вида: ./findattach-cgp -f
- создать правило для пропускания всех сообщений через этот хелпер. Я использую ограничение в правиле и пропускаю через него только сообщения больше 2Кб, обычно в сообщениях меньшего размера нет вложений;
- создать правило(правила) более низкого приоритета по контролю за заголовками «X-AttachExt» и отклонению запрещённых типов файлов. Например так:
- Header Field in "X-AttachExt: pif,X-AttachExt: exe, X-AttachExt: scr,X-AttachExt: exe-ms, X-AttachExt: cmd,X-AttachExt: bat,X-AttachExt: dll,X-AttachExt: hlp,X-AttachExt: scf, X-AttachExt: lnk,X-AttachExt: vbs,X-AttachExt: vbe,X-AttachExt: js"
- Reject with "This message has been rejected because it has a potentially executable attachment. This form of attachment has been used by recent viruses or other malware. If you meant to send this file then please package it up as a zip file and resend it."
UPD 12.08.2010: обновление до версии 0.5 — включено удаление мусора в /tmp
UPD 16.09.2010: обновление до версии 0.6 — добавлены инструкции для сборки под solaris и включен chomp () для типов расширений. Вышел релиз mailutils 2.2 со всеми нужными изменениями, так что начиная с этой версии mailutils хелпер findattach-cgp работает нормально.
UPD 02.10.2010: обновление до версии 0.7 — более корректная работа с трэдами.









05.07.2010 в 06:59
Этот самый Mailutils, что из GIT, ух! Даже на OpenSUSE Factory не собирается. А жаль, хелпер очень хочется попробовать.
05.07.2010 в 08:57
Это повод написать в список рассылки: Сергей достаточно быстро отвечает и правит баги.
При сборке из git-а есть небольшой «фокус», если не проходит ./autoconf и проблема вида: configure.ac:838: error: possibly undefined macro: AM_GNU_RADIUS
, то нужен radius.m4:
12.08.2010 в 19:18
Обновление до версии 0.5 — включено удаление мусора в /tmp