Postfix+...+SpamAsssassin. Mini-HowTo::Журнал СА 9.2003
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9886
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8100
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8199
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5194
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5872
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Postfix+...+SpamAsssassin. Mini-HowTo

Архив номеров / 2003 / Выпуск №9 (10) / Postfix+...+SpamAsssassin. Mini-HowTo

Рубрика: Администрирование /  Электронная почта

АНДРЕЙ МОЗГОВОЙ

Postfix + ... + SpamAssassin

Mini-HOWTO

Спам. Рассылка рекламы. Бороться с нежелательной почтой можно по-разному. Эта статья расскажет, как прикрутить фильтр SpamAssassin к MTA Postfix. Надеюсь, статья получится выдержанной в стиле mini-howto.

Пожалуйста, не пытайтесь прикрутить фильтр к ненастроенному/работающему серверу Postfix. Далее будем полагать, что у читателя настроен и нормально работает почтовый сервер и уже установлен SpamAssassin.

Установка SpamAssassin (коротко): SpamAssassin – это perl-модуль. Состоит из трех основных частей:

  • spamd – daemon, к которому подключается клиент;
  • spamc – client, который подключается к spamd. На вход клиенту подаются письма, с выхода забираются отфильтрованные письма;
  • spamassassin – perl-скрипт, работает сам по себе, подробней – «man spamassassin». Установка подробно описана в файле INSTALL.

Мой Postfix работает в следующей связке: Postfix + Cyrus-SASL + Mysql + Courier-IMAP + SquirrelMail + DrWeb, а теперь еще и SpamAssassin.

  • Postfix – сам MTA;
  • Cyrus-SASL – используется для авторизации пользователей (пока только SMTP AUTH);
  • MySQL – БД – хранит все бюджеты пользователей;
  • Courier-IMAP – POP3- и IMAP-сервисы;
  • SquirrelMail – веб-интерфейс для пользователей, кстати, нормально работает с кириллицей;
  • DrWeb – антивирус, работает как фильтр, в этом собственно вся проблема и была. Если прикручивать SpamAssassin как один-единственный фильтр, думаю, проблем особых возникнуть не должно. Схема проста, в master.cf прописывам фильтр, например, spam, с опцией:

-o content_filter=spam

    daemon smtpd, говорим «использовать фильтр spam». Письмо, пришедшее на smtp, переправляется на spamс, spamс проверяет и с помощью sendmail возвращает обратно в очередь.

--- MASTER.CF ---

#=====================================================================

# service type private unpriv chroot wakeup maxproc command+args

#               (yes)  (yes)  (yes) (never)  (100)

#=====================================================================

   smtp    inet  n       -      n      -      50      smtpd

  -o content_filter=spam:dummy

...

# SpamAssassin Filter

# ====================================================================

   spam    unix  -       n      n      -       -       pipe

 flags=R user=spam argv=/usr/bin/spamc -u spam -e /usr/sbin/sendmail -t

--- END MASTER.CF ---

(Кстати, с «:dummy» надо еще поэкспериментировать.)

Но SpamAssassin у меня не единственный фильтр, есть еще и DrWeb. Вот как было все прописано до использования SpamAssassin.

--- MASTER.CF ---

#=====================================================================

# service type private unpriv chroot wakeup maxproc command+args

#               (yes)  (yes)  (yes) (never)  (100)

#=====================================================================

    smtp  inet    n      -      n      -       50      smtpd

  -o content_filter=drweb:dummy

...

# DrWeb AntiVirus Filter

#=====================================================================

    drweb unix    -      n      n      -       -       pipe

 flags=R user=drweb argv=/opt/drweb/drweb-postfix -f ї

    ${sender} -- ${recipient}

--- END MASTER.CF ---

Фильтровать почту будем, используя именно spamc/spamd, а не через perl-скрипт spamassassin. Так оно намного быстрее… да и вообще симпатичнее.

Создаем в системе пользователя с домашним каталогом «/etc/mail/spamassassin», shell можно не давать (/bin/fasle). Но валидный shell очень удобен, когда надо добавить/удалить какой-нибудь адрес в White/Black List. Решайте сами. Также создаем группу spam. Каталоги /etc/mail/spamassassin и /usr/local/share/spamassassin отдаем в распоряжение бюджету spam (chown –R spam.spam /path/to/dir).

