Фільтрація спаму в The Bat! версії 3.x
Після виходу Бата версії 3.0 всі мої статті, присвячені антіспамним фільтрам в одначасье застаріли. Причина - кажан гілки 3.x поміняла сортувальник, в результаті чого багато старих фільтри перестали працювати. Моє бажання схалтурить і не писати нову статтю наштовхнулося на безперервному струмочок листів від користувачів про те, як пристосувати старі добрі фільтри, які справно працювали на версії 2.x, до нового сортувальника. Тому і назріла необхідність, хоча і з великим запізненням, заповнити цю прогалину, так як за потужністю сортувальника Бат як і раніше не має собі рівних.
Самі схеми фільтрації не зазнала жодних змін.
Її суть можна описати наступним алгоритмом:
Маємо: заспамленності ящик [email protected] (назвемо його основним) на незахищеному і некерованому через web-інтерфейс поштовому сервері провайдера, що не має антіспамной захисту.
Завдання: очистити цей ящик від усякої гидоти без всякого геморою.
На захищеному сервері і відбувається необхідна нам фільтрація. Спамоборона Яндекса або Спамтест Mail.ru відсікає весь спам, а корисні листи залишаються в доп. ящику, звідки ми їх і забираємо Батом.
Спамоборона детектирует спам як масову розсилку. Поодинокі корисні листи не є розсилкою, тому вони і не будуть видалені антіспамной системою поштового сервера і дійдуть до Вас.
В The Bat! на ящику [email protected] потрібно поставити всього 2 фільтра:
Фільтр № 3.1. перенаправлення незнайомих
Фільтр № 3.2. видалення дублікатів
Ось така витончена схема! Її ефективність наближається до 100%.
Якщо бажаєте зменшити потік проходить через доп. ящик спаму, скомбінуйте цю схему зі схемою II. На роботі, де у мене виделенка, я поступив ще радикальніше: між заспамленності ящиком і поштовим клієнтом поставив програму Spampal. Листи, маркуються в темі Spampal'ом прапором ** SPAM ** рубаються відразу після скачування з основного ящика (а це 85-90% всього спаму), інші листи від незнайомих прогоняются через доп. ящик, де Яндекс добиває залишки спаму. Але Spampal може погано працювати на повільних комутованих лініях, де зв'язок з інтернетом постійно рветься, тому для таких випадків найкраще зв'язка "схема III + схема II".
Схема II. Фільтрація пошти на основі полів заголовків листа
М'яка фільтрація заснована на обробці листи по його заголовку. Його ще називають технічним конвертом. В The Bat! заголовок можна побачити, якщо, виділивши лист, натиснути клавішу F9.
Тема листа частково формується поштовою програмою на комп'ютері користувача (поля: From, To, Subject, Date, Message-Id, X-Mailer, Content-Type і ін.). Далі кожен сервер, через який проходить лист, додає до технічного конверту як мінімум одну запис (поля: Received, Delivered і т.д.). Поля заголовка визначаються стандартом RFC-822.
Суть м'якою фільтрації полягає у виявленні нетипових листів, тому що спам-роботи не завжди дотримуються мінімальний набір обов'язкових полів і правил їх заповнення.
КПД "м'яких" фільтрів не дуже високий, тому що спамери намагаються максимально наблизити шаблон спам-повідомлень до звичайних листів. Тому "м'яка схема", як правило, застосовується в комбінації з іншими методами.
Перший фільтр даної схеми видаляє листи, які не відповідають стандартним RFC-822 і не містять одне з обов'язкових полів в заголовку листа (From, To, Subject, Date, Message-ID), а при жорсткому підході і деяких необов'язкових полів (X-Mailer і ін.).
Фільтр № 2.1. Ні полів в заголовку RFC-822
- Сортувальник, правило [Вибіркове скачування]
- Кнопка [Новий]
- Вкладка [Загальне]
- Ім'я: "Ні полів в заголовку RFC-822"
- Умова: [Поле Тема] [Date] [не відповідає]. кнопка [Додати] OR [Поле Тема] [From] [не відповідає]. кнопка [Додати] OR [Поле Тема] [To] [не відповідає]. кнопка [Додати] OR [Поле Тема] [Subject] [не відповідає].
- Вкладка [Дії]
- Дія: [+] Видалити Кнопка [Ok]
- Кнопка [Ok] - зберігаємо фільтр
Символ точка "." В регулярних виразах означет будь-який символ, крім перекладу рядки
Більш жорстко цей фільтр буде працювати (і більше спаму вб'є на сервері), якщо в нього додати поля "Message-ID:" і "X-Mailer:". Але при цьому потрібно мати на увазі, що він також видалить повідомлення MAILER-DAEMON, у яких немає в заголовку хоча б одного з цих полів.
Поле Message-ID (ідентифікатор листи) обов'язково має бути присутнім в заголовку листа і практично всі поштові програми і поштові web-сервіси дотримуються цього правила. Виняток становлять спец. повідомлення, наприклад, ті ж MAILER-DAEMON деяких поштових серверів.
Поле "X-Mailler:" ставиться практично всіма поштовими клієнтами і відомими мені поштовими web-службами, хоча є необов'язковим з точки зору стандарту RFC-822 (починається з префікса X-). Деякі зарубіжні поштові сервери замість поля X-Mailer пишуть X-Sender або X-SenderIP, тому існує невелика ймовірність блокування корисних листів.
Перш ніж приймати рішення включати чи не включати поля Message-ID і X-Mailer, потрібно вивчити заголовки приходять до Вас листів. Керуватися треба принципами "Не нашкодь", "Сім разів відміряй і один раз відріж", але краще перестрахуватися, ніж втратити хоча б одну корисну лист.
Фільтр № 2.2. без відправника
- Сортувальник, правило [Вибіркове скачування]
- Кнопка [Новий]
- Вкладка [Загальне]
- Ім'я: "Без відправника"
- Умова: [Поле заголовка] [From] [не відповідає] \ w + [- \ w] * @ \ w + [- \ w] * \.? \ W + [- \ w] * \. \ W
- Вкладка [Дії]
- Дія: [+] Видалити Кнопка [Ok]
- Кнопка [Ok] - зберігаємо фільтр
Фільтр № 2.3. Від мене
- Сортувальник, правило [Вибіркове скачування]
- Кнопка [Новий]
- Вкладка [Загальне]
- Ім'я: "Від мене"
- Умова: [Поле заголовка] [From] [міститься] [email protected]
- Вкладка [Дії]
- Дія: [+] Видалити Кнопка [Ok]
- Кнопка [Ok] - зберігаємо фільтр
Фільтр № 2.4. Не мені
- Сортувальник, правило [Вибіркове скачування]
- Кнопка [Новий]
- Вкладка [Загальне]
- Ім'я: "Не мені"
- Умова: [Поле заголовка] [To] [не міститься] [email protected]
- Вкладка [Дії]
- Дія: [+] Видалити Кнопка [Ok]
- Кнопка [Ok] - зберігаємо фільтр
5. Умова: [Поле заголовка] [To] [не міститься] [email protected] кнопка [Додати] OR [Поле заголовка] [To] [не міститься] [email protected] кнопка [Додати] OR [Поле заголовка] [To] [не міститься] [email protected]
У заголовках більшості спам-повідомлень можна помітити такий рядок:
To: pupkin
Чи напише таке ім'я Ваш друг або знайомий? Навряд чи. Швидше за все, він напише так:
To: Вася Пупкін
Рядку виду "pupkin
Фільтр № 2.5. "Параноя" якраз для такого випадку:
- Сортувальник, правило [Вибіркове скачування]
- Кнопка [Новий]
- Вкладка [Загальне]
- Ім'я: "Параноя"
- Умова: [Поле заголовка] [To] [відповідає] ^ pupkin \ s
- Вкладка [Дії]
- Дія: [+] Видалити Кнопка [Ok]
- Кнопка [Ok] - зберігаємо фільтр
Фільтр № 2.6. Додавання в стоп-лист
Фільтр № 2.7. Видалення спаму по стоп-листу
- Сортувальник, правило [Вибіркове скачування]
- Кнопка [Новий]
- Вкладка [Загальне]
- Ім'я: "Видалення спаму по стоп-листу"
- Умова: [Відправник] [перебуває]
- Вкладка [Дії]
- Дія [+] Видалити [+] Завантажити сигнальні рядки з файлу: spam.txt
- Кнопка [Ok] - зберігаємо фільтр і закриваємо сортувальник
Я провів маленький експеримент, щоб з'ясувати ефективність фільтрації спаму на основі полів заголовка. У мене є ящик-пастка, на який йде тільки спам і нічого більше. На цей ящик я навісив ще безкоштовну антіспамную програму Spampal. щоб потестувати різні комбінації. Ось яка статистика вийшла:
Всього отримано спаму:
З таблиці видно, що фільтрація тільки у заголовках листів дає близько 50%. Ефективність програми Spampal становить близько 88%. А сукупний ефект фільтрів по заголовкам і програми Spampal становить 96%.
Очевидно, що непрацюючі фільтри можна виключити зі схеми, що значно її спрощує (але попередньо краще все ж їх спробувати поганяти).
Розглянемо комбінації схеми III (пересилання через доп. Ящик) з іншими схемами.
Спаму буде вбито на Вашій машині
Спаму пройде через доп. ящик і буде вбито на захищеному сервері
Схема I. Фільтрація пошти методом підтвердження листування
(Жорстка схема)
Найважчі критичні мінуси цього методу фільтрації наступні:
Зваживши всі "за" і "проти" я вирішив не переводити схему I на мову сортувальника кажана версії 3.x. Ті, кому вона буде дуже потрібна, зроблять це без проблем за прикладом наведених в цій статті фільтрів.