Ужас, летящий на крыльях SMTP Сергей Супрунов Хакер, номер #100, стр. 100-154-5 define(`LOCAL_MAILER_PATH', `/usr/local/bin/dspam')dnl define(`LOCAL_MAILER_ARGS', `dspam "--deliver=innocent,spam" --user $u -d %u')dnl Преимуществом DSPAM является удобный CGI-модуль, позволяющий выполнять значительную часть административных работ через веб-интерфейс и, что самое главное, обеспечивающий подобным интерфейсом пользователей, которые смогут самостоятельно обучать свою часть фильтра, работать со своим карантином и т.д. Но, помимо того что почта будет приниматься полностью, потребуется уйма места для хранения баз, вычислительные ресурсы процессора. А самое неприятное - это необходимость постоянно следить за актуальностью данных и активно участвовать в обучении фильтра. Вряд ли бухгалтер захочет ежедневно проверять состояние своего карантина, так что эта работа, скорее всего, ляжет на плечи сисадмина. Убийца спама Наиболее известный инструмент для защиты от спама - SpamAssassin. Он пытается объединить под одной крышей большинство ныне существующих методов: от черных списков и SPF до сигнатур и байесового анализа. Кроме того, каждое сообщение прогоняется им по сотням «правил» - регулярных выражений, призванных выявить характерные признаки спама (например, большое число цифр в адресе отправителя, нехарактерная кодировка и язык и т.д.). Собственно говоря, проверка другими методами тоже оформляется в виде правил. В случае если письмо соответствует правилу, к его «счету» добавляется определенный балл. При превышении некоторого порога, письмо помечается как спам (их удалением SpamAssassin, вопреки названию, не занимается - это забота других инструментов: procmail, почтового клиента и т.д.). Установить его можно из портов или как обычный Perl-модуль - через CPAN. К Sendmail он подключается через milter (который инсталлируется отдельно; я обычно использую spamass-milter из коллекции портов): INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=, T=S:4m;R:4m')dnl После установки следует сверить список правил (в /usr/local/share/spamassassin) со своими предпочтениями, выставить в /usr/local/etc/mail/spamassassin/local.cf осмысленное значение «порога срабатывания», подходящие баллы для тех или иных правил, включить дополнительные возможности, типа байесового анализа и AWL (автоматического белого списка). Кроме того, если включен байесовый анализ, нужно провести обучение фильтра, скормив ему образцы «хороших» и «плохих» писем: # sa-learn --ham goodmails # sa-learn --spam badmails Если функцию разбирательства с отмеченной почтой не планируется взваливать на пользователей, то придется позаботиться об этом самому, либо используя procmail, либо с помощью иных дополнительных средств. В частности, в качестве универсального решения можно рассмотреть использование Amavisd-new, который, помимо подключения SpamAssassin и ряда антивирусных пакетов, способен выполнять кое-какую фильтрацию и самостоятельно (например, по расширениям вложений). Высокая гибкость и настраиваемость делают SpamAssassin стандартом де-факто в борьбе со спамом. Однако платить за это приходится огромными вычислительными затратами (Perl, как-никак) и повышенным вниманием к настройкам и обучению. |