Немного об отвлечённом: на днях пришла в голову мысль, что для улучшения ловли нежелательных писем неплохо было бы сделать почтовые адреса-ловушки (spamtrap) для спама. Подумал-подумал, да и отказался от этого: lrc-spamassassin и так справляется со своей задачей, ведь список адресов-ловушек исчёрпывается только фантазией спамеров.

LRC - подключаемый модуль (плагин) для антиспам-пакета SpamAssassin, выполняющий проверку адресов отправителей и получателей в проходящих письмах.Предназначен для уменьшения количества первичного и вторичного спама, нагрузки на сервер, улучшения самообучаемости SpamAssassin.

Установка

Для установки плагина необходимо:

  1. Скачать его.
  2. Распаковать.
  3. Скопировать файл LRC.pm в каталог размещения плагинов SpamAssassin (обычно /usr/lib/perl5/site_perl/x.x.x/Mail/SpamAssassin/Plugin)

Настройка

Для того, чтобы фильтр смог работать, нужно "объяснить" спаморезке, что у неё появился новый модуль, для чего в файле init.pre вставить следующие строки:

# LRC - perform LRC verification.
#
loadplugin Mail::SpamAssassin::Plugin::LRC
header LRC_FAILED eval:check_lrc_plugin()

Затем надо настроить модуль: указать путь, имя пользователя и пароль к базе данных со списком пользователей и доменов, которые обслуживает сервер, а также названия таблиц и полей, в которых хранятся нужные сведения. Настройка производится в файле local.cf путём добавления следующих строк:

lrc_sql_dsn DBI:Pg:dbname=database;host=localhost;port=5432
lrc_sql_username username
lrc_sql_password password
lrc_sql_domains_table mailertable
lrc_sql_domains_field s_in
lrc_sql_users_table userstable
lrc_sql_users_field account
lrc_sql_aliases_table userstable
lrc_sql_aliases_field account


где lrc_sql_dsn - строка со сведениями для подключения к БД, lrc_sql_username - имя пользователя, имеющего право читать из данной БД, lrc_sql_password - пароль пользователя, lrc_sql_domains_table и lrc_sql_domains_field - таблица и поле в ней, в котором хранится список доменов, для которых будет действовать фильтр (по идее, он должен совпадать со списком обслуживаемых доменов), lrc_sql_users_table и lrc_sql_users_field - таблица и поле, содержащее перечень пользователей, а lrc_sql_aliases_table и lrc_sql_aliases_field - таблица и поле, содержащее перечень алиасов.

После этого надо задать количество очков, которое будет добавляться к оценки "спамовости" в случае нахождения неверных адресов. Рекомендуется присваивать до 90% от порогововго значения. Таким образом, у честного отправителя будет возможность получить ответ от сервера в случае ненамеренной ошибки в адресе. Настройка значения производится в файле local.cf, для этого в него надо добавить строку вида

score LRC_FAILED 9.8

По умолчанию значение равно нулю, и, хотя тест проводится, на результат проверки письма влияния не оказывает.

Принцип работы

Фильтр автоматически загружается SpamAssassin, после чего начинает проверять адреса отправителей и получателей в проходящих письмах. Если адрес находится в домене, не указанном в списке, то он игнорируется и начинается обработка следующего адреса. В противном случае проверяется наличие адреса отправителя (или получателя). Если такой адрес найден, то происходит переход к обработке следующего адреса в списке. В противном случае возможны два варианта:

  1. Не был найден адрес отправителя. Предполагается, что данный адрес был использован спамером для спуфинга и плагин прерывает свою работу с присвоением десятикратного размера очков заданных в LRC_FAILED для гарантированного попадания письма в спам.
  2. Не был найден адрес получателя. Количество очков, заданных в LRC_FAILED умножается на количество неверных адресов, что позволяет избежать массовой рассылки наугад.

Другое

Плагин изначально был ориентирован на работу с СУБД PostgreSQL, однако сложностией в использовании с СУБД MySQL и другими возникнуть не должно.

 Обновление от 25 августа 2009 года: таблица с пользователями и алиасами теперь разделена, поэтому в конфигурационный файл добавлено две опции - названия таблицы и поля с алиасами.

Фильтр для проверки локальных адресов был опробирован, протестирован и утверждён к использованию. Правда, как ни странно, после ввода его в эксплуатацию количество доходящего спама стало возрастать. После анализа ситуации стало понятно, что ничего странного в этом нет: при предварительном отсеве "плохих" писем спаморезке (SpamAssassin'у) просто стало не на чем обучаться.

Поэтому концепция была пересмотрена и фильтр lrc-milter был переписан в плагин для SpamAssassin.В настоящее время плагин проходит всесторонее тестирование.