Установка и настройка системы фильтрации спама Rspamd

Опубликовано nekit - вс, 15/01/2017 - 15:57

История электронной почты началась еще в далеком 1965 году, когда сотрудники американского института написали программу для пересылки электронных сообщений для операционной системы того времени, установленной и работавшей на компьютере IBM. С тех пор прошло много времени и электронная почта стала ежедневным средством обмена сообщениями практически для любого современного пользователя. Конечно, популярностью данной технологии не могли не воспользоваться некоторые недобросовестные люди, которые стали использовать данную технологию для рассылки различного рода рекламы, вредоносных программ и другой бесполезной мелочи, которые в повседневной жизни прозвали спамом. И так появились на свет системы фильтрации спама.

Сегодня пойдет речь о достаточно молодом и перспективном проекте Rspamd. Основными достоинствами Rspamd являются: низкое потребление ресурсов и высокая скорость работы. Rspamd достаточно гибкий в настройке и позволяет реализовать надежную систему фильтрации спама, поддерживается всеми популярными MTA и имеет собственный веб-интерфейс для просмотра статистики. Вместе с тем, учитывая возраст проекта и высокую интенсивность разработки, разработчиками происходит изменение структуры конфигурационных файлов, ПО достаточно плохо задокументировано и многие вещи приходится додумывать логически, что конечно осложняет процесс интеграции. Однако один раз разобравшись, дальше будет проще. Все же, к настоящему времени проект Rspamd достиг некоторой стабильности и готов к эксплуатации в боевом режиме.

Отмечу, что в статье я не буду рассматривать общие принципы работы систем фильтрации спама. Данной информации полно как на официальных сайтах соответствующего ПО, так и вообще на просторах сети Интернет. Ну что же, от слов к делу...

Установка Rspamd будет осуществляться из портов на ОС FreeBSD версии 11. На сегодняшний день в портах доступна версия Rspamd 1.4.2. Однако мне пришлось использовать разрабатываемую ветку 1.5, поскольку в стабильной версии некорректно работает модуль multimap (внизу статьи приведена ссылка на описание данной проблемы). Большинство параметров я оставил без изменений, настройки по умолчанию достаточно точно классифицируют нежелательные письма как спам, в тоже время я добавил свой список нежелательные доменов, письма с которых классифицируются всегда как спам. Отмечу, что реализацию белых и черных списков возможно реализовать с помощью модулей regexp, multimap и whitelist. Я реализовал все это дело через модуль multimap, поскольку на мой взгляд он оказался более удобным.

  1. # cd /usr/ports/mail/rspamd-devel
  2. # make install clean

Из предложенных опций я ничего не выбрал. По окончанию установки, в /usr/local/etc появится папка rspamd с конфигурационными файлами. Редактирование конфигурационных файлов Rspamd имеет свои особенности, так созданные при установке конфиги не редактируются, вместо этого в директориях /usr/local/etc/rspamd/local.d и /usr/local/etc/rspamd/override.d создаются одноименные конфигурационные файлы, в которых осуществляется изменение параметров. Обобщая изложенное, в директории local.d конфиги дополняют существующую конфигурацию, а в override.d конфиги изменяют ранее определенные переменные.
У меня содержимое дынных директорий такое, /usr/local/etc/rspamd/local.d:

  1. # ls -l /usr/local/etc/rspamd/local.d
  2.  
  3. -rw-r--r--  1 root  wheel   683 14 янв.  23:00 metrics.conf
  4. -rw-r--r--  1 root  wheel   206 14 янв.  23:36 multimap.conf
/usr/local/etc/rspamd/override.d
  1. # ls -l /usr/local/etc/rspamd/override.d
  2.  
  3. -rw-r--r--  1 root  wheel  331 14 янв.  20:12 options.inc
  4. -rw-r--r--  1 root  wheel   56  7 янв.  14:08 worker-controller.inc
  5. -rw-r--r--  1 root  wheel   80  7 янв.  13:57 worker-normal.inc

Далее я приведу содержимое всех файлов с комментариями. В файле /usr/local/etc/rspamd/local.d/metrics.conf я определил свои "символы" (в терминологии Rspamd), которые добавляют и уменьшают количество спам баллов проверяемого письма. Таким образом я реализовал черные и белые списки почтовых доменов. Любой символ имеет свое имя, состоящее из латинских букв, количество спам очков, которое он прибавляет или убавляет, а также описание. Символы могут объединяться в группы. Группы позволяют определить какие-либо дополнительные параметры, например ограничить максимальное количество спам баллов в этой группе или задать значение по умолчанию.

  1. group "local" {
  2.   symbol "LOCAL_BL_IP" {
  3.     weight = 5.0;
  4.     description = "Sender ip listed in local ip blacklist";
  5.   }
  6.   symbol "LOCAL_BL_FROM" {
  7.     weight = 5.0;
  8.     description = "Sender from listed in local from blacklist";
  9.   }
  10.   symbol "LOCAL_BL_RCPT" {
  11.     weight = 5.0;
  12.     description = "Recipient listed in local rcpt blacklist";
  13.   }
  14.   symbol "LOCAL_WL_IP" {
  15.     weight = -5.0;
  16.     description = "Sender ip listed in local ip whitelist";
  17.   }
  18.   symbol "LOCAL_WL_FROM" {
  19.     weight = -5.0;
  20.     description = "Sender from listed in local from whitelist";
  21.   }
  22.   symbol "LOCAL_WL_RCPT" {
  23.     weight = -5.0;
  24.     description = "Recipient listed in local rcpt whitelist";
  25.   }
  26. }