С документацией по настройке spamd трудности [2], я использовал веб-интерфейс, написанный Michael Moncur [3]. Принцип фильтрации следующий: во всех письмах, распознанных как спам, поля темы меняются на «SPAM: ».

Запускаем spamd: прочтите руководство и выберите необходимые параметры (man spamd). Меня устроило следующее:

/usr/bin/spamd -d -a -c -m 50 -u spam

  * используйте опцию "-D" для отладки.

  * не забудьте прописать spamd в стартовых скриптах

Уже можно протестировать SpamAssassin. Сохраните спамовское письмо, которое пришло к вам, на сервере и подайте его на вход spamc (желательно сразу использовать параметр -u user).

/usr/bin/spamc -u spam -e /usr/sbin/sendmail –t

Письмо пройдет проверку и вернется в очередь MTA, затем опять упадет к вам в Home_Dir. Можете проверять почтовый ящик. Если spamd был запущен с опцией «-D» – в лог-файле (скорее всего в /var/log/maillog) вы найдете подробный отчет о проделанной работе. Работает? Отлично, прикручиваем фильтр в Postfix. (Не работает? Внимательно прочтите сообщения в лог-файле.)

Приступим к настройке Postfix. (DrWeb настроен и нормально работает.) Есть как минимум два варианта, как подключить SpamAssassin к Postfix.

  • Первый способ я нашел в статье reVen [6]. Его суть: передача почты от сервиса к сервису, прописанных в master.cf. Но мне такой способ не понравился. Зачем дополнительно использовать Perl в перенаправления с сокета на сокет? Можно вообще без лишних сокетов (мое личное мнение).
  • Может, я изобрел велосипед, но дошел до этого сам, хотя ничего сложного в нем нет. Изменяем в master.cf фильтрсервис drweb, в сумме получаем следующий файл:

--- MASTER.CF ---

#=====================================================================

# service type private unpriv chroot wakeup maxproc command+args

#               (yes)  (yes)  (yes)  (never) (100)

#=====================================================================

    smtp  inet    n      -      n      -      50      smtpd

  -o content_filter=drweb:dummy

...

# DrWeb AntiVirus Filter and SpamAssassin Filter

# ====================================================================

   drweb  unix    -      n      n      -      -       pipe

flags=R

user=drweb

argv=/usr/local/sbin/postfix_filter -f ${sender} -- ${recipient}

--- END MASTER.CF ---

А вот и маленький, да удаленький скриптик на BASH, который получает письмо от Postfix, проверяет его на spam с помощью spamc и отдает его (письмо) антивирусу DrWeb.

--- /usr/local/sbin/postfix_filter ---

#!/bin/sh

(/usr/bin/spamc -u spam -s 1024000 | /opt/drweb/drweb-postfix $@) <&0

--- END /usr/local/sbin/postfix_filter ---

  * -s – максимальный разрер проверяемого письма,

  * по умолчанию 250k

Вот и вся настройка. Еще раз повторюсь, если что-то не работает, внимательно прочтите лог-файлы.

Ссылки:

  1. SpamAssassin Homesite: http://www.spamassassin.org, в статье описывается версия 2.55.
  2. http://www.spamassassin.org/doc/Mail_SpamAssassin_Conf.html
  3. http://www.yrex.com/spam/spamconfig.php
  4. http://www.perl.com/CPAN – все необходимое для Perl.
  5. Postfix Homesite: http://www.postfix.org
  6. http://raven.elk.ru/unix/how-to/postfix2+cyrus-sasl2+kav+spamassassin+courier-imap+tls+mysql+FreeBSD4/postfix2+cyrus-sasl2+kav+spamassassin+courier-imap+tls+mysql+FreeBSD4.html – вариант использования Postfix + SpamAssassin
  7. Статьи по настройке Postfix: http://www.onix.opennet.ru/mail/mail.htmlhttp://linuxnews.ru/docs/new/isp-mail/version1.2/isp-mail-howto.1.2.rus.txt

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru