RWL - подключаемый модуль (плагин) для антиспам-пакета SpamAssassin, производящий создание и поддержание в актуальном состоянии белого списка почтовых адресов из доменов, не обслуживаемых почтовым сервером ("чужих" доменов).
Установка
Для установки плагина необходимо:
- Скачать его.
- Распаковать.
- Скопировать файл RWL.pm в каталог размещения плагинов SpamAssassin (обычно /usr/lib/perl5/site_perl/x.x.x/Mail/SpamAssassin/Plugin).
- Создать базу данных.
Настройка
Для того, чтобы фильтр смог работать, нужно "объяснить" спаморезке, что у неё появился новый модуль, для чего в файле init.pre вставить следующие строки:
loadplugin Mail::SpamAssassin::Plugin::RWL
header KNOWN_ADDRESS eval:check_rwl_plugin()
describe KNOWN_ADDRESS I know about this sender
Затем надо настроить модуль: указать путь, имя пользователя и пароль к базе данных со списком пользователей и доменов, которые обслуживает сервер, а также названия таблиц и полей, в которых хранятся нужные сведения. Настройка производится в файле local.cf путём добавления следующих строк:
rwl_sql_dsn DBI:Pg:dbname=database;host=localhost;port=5432
rwl_sql_username username
rwl_sql_password password
где rwl_sql_dsn - строка со сведениями для подключения к БД, rwl_sql_username - имя пользователя, имеющего права владельца на данную БД, rwl_sql_password - пароль пользователя.
После этого надо задать количество очков, которое будет добавляться к оценки "спамовости" в случае, если письмо отправлено с известно адреса. Настройка значения производится в файле local.cf, для этого в него надо добавить строку вида
score KNOWN_ADDRESS -1.01
В случае, если значение не указано, тест проводиться не будет.
Первый запуск
После настройки перезапустить SpamAssassin. Необходимые таблицы и процедуры будут созданы автоматически. После этого необходимо заполнить таблицу domains названиями доменов, которые обслуживаются данным почтовым сервером.
Принцип работы
Фильтр автоматически загружается SpamAssassin, после чего начинает проверять адреса отправителей и получателей в проходящих письмах. Если адрес отправителя находится в домене, не указанном в таблице domains, то он проверяется на присутствие в белом списке; при наличии адреса в белом списке производится установка флага KNOWN_ADDRESS, иначе ничего не происходит.
В противном случае (адрес принадлежит доменам, перечисленным в таблице domains) проверяются адреса получателей. Если адрес принадлежит "чужому" домену, то он добавляется в белый список; если же локальному домену - адрес игнорируется.
Другое
Плагин ориентирован на работу с СУБД PostgreSQL, так как присутствует процедура обновления записей в БД, однако в исходниках есть вариант без использования процедур, так что переделка под СУБД MySQL не займёт много времени.