В файле /usr/local/etc/rspamd/local.d/multimap.conf я определил дополнительные правила анализа писем. Через него возможно реализовать анализ сообщений практически по любым свойствам письма. Подробное описание есть в документации Rspamd.
  1. local_bl_from {
  2.   # Какие данные из письма брать для сравнения, в моем случае анализируется отправитель
  3.   type = "from";
  4.   # К каждому виду анализа, который задается с помощью параметра "type" возможно
  5.   # задать дополнительные параметры. В данном случае из адреса отправителя
  6.   # например user@example.ru для проверки будет браться только доменная часть.
  7.   filter = "email:domain";
  8.   # Разрешить использование регулярных выражений в файле
  9.   #regexp = true;
  10.   # Заранее определенный "символ", в соответствии с которым будут начислены
  11.   # спам баллы
  12.   symbol = "LOCAL_BL_FROM";
  13.   # Файл со списком доменов ($LOCAL_CONFDIR раскрывается как /usr/local/etc/rspamd)
  14.   map = "$LOCAL_CONFDIR/extra/blacklist.map";
  15.   # Описание
  16.   description = "Local blacklist rule";
  17. }
Далее я переопределил стандартные настройки, разместив необходимые файлы в папке override.d. Вот содержимое файла /usr/local/etc/rspamd/override.d/options.inc:
  1. # Здесь указываем проверки, которые будут проходить письма.
  2. # убрал проверку spf и dkim, поскольку они у меня реализованы через MTA
  3. filters = "chartable,surbl,regexp,fuzzy_check";
  4. # Интервал, через который происходит проверка на предмет новых данных во внешних файлах
  5. map_watch_interval = 1min;
  6. check_all_filters = false;
  7.  
  8. # Директория для хранения временных файлов
  9. tempdir = "/var/tmp";
  10.  
  11. # Объем истории
  12. history_rows = 500;
  13.  
  14. # Сканировать любые сообщения, даже если они оформлены не по стандарту
  15. allow_raw_input = true;
В файле /usr/local/etc/rspamd/override.d/worker-controller.inc задаются параметры администрирования сервиса Rspamd, количество рабочих процессов, пароль и другие данные:
  1. count = 1;
  2. password = "q1";
  3. secure_ip = "192.168.0.3";
В файле /usr/local/etc/rspamd/override.d/worker-normal.inc задаются параметры сервиса Rspamd, количество рабочих процессов, привязка к IP и другие параметры:
  1. count = 3;
  2. mime = true;
  3. task_timeout = 8s;
  4. bind_socket = "192.168.0.3:11333";
Далее необходимо скачать с официального сайта базы данных со статистикой для bayes фильтра или использовать свои (см. файл statistic.conf):
  1. # cd /var/db/rspamd
  2. # fetch http://rspamd.com/rspamd_statistics/bayes.spam.sqlite
  3. # fetch http://rspamd.com/rspamd_statistics/bayes.ham.sqlite
  4. # chown nobody:nobody *.sqlite
Добавить сервис в /etc/rc.conf и запускать:
  1. # echo "rspamd_enable=YES" >> /etc/rc.conf
  2. # service rspamd start
После запуска должно появиться множество процессов Rspamd:
  1. # ps -aux | grep rspam
  2.  
  3. nobody    8488  0,0  0,2 236124  29924  -  IsJ  23:26       0:00,32 rspamd: main process (rspamd-1.5.0)
  4. nobody    9316  0,0  0,4 368940  72476  -  SJ   23:37       0:27,74 rspamd: controller process (rspamd-1.5.0)
  5. nobody    9317  0,0  0,7 444928 120488  -  SJ   23:37       0:10,57 rspamd: normal process (rspamd-1.5.0)
  6. nobody    9318  0,0  0,9 440932 153400  -  SJ   23:37       0:25,47 rspamd: normal process (rspamd-1.5.0)
  7. nobody    9319  0,0  0,9 447108 156880  -  SJ   23:37       0:25,40 rspamd: normal process (rspamd-1.5.0

Если Rspamd у вас не стартовал, тогда смотрите логи в /var/log/rspamd. На этом настройку Rspamd можно считать завершенной. Подробное описание всех модулей Rspamd смотрите на официальном сайте. Местами документация там конечно скудная, но поиск в интернете и просмотр стандартных конфигурационных файлов подскажет что делать. Достаточно полезной для отладки является утилита rspamadm, с помощью которой, например, можно посмотреть какой конфиг получился в итоге и найти опечатки или неточности. Для отладки своих фильтров можно использовать утилиту rspamc -v , которая покажет какие проверки были применены, за что сообщение получило те или иные баллы.

пт, 20/01/2017 - 21:18

вс, 22/01/2017 - 00:20

вс, 22/01/2017 - 10:47

ср, 24/05/2017 - 19:26

сб, 27/05/2017 - 16:44

пт, 18/10/2019 - 15:18

Добавить комментарий

Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.

Введите первые 3 значащие цифры числа Pi? (без запятой)