|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> почтовые системы
—> spamooborona
yandex spamooborona
Автор: Al.
Не подумайте, что реклама....
Была поставлена задача найти спаморезалку хорошую, при этом цена не имела особого значения. До этого работал dspam - отличная штука, но требует обучения - в этом его минус. Ленивые пользователи обучать его не хотели.
В итоге решил попробовать спамоборону от яндекса. Результаты работы будут ниже, а пока по установке.
Надо скачать дистрибутив с http://so.yandex.ru/. Там есть пробная версия на 30 дней. Для получения пробной версии надо зарегиться - поставить спамоборону - ответить на необходимые вопросы - выслать конф файлы и получить ключ на 30 дней.
Итак, установка.
Просто качаем файл для нашей оси и ставим. Там есть установочный скрипт с подобием гуя. В качестве метода интеграции с почтовой системой выбираем smtp-proxy. Если выбрать exim, то они предлагают пересобрать экзим со своим файлецом - мне такая затея не понравилась сразу - даж не стал разбираться.....
Косяки на этом этапе следующие:
- локальные домены надо писать сразу все. После получения ключа список изменять НЕЛЬЗЯ!.
- ключ и конф фай присылается иногда с добавленим ^M в конце строк. естественно, при этом ничего не работает. Открываем файл присланного ключа на редактирование в мс (другие редакторы не показывают этот косяк) и стираем виндовые хрени оттуда.
Инсталлер сам добавляет везде свои записи, не особо нас об этом спрашивая. После установки в rc.d появляются 2 скрипта: sp-daemon.sh* и sp-proxy.sh*. При перезагрузке мы обнаруживаем, что сцуко работает от рута..
Для исправления переносим эти скрипты в /var/yamail, а в rc.d создаем свой скрипт
[mx1:/usr/local/etc]#cat rc.d/so-proxy.sh
#!/bin/sh
# PROVIDE: soproxy
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: nojail shutdown
# Подключаем доп. функции
. /etc/rc.subr
# Имя скрипта
name="soproxy"
# Значение _enable из rc.conf
rcvar=`set_rcvar`
# Старт -стоп функции
start_cmd="${name}_start"
restart_cmd="${name}_restart"
stop_cmd="${name}_stop"
# Ставим NO, если в rc.conf не задан параметр soproxy_enable="YES"
eval "${rcvar}=\${${rcvar}:-"NO"}"
soproxy_restart()
{
echo "restarting sp-proxy"
# Запуск спамобороны от имени souser
/var/yamail/sp-daemon.sh stop
/var/yamail/sp-proxy.sh stop
/usr/sbin/chown souser:souser /var/yamail/*
/bin/chmod 775 /var/run
/usr/bin/chgrp souser /var/run
/usr/sbin/chown souser /var/spool/spamooborona
/usr/sbin/chown souser /var/spool/spamooborona/*
/bin/rm /var/run/sp-*
/usr/bin/su souser -c "/var/yamail/sp-daemon.sh start"
/usr/bin/su souser -c "/var/yamail/sp-proxy.sh start"
echo "sp-proxy restarted"
}
soproxy_start()
{
echo "Starting sp-proxy"
# Запуск спамобороны от имени souser
/var/yamail/sp-daemon.sh stop
/var/yamail/sp-proxy.sh stop
/usr/sbin/chown souser:souser /var/yamail/*
/bin/chmod 775 /var/run
/usr/bin/chgrp souser /var/run
/usr/sbin/chown souser /var/spool/spamooborona
/usr/sbin/chown souser /var/spool/spamooborona/*
/bin/rm /var/run/sp-*
/usr/bin/su souser -c "/var/yamail/sp-daemon.sh start"
/usr/bin/su souser -c "/var/yamail/sp-proxy.sh start"
echo "sp-proxy started"
}
soproxy_stop()
{
echo "Starting sp-proxy"
# Запуск спамобороны от имени souser
/var/yamail/sp-daemon.sh stop
/var/yamail/sp-proxy.sh stop
echo "sp-proxy stoped"
}
# Загружаем переменные из rc.conf
load_rc_config $name
run_rc_command "$1"
[mx1:/usr/local/etc]#
| При этом не забываем добавить пользователя souser c домашкой /var/yamail. У пользователя обязательно должен быть шел, а пароль лучше закоментить.
Добавляем в rc.conf
для старта нашего свежеиспеченного скрипта.
Запускаем его от рута и проверяем, что получилось
[mx1:/usr/local/etc]#rc.d/so-proxy.sh start
[mx1:/usr/local/etc]#ps -aux | grep sp-
souser 6697 0,0 0,0 1736 1172 p0 I 11:49
0:00,00 /bin/sh /var/yamail/sp-daemon.sh start
souser 6698 0,0 0,0 1736 1176 p0 I 11:49
0:00,00 /bin/sh /var/yamail/sp-daemon.sh start
souser 6699 0,0 1,4 85148 43296 p0 S 11:49
2:08,81 /usr/local/sbin/sp-daemon -f -m X-Spam
Flag -p /var/run/sp-daemon.sock -i/usr/local/etc/
souser 6706 0,0 0,0 1732 1164 p0 I 11:49
0:00,00 /bin/sh /var/yamail/sp-proxy.sh start
souser 6707 0,0 0,0 1732 1172 p0 I 11:49
0:00,00 /bin/sh /var/yamail/sp-proxy.sh start
souser 6708 0,0 0,1 4652 2716 p0 S 11:49
0:47,61 /usr/local/sbin/sp-proxy -f -l 1125 -p
var/run/sp-daemon.sock
root 20449 0,0 0,0 1600 948 p0 S+ 18:39
0:00,00 grep sp-
[mx1:/usr/local/etc]#
| Теперь все работает от непривелегированного пользователя.
не забываем менять владельца файлов на нового пользователя
chown souser:souser /var/yamail/*
| Далее эту хрень надо подружить с почтовиком. В моем случае - exim.
Перед роутером локальной доставки добавляем
684 #проверяем на спам
685 spam_yandex_route:
686 driver = manualroute
687 transport = spamoborona
688 domains = +local_domains
689 ## no_verify
690 condition = ${if eq {$interface_port}{25}{yes}{no}}
691 #condition=${if !eq {$received_protocol}{local}}"
692 ## address_test = false
693 route_data = localhost
694 self = send
| В транспортах описываем транспорт
827 spamoborona:
828 driver = smtp
829 allow_localhost = true
830 port = 1125
| И в самом начале аклей добавляем
360 # принимаем с локалхоста без проверки, т.к. с него приходят
361 # проверенные письма с спамобороны, а она не пишет отправителя
362 accept hosts = localhost:127.0.0.1
| Теперь логика работы.
Если письмо доходит до роутера локальной доставки - это локальное письмо. Соответственно,перед локальной доставкой мы его пересылаем на проверку на локалхост на порт 1125 в спамоборону. Там проверяется на спам и возвращается на локалхост на порт 1025 в экзим. Для него мы не проверяем акли и смотрим, что пришло не с 25 порта в роутерах - значит, письмо от спамобороны - доставляем локально.
В заголовках появляется
X-Spam-Yversion: Spamooborona-2.3
| Кстати,не забываем в exim указывать, чтоб слушал 1025 порт на локахосте.
local_interfaces = <; [127.0.0.1]:1025; [127.0.0.1]:25; [ваши адреса]
| Тестированию поддается так: убираем роутер спамобороны из экзима и заходим телнетом на 1125 порт (это спамоборона) и средствами smtp пытаемся отправить себе письмо. Если все ок, письмо проходит проверку в спамобороне и передается в экзим на 1025 порт для доставки. Если с этим все ок и вы получили письмо, включаем роутер, и экзим начинает перенаправлять все письма на спамоборону.
Логи читаем так:
[mx1:/usr/local/etc]#cat /etc/syslog.conf
*.* /var/log/all.log
.....
| Чтоб нормально обновлялся правим /etc/crontab до такого
##-- Spamooborona cron entries start
10 5 * * * souser /usr/local/etc/spamooborona/scripts/cron_spamstat
*/20 * * * * souser /usr/bin/lockf -st 0 /var/tmp/rsync.so-rules.lock \
/usr/local/etc/spamooborona/scripts/cron_rul
00 09 * * * souser /usr/local/etc/spamooborona/scripts/cron_notify
| Штука имеет гуй для настройки
/usr/local/etc/spamooborona/adm_so
|
или можно покопаться вручную в /usr/local/etc/spamooborona или /var/yamail.
Кстати через гую рекомендую настроить глобальную политику обработки спама - я просто помечаю в теме.
Так же есть статистика (не забываем ее включить и создать под нее папку)
[mx1:/usr/local/etc]#spamooborona/scripts/statcalc.sh summary at 2008-07-15
08-07-15 00:00:05 - 08-07-16 0
Summary:
* 1 (0,00%)
* 93 (0,44%) DLVR
* 16732 (79,04%) SPAM
* 4341 (20,51%) Mail
* 1 (0,00%) 17:40:03
* 21168 total
[mx1:/usr/local/etc]#
| Интересно реализован механазм вайтлистинга. При добавлении в вайтлист письмо все равно проходит через спамобороу и ему присуждается спамовый коэффициент.
Реализованы разные алгоритмы на обработку белых листов, в которых просто домен и белых листов, в которых пользователь@домен получатель@домен.
если в белом списке найден домен - то минус 3 балла к спамовому весу
если связка получатель - отправитель - то минус 10 баллов
правила регулируются тут
cat /var/yamail/wl.rul
rule FROM_IN_WL R_ALG -10
describe whitelist
rule FROM_IN_PERSONAL_WL R_ALG -10
describe personal whitelist
rule DOMAIN_IN_WL R_ALG -3
describe domain whitelisted
rule DOMAIN_IN_PERSONAL_WL R_ALG -5
describe domain whitelisted personally
| По поводу вайтлистинга. У них разные алгоритмы на обработку белых листов, в которых прото домен и белых листов, в которых пользователь@домен получатель@домен.
если в белом списке найден домен - то минус 3 балла к спамовому весу
если связка получатель - отправитель - то минус 10 баллов
правила регулируются тут
cat /var/yamail/wl.rul
rule FROM_IN_WL R_ALG -10
describe whitelist
rule FROM_IN_PERSONAL_WL R_ALG -10
describe personal whitelist
rule DOMAIN_IN_WL R_ALG -3
describe domain whitelisted
rule DOMAIN_IN_PERSONAL_WL R_ALG -5
describe domain whitelisted personally
| Я держу вайтлисты в мускуле сразу на спамоборону и акли. Выглядит это так:
В роутерах
#проверяем на спам
spam_yandex_route:
driver = manualroute
transport = spamoborona
domains = +local_domains
condition = ${if and {{eq {$interface_port}{25}} \
{!match {$h_X-WHITELISTED:}{$sender_address}} }}
route_data = localhost
self = send
| Это при условии, что существуют вайтлисты в аклях и при попадании в вайтлист добавляется заголовок
X-WHITELISTED: $sender_address
| Пробовал делать кондишен с выборкой из мускуля, но че-т не получилось, чтоб было два условия, при этом одно из мускуля. В аклях, кстати,тож не получилось. Поэтому вайтлистинг в аклях выглядит так:
# пропускаем падонкав, не умеющих писать отправителя.
accept set acl_m1 = ${lookup mysql{SELECT `white_senders` FROM `white_senders` \
WHERE `active`='1' \
AND `white_senders`='$sender_address'}}
condition = ${if eq {$acl_m1} {$sender_address}{yes}{no}}
hosts = ${lookup mysql{SELECT `hosts` FROM `white_senders` \
WHERE `active`='1' \
AND `white_senders`='$sender_address'}}
add_header = X-WHITELISTED: $sender_address
logwrite = !message sended by $sender_address - \
[$sender_host_address] - white sender!
| Качество работы устроило вполне. Пока из косяков - забраковал 2 daily, но это из-за неправильно настроенных белых листов. В общем, все довольны и счастливы. Процент ложного срабатывания - пока минимальный.
Но сразу опишусь, что штука эта комерческая и как она работает внутри - непонятно. Поэтой причине если есть возможность обойтись без нее, я бы посоветовал ее не ставить.
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?&t=9768.
размещено: 2008-07-28,
последнее обновление: 2008-07-28,
автор: Al
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills
Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS
Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
|
Комментарии пользователей [8 шт.]