Особливості виклику і навчання spamassassin - max kostikov

У цій невеликій замітці хотілося б приділити увагу особливостям виклику антиспам системи Spamassassin для обробки вхідної кореспонденції та взаємопов'язаного з цим процесу навчання bayes-фільтрів, яким, на мій погляд, приділено недостатню увагу в численних how-to посвещённих цьому чудовому програмному комплексу.

Почнемо, мабуть з головної особливості процесу використання Spamassassin, а саме можливості враховувати при оцінці вхідної пошти на її приналежність (або навпаки) до спаму за допомогою вищезазначених статистичних bayes-фільтрів. Їх формування може відбуватися як в ручному режимі за допомогою т.зв. "Навчання" системи шляхом передачі на вхід листи, яке вами класифікується як очевидний спам, так і в автоматичному режимі на підставі критеріїв настройки автонавчання.

Однак при цьому слід враховувати той важливий факт, про який часто забувають, а саме облік Spamassassin при зверненні та формуванні бази bayes-фільтрів імені користувача від якого (і для якого) виробляються з нею дії. Важливо саме який користувач викликає перевірку і від імені якого проводиться навчання. Для правильно результату, очевидно, необхідно що це повинен один і той же користувач.

Поштова система використовує Spamassassin може застосовувати єдину базу налаштувань і базу bayes-фільтрів для системи в цілому, індивідуальні бази для кожного користувача, або обидва методи відразу.

В останньому випадку дані будуть дубльовані як в загальній базі системи, так і в персональній базі користувача, на ім'я якого надійшло перевіряється лист. Крім цього, слід враховувати, що перевірка листи буде проведена стільки раз, скільки локальних користувачів в даній системі воно має + 1 раз для загальної бази системи. Багаторазовий виклик може мати значення для навантажених поштових систем з причин ресурсоємності.

Spamassassin перевіряє величезна кількість вхідних даних для прийнятого поштової системи письма, в тому числі і саме тіло повідомлення. Розуміючи це, очевидно, що запуск перевірки на спам можливий, як мінімум в той момент, коли лист уже надійшло до нас за допомогою команди SMTP DATA. У разі, якщо ви використовуєте Exim. це розділ acl_smtp_data.

Для виклику Spamassassin в файлі конфігурації Exim передбачено спеціальне правило

де username ім'я системного користувача від імені якого буде проводиться запит до баз і, можливо, автоматичне навчання. Рекомендую використовувати в якості цього імені системного користувача, під ім'ям якого працюють поштові сервера і сам Spamassassin. У моєму випадку це користувач mailnull.

Очевидно, що для персонального, індивідуального для кожного користувача, використання баз і процесу їх оновлення ( "навчання") Spamassassin необхідно перенести процес оцінки вхідної кореспонденції на рівень роутерів / транспортів Exim. З огляду на те, що процес роутінга запускається для кожного наявного в системі одержувача окремо, саме тут з'являється можливість звернення до персоніфікованих баз даних.

Приклад такої конфігурації (наведені витримки стосуються теми даної статті):

Зверніть увагу на місце роутера spamassassin_router в загальному списку - він викликається після зовнішніх доставок і обробки псевдонімів для локальних доменів і користувачів. Тобто перевірки будуть виконуватися завжди для реально існуючих в системі поштових скриньок. Порядок транспортів у відповідній секції такого значення не має.

У будь-якому випадку - використання чи єдиної системної бази або персональних даних для кожного користувача, для вибору коректної бази даних слід використовувати ключ -u із зазначенням імені в клієнтських утиліти sa-learn або spamc за допомогою яких проводиться звернення до основного демона Spamassassin.

Трохи про процес налаштування механізму навчання я вже писав раніше в статті "Відкладене пакетне навчання антиспам-фільтра використовуючи Dovecot" - рекомендую до прочитання.