The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Поднятие spamd на FreeBSD 5 в связке с IPFW v1 (spam freebsd mail ipfw)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: spam, freebsd, mail, ipfw,  (найти похожие документы)
From: Ged <ged@sandy.ru.> Date: Mon, 29 Jan 2007 14:31:37 +0000 (UTC) Subject: Поднятие spamd на FreeBSD 5 в связке с IPFW v1 Оригинал: http://ged.nnov.ru/text/freebsd/install_spamd_with_ipfw1.html Была конкретная задача, поднять spamd на своем сервере, при этом уже использовался IPFW 1. Так как сервер стоял и работал достаточно исправно, то на него хотело ставить всего по минимуму. Все примеры которые встречались, были основаны на использовании PF. Оно и понятно. Spamd, так же как и PF был портирован с OpenBSD. Но мне хотелось использовать именно IPFW. На freebsd.org нашел, что spamd должен работать в том числе и только с IPFW без PF. Т.к. периодически качать списки адресов спамеров душила жаба, то остановился на использовании только серых списков. Ставилось из портов. # cd /usr/ports/mail/spamd/ После долгих поисков нашел что для IPFW компилировать нужно так # make -DWITH_IPFW Из-за того что был IPFW 1, который не поддерживает таблицы, компилироваться оно отказывалось ругаясь: grey.c: In function `configure_pf': grey.c:189: error: syntax error before "ent" grey.c:201: error: `ent' undeclared (first use in this function) grey.c:201: error: (Each undeclared identifier is reported only once grey.c:201: error: for each function it appears in.) grey.c:202: error: `IP_FW_TABLE_FLUSH' undeclared (first use in this function) grey.c:216: error: `IP_FW_TABLE_ADD' undeclared (first use in this function)
  • Error code 1 Когда ставил с IPFW 2 во время работы оно ругалось: IPFW socket unavailable (Operation not permitted) Т.к. основная задача была чтобы работало, то было решено просто отключить места общения с фаерволом. Для этого содержимое функции configure_pf была изменена в следующих файлах: /usr/ports/mувail/spamd/work/spamd_3.7/spamd/grey.c (строка 186) /usr/ports/mail/spamd/work/spamd_3.7/spamd-setup/spamd-setup.c (строка 692) на return (0); Т.е. оставлена как заглушку. После изменений компилируем и сразу ставим # make -DWITH_IPFW install У меня почему-то новый пользователь не создался, пришлось создавать самому: # echo _spamd::::::Spamd Daemon:/nonexistent:nologin: | adduser -w random -f Для того чтобы spamd мог нормально работать создаем файл базы данных и разрешаем к нему доступ пользователю. # touch /var/db/spamd # chown _spamd:_spamd /var/db/spamd Для того чтобы spamd писал свои логи в отдельный файл через syslog добавляем в файл /etc/syslog.conf строки: !spamd *.* /var/log/spamd.log Создаем файл и перезапускаем syslogd: # touch /var/log/spamd.log # /etc/rc.d/syslogd restart И для ротации логов в файл /etc/newsyslog.conf добавляем: /var/log/spamd.log 640 5 100 * JC Для того чтобы spamd стартовал нужно в /etc/rc.conf добавить: pfspamd_enable="YES" pfspamd_flags="-v -g" Настраиваем файл конфигурации /usr/local/etc/spamd.conf. В связи с тем что я хотел использовать только серые списки, то у меня файл выглядит так: # cat /usr/local/etc/spamd.conf all:\ :blacklist:whitelist: blacklist:\ :black:\ :msg="SPAM. Blocked by me":\ :file=/usr/local/etc/spamd/blacklist.txt: whitelist:\ :white:\ :file=/usr/local/etc/spamd/whitelist.txt: Соответственно в один файл заносим то, что нужно пропускать сразу, а в другой, то что пропускать вообще не надо. В IPFW перед правилом разрешающим ходить почте на наш сервер, создаем правило перенаправления почтового трафика на spamd: ipfw add fwd 127.0.0.1,8025 tcp from any to me dst-port 25 Т.к. у нас spamd получился без возможности общения с фаерволом, то мы разрешающие правила мы должны создавать сами. Для этого используем следующий скрипт: # cat /usr/data/script/spam_whitelist.sh #!/bin/sh ipfw_rulez=6030 ipfw_rulez_skipto=6051 ipfw_cmd="/sbin/ipfw add ${ipfw_rulez} skipto ${ipfw_rulez_skipto} tcp from " ipfw_cmd_end="to me 25" /sbin/ipfw delete ${ipfw_rulez} >/dev/null 2>&1 for ip in `/usr/local/sbin/spamdb | /usr/bin/grep WHITE | /usr/bin/awk -F\| '{ print $2; }'`; do ${ipfw_cmd} $ip ${ipfw_cmd_end} >/dev/null 2>&1 done и вставляем его в /etc/crontab */5 * * * * root /usr/data/script/spam_whitelist.sh Соответственно нужно правильно выставить номера правил. ipfw_rulez - должно быть меньше номера правила перенаправления на spamd, а ipfw_rulez_skipto должно быть наоборот, больше номера правила перенаправления на spamd. Теперь можно пытаться запустить spamd: # /usr/local/etc/rc.d/pfspamd.sh start Смотреть результаты работы можно через лог-файл: # cat /var/log/spamd.log а так же через: /usr/local/sbin/spamdb Статьи которые сильно помогли: http://www.samag.ru/art/07.2005/07.2005_05.html http://devnull.lt/misc/spamd_on_freebsd_4_with_ipfw http://myforum.net.ua/index.php?showtopic=5843&pid=46782&st=0&#entry46782 Человек пытается портировать http://www.mail-archive.com/freebsd-ipfw@freebsd.org/msg00904.html

  • << Предыдущая ИНДЕКС Правка src / Печать Следующая >>

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру