Возможно вы искали: 'Mystery Case Files: Pr...'

May 15 2025 18:51:56
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Интеграция Postfix, Maildrop и DSPAM (postfix spam filter mail)

Интеграция Postfix, Maildrop и DSPAM (postfix spam filter mail)

Ключевые слова: postfix, spam, filter, mail, (найти похожие документы)

From: Eugene Hartmann (Dezz) <dezz@sibmail.com.>
Newsgroups: email
Date: Mon, 11 Jan 2006 14:31:37 +0000 (UTC)
Subject: Интеграция Postfix, Maildrop и DSPAM

Данное руководство не ставит своей целью полное описание процесса
настройки и интеграции МТА Postfix и спам-фильтра DSPAM. Это всего
попытка рассказать о том способе взаимодействия между программами,
который понравился автору. В частности, делался упор на обработку писем,
обучение и корректировку словаря только средствами почтовой системы. В
данной схеме нет необходимости использовать DSPAM CGI или подобные
средствами требующими web-сервер.

Почтовая система установлена на FreeBSD 5.4 и использованы следующие компоненты:

1) МТА - Postfix 2.2.7
2) DSPAM 3.4.8
3) Mysql 5.0.16
4) LDA - Maildrop 1.8
5) Courier-authlib 0.58 (сюда же входят courier-authlib-base 0.58,
courier-authlib-mysql 0.58)
6) Courier-IMAP 4.0.6
7) p5-DBI-1.49 (p5-DBD-mysql50-3.0002)


(здесь конечно же перечислены не все компоненты, но этого достаточно для
понимания функционирования моей схемы)

На момент начала интеграции вы должны иметь установленную почтовую
систему, или установить её со следующими условиями:

1) Пофигс должен быть собран с поддержкой виртуальных пользователей,
backend - mysql. Помимо этого, скрипт LDA рассчитан на то, что у нас
есть поддержка индивидуальных квот (корзина не учитывается), формат
ящиков - maildir (путь складывается из каталога с ящиками + имя
пользователя + maildir/), список папок:

INBOX.
Outbox
Sent
Trash


Инструкция предусматривает многодоменность. Пользователей хранить в
таблице, как имя@домен.

2) В mysql создана база и все необходимые таблицы для функционирования
почтовой системы.
Создан пользователь имеющий доступ к этим таблицам.

3) В качестве IMAP/POP3 сервера я использую Courier-IMAP это и послушило
причиной сборки LDA maildrop с использованием Courier-authlib. Вы
можете использовать всё что угодно и тогда можно включить доступ из
maildrop к таблицам mysql другими средствами.


1. Mysql

Предполагается, что данная СУБД уже установлена.

В ней создана база postfix, и в ней таблица mailbox следующей структуры:



+----------+--------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------------------+-------+
| username | varchar(255) | NO | PRI | | |
| password | varchar(255) | NO | | | |
| name | varchar(255) | YES | | NULL | |
| maildir | varchar(255) | NO | | | |
| quota | int(10) | NO | | 0 | |
| domain | varchar(255) | NO | | | |
| created | datetime | NO | | 0000-00-00 00:00:00 | |
| modified | datetime | NO | | 0000-00-00 00:00:00 | |
| active | tinyint(1) | NO | | 1 | |
| dspam | tinyint(1) | NO | | 0 | |
+----------+--------------+------+-----+---------------------+-------+




2. Courier-Authlib

# cd /usr/ports/security/courier-authlib
# make config (выбираем в появившемся меню: AUTH_MYSQL)
# make install


Идём в /usr/local/etc/authlib и правим файлы authdaemonrc и authmysqlrc,
вид их должен быть примерно следующий:

# more authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
subsystem=mail
authdaemonvar=/var/run/authdaemon
DEBUG_LOGIN=2
DEFAULTOPTIONS="wbnodsn=1"

# more authmysqlrc
MYSQL_SERVER место_где_живёт_mysql
MYSQL_USERNAME имя_пользователя
MYSQL_PASSWORD секретный_пароль
MYSQL_SOCKET сокет
MYSQL_PORT порт (обычно 3306)
MYSQL_OPT 0
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_CLEAR_PWFIELD password
DEFAULT_DOMAIN ваш_домен_по_умолчанию (хотя, для maildrop это необязательно)
MYSQL_UID_FIELD владелец_файлов_в_почтовом_каталоге (у меня здесь postfix или 125)
MYSQL_GID_FIELD группа_владелец_файлов_в_почтовом_каталоге (то же самое)
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD почтовый_каталог (например, '/mailboxes/')
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
MYSQL_WHERE_CLAUSE active='1'


