Фильтровать поток получаемой почты можно как на самом почтовом сервере, используя, например, «черные» и «серые» списки. Однако это не всегда бывает возможным. К примеру, на почтовый сервер какой-либо большой организации могут приходить довольно важные письма от сотрудников других организаций, более мелких и не имеющих своего почтового сервера и пользующихся бесплатными почтовыми сервисами (вроде mail.ru или qip.ru). Эти же сервера или имена активно используют и спамеры. И если при этом включить имена бесплатных доменов в черные списки – то, как понимаете, письма до адресатов не дойдут. Останавливаться на тонкостях настройки «серверных» спам-фильтров мы пока не будем.

Рассмотрим фильтрацию почты в самом почтовом клиенте. Для этих целей, например, в программе The Bat! есть специальный инструмент – сортировщик писем. Вызвать его можно используя клавиши Ctrl+Shift+S или через меню программы "Ящик" -> "Настройка сортировщика писем"

Фильтрация спама в TheBat!

Он, конечно, изначально предназначен совсем не для борьбы со спамом, но и в этом деле тоже может помочь.

Для начала проанализируем заголовки нескольких «нужных» писем и нескольких нежелательных. В The Bat! посмотреть заголовки можно щёлкнув по телу письма правой кнопкой мыши и выбрав пункт «Показывать заголовки (RFC-822)»

Фильтрация спама в TheBat!

При этом в области отображения тела письма появиться вкладка «Заголовки» примерно с вот таким содержанием, где каждая строка имеет формат

Заголовок:значение

Return-Path: < Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>
Received: from [176.30.212.137] ([176.30.212.137])
        by mail.examplename.ru (8.14.4/8.14.3) with ESMTP id pBMBOSSe024720;
        Thu, 22 Dec 2011 14:24:30 +0300 (MSK)
        (envelope-from Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.)
To: Customer < Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>, <abuse@ examplename.ru>,
        <admin@ examplename.ru>, <akeev@ examplename.ru>, <akstcmnsdgs@ examplename.ru>,
        < Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>
From: =?koi8-r?B?8s/Hz9c=?=< Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>
Message-ID: < Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>
Reply-To: =?koi8-r?B?8s/Hz9c=?=< Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>
MIME-Version: 1.0
Content-Type: multipart/alternative;
  boundary="450al523br1a"
Precedence: bulk
X-Mailer: vBulletin Mail
X-XN-Filter:yes
Subject: =?koi8-r?B?8NLB18/TzMHXzsHRINPFzcXKzsHRIMvOycfBICL09+/xIMTPzcHbzg==?=  =?koi8-r?B?0dEg4+Xy6+/3+CE=?=
Date: Thu, 22 Dec 2011 03:19:39 -0800
X-Greylist: Default is to whitelist mail, not delayed by milter-greylist-4.0 (mail. examplename.ru [194.220.208.142]); Thu, 22 Dec 2011 14:24:30 +0300 (MSK)
X-UIDL: ,4J"!V@V!!5Jm"!E)E"!
X-EsetId: 4519DE2227CE3D30125D80

Не будем останавливаться на подробном анализе заголовков, этому мы посвятим отдельную статью. Обратим внимание на заголовок X-Mailer. Его может и не быть, ибо этот заголовок согласно RFC-822 не является стандартным и обязательным, однако, проанализировав большое количество заголовков я заметил, что немалое количество спама, приходящего на наш корпоративный сервер, имеют либо пустой заголовок, либо заголовок, отличный от следующих:

The Bat!
PHP
Microsoft Office Outlook
Microsoft Outlook Express
mPOP Web-Mail

Настраиваем фильтр в сортировщике писем на отбрасывание писем с пустым заголовком X-mailer или со значением, отличным от указанных.

Фильтрация спама в TheBat!

Кроме того, некоторые нежелательные письма могут «представляться» письмами от локальный пользователей, изменяя обратный адрес на адрес из нашего домена …@examplename.ru. Я знаю о том, что можно настроить сервер SMTP на отбрасывание сообщений, но это не сделано для того, чтобы наши пользователи могли отправить письмо с рабочего ящика, находясь далеко за пределами своих рабочих кабинетов (ну так уж у нас принято). Но также, я знаю, что все наши пользователи в пределах локальной сети используются в качестве почтовых клиентов либо TheBat, либо MicrosoftOutlook, либо OutlookExpress, которые добавляют соответствующие значения (см. выше) в  X-Mailer.

Еще у нас есть интересный заголовок Received, который показывает «маршрут» прохождения письма через почтовые сервера в процессе доставки адресату, а также может показывать узел, с которого письмо отправлено, а также заголовки From и Return-Path, указывающие отправителя и обратный адрес.

Настраиваем еще один фильтр, который будет отбрасывать все письма, содержащие в заголовке From «@examplename.ru» и не содержащие этой строки в заголовке Return-Path или не содержащие имени нашего сервера (mail.examplename.ru) в заголовке Received или заголовки X-Mailer, отличные от соответствующих.

Фильтрация спама в TheBat!

Собственно, настройка завершена. Лично мне это помогает отсортировать более 30% спама, приходящего на мои ящики.