The OpenNET Project / Index page

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

Настройка почтового сервера с фильтрацией вирусов через McAfee под FreeBSD (mail filter scanner virus ipfw sendmail)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: mail, filter, scanner, virus, ipfw, sendmail,  (найти похожие документы)
From: iasb <iasb@yahoo.com.> Newsgroups: email Date: Mon, 2 Sep 2005 18:21:07 +0000 (UTC) Subject: Настройка почтового сервера с фильтрацией вирусов через McAfee под FreeBSD FreeBSD 5.3, Mailscanner-Mailwatch-Spamassassin-Mysql-McAfee-Sensmail Устанавливаем mailScanner Для начала - FreeBSD Handbook. Эта статья - разъяснения к общему порядку действий. Она не исключает необходимости внимательного чтения FreeBSD Handbook. Политика следующая - установка новой машины для обработки только входящей почты. "старая" почтовая машина остается без изменений и ставится в глухой резерв. Устанавливается 2-й МХ на адрес новой машины. Внутренний и внешний интерфейсы старой машины закрываются по 25 порту Firewal. Вариации - поставить VmWare под что-то типа Win-NT4/2000-2003 c 6-10 ГБ виртуальным диском. При этом хорошо решаются вопросы Back-UP - просто копируется VM образ. Может при этом теряются какие-то логи (стреляться при этом может и не стоит), но система остается живой. Для этого варианта эта машина становится одноинтерфейсной, внешняя почта с внешнего файрвола перенаправляется на нее и для всех внутренних машин эта машина становится основным SMTP гейтом. 1. Устанавливаем FreeBSD 5.2.1 (или более позднюю, что для нашего случая - не столь существенно) Для более свободного размещения принимаем примерно следующие размеры для разделов, вариации по вкусу: Раздел Объем - минимальный Общий подход (рекомендуемое значение) / 512 МВ 512 МБ - 1 ГБ (1 ГБ) Swap 256 MB Объем = размеру RAM + 128-256 МБ /tmp 512 МВ 512 МБ - 1 ГБ (1 ГБ) /usr 1 GB 50 % оставшегося свободного пространства /var 1 GB 50 % оставшегося свободного пространства ВСЕГО 4 GB Не менее 9 ГБ Дополнительно необходимо установить KernDevelopment - в Distributions Если его не поставили - ставим исхордный 1-й CD в дисковод: #mount /cdrom #cd /cdrom/src #./install.sh sys Сразу добавляем совместимость с более старыми версиями #cd /cdrom/compat3x #./install.sh #cd /cdrom/compat4x #./install.sh Если не поставили порты - ставим: #cd /cdrom/ports #./install.sh Если есть очень горячее желание - можно обновить дерево портов, но можно без этого обойтись. Через /stand/sysinstall ставим /usr/ports/net/cvsup или с CD или из Интернета 2. Обновляем порты Для начала обновим дерево портов: Далее в любом каталоге создаем для большего удобства два файлика. Один со списком обновляемых портов, другой со скриптом запуска. cd /home/user mkdir cvsup cd cvsup vi cvsup.ports # =====начало файла cvsup.ports========= *default host=ftp.FreeBSD.org *default base=/usr *default prefix=/usr *default release=cvs *default tag=. *default delete use-rel-suffix compress Ports-databases ports-mail ports-net ports-security ports-sysutils # =====конец файла cvsup.ports========== Замечание: вместо cvsup.FreeBSD.org - поставить локальное (для данного региона) FTP для FreeBSD - его можно увидеть в /stand/sysinstall в разделе исходников для установки, например: ftp.ua.freebsd.org В принципе вы можете здесь обновлять все порты, систему, если вам это необходимо, можно и необходимую часть. vi cvsup.sh # =======начало файла cvsup.sh========== #!/bin/sh /usr/local/bin/cvsup -g -L 2 cvsup.ports # =======конец файла cvsup.sh=========== Запускаем chmod +x cvsup.sh ./cvsup.sh После такой процедуры ваши порты станут более свежими, то есть по крайней мере будут обновлены ссылки на версии и добавлены файлы патчей, по крайней мере так должно быть. Из них вам понадобится поставить следующие порты (технология стандартная более "правильное" - /stand/sysinstall или более развернутое - make & make install в соответствующих директориях /usr/ports Разница в принципе установки - через /stand/sysinstall ставятся уже собранные и откомпилированные готовые пакеты (вариант 1), make & make install - качаются соответствующие исходники, которые потом компилируются (вариант 2). Неожиданности могут ждать с нескольких сторон: - при установке могут не ставиться вообще необходимые конфигурационные файлы (вариант 2) - есть исходники - и отвали. Там есть документация и бодайся. - отсутствуют исходники, необходимые для других программ (вариант 1) - версии устарели и исходников просто уже не существует (вариант 2) - исходники просто не компилируются - ну не сложилось с этой версией (вариант 2) 3. Добавляем /usr/ports/misc/mc - МС - это обязательно /usr/ports/editors/joe - текстовый редактор - я привык к этому - CTRL+K - H - это HELP 4. Компилируем Kernel. - Копируем /usr/src/sys/i386/conf/GENERIC в /usr/src/sys/i386/conf/TEST - Добавляем options IPFIREWALL - Убираем ненужное (USB, EISA и т.д.) - Стандартная компиляция - Проверка файла /var/log/messages. Распечатать или просмотреть последнюю часть файла - последняя полученная перезагрузка. Сравнить с тем, что в конфигурации Kernel, выбросить лишнее. - Перезагрузка (в случаях ошибок - проверка где и исправления) 5. Устанавливаем McAfee ставим сам пакет /usr/ports/security/vscan 5a. смотрим в конце этого документа версии всего что мы будем ставить по версиям. Устанавливаем apache - нам нужны исходники Качаем последний с http://www.apache.ru 6. Устанавливаем Webmin - http://www.webmin.com - Распаковываем архив - Переносим все под /var - директория будет потом использоваться - Запускаем ./setup.sh - Порт меняем на что-то кривое - всем известен порт 10000 7. Устанавливаем MySQL 4.1 через /stand/sysinstall - в противном случае не поставит соответствующий фай лик в /usr/local/etc/rc.d и запускаем через /usr/local/bin/mysqld_safe --user=root, внимательно читаем начало файла mysqld_safe и делаем то что там написано (rc.conf). Для начала - проверяем - он может и сам после перезагрузки запускаться. 8. Ставим php через /usr/ports/lang/php4 - потом будет необходимость доконфигурирования модулей для апача. Он сам Апач и установит. 9. Ставим /usr/ports/devel/php-pcre 10. Ставим /usr/ports/lang/php4-extensions и там указать sessions 11. Ставим /usr/ports/databases/php-mysql 12. Ставим /usr/ports/graphics/php4-gd. Ну и долгая процедура. 13. Копируем /usr/local/etc/php.ini-recommended в /usr/local/lib/php.ini 14. Через Webmin конфигурируем DNS - как slave для основного сервера 15. Конфигурируем Sendmail - берем старую конфигурацию и подставляем ее для новой машины (тоесть просто копируем большую часть файлов в /etc/mail и может быть слегка корректируем в части имени машины на которой мы все это ставим), проверяем работоспособность предварительно закрыв 25 порт на старой машине. Полностью запускаем почтовую систему - она должна на этом этапе работать уже в режиме "основная" и рулить всю почту как это делала старая машина. Изменений в дальнейшем особых не предвидится. 16. Через /stand/sysinstall ставим /mail/Mailscanner-4.33.3 (только так !) 17. Ставим perl -MCPAN -e 'install DBD::mysql' 18. Ставим /stand/sysinstall/mail/p5-Mail-SpamAssassin-2.64 19. В /usr/local/etc/apache/httpd.conf ищем строчку local/www и меняем DocumentRoot на &#8220;/var/www/html&#8221; - это требуется для MailWatch 20. Рисуем в /var/www/html файлик ind.php с содержимым <? phpinfo() ?> и смотрим его через эксплорер. Должно работать. PHP должно показать информацию о системе. 21. Ищем в Google mailwatch for mailscanner-1.0.2 скачиваем, читаем INSTALL и ставим - создаем таблицы SQL (написано в INSTALL) - переписываем всю директорию mailscanner в /var/www/html - копируем conf.php.example в conf.php и правим строки примерно 43 - 50 в части local - проверяем наличие необходимых строк для php.ini как это описано в INSTALL - в директории /usr/local/etc/MailScanner меняем имена всех файлов sample на нормальные - создаем юзера FreeBSD - tech для удаленного доступа - как сказано в mailscanner/INSTALL создаем административного пользователя, дополнительно в команду, указанную в INSTALL добавив в конце одно поле То есть вместо mysql> INSERT INTO users VALUES ('<username'>,md5('<password>'),'<name>','A'); делаем mysql> INSERT INTO users VALUES ('<username'>,md5('<password>'),'<name>','A', ''); В принципе на этом этапе система имеет начальный набор того, что нам необходимо Далее идут разъяснения по технике работы Sendmail в данной системе. Существующая система основанная на Sendmail обычно слушает 25 порт и сообщения, приходящие на этот порт укладывает в директорию /var/spool/mqueue. В нашем случае мы запускаем два процесса и назначаем им две различных директории для работы - для приемника входящей почты из Интернет - процесс, работающий с директорией /var/spool/mqueue.in и для доставщика почты после серверной обработки - /var/spool/mqueue . Создаем директории и устанавливаем им необходимые параметры доступа: # cd /var/spool # ls -ld mqueue drwxr-x--- 2 root bin 62976 Oct 23 16:18 mqueue # mkdir mqueue.in # chown root mqueue.in # chgrp bin mqueue.in # chmod u=rwx,g=rx,o-rwx mqueue.in # ls -ld mqueue mqueue.in drwxr-x--- 2 root bin 62976 Oct 23 16:18 mqueue drwxr-x--- 2 root bin 41472 Oct 23 16:18 mqueue.in Стартовый скрипт меняется: Было: sendmail -bd -q15m Необходимо: sendmail -bd -OPrivacyOptions=noetrn -ODeliveryMode=queueonly -OQueueDirectory=/var/spool/mqueue.in sendmail -q5m Окончательный вид скрипта /etc/rc.d/sendmail - порезали грубо, но работает #!/bin/sh # # $NetBSD: sendmail,v 1.14 2002/02/12 01:26:36 lukem Exp $ # $FreeBSD: src/etc/rc.d/sendmail,v 1.7 2002/10/12 10:31:31 schweikh Exp $ # кривовато смотрится - но работает # PROVIDE: mail # REQUIRE: LOGIN # KEYWORD: FreeBSD NetBSD # we make mail start late, so that things like .forward's are not # processed until the system is fully operational # XXX - Get together with sendmail mantainer to figure out how to # better handle SENDMAIL_ENABLE and 3rd party MTAs. # . /etc/rc.subr name="sendmail" rcvar=`set_rcvar` required_files="/etc/mail/${name}.cf" case ${OSTYPE} in FreeBSD) # command=${sendmail_program:-/usr/sbin/sendmail} # pidfile=${sendmail_pidfile:-/var/run/sendmail.pid} /usr/sbin/sendmail -bd -OPrivacyOptions=noetrn -ODeliveryMode=queueonly -OQueueDirectory=/var/spool/mqueue.in /usr/sbin/sendmail -q5m esac 1. Конфигурируем DNS для правильной работы по 127.0.0.1 2. Стартуем /usr/local/etc/mailscanner и проверяем maillog на предмет ошибок 3. Для McAfee добавляем /usr/ports/ftp/wget 4. Постоянно проверяем Maillog на предмет ошибок (не читаются файлы, диркетории и т.д.) Настраиваем FreeBSD Типичный ps -ax пока еще не оптимизированный - не закрыты ненужные сервисы/процессы PID TT STAT TIME COMMAND 0 ?? DLs 0:00.34 (swapper) 1 ?? ILs 0:01.28 /sbin/init -- 2 ?? DL 0:10.75 (g_event) 3 ?? DL 0:19.60 (g_up) 4 ?? DL 0:23.43 (g_down) 5 ?? DL 0:00.00 (taskqueue) 6 ?? DL 0:14.14 (pagedaemon) 7 ?? DL 0:00.92 (vmdaemon) 8 ?? DL 2:08.74 (pagezero) 9 ?? DL 0:18.87 (bufdaemon) 10 ?? DL 0:00.00 (ktrace) 11 ?? RL 1095:51.19 (idle: cpu0) 13 ?? WL 0:04.60 (irq1: atkbd0) 17 ?? WL 0:00.00 (irq6: fdc0) 23 ?? WL 0:03.62 (irq12: xl1) 25 ?? WL 0:00.00 (irq14: ata0) 26 ?? WL 0:14.90 (irq15: xl0 ata1++) 27 ?? RL 6:28.39 (swi8: tty:sio clock) 29 ?? WL 0:08.84 (swi1: net) 30 ?? DL 0:17.69 (random) 34 ?? WL 0:12.29 (swi3: cambio) 35 ?? WL 0:00.00 (swi7: task queue) 36 ?? DL 0:00.02 (usb0) 37 ?? DL 0:00.00 (usbtask) 39 ?? DL 1:10.36 (syncer) 40 ?? DL 0:01.13 (vnlru) 41 ?? IL 0:00.00 (nfsiod 0) 42 ?? IL 0:00.00 (nfsiod 1) 43 ?? IL 0:00.00 (nfsiod 2) 44 ?? IL 0:00.00 (nfsiod 3) 228 ?? Ss 0:01.32 /usr/sbin/syslogd -s 327 ?? Ss 0:00.40 /usr/sbin/usbd 397 ?? Is 0:00.94 /usr/sbin/cron 42325 ?? S 0:10.25 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local 42351 ?? S 0:09.89 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local 42370 ?? S 0:09.77 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local 42396 ?? S 0:11.42 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local 43130 ?? S 0:06.22 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local 55648 ?? Ss 0:07.66 /usr/bin/perl /var/a_webmin/miniserv.pl /etc/webmin/m 66554 ?? Ss 0:16.01 /usr/local/sbin/named -c /etc/namedb/named.conf 69549 ?? Is 0:00.17 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local 92151 ?? Ss 0:04.55 sendmail: accepting connections (sendmail) 92153 ?? Is 0:00.53 sendmail: Queue runner@00:05:00 for /var/spool/mqueue 431 v0 IWs+ 0:00.00 /usr/libexec/getty Pc ttyv0 67264 v1 IWs 0:00.00 login [pam] (login) 67265 v1 IW 0:00.00 -csh (csh) 67300 v1 S+ 0:20.55 mc 26504 v2 IWs 0:00.00 login [pam] (login) 26505 v2 IW 0:00.00 -csh (csh) 44876 v2 IW+ 0:00.00 mc 434 v3 IWs 0:00.00 login [pam] (login) 28389 v3 D 0:00.88 -csh (csh) 43184 v3 R+ 0:00.00 ps ax 43185 v3 DV+ 0:00.00 -csh (csh) 435 v4 IWs 0:00.00 login [pam] (login) 50742 v4 IW 0:00.00 -csh (csh) 96235 v4 IW+ 0:00.00 telnet 192.168.11.9 436 v5 IWs+ 0:00.00 /usr/libexec/getty Pc ttyv5 437 v6 IWs+ 0:00.00 /usr/libexec/getty Pc ttyv6 438 v7 IWs+ 0:00.00 /usr/libexec/getty Pc ttyv7 Примерный Mailllog Aug 26 08:55:43 gw84 sendmail[43729]: i7Q8thMJ043729: from=<Tora@umc.com.ua.>, size=6671, class=0, nrcpts=1, msgid=<OFE86F9FAD.0E53983D-ONC2256EFC.00206F3E-C2256EFC.00209EFA@umc.com.ua.>, bodytype=8BITMIME, proto=ESMTP, daemon=MTA, relay=n2.umc.com.ua [80.255.64.69] Aug 26 08:55:44 gw84 MailScanner[43196]: New Batch: Scanning 1 messages, 7221 bytes Aug 26 08:55:44 gw84 MailScanner[43196]: Spam Checks: Starting Aug 26 08:55:50 gw84 MailScanner[43196]: Virus and Content Scanning: Starting Aug 26 08:55:53 gw84 MailScanner[43196]: Filename Checks: Allowing msg-43196-2.txt Aug 26 08:55:53 gw84 MailScanner[43196]: Filename Checks: Allowing msg-43196-3.html (no rule matched) Aug 26 08:55:53 gw84 MailScanner[43196]: Uninfected: Delivered 1 messages Aug 26 08:55:56 gw84 sendmail[43737]: i7Q8thMJ043729: to=gala@ln-kie01.rabbit.km.ua, delay=00:00:13, xdelay=00:00:03, mailer=esmtp, pri=126671, relay=ln-kie01.rabbit.km.ua. [192.168.11.42], dsn=2.0.0, stat=Sent (Message accepted for delivery) Или Sep 2 01:09:56 gw84 sendmail[4122]: i81M9qTh004122: from=<>, size=235823, class=0, nrcpts=1, msgid=<200409012208.i81LOqv03306@mogila.iatp.kiev.ua.>, proto=ESMTP, daemon=MTA, relay=mogila.iatp.kiev.ua [195.230.130.2] Sep 2 01:09:57 gw84 MailScanner[3825]: New Batch: Scanning 1 messages, 236291 bytes Sep 2 01:09:57 gw84 MailScanner[3825]: Spam Checks: Starting Sep 2 01:10:03 gw84 MailScanner[3825]: Virus and Content Scanning: Starting Sep 2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing msg-3825-5.txt Sep 2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing msg-3825-6.msg (no rule matched) Sep 2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing msg-3825-7.txt Sep 2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing 1.3.6immunology-f.doc (no rule matched) Sep 2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing 1.3.5Tabl-f.doc (no rule matched) Sep 2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing 1.3.5cytogenetics-f.doc (no rule matched) Sep 2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing 1,3,6Tabl-imm-f.doc (no rule matched) Sep 2 01:10:06 gw84 MailScanner[3825]: Filetype Checks: Allowing msg-3825-6.msg Sep 2 01:10:06 gw84 MailScanner[3825]: Filetype Checks: Allowing msg-3825-5.txt Sep 2 01:10:06 gw84 MailScanner[3825]: Filetype Checks: Allowing msg-3825-7.txt Sep 2 01:10:06 gw84 MailScanner[3825]: Content Checks: Need to convert HTML to plain text in 1 messages Sep 2 01:10:06 gw84 MailScanner[3825]: Uninfected: Delivered 1 messages Sep 2 01:10:11 gw84 sendmail[4134]: i81M9qTh004122: to=imm01@rigk-ras.rabbit.km.ua,imm@rigk-ras.rabbit.km.ua, delay=00:00:19, xdelay=00:00:05, mailer=esmtp, pri=355823, relay=rigk-ras.rabbit.km.ua. [192.168.13.76], dsn=2.0.0, stat=Sent (Message accepted for delivery) Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 193.194.386.81 UGS 0 60230 xl0 127.0.0.1 127.0.0.1 UH 0 8416 lo0 192.168.11 link#2 UC 0 0 xl1 192.168.11.9 00:04:76:15:d5:68 UHLW 2 17982 xl1 1120 192.168.11.42 00:0b:cd:cf:c9:6a UHLW 0 1051 xl1 1061 192.168.11.43 00:60:97:93:f8:fa UHLW 0 545 xl1 1134 192.168.11.58 00:50:8b:a5:8f:98 UHLW 0 13210 xl1 1153 192.168.12 192.168.11.9 UGS 0 77 xl1 192.168.13 192.168.11.9 UGS 0 807 xl1 212.94.185.80/28 link#1 UC 0 0 xl0 212.94.185.81 00:02:b9:a5:c2:e4 UHLW 1 0 xl0 1194 212.94.185.84 00:50:04:ed:43:3b UHLW 0 31 lo0 Для общего развития можно поставить MailScanner модуль для Webmin, но пользоваться осторожно - не все делает корректно. Дальше. /etc/periodic/daily/330.news копируем в 340.mcafee #!/bin/sh # # $FreeBSD: src/etc/periodic/daily/330.news,v 1.4 2000/09/14 17:19:10 brian Exp $ # # Expire news articles # (This is present only for backwards compatibility, usually the news # system handles this on its own). # If there is a global system configuration file, suck it in. # if [ -r /etc/defaults/periodic.conf ] then . /etc/defaults/periodic.conf source_periodic_confs fi case "$mcafee_update" in [Yy][Ee][Ss]) if [ ! -f /usr/local/uvscan/uvscan ] then echo '$mcafee_update is set but /usr/local/uvscan/uvscan' \ "doesn't exist" rc=2 else echo "" echo "Running McAfee DAT update:" /usr/local/libexec/MailScanner/mcafee-autoupdate -v && rc=0 || rc=3 fi;; *) rc=0;; esac exit $rc /usr/local/libexec/MailScanner/mcafee-autoupdate - эту програмулину берем из треда (трепа) - там она исправленная - и заменяем существующую. Вот: #!/bin/sh -e # # Update the McAfee data files. # # $Cambridge: hermes/conf/build/bin/uvscan-update,v 1.52 2004/08/18 19:12:02 fanf2 Exp $ # $PREFIX is the directory where the uvscan binary is (NOT a symlink to # the binary), which is where it looks for its dat files. You may run # uvscan via a symlink to this place (e.g. from /usr/local/bin/uvscan) # and it will still look for the dat files here. If uvscan's library # dependencies can be found in a standard place (e.g. /usr/local/lib) # then you don't need a wrapper script to set LD_LIBRARY_PATH before # running it. # # The dat files are installed in a subdirectory of $DATDIR named # according to their version number, with symlinks from $PREFIX into # the subdirectory via a current link. The current link is updated # without locking on the assumption that this is sufficiently unlikely # to cause a problem. # defaults OPTS="" PREFIX=/usr/local/uvscan FTPDIR=http://download.nai.com/products/datfiles/4.x/nai RETRIES=1 INTERVAL=300 # handle the command line usage () { echo "usage: $0 [-dfrtv] [-Rnnn] [-Innn] [proxy] [prefix]" echo " -d delete old files" echo " -e get extra.dat" echo " -f force update" echo " -r show README" echo " -t timestamp output" echo " -v verbose" echo " -R number of retries" echo " -I retry interval" echo " proxy URL of FTP/HTTP proxy server" echo " prefix uvscan installation directory" exit 1 } case $# in [012345]) : ok ;; *) usage ;; esac for arg in "$@" do case $arg in -I*) INTERVAL=${arg#-I} ;; -R*) RETRIES=${arg#-R} ;; -*) OPTS=$arg ;; /*) PREFIX=$arg ;; http:) ftp_proxy=$arg http_proxy=$arg export ftp_proxy export http_proxy ;; *) usage ;; esac done case $OPTS in *[!-dfrtv]*) usage esac option () { case $OPTS in -*$1*) eval $2=yes ;; *) eval $2=no ;; esac } option d DELETE option e EXTRA option f FORCE option r README option t TIME option v VERBOSE case $FORCE in yes) VERBOSE=yes esac VERBOSE=yes RETRIES=2 INTERVAL=300 # look for binaries and libraris in plausible places PATH=$PREFIX:/usr/local/bin:/usr/bin:/bin # this is only necessary for broken setups LD_LIBRARY_PATH=$PREFIX export PATH LD_LIBRARY_PATH # where this script finds things DATDIR=$PREFIX/datfiles DATFILES="clean.dat extra.dat internet.dat names.dat scan.dat" LINKNAME=current LINKREL=datfiles/$LINKNAME # wrapper functions for echo etc. timestamp () { case $TIME in yes) date "+%Y-%m-%d %H:%M:%S " esac } say () { case $VERBOSE in yes) echo "`timestamp`$*" esac } run () { say "> $*" "$@" } testeval () { # ugly workaround say "> $*" set +e eval "$*" ret=$? set -e return $ret } is () { test "$@" 2>/dev/null } say Starting $0 say DELETE=$DELETE say FORCE=$FORCE say README=$README say TIME=$TIME say VERBOSE=$VERBOSE say RETRIES=$RETRIES say INTERVAL=$INTERVAL say PROXY=$ftp_proxy say PREFIX=$PREFIX # check directory setup is correct for link in $LINKREL $DATFILES do if ! is -h $PREFIX/$link then say $PREFIX/$link is not set up INIT=yes fi done if ! is -d $DATDIR then say $DATDIR is not set up INIT=yes fi case $INIT in yes) VERBOSE=yes say Doing initial setup of $0 run mkdir -p $DATDIR esac run cd $DATDIR getver () { match="[0-9][0-9][0-9][0-9]" err="version.err" cmd="$1" out="$2" txt="$3" if testeval "$cmd 2>$err 1>&2" then VER=`cat $out | sed "/^$txt\($match\).*$/!d;s//\1/;q"` case $VER in $match) run rm -f $out $err return esac fi cat $err VER=UNKNOWN run rm -f $out $err } # work out latest dat version try=$RETRIES while : do getver "wget --tries=$try --waitretry=$INTERVAL --passive-ftp $FTPDIR/update.ini" update.ini "DATVersion=" VERSION=$VER case $VERSION in UNKNOWN) if ! try=`expr $try - 1` then break fi say Problem with McAfee datfile update from $FTPDIR say Sleeping for $INTERVAL seconds before retrying sleep $INTERVAL ;; *) break ;; esac done # work out installed dat version getver "uvscan --version" version.err "Virus data file v" PREVIOUS=$VER case $FORCE in yes) say Forced update from $PREVIOUS PREVIOUS=0000 ;; *) if is $VERSION -eq $PREVIOUS then say Already have $VERSION run exit 0 fi esac VERBOSE=yes say Installed dat file is $PREVIOUS say Latest dat file is $VERSION if is $VERSION = UNKNOWN then say Problem with McAfee datfile update from $FTPDIR run exit 1 elif is $VERSION -lt $PREVIOUS then say Remote version $VERSION older than installed version $PREVIOUS run exit 1 elif is -d $VERSION then say Cleaning away $VERSION directory run rm -rf $VERSION fi retry () { echo "$OUT" say Fetch or test failed -- removing bad McAfee data files run cd $DATDIR run rm -rf $VERSION if ! try=`expr $try - 1` then say Giving up run exit 1 fi say Sleeping for $INTERVAL seconds before retrying sleep $INTERVAL continue } try=$RETRIES while : do # fetch and extract dat files TARFILE=dat-$VERSION.tar run mkdir $VERSION run cd $VERSION run chmod 700 . if ! run wget --tries=$try --waitretry=$INTERVAL --passive-ftp --progress=dot:mega $FTPDIR/$TARFILE then retry fi run tar xvf $TARFILE run chmod 644 * run chmod 755 . # verify the contents CMD="uvscan --version --dat ." say "> $CMD" if ! OUT=`$CMD 2>&1` then retry else break fi done echo "$OUT" say Update OK # show information on this update? case $README in yes) run sed 's/[[:cntrl:]]//g 1,/^====================/d /^====================/,/^NEW VIRUSES DETECTED/d /^UNDERSTANDING VIRUS NAMES/,$d s/^/# /;/@MM/s/$/ <--/' readme.txt esac # remove some crap run rm -f *.diz *.exe *.ini *.lst *.tar *.txt # do remaining part of initial setup case $INIT in yes) for file in $DATFILES do run rm -f $PREFIX/$file run ln -s $LINKREL/$file $PREFIX/$file done esac # update the current version link run cd $DATDIR run ln -s $VERSION $VERSION/$LINKNAME run mv $VERSION/$LINKNAME . # maybe delete old dat files case $DELETE in yes) run cd $DATDIR run rm -rf $PREVIOUS esac say Completed OK run exit 0 # done Создаем соответствующую запись в /etc/periodic.conf # 340.mcafee mcafee_update="YES" # Rum McAfee DAT update проверяем sh 340.mcafee IPFW Берем стандартный набор правил CLIENT, слегка корректируем для внутренних SMTP серверов, адресов и интерфейсов. Запрещаем все кроме 25 и 53 порта на внешнем интерфейсе. На внутреннем - по вкусу. Запускаем NTPD, штука кривовато настраивается, но работает. Увеличиваем количество логов в /etc/newsyslog/conf /mail /messages При первоначальном запуске проверяем - все ли sendmail убили. Потом ручками пускаем /etc/rc.d/sendmail (исправленный, ясное дело) Читаем ссылку из MailScanner по поводу MySQL (Гугл: mailscanner mysql) Устанавливаем все что необходимо - будем писать лог в MySQL. Лезем FTP на McAfee и в разделе Spam ищем файлик rules.zip - меняем им правила в SpamAssassin. (Эту часть надо делать осторожно. Начиная с того, что копировать надо не как Binary). Версии FreeBSD 5.3 -RELEASE PHP 4.3.9 MySQL 4.1.5

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1.1, Аноним (1), 19:28, 03/09/2005 [ответить]  
  • +/
    Замечание: вместо cvsup.FreeBSD.org - поставить локальное (для данного
    региона) FTP для FreeBSD - его можно увидеть в /stand/sysinstall в
    разделе исходников для установки, например:   ftp.ua.freebsd.org

    бэз каминтариеф

     
  • 1.4, Skif (ok), 03:31, 05/09/2005 [ответить]  
  • +/
    Собственно, а какое реальное преимущество дает сабж по сравнению с тем же drweb/clamav ? например? Ну кроме альтернативы, ессно.

            THIS IS AN EVALUATION COPY OF THIS SOFTWARE.
            You may use this software for only thirty (30)
            days, after which period you must either buy
            the software from Network Associates, Inc. or
            stop using it and remove it from your computer.

    Не особо вдохновляет. Преимуществ у DrWeb-а гораздо больше (мое IMXO), clamav  к тому же вообще бесплатный

     
  • 1.5, iasb (?), 10:26, 05/09/2005 [ответить]  
  • +/
    первый коммент - если опыта нет - то там будет затык. Долго буудешь разбираться почему не хочет качать CVS


    второй коммент - В принципе - до лампочки - DrWEB или Clamav - суть в другом - как не для гуру поставить связку Mailscanner-mailwatch-mysql-spamassassin + антивирус.

     
  • 1.6, iasb (??), 15:38, 30/09/2005 [ответить]  
  • +/
    Новая версия этого материала доступна на http://iasb.narod.ru

    Уточнения и детализация связки Mailscanner-Mailwatch-MySQL-Spamassassin

     
  • 1.7, Соколов Дмитрий Викторович (?), 09:55, 21/04/2010 [ответить]  
  • +/
    интересует почему не отрабатывает белый список как правильно заносить туда данный если белый список хранится в БД. Работает если IP добавляешь + точно имя + домен .. а если с from:  *@gmail  в поле to: *@domen.ru
    и не добавляется не в черный список не в белый помогите или дайте ссылочку  
    Спасибо!
     
  • 1.8, Ольга (??), 12:51, 22/09/2010 [ответить]  
  • +/
    Помогите защитится от вирусов.
     

    игнорирование участников | лог модерирования

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




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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