Спам и безопасность · 6 min read · Nov 18, 2025
Борьба с изображениями спама с помощью FuzzyOCR и SpamAssassin на Fedora 12
Борьба с изображениями спама с помощью FuzzyOCR и SpamAssassin на Fedora 12
Версия 1.0
Автор: Фалько Тимме
Следите за мной в Twitter
Это руководство описывает, как сканировать электронные письма на наличие изображений спама с помощью FuzzyOCR на сервере Fedora 12. FuzzyOCR — это плагин для SpamAssassin, который предназначен для нежелательной массовой почты, содержащей изображения в качестве основного носителя контента. Используя различные методы, он анализирует содержимое и свойства изображений, чтобы различать обычные письма (ham) и спам-письма. FuzzyOCR пытается поддерживать низкую нагрузку на систему, сканируя только те письма, которые еще не были классифицированы как спам SpamAssassin, тем самым избегая ненужной работы.
Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
В этой статье я буду использовать Fedora 12 в качестве базовой системы.
Я предполагаю, что SpamAssassin уже установлен и работает, с /etc/mail/spamassassin/ в качестве его основного каталога конфигурации. Если ваш каталог отличается (например, если у вас установлен ISPConfig 2, каталог будет /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/), это не проблема. Я укажу, где что изменить.
Пожалуйста, убедитесь, что ваша версия SpamAssassin работает с FuzzyOCR. Например, версия FuzzyOCR, которую я собираюсь установить здесь (fuzzyocr-3.5.1-devel.tar.gz), требует SpamAssassin 3.1.4 или новее.
2 Установка предварительных требований для FuzzyOCR
FuzzyOCR имеет некоторые предварительные требования, такие как ocrad и gocr, которые мы можем установить следующим образом:
yum install netpbm gifsicle giflib giflib-utils gocr ocrad ImageMagick tesseract perl-String-Approx perl-MLDBM perl-CPANНам также нужно установить модуль Perl MLDBM::Sync, который недоступен в виде пакета RPM. Откройте оболочку Perl….
perl -MCPAN -e shell… и установите модуль следующим образом:
install MLDBM::SyncНаберите
qпосле этого, чтобы выйти из оболочки Perl.
3 Установка FuzzyOCR
Далее мы загружаем и устанавливаем последнюю версию FuzzyOCR devel с http://fuzzyocr.own-hero.net/wiki/Downloads. Мы загружаем версию devel вместо стабильной версии, потому что разработчики FuzzyOCR говорят:
“Текущая рекомендация — это версия разработки, потому что стабильная версия не имеет функций и очень старая.”
cd /usr/src/
wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.5.1-devel.tar.gzЗатем мы распаковываем FuzzyOCR и перемещаем все файлы FuzzyOcr* и каталог FuzzyOcr (они все находятся в каталоге FuzzyOcr-3.5.1/) в /etc/mail/spamassassin:
tar xvfz fuzzyocr-3.5.1-devel.tar.gz
cd FuzzyOcr-3.5.1/
mv FuzzyOcr* /etc/mail/spamassassin/Если ваш каталог SpamAssassin отличается, например, /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/, то последнюю команду следует заменить на
mv FuzzyOcr* /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/Не удаляйте каталог /usr/src/FuzzyOcr-3.5.1/ пока, там есть каталог с образцами изображений спама (samples/), который нам понадобится позже, чтобы проверить, работает ли FuzzyOCR как ожидалось.
Итак, FuzzyOCR теперь установлен, теперь нам нужно его настроить.
4 Настройка FuzzyOCR
Файл конфигурации FuzzyOCR — это /etc/mail/spamassassin/FuzzyOcr.cf. В этом файле почти все закомментировано. Мы открываем этот файл сейчас и вносим некоторые изменения:
vi /etc/mail/spamassassin/FuzzyOcr.cfПоместите следующую строку, чтобы определить местоположение файла со словами спама FuzzyOCR:
| [...] focr_global_wordlist /etc/mail/spamassassin/FuzzyOcr.words [...] |
/etc/mail/spamassassin/FuzzyOcr.words — это предопределенный список слов, который поставляется с FuzzyOCR. Вы можете настроить его под свои нужды, если хотите.
Далее измените
| [...] # Include additional scanner/preprocessor commands here: # focr_bin_helper pnmnorm, pnminvert, pamthreshold, ppmtopgm, pamtopnm focr_bin_helper tesseract [...] |
на
| [...] # Include additional scanner/preprocessor commands here: # focr_bin_helper pnmnorm, pnminvert, convert, ppmtopgm, tesseract [...] |
Наконец, добавьте/включите следующие строки:
| [...] # Search path for locating helper applications focr_path_bin /usr/local/netpbm/bin:/usr/local/bin:/usr/bin focr_preprocessor_file /etc/mail/spamassassin/FuzzyOcr.preps focr_scanset_file /etc/mail/spamassassin/FuzzyOcr.scansets focr_enable_image_hashing 2 focr_digest_db /etc/mail/spamassassin/FuzzyOcr.hashdb focr_db_hash /etc/mail/spamassassin/FuzzyOcr.db focr_db_safe /etc/mail/spamassassin/FuzzyOcr.safe.db [...] |
С помощью последних четырех строк вы включаете хеширование изображений. Вот что говорят разработчики FuzzyOCR о хешировании изображений:
“Функция базы данных хеширования изображений позволяет плагину хранить вектор характеристик изображения в базе данных, чтобы он знал это изображение, когда оно приходит во второй раз (и, следовательно, не нужно сканировать его снова). Особенность этой функции заключается в том, что она также распознает изображение снова, если оно было немного изменено (что делают спамеры).”
Если вы используете /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin вместо /etc/mail/spamassassin, файл конфигурации FuzzyOCR будет /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/FuzzyOcr.cf вместо /etc/mail/spamassassin/FuzzyOcr.cf, поэтому редактируйте тот. В файле конфигурации вы теперь можете либо заменить все вхождения /etc/mail/spamassassin на /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin, ИЛИ оставить его как показано ранее и создать символическую ссылку из /etc/mail/spamassassin на /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin следующим образом:
mkdir /etc/mail/
ln -s /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/ /etc/mail/spamassassinВот и все для конфигурации FuzzyOCR. Теперь давайте посмотрим, работает ли это как ожидалось.
5 Тестирование FuzzyOCR
Я упоминал ранее, что FuzzyOCR поставляется с образцами писем спама с изображениями (в каталоге samples/):
ls -l /usr/src/FuzzyOcr-3.5.1/samples/Вывод должен выглядеть следующим образом:
total 156
-rw-r--r-- 1 1000 users 13633 2007-01-07 12:55 ocr-animated.eml
-rw-r--r-- 1 1000 users 16108 2007-01-07 12:55 ocr-gif.eml
-rw-r--r-- 1 1000 users 27506 2007-01-07 12:55 ocr-jpg.eml
-rw-r--r-- 1 1000 users 27842 2007-01-07 12:59 ocr-multi.eml
-rw-r--r-- 1 1000 users 24657 2007-01-07 12:55 ocr-obfuscated.eml
-rw-r--r-- 1 1000 users 18236 2007-01-07 12:55 ocr-png.eml
-rw-r--r-- 1 1000 users 16113 2007-01-07 12:55 ocr-wrongext.eml
-rw-r--r-- 1 1000 users 3576 2007-01-07 12:55 READMEТеперь мы можем подать каждое из этих писем в SpamAssassin, чтобы увидеть, правильно ли FuzzyOCR подключен к SpamAssassin. Узнайте, где находится ваш исполняемый файл spamassassin (обычно он находится в вашем PATH - вы можете узнать, так ли это, запустив
which spamassassinЕсли он показывает результат, spamassassin находится в вашем PATH, и вам не нужно указывать полный путь к spamassassin для его запуска.)
Если вы не знаете, где находится spamassassin, вы можете узнать, запустив
updatedb
locate spamassassinЕсли вы используете ISPConfig 2, spamassassin находится здесь: /home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin
Теперь, когда вы знаете, где находится spamassassin, вы можете подать образцы писем спама с изображениями в spamassassin следующим образом:
/path/to/spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/nullНапример,
/home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/nullили, если spamassassin находится в вашем PATH:
spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/nullТеперь вы должны увидеть много вывода, в конце должно выглядеть так:
[...]
[10025] dbg: FuzzyOcr:
[10025] dbg: FuzzyOcr: Пятница, 4 августа, 16:01 по восточному времени
[10025] dbg: FuzzyOcr: Лас-Вегас, Невада--(MARKET WIRE)--4 августа 2006 года -- auantum Energy, lnc. (OTC
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-
[10025] dbg: FuzzyOcr: auantum Energy, lnc. рада сообщить, что она подала заявку на листинг своих акций на
[10025] dbg: FuzzyOcr: торгах на Франкфуртской фондовой бирже. Компания наняла Baltic
[10025] dbg: FuzzyOcr: Инвестиционная группа из Гамбурга, Германия, чтобы помочь с заявкой.
[10025] dbg: FuzzyOcr:
[10025] dbg: FuzzyOcr: _ qEGY,OB "
[10025] dbg: FuzzyOcr:
[10025] dbg: FuzzyOcr: <<=end
[10025] info: FuzzyOcr: Scanset "ocrad" найдено слово "target" с нечеткостью 0.0000
[10025] info: FuzzyOcr: строка: "краткосрочная цена цели oo"
[10025] info: FuzzyOcr: Scanset "ocrad" найдено слово "service" с нечеткостью 0.0000
[10025] info: FuzzyOcr: строка: "торговля на франкфуртской фондовой бирже, компания наняла услуги baltic"
[10025] info: FuzzyOcr: Scanset "ocrad" найдено слово "stock" с нечеткостью 0.0000
[10025] info: FuzzyOcr: строка: "горячая энергетическая акция"
[10025] info: FuzzyOcr: Scanset "ocrad" найдено слово "stock" с нечеткостью 0.0000
[10025] info: FuzzyOcr: строка: "торговля на франкфуртской фондовой бирже, компания наняла услуги baltic"
[10025] info: FuzzyOcr: Scanset "ocrad" найдено слово "price" с нечеткостью 0.0000
[10025] info: FuzzyOcr: строка: "текущая цена"
[10025] info: FuzzyOcr: Scanset "ocrad" найдено слово "price" с нечеткостью 0.0000
[10025] info: FuzzyOcr: строка: "краткосрочная цена цели oo"
[10025] info: FuzzyOcr: Scanset "ocrad" найдено слово "company" с нечеткостью 0.0000
[10025] info: FuzzyOcr: строка: "торговля на франкфуртской фондовой бирже, компания наняла услуги baltic"
[10025] info: FuzzyOcr: Scanset "ocrad" найдено слово "recommendation" с нечеткостью 0.0000
[10025] info: FuzzyOcr: строка: "sboog bup recommendation"
[10025] dbg: FuzzyOcr: Достаточно OCR Hits без удаления пробелов, пропуская второй проход...
[10025] info: FuzzyOcr: Scanset "ocrad" генерирует достаточно попаданий (8), пропуская дальнейшие сканирования...
[10025] info: FuzzyOcr: Сообщение является спамом, оценка = 15.000
[10025] info: FuzzyOcr: Добавление хеша в "/etc/mail/spamassassin/FuzzyOcr.db" с оценкой "15.000"
[10025] dbg: FuzzyOcr: Digest: 538584:327:549:7::255:255:255:255:168580::0:0:0:0:9098::0:128:0:75:1086::0:0:128:15:395::128:0:128:53:213::0:0:255:29:115
[10025] info: FuzzyOcr: Найденные слова:
[10025] info: FuzzyOcr: "target" в 1 строках
[10025] info: FuzzyOcr: "service" в 1 строках
[10025] info: FuzzyOcr: "stock" в 2 строках
[10025] info: FuzzyOcr: "price" в 2 строках
[10025] info: FuzzyOcr: "company" в 1 строках
[10025] info: FuzzyOcr: "recommendation" в 1 строках
[10025] info: FuzzyOcr: (найдено 12 вхождений слов)
[10025] dbg: FuzzyOcr: Удалить DIR: /tmp/.spamassassin10025QnPTq8tmp
[10025] dbg: FuzzyOcr: FuzzyOcr завершен успешно...
[10025] dbg: FuzzyOcr: Обработано за 2.191381 сек.Как вы видите, /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml был классифицирован как спам с оценкой 15 баллов, так что FuzzyOCR работает.
Таким образом, ваш SpamAssassin теперь способен распознавать изображения спама благодаря помощи FuzzyOCR.
6 Ссылки
- FuzzyOCR: http://www.fuzzyocr.net/
- SpamAssassin: http://spamassassin.apache.org/
- Fedora: http://fedoraproject.org/
Get new posts in your inbox
No spam. Unsubscribe anytime.