Далее идём в /usr/local/etc/rc.d и делаем

# ./courier-authdaemond.sh start


3. Maildrop

Шагаем в /usr/ports/mail/maildrop и компилим

# make WITH_AUTHLIB=yes MAILDROP_TRUSTED_USERS=courier
# cd /usr/local/bin
# chown postfix:mail maildrop
# chmod u+s maildrop


Сочиняем maildrop скрипт, должно быть так:

# more /usr/local/etc/maildroprc
SHELL="/bin/sh"
SENDER=$1
`test -d $HOME$DEFAULT`
if ($RETURNCODE!=0)
{
`mkdir -p -m 0700 $HOME$DEFAULT`
`mkdir -m 0700 $HOME$DEFAULT/cur`
`mkdir -m 0700 $HOME$DEFAULT/new`
`mkdir -m 0700 $HOME$DEFAULT/tmp`
}
QUOTA="$MAILDIRQUOTA"'S'
`maildirmake -q $QUOTA $HOME$DEFAULT`
if ($LOGNAME ne "spam@ваш_домен" && $LOGNAME ne "nospam@ваш_домен")
{
DSPAM=`/usr/local/etc/spam $LOGNAME`
if ($DSPAM eq "1" && $SIZE < 2048000)
{
xfilter "/usr/local/bin/dspam --user $LOGNAME --stdout --process --deliver=innocent,spam"
if (/^X-DSPAM-Result: Spam/)
{
`test -d $HOME$DEFAULT/.Trash`
if ($RETURNCODE!=0)
{
`/usr/local/bin/maildirmake $HOME$DEFAULT/.Trash`
}
to "$HOME$DEFAULT/.Trash"
}
else
{
to "$HOME$DEFAULT"
}
}
else
{
to "$HOME$DEFAULT"
}
}
if ($LOGNAME eq "spam@ваш_домен")
{
DSPAM=`/usr/local/etc/spam $SENDER`
if ($DSPAM eq "1" && $SIZE < 2048000)
{
xfilter "/usr/local/bin/dspam --user $SENDER --class=spam --source=error"
}
}
if ($LOGNAME eq "nospam@ваш_домен")
{
DSPAM=`/usr/local/etc/spam $SENDER`
if ($DSPAM eq "1" && $SIZE < 2048000)
{
xfilter "/usr/local/bin/dspam --user $SENDER --class=innocent --source=error"
}
}


4. DBI

# cd /usr/ports/databases/p5-DBI
# make install
# cd ../p5-DBD-mysql50
# make install


Пишем скрипт, позволяющий проверить нужна ли пользователю фильтрация.
Он должен быть такого вида:

# more spam
#!/usr/bin/perl
use DBI;
my $mysql_host = "где_живёт mysql";
my $mysql_db = "postfix";
my $mysql_user = "postfix";
my $mysql_pw = "ваш_пароль";

my $dbh = DBI->connect("DBI:mysql:$mysql_db:$mysql_host","$mysql_user","$mysql_pw",
{RaiseError=> 0, PrintError => 0} )
or err_trap("Connection Errorn");
if ($ARGV[0] ne "")
{
$query = "SELECT dspam FROM mailbox WHERE username='$ARGV[0]'";
$qresult = $dbh->prepare($query);
$qresult->execute() or die "Can't execute $query: " . $dbh->errstr . "n";
if ($qresult->rows() ne "0")
{
$dspam = $qresult->fetchrow_array();
print "$dspam";
}
else
{
print "9";
}
$qresult->finish();
}
else { print "9"; }
$dbh->disconnect();


5. Пофигс

Я интегрировал DSPAM уже в существующую систему, с настроенными main.cf и master.cf,
поэтому я не буду останавливаться на настройке MTA (это тема другой инструкции).
Для успешной работы системы вам надо изменить параметр в main.cf:

virtual_transport = maildrop


И подправить master.cf таким образом:

maildrop unix - n n - - pipe
flags=DRhu user=courier argv=/usr/local/bin/maildrop -w 90 -d ${recipient} ${sender}


6. DSPAM

Теперь пришёл тот самый ответственный момент, которого каждый человек
ждёт всю свою жизнь :)

# cd /usr/ports/mail/dspam
# make config (оставляем крыжики: DEBUG, PREF_EXT, GRAHAM_BAYES, BURTON_BAYES, RPV, TEST_COND,
TRUSTED_USERS, MYSQL50, VIRT_USERS, DOMAIN_SCALE, MAILDROP_LDA)
# make install
# chown root:courier /usr/local/bin/dspam
# cd /usr/local/etc
# cp dspam.conf.sample dspam.conf


