Версия для печати

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

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

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

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

Параметры запуска:

  • -f : включение искусственного интеллекта (fuzzylogic mode): для определения типа файла у которого нет расширения используется дополнительный заголовок «filetype». Использование этого ключа рекомендовано.
  • -d : режим отладки (debug mode), повышенный уровень отладочных сообщений

Некоторые особенности:

  • расширения приводятся к нижнему регистру;
  • расширения jpeg и pjpeg приводятся к jpg;
  • если файл не имеет расширения, то добавляется заголовок: «X-AttachExt: ...» (если не включён режим искусственного интеллекта: -f);
  • в случае каких-либо проблем с детектированием расширения добавляется заголовок: «X-AttachExt: .!.» и пишется лог.

Для работы с сообщениями используется библиотека GNU Mailutils. На настоящее время (8 июня 2010) необходимо использовать версию библиотеки из git-репозитория. Текущая версия 2.1 не содержит необходимых изменений.

Собрать «хелпер» с этой библиотекой можно статически или динамически:

  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
  2. 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 — более корректная работа с трэдами.

Комментарии (3) на запись “Find Attachments хелпер для CGP”

  1. foboss пишет:

    Этот самый Mailutils, что из GIT, ух! Даже на OpenSUSE Factory не собирается. А жаль, хелпер очень хочется попробовать.

  2. kocmuk.ru пишет:

    Это повод написать в список рассылки: lists.gnu.org/mailman/listinfo/bug-mailutils/ Сергей достаточно быстро отвечает и правит баги.

    При сборке из git-а есть небольшой «фокус», если не проходит ./autoconf и проблема вида: configure.ac:838: error: possibly undefined macro: AM_GNU_RADIUS

    , то нужен radius.m4: lists.gnu.org/archive/htm...04/msg00010.html

  3. kocmuk.ru пишет:

    Обновление до версии 0.5 — включено удаление мусора в /tmp