Сьогодні я хочу розповісти про налаштування Spam-фільтра поштового сервера Mdaemon (досить популярного продукту у адміністраторів невеликих організацій). Ця популярність цілком заслужена і одна з причин його популярності - це просунута система фільтрації спаму, якою володіє даний продукт. Розповідь мій буде заснований на настройках реального поштового сервера, з яким мені довелося працювати (MDaemon v 9.5.6). Я не буду детально описувати кожен пункт з численних налаштувань, наявних в Mdaemon, тому що сенс багатьох з них зрозумілий з їх назви та / або описаний в документації. Зупинюся тільки на ключових моментах роботи одного з компонентів захисту: SpamFilter'а.
В основі системи фільтрації спаму в Mdaemon лежить добре відомий open source продукт - Spamassassin. який в MDaemon функціонує у вигляді резидентного модуля MSpamD (MDaemon's spam processing daemon). Частина налаштувань, які ми можемо виконати в GUI-інтерфейсі Mdaemon'овского спам-фільтра, в кінцевому підсумку знайдуть своє відображення в конфігураційних файлах Spamassasin'а. Spamassassin хороший тим, що дозволяє використовувати велику кількість всіляких тестів на спам, нараховуючи за підсумками кожного з тестів певну кількість очок (причому, за підсумками проходження тесту листа може бути нараховано, як позитивне, так і негативне кількість очок (дефолтний кількість очок, яка нараховується на підставі того чи іншого тесту, можна подивитися на сайті SpamAssassin'а)). Після проходження листом усього набору тестів очки, набрані листом в кожному з тестів, підсумовуються і порівнюються з заданим граничним значенням. На підставі результату цього порівняння лист визнається спамом або легітимним поштовим повідомленням. Тому в першу чергу потрібно визначити це порогове значення. Робиться це на вкладці "Heuristics" в поле "A message is spam if its score is greater or equal" (див. Рис 2). У другу чергу необхідно приять рішення про те, що нам робити з листами, які після проходження тестів будуть визнані spam'ом: видаляти їх чи ні (ця настройка виконується на вкладці SpamFiltering в розділі "IftheSpamFilterdeterminesthatamessageisspamthen ...")? Я вважаю за краще ніколи не видаляти повідомлення, і, ось, чому:
1) ніколи не можна виключати можливість помилкового позитивного спрацьовування спам фільтра (особливо на першому етапі налаштування фільтрації спаму), а тому буде краще приймати сумнівні повідомлення і відкладати їх в сторону. Якщо у кого-небудь з користувачів виникне підозра, що кореспонденція, яку він очікує, була помилково відфільтрована, ви завжди зможете виправити ситуацію.
2) отримується сервером spam ви можете використовувати для автоматичного навчання байєсівського фільтра (про це мова трохи пізніше)
І так, вибравши в основному меню програми Security-> Spam Filter. ми побачимо наступне вікно (рис. 1):
Стратегічно важливо прийняти рішення по налаштуванню, що визначає, що Mdaemon робитиме з листом, яке було визнано спамом ( "IftheSpamFilterdeterminesthatamessageisspamthen ..."). Як уже було згадано вище, я вважаю, що «краще перебдеть, ніж недобдеть», тому ніякі листи віддалятися не повинні. Адже для того щоб підвищити ефективність фільтрації, ми будемо прагнути встановити поріг досить низьким, щоб відсікти найбільший відсоток спаму, а значить допустити можливість невеликої кількості помилкових позитивних спрацьовувань. Тому, IMHO, кращим вибором буде не видалення листів, які фільтр зараховує до спаму, а їх маркування будь-яким відмітною ознакою (наприклад, додаванням слова SPAM до темі листа). Тому в даному розділі налаштувань я рекомендую вибирати "... flag the message but let it continue down the delivery path".
"Do not filter messages sent from local sources" і "Do not filter messages from trusted or authenticated sources" забороняє фільтрацію листів від локальних аутентіфіцированний або довірених джерел.
"DNS-BLmatchaddsthismanypointstothespamscore" - тут необхідно вказати кількість очок, які будуть додані до підсумковій оцінці, якщо лист перераховано в одному з чорних списків DNS-BL (DNS-Black lists). Сам перелік DNS-BLHosts. за допомогою яких буде проведена перевірка, задається в іншому місці (Security -> DNSBlackLists ... -> DNS-BLHosts). У цьому полі я задаю кількість очок досить велика, але не перевищує порогове значення, тому що не хочу, щоб рішення про фільтрації листи приймалося тільки на підставі одного цього тесту. З іншого боку, те, що сервер він занесений в одному з чорних списків, досить симптоматично, і тому я виставив тут кількість очок рівне 4 (що становить 2/3 від використовуваного мною порогового значення).
Наступна вкладка "Heuristics"
"Amessageisspamifitsscoreisgreaterorequal" - то саме граничне значення для прийняття рішення: чи є протестоване лист спамом чи ні? Якщо сумарна кількість очок, набрана листом, перевищує дане порогове значення, то цей лист буде визнано спамом. Як видно з пояснень до цього поля (див. Скріншот), поріг рівний 5 є дуже агресивним (при використанні дефолтних значень, що нараховуються при проходженні спам-тестів), а, значить, відсоток помилкових позитивних спрацьовувань буде занадто великий. Після ряду експериментів я зупинився на числі 6. У моєму випадку це забезпечувало відсікання більшої частини спаму при невеликій кількості помилкових позитивних спрацьовувань.
"SMTPrejectsmessagewithscoregreaterorequalto" - порогове значення для прийняття рішення про те, що лист (визнане спамом) буде відкинуто під час прийому оного в рамках SMTP-сесії. Якщо в цьому полі поставити нуль, то MDaemon не намагатиметься виконувати антиспам тести листи під час прийому, і лист буде протестовано тільки після того, як це воно потрапить в чергу повідомлень поштового сервера. У цьому полі можна виставити досить велику порогове значення, яке дозволить вам відсікати явний спам на етапі прийому повідомлення. Але я вважаю за краще цього не робити і приймати ці повідомлення, тому що в подальшому вони можуть бути використані для навчання байєсівського фільтра, про який мова піде далі.
"Subjecttag" - в цьому полі можна задати текст, яким буде позначатися повідомлення, визнане спамом. Я вважаю за краще залишати в цьому полі дефолтні настройки. Завдяки цим налаштувань лист маркується тегом, який нам дозволить в подальшому легко фільтрувати помічені листи. Крім того, в темі листа ми будемо бачити, скільки очок набрала лист в результаті проходження тестів і яке граничне значення для прийняття рішення про визнання листи спамом. Помічені листи будуть виглядати наступним чином:
Наступна вкладка "Bayesian" (рис. 4)
Ця вкладка повністю присвячена моєму улюбленому методу фільтрації спаму, так званої фільтрації по Байеса. За цей метод фільтрації ми повинні бути вдячні священикові і математику, що жив в 18 столітті, Томас Баєс (Tomas Bayes). який сформулював теорему. названу згодом його ім'ям. Перевага цього методу полягає в тому, що ви можете «тренувати» цей фільтр і навчити його розпізнавати той спам, який отримує саме ваш поштовий сервер. Ефективність цього методу фільтрації дуже велика. Однак за все треба платити. І для того, щоб підтримувати фільтр в тонусі, необхідно постійно «згодовувати» йому, як сміттєву пошту (spam), так і легітимні поштові повідомлення (ham). Робити це можна і потрібно регулярно, і дуже добре, що Mdaemon дозволяє нам автоматизувати цей процес. Для початку, нам доведеться створити пару загальних папок, в одну з яких ми будемо розміщувати spam, а в іншу - ham. Ці папки ми будемо використовувати, як для початкового навчання фільтра, так і для подальшого ручного донавчання (коли нами будуть виявлятися випадки помилкового спрацьовування фільтру). Створити загальні папки легко: для цього достатньо натиснути кнопку Create (див. Рис 4). Потім, якщо ви не збираєтеся навчати фільтр одноосібно, а хочете надати таку можливість будь-яким користувачам і / або іншим адміністраторам, то вам необхідно виставити відповідні дозволи на новостворені загальні папки. «Колективне» навчання фільтра дозволить йому ефективніше виконувати фільтрацію, тому що спамерние листи, що приходять в різні підрозділи або навіть до різних користувачам, можуть досить сильно відрізнятися один від одного. Дозволи на загальні папки встановлюються так: Setup-> Sharedfolders -> PublicFolders -> ... -> Editaccesscontrollist (див. Рис5).
І так, загальні папки створені, дозволу на них видані, залишається наповнити ці папки зразками спаму і легітимних поштових повідомлень. Як довго нам доведеться вчити фільтр? Коду він почне свою роботу? Про це ми можемо дізнатися, якщо натиснемо на кнопку Advanced на вкладці Bayesian. В цьому випадку ми побачимо наступне вікно:
На скріншоті (рис. 6) ми бачимо, що значення полів "Non-spam samples required before learning starts", такжекакі "Non-spam samples required before learning starts", по дефолту дорівнює 200. Це означає, що до тих пір, поки ви не помістіть в загальні папки зі spam'ом і ham'ом по 200 зразків відповідних повідомлень, то фільтр не почне фільтрацію повідомлень.
Зрозуміло, що ручна праця при навчанні Байєсова фільтра нам доведеться використовувати на першому етапі, коли фільтр ще не почав свою роботу і в тих випадках, коли він буде помилятися (зараховувати легітимні повідомлення до спаму і, навпаки), в інших же випадках хотілося б автоматизувати процес навчання. У цьому нам можуть допомогти кілька налаштувань поштового сервера MDaemon:
На вкладці "Reporting" (рис. 7) можна вказати MDaemon'у, яким чином він повинен доставити користувачеві звіт про результати перевірки звернення на спам. Я вважаю за краще використовувати перший із запропонованих варіантів - додавання звіту в заголовок листа. Від двох варіантів, що залишилися його відрізняє те, що вам ніколи не вдасться (спеціально або через злі наміри) видалити звіт з листа, так само, як і те, що у листи, який пройшов перевірку, чи не з'явиться зайвого attachment'а (що містить звіт про перевірку ), який може викликати масу питань у користувачів.
У заголовку листа, який наведено вище, можна знайти наступний звіт про результати проходження листом антиспам-тестів:
У кожному рядку цього звіту ми бачимо назву тесту (наприклад, URIBL_SBL), короткий опис цього тесту (Contains an URL listed in the SBL blocklist [URIs: eitherstick.ru]) і кількість очок, яке було нараховано листа за підсумками цього тесту (4.0 )
У цьому файлі ви знайдете частина параметрів, про які я писав вище, чиє значення ми виставляли за допомогою GUI-інтерфейсу MDaemon'а і, як і було обіцяно, вони знайшли своє відображення у відповідних рядках файлу конфігурації. Але, що для нас особливо цінно, ми можемо вносити зміни в налаштування антиспам захисту шляхом редагування цього файлу конфігурації, які не зв'язуючись з GUI-інтерфейсом, причому можемо налаштовувати такі параметри, які недоступні в GUI-інтерфейсі.
На цій мажорній ноті я, мабуть, закінчу свою розповідь. Всім привіт і "все таке".