Меняем следующие параметры в dspam.conf...

Доверенные пользователи:

Trust root
Trust mail
Trust courier


Свойства:

Feature noise
Feature chained
Feature tb=5
Feature whitelist


СУБД:

MySQLServer место_где_живёт_сокет_mysql
MySQLPort или_можно_порт указать
MySQLUser dspam
MySQLPass свой_суперсекретный_пароль )
MySQLDb dspam

Notifications off (я не хочу чтобы DSPAM отсылал всякие там письма моим пользователям)

SystemLog off (и статистику я тоже не хочу собирать)
UserLog off


Вытаскиваем из дистрибутива каталог tools.mysql.drv, делаем жутко хитрые манипуляции:

# mysqladmin -uroot -p create dspam
# mysql -uroot -p dspam < tools.mysql.drv/mysql_objects-4.1.sql
# mysql -uroot -p dspam < tools.mysql.drv/virtual_users.sql
# mysql -uroot -p dspam
mysql> grant all on dspam.* to dspam@localhost identified by 'свой_суперсекретный_пароль';
mysql> exit


Впихиваем в /etc/crontab строку

1 1 * * * nobody /usr/local/bin/mysql -udspam
-pсвой_суперсекретный_пароль dspam < tools.mysql.drv/purge-4.1.sql
(ваш путь к файлу очистки базы может отличаться от этого)


7. Пробуем отправить письмо на какой-нибудь свой почтовый ящик (не
забываем поставить dspam = 1)

После того, как проверили результаты работы, делаем один из следующих
вариантов (можно выбрать несколько):

а) ...довольные результатом своей работы идём к своей девушке, жене
(не всё же время с серверами сексом заниматься)
б) ...пьём пиво (и рыбу не забудьте купить..., можно заранее)
в) ...читаем инструкцию ещё раз, потом читаем маны и ищем свои ошибки
г) ...находим мои ошибки и пишем мне гневное письмо
д) ...читаем текст дальше


Плюсы такой схемы:

а) нет необходимости использовать cgi, все манипуляции делаются почтовой
системой (IMAP + The Bat рулят)
б) индивидуальные словари для каждого пользователя
в) высокая степеть эффективности (99% отсеивание спама начиналось после
отправки 5-7 писем на spam@)

Минус:

При большом количестве пользователей, DSPAM'у необходимо хранить очень
большие объёмы информации (примерно по 1Мб на каждого пользователя, и
это лишь только начало :) Быстро достаём калькуляторы и считаем какого
размера получаются базы (особо умные могут считать в уме!).

У меня, например, щас 2,5 тыс. пользователей, хотя спам-фильтром
пользуются не все.

Послесловие:

1. От минуса можно избавиться, например включив поддержку сжатия баз при
компиляции DSPAM'а, или в ущерб индивидуальности сделать один общий
словарь. Ещё как вариант, если вы не параноидальный извращенец, как я,
можно включить метод обучения toe, базы станут меньше, но и
эффективность фильтра меньше. Можно пойти совсем другим способом -
поставить Postgresql или Oracle и радоваться. Я как раз выбрал последний
вариант, проблема ведь не в дисковом пространстве, а больше, в
неформальных ограничениях на размер mysql базы.

2. Писал я эту инструкцию по памяти + во время работы сервера переходил
от транспорта virtual к maildrop (не один из пользователей при работах
не пострадал :) поэтому, в некоторых местах получилось немного криво, но
тем не менее работает эффективно. Сразу прошу не пинать меня, если у вас
что-то не заработает или не состыкуется при применении этой инструкции,
можете писать мне на email: dezz@sibmail.com или попытаться найти меня в
IRC, сеть RUSNET, канал #tfug (ник: Dezzs)

3. В инструкции не затрагиваются аспекты безопасности. Так же вырезаны
"проверки" из скриптов.

4. Если какие-то печатные издания, типа "Системного администратора"
захотят со мной сотрудничать, могу расширить инструкцию, дополнить её
скриншотами. Могу так же написать статьи на другие темы (c сохранением
моего авторства), что-нибудь типа "Безопасное почтовое ядро выполненное
на free-ПО для почтовой системы", "Анализ и выбор посредника для MTA
Postfix и антивируса ClamAV", "Подробное описание DSPAM", могу
что-нибудь на тему безопасности Apache написать... вообщем, приглашаю к
сотрудничеству.
881 Прочтений •  [Интеграция Postfix, Maildrop и DSPAM (postfix spam filter mail)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Интеграция Postfix, Maildrop и DSPA... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка