Ключевые слова:openbsd, spam, spamd, mail, filter, postfix, (найти похожие документы)
From: syntax <syntax@forsale.lv.>
Newsgroups: email
Date: Mon, 24 Apr 2007 14:31:37 +0000 (UTC)
Subject: OpenBSD + Postfix + Antispam
Итак у нас есть свежепоставления ось OpenBSD 4.0. Настроены такие
сервисы как DNS, Apache.
Делаем почту:
Что нам надо будет:
courier-pop3-3.0.5p1
courier-imap-3.0.5p1
courier-mysql-3-3.0.5p1
postfix-2.3.2
mysql-client-5.0.22
mysql-server-5.0.22
php-core-4.4.1p1
Шаг 1: Установка MySQL
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.0/packages/amd64/mysql-server-5.0.22.tgz
Во время установки вы можете видеть что поставиться также mysql-client-5.0.22
После завершения всего делаем слудющее:
Запускаем mysql
# mysqld_safe &
Ставим пароли root для доступа к mysql с этой машины:
# /usr/local/bin/mysqladmin -u root password 'пароль'
# /usr/local/bin/mysqladmin -u root -h ns.mydomain.com password 'пароль'
На второй строке у вас скорее всего выкочить ошибка соединения..
Тогда идем по такому варианту:
# mysql -u root -p
Заводим пароль который указали выше
mysql> grant all privileges on *.* to 'root'@'ns.domain.com' identified by 'пароль';
mysql> flush privileges;
mysql> quit
С инсталяцией покончено. Зделаем чтобы оно - mysql запускалось при
старте систему и чтобы Apache и Postfix находящися в chroot имели доступ туда.
Открываем файл /etc/rc.local на редактирование и заносим в конец вот это:
if [ X"${mysql}" == X"YES" -a -x /usr/local/bin/mysqld_safe ]; then
echo -n " mysqld"; /usr/local/bin/mysqld_safe --user=_mysql --log --open-files-limit=256 &
for i in 1 2 3 4 5 6; do
if [ -S /var/run/mysql/mysql.sock ]; then
break
else
sleep 1
echo -n "."
fi
done
#
# Apache chroot Settings
mkdir -p /var/www/var/run/mysql
sleep 2
ln -f /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock
# Postfix chroot Settings
if [ "X${postfix_flags}" != X"NO" ]; then
mkdir -p /var/spool/postfix/var/run/mysql
sleep 2
ln -f /var/run/mysql/mysql.sock /var/spool/postfix/var/run/mysql/mysql.sock
fi
fi
После этого добавляем либо в /etc/rc.conf.local либо в /etc/rc.conf такую строчку
mysql=YES
В дальнейшем с помощью этого параметра мы сможем отключать и включать MySQL при старте.
Шаг 2: Установка Courier-IMAP
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.0/packages/amd64/courier-pop3-3.0.5p1.tgz
У нас также установиться сам Courier-IMAP, Если кому то не нужен доступ
к почте по POP3 протоколу то можно не ставить courier-pop3 а сразу
ставить courier-imap
После установки правим файл /etc/rc.local для запуска courier сервисов:
Добавим следующие строки:
#Courier-Imap settings
if [ -x /usr/local/libexec/imapd.rc -a -x /usr/local/libexec/imapd-ssl.rc ]; then
mkdir -p /var/run/courier-imap
echo -n ' imapd'; /usr/local/libexec/imapd.rc start
echo -n ' pop3d'; /usr/local/libexec/pop3d.rc start (опять же если не используем POP3 можно эту строчку убрать)
fi
Откроем файл для редактирования /etc/rc.shutdown для того чтобы сервисы
отключались корректно при рестарте системы:
#Courier-Imap settings
if [ -x /usr/local/libexec/imapd.rc -a -x /usr/local/libexec/imapd-ssl.rc ]; then
echo -n ' imapd'; /usr/local/libexec/imapd.rc stop
echo -n ' pop3d'; /usr/local/libexec/pop3d.rc stop
fi
Поставим courier-mysql чтобы Courier-IMAP мог работать с MySQL:
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.0/packages/amd64/courier-mysql-3.0.5p1.tgz
После завершения установки скопируем стандартные конфигурации с
/usr/local/share/examples/courier-imap в дирректорию /etc/courier-imap
# cp -r /usr/local/share/examples/courier-imap /etc/courier-imap
Настройка Courier-IMAP
Откроем файл /etc/courier-imap/authmysqlrc для редактирования и внесем
такие изменения:
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
DEFAULT_DOMAIN domain.com
MYSQL_UID_FIELD '507'
MYSQL_GID_FIELD '507'
MYSQL_LOGIN_FIELD username
MYSQL_CRYPT_PWFIELD password
MYSQL_HOME_FIELD '/var/spool/postfix/vmail/'
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
Внимательно смотрите на наличие лишних пробело и прочего их не должно быть.
Шаг 3: Установка Postfix
Идем в дирректорию где у нас храняться порты системы, а именно postfix
/usr/ports/mail/postfix/stable
Выполним следующие команды:
# make show=FLAVORS
Система выдаст ответ:
sasl2 ldap mysql pgsql
Поставим Postfix с поддержкой mysql для этого введем следующие команды:
Соберем собственно сам пакет:
# env FLAVOR="mysql" make
Установим пакет:
# env FLAVOR="mysql" make install
Настраиваем Postfix:
Открываем файл /etc/rc.conf для редактирования и правим такую строчку:
syslogd_flags="-a /var/spool/postfix/dev/log"
Отключим sendmail и включим Postfix:
# /usr/local/sbin/postfix-enable
Открываем файл /etc/rc.conf для редактирования и правим такую строчку:
sendmail_flags="-bd -q30m"
Отключим sendmail в corn`e для этого правим crontab:
# crontab -e
B закоментируйте строчку где упоминается sendmail:
# sendmail clientmqueue runner
#*/30 * * * * /usr/sbin/sendmail -L sm-msp-queue -Ac -q
Конфигурация Postfix:
Создадим директорию где у нас будут храниться пиьсма. Так как у нас
Postfix будет запускаться в chroot то место должно быть где то в
/var/spool/postfix.
Делаем дирректорию:
# mkdir /var/spool/postfix/vmail
Меняем владельца дирректории:
# chown -R _postfix._postfix /var/spool/postfix/vmail
Назначаем права:
# chmod -R 771 /var/spool/postfix/vmail
Далее правим основной файл конфигурации Postfix. Для этого откроем файл
для редактирования /etc/postfix/main.cf:
И внесем такие изменения в файл найдите и исправьте каждую строчку если такой нету то
допишите:
# general settings
myorigin = $mydomain
mydestination = $myhostname localhost.$mydomain $mydomain
alias_database = hash:/etc/mail/aliases
alias_maps = hash:/etc/mail/aliases
# postfixadmin stuff
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:507
virtual_mailbox_base = /var/spool/postfix/vmail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 507
virtual_transport = virtual
virtual_uid_maps = static:507
# Additional for quota support
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
# store backup mx domains in mysql
relay_domains = mysql:/etc/postfix/mysql_relay_domains_maps.cf
delay_notice_recipient = [email protected]
bounce_notice_recipient = [email protected]
2bounce_notice_recipient = [email protected]
error_notice_recipient = [email protected]
#spam stuff
strict_rfc821_envelopes = yes
strict_mime_encoding_domain = yes
disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_helo_restriction = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname,
reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining,
reject_invalid_hostname, reject_rbl_client opm.blitzed.org, reject_rbl_client list.dsbl.org, reject_rbl_client
bl.spamcop.net, reject_rbl_client sbl-xbl.spamhaus.org
# H/B Checks
header_checks = regexp:/etc/postfix/maps/header_checks
mime_header_checks = regexp:/etc/postfix/maps/mime_header_checks
body_checks = regexp:/etc/postfix/maps/body_checks
Создадим файлы для коннекта к базе данных с следующим содержанием:
# touch /etc/postfix/mysql_relay_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'
# touch /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s'
# touch /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s'
# touch /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s'
# touch /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s'
И некоторые штучки от спама:
# mkdir /etc/postfix/maps
# touch /etc/postfix/maps/body_checks
# This will reject emails where any line contains eight or more script/comment tags.
#/(<!(--|[^>]*>).*){8}/ REJECT Your email contained a lot of script tags. Please
# correct this (try setting your mail program to use plain text) and resend your message.
# This will reject emails with script/comment tags that are in the middle of a word.
#/^.*[a-z]<![a-z]*[0-9]*>[a-z]/ REJECT Your email contained wrongly placed script tags.
# Please correct this (try setting your mail program to use plain text) and resend your message.
# This will reject some variants of Sobig viruses
/^RSLxwtYBDB6FCv8ybBcS0zp9VU5of3K4BXuwyehTM0RI9IrSjVuwP94xfn0wgOjouKWzGXHVk3qg$/ REJECT Your email looked like it \
contained a virus. Please run a virus scanner on your computer and try again.
/^TVqQAAMAAAAEAAAA\/\/8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA$/ REJECT Your email looked like \
it contained a virus. Please run a virus scanner on your computer and try again.
## Bad worlds
/porno/ REJECT Body Spam Rule 1
/viagra/ REJECT Body Spam Rule 2
/penis/ REJECT Body Spam Rule 3
/kamasutra/ REJECT Body Spam Rule 4
/bitch/ REJECT Body Spam Rule 5
/V~I~A~G~R~A/ REJECT Body Spam Rule 6
/p"enis/ REJECT Body Spam Rule 7
/e"nlarde/ REJECT Body Spam Rule 8
# touch /etc/postfix/maps/header_checks
/^Subject .*Free Money/ REJECT Spam Header Rule #1
#X-Mailer Blocks
IF/^X-Mailer:/
/ Virtual MailSender; www.vpro.ru/ OK
/ 0001/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Avalanche/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Crescent Internet Tool/ REJECT Your email had spam-like header contents. (X-Mailer)
/ DiffondiCool/ REJECT Your email had spam-like header contents. (X-Mailer)
/ E-Mail Delivery Agent/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Emailer Platinum/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Entity/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Extractor/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Floodgate/ REJECT Your email had spam-like header contents. (X-Mailer)
/ GOTO Software Sarbacane/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MailWorkz/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MassE-Mail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MaxBulk.Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ News Breaker Pro/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SmartMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ StormPort/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SuperMail-2/ REJECT Your email had spam-like header contents. (X-Mailer)
/ RAdvanced Direct Remailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Advanced Mass Sender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Spammer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Bomber/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mega-Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SuperMail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ FastMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PObox/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Ligra Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Dynamic Opt-In Emailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Group Spamer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mail Sender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mailloop/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PersMail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ LK SendI/ REJECT Your email had spam-like header contents. (X-Mailer)
/ WC Mail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Virtual MailSender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ZUBA ZUB/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MailList Express/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Caretop/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mailer Signature/ REJECT Your email had spam-like header contents. (X-Mailer)
/ FiG/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PG-MAILINGLIST/ REJECT Your email had spam-like header contents. (X-Mailer)
/ advcomtest/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ailerv/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Gailerj/ REJECT Your email had spam-like header contents. (X-Mailer)
/ User$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ \.\.\.\.\.\.\. / REJECT Your email had spam-like header contents. (X-Mailer)
/ sklsgwd/ REJECT Your email had spam-like header contents. (X-Mailer)
/ yo yo mail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ZanziMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ smsmtp/ REJECT Your email had spam-like header contents. (X-Mailer)
/ BulkMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ diffondi/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Virtual MailSender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Version 5.0 / REJECT Your email had spam-like header contents. (X-Mailer)
/ NetMasters/ REJECT Your email had spam-like header contents. (X-Mailer)
/ nethack/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Dipost/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (ACE ContactManager|CyberCreek Avalanche)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Achi-Kochi Mail|E-mail Magnet|Mailcast)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Group Mail|Aristotle Mail|WorldMerge)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Extractor Pro|Floodgate Pro|MultiMailer)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Ellipse Bulk Emailer|RamoMail|MultiMailer)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ (Emailer Platinum.*Internet Marketing)/ REJECT Your email had spam-like header contents. (X-Mailer)
/ E-Magazine/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ExclamationSoft/ REJECT Your email had spam-like header contents. (X-Mailer)
/ IM2K/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PostMaster General/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Advanced Mass Sender/ REJECT Your email had spam-like header contents. (X-Mailer)
/ EZ Version/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Email Collector/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SBZ systems/ REJECT Your email had spam-like header contents. (X-Mailer)
/ The Red Spider/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Dynamic Opt-In Emailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ IM2000 Version 1.01/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Prospect Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Inet_Mail_Out/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MailKing/ REJECT Your email had spam-like header contents. (X-Mailer)
/ David/ REJECT Your email had spam-like header contents. (X-Mailer)
/ EzyMassMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Oshirase-Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ The Red Spider/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Mega-Mailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ FletMail/i REJECT Your email had spam-like header contents. (X-Mailer)
/ Floodgate/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Extractor/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Fusion/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MassE-Mail/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Quick Shot/ REJECT Your email had spam-like header contents. (X-Mailer)
/ NetMailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ WorldMerge/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Powermailer/ REJECT Your email had spam-like header contents. (X-Mailer)
/ homosexual/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PSS Bulk Mailer.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ccMail Link.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ IXO-Mail.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MMailer.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ K-ML.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ GoldMine.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ MAGIC.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ bomber.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ expeditor.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Brooklyn North.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Broadcast.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ DMailer.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Extractor.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ EMailing List Pro .*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Fusion.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ News Breaker .*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ dbMail.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Unity.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ PG-MAILINGLIST PRO .*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Dynamic.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Splio.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Sarbacane.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ sMailing.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ Broadc@st.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ WorkZ.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ ABMailer.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ QuickSender .*$/ REJECT Your email had spam-like header contents. (X-Mailer)
/.* over 2182 or.$/ REJECT Your email had spam-like header contents. (X-Mailer)
/ SpeedMail_.*$/ REJECT Your email had spam-like header contents. (X-Mailer)
ENDIF
#Other Headers Blocks
/^X-Unsent: 1/ REJECT Possible you have a virus Nimbda. Try resend your message.
# These are headers used to track some spam messages.
/^Bel-Tracking: .*/ REJECT Confirmed spam. Go away.
/^Hel-Tracking: .*/ REJECT Confirmed spam. Go away.
/^Kel-Tracking: .*/ REJECT Confirmed spam. Go away.
/^BIC-Tracking: .*/ REJECT Confirmed spam. Go away.
/^Lid-Tracking: .*/ REJECT Confirmed spam. Go away.
# touch /etc/postfix/maps/mime_header_checks
# This entry will reject messages with attachments that could be dangerous, and will inform the sender of what type
of attachemnt was rejected.
/^\s*Content-
(Disposition|Type).*name\s*=\s*"?(.+\.(ad[ep]|asd|ba[st]|c[ho]m|cmd|cpl|crt|dbx|dll|exe|hlp|hta|in[fs]|isp|js|jse|lnk
|md[etw]|ms[cipt]|nws|ocx|ops|pcd|pi|pif|prf|reg|scf|scr|sct|sh[bms]|swf|uue|vb|vb[esx]|vxd|wab|ws[cfh]))"?\s*$/
REJECT Files attached to emails that contain or end in "$3" are prohibited on this server as they may contain
viruses. The file named "$2" was rejected.
Шаг 4: Установка и настройка PHP
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.0/packages/amd4.0/php-core-4.4.1p1.tgz
После инсталяции надо проделать такие шаги. Копируем стандартные файлы
PHP в директорию
Apache, создаем временную директорию и даем права доступа.
# /usr/local/sbin/phpxs -s
# cp /usr/local/share/examples/php4/* /var/www/conf/
# cd /var/www/conf
# cp php.ini-recommended php.ini
# mkdir /var/www/tmp
# chown www.www /var/www/tmp
# chmod 700 /var/www/tmp
Откроем для редактирования файл /var/www/conf/php.ini
Раскоментируем эту строчку:
AddType application/x-httpd-php .php
Допишем в эту строчку index.php
DirectoryIndex index.html index.php
Установим модуль MySQL для PHP:
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.0/packages/amd64/php4-mysql-4.4.1p1.tgz
После завершения активируем модуль:
# /usr/local/sbin/phpxs -a mysql
Шаг 4: Настройка Postfixadmin
Перейдем в дирректорию /var/www/htdocs/
Скачаем сам скрипт:
# ftp http://high5.net/page7_files/postfixadmin-2.1.0.tgz
Распакуем его:
# tar -zxvf postfixadmin-2.1.0.tgz
Поправим права доступа к папкам и файлам:
# chown -R www.www postfixadmin/
# cd /var/www/users/yourwebdir/postfixadmin
# chmod 640 *.php *.css
# cd /var/www/users/yourwebdir/postfixadmin/admin/
# chmod 640 *.php .ht*
# cd /var/www/users/yourwebdir/postfixadmin/images/
# chmod 640 *.png
# cd /var/www/users/yourwebdir/postfixadmin/languages/
# chmod 640 *.lang
# cd /var/www/users/yourwebdir/postfixadmin/templates/
# chmod 640 *.tpl
# cd /var/www/users/yourwebdir/postfixadmin/users/
# chmod 640 *.php
Создадим базу данных в MySQL с помощью файла - скрипта в дирректории postfixadmin:
# mysql -u root -p < DATABASE_MYSQL.TXT
Система попросит ввести пароль который мы задавали выше для root mysql.
Вводим и получаем базу данных.
Создадим файл конфигурации из станлдартного для postfixadmin
# cd /var/www/htdocs/postfixadmin/
# cp config.inc.php.sample config.inc.php
Зайдем на созданый сайт добавим домены, майлы, администраторов доменов.
P.S. Настройка PF фаирвола для всего этого:
Небольшая и простая настройка фаирвола:
Внешний интерфейс
ext_if="xl0"
Внутренний интерфейс
int_if="xl1"
Блокируем на внешнем интерфейсе всѐ:
block on $ext_if all
Пропускаем изнутри то что хочет попасть наружу:
pass out on $ext_if all keep state
Откроем порт 80 для Apache:
pass in on $ext_if proto tcp to any port {80}
Откроем порт 53 для DNS:
pass in on $ext_if proto {udp, tcp} to any port {53}
Откроем порты для почты:
pass in on $ext_if proto {tcp, udp} to any port {25}
pass in on $ext_if proto {tcp, udp} from any to any port {143,110}
P.P.S. В итоге мы получем работающий почтовый сервер с поддержкой
нескольких доменов, и управлением всего этого через прекрасный скрипт
Postfixadmin.
Перезагружаемся!
Исследуем лог файлы в дирректории /var/log/
maillog - лог собственно postfix`a и courier`a
messages - лог при старте системы пишет все что запускается или не запускается..
/var/www/logs/ - логи от веб сервера Apache
Шаг 5: Прикручиваем Анти-Спам систему.
Так как amavisd-new и Spamassasin написаны на perl?, то они используют
перловские модули.
Поставим эти модули для корректной работы:
# perl -MCPAN -e shell
И поставим следующие модули:
MD5
LWP
MIME::Base64
Mail::Internet
Archive::Tar
Archive::Zip
IO::Wrap
IO::Stringy
Unix::Syslog
MIME::Words
MIME::Head
MIME::Body
MIME::Entity
MIME::Parser
Net::SMTP
Net::DNS (when prompted to enable tests, choose no)
Net::Ping
Net::Server
Net::Server::PreForkSimple
Convert::TNEF
Convert::UUlib
MIME::Decoder::Base64
MIME::Decoder::Binary
MIME::Decoder::Gzip64
MIME::Decoder::NBit
MIME::Decoder::QuotedPrint
MIME::Decoder::UU
Time::HiRes
Digest::SHA1
Digest::Nilsimsa
Getopt::Long
File::Copy
Bit::Vector
Date::Calc
Установка производится по примеру install имя_пакета
cpan> install Mail::Internet
Некоторые модули просят для коректной работы установки допалнительный
модулей, соглашаемся выбрав yes при установке и ставим дополнительные
модули.
Так же для работы нашей связки потребуется BerkeleyDB. Идем в порты и
устанавливаем:
# cd /usr/ports/databases/db/v4
# make install
Для того чтобы модули BerkelyDB установились корректно нужно зделать
несколько линков:
# mkdir /usr/local/BerkeleyDB
# ln -s /usr/local/lib/db4 /usr/local/BerkeleyDB/lib
# ln -s /usr/local/include/db4 /usr/local/BerkeleyDB/include
Далее идем в CPAN и установим BerkeleyDB:
# perl -MCPAN -e shell
cpan> install BerkeleyDB
Здесь все. Выходим.
cpan>q
Ставим greylisting
Одно из самых эффективных средст по борьбе с антиспамом.
Идем в CPAN снова и устанавливаем необходимые модули и выходим:
# perl -MCPAN -e shell
cpan> install Net::Server IO::Multiplex
cpan>q
Ставим перейдем в дирректорию скажем /root где времено будут хранится всякие закачки.
Скачаем последную версию:
# ftp http://isg.ee.ethz.ch/tools/postgrey/pub/postgrey-1.27.tar.gz
Распакуем скачанное:
# tar -zxvf postgrey-1.27.tar.gz
Создадим юзера для postgrey:
# useradd postgrey
Отредактируем файл паролей /etc/passwd, чтобы строка выглядела примерное таким образом
(изменить если и надо будет то 2 последних значения в строке)
postgrey:*:1022:20::/var/empty:/sbin/nologin
Создадим и поменяем права доступа на дирректорию для баз:
# mkdir /var/spool/postfix/postgrey
# chown postgrey /var/spool/postfix/postgrey
Отредактируем файл /etc/rc.local для автоматического запуска greylisting при старте системы:
# Start Postgrey
echo -n 'Postgrey'; /usr/local/sbin/postgrey --inet=10023 -d --delay=50 --greylisttext="
Policy restrictions; try later"
Добавьте кусок выше перед куском который ниже, что мы прописывали для MySQL
if [ X"${mysql}" == X"YES" -a -x /usr/local/bin/mysqld_safe ]; then
.....
Далее зайдем в дирректорию где мы распаковали postgrey и переместим исполняем файл туда где
ему место:
# cd /root/postgrey-1.27
# mv postgrey /usr/local/sbin
Надстройка Postfix для greylisting:
Откроем файл для редактирования /etc/postfix/main.cf и добавим в конец строку
check_policy_service inet:127.0.0.1:10023 :
В итоге будет выглядеть вот так:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname,
reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining,
reject_invalid_hostname, reject_rbl_client opm.blitzed.org, reject_rbl_client list.dsbl.org,
reject_rbl_client bl.spamcop.net, reject_rbl_client sbl-xbl.spamhaus.org, check_policy_service
inet:127.0.0.1:10023
Не выходя из дирректории postgrey-1.27
Переместим еще пару файлов:
# mv postgrey_whitelist_clients /etc/postfix
# mv postgrey_whitelist_recipients /etc/postfix
В файл postgrey_whitelist_recipients мы можем прописывать юзеров которым
не требуется проверка greylisitng.
Перезагрузим систему и посмотрим логи, все ли заработало как мы хотели.
Установка и настройка SpamAssassin
Заходим в CPAN и установим spamassasin и некоторые модули:
# perl -MCPAN -e shell
cpan> install Mail::SpamAssassin
cpan> install Mail::SPF::Query
cpan> install IP::Country::Fast
На вопрос хотите ли вы запустить тесты Razor или DCC ответим нет после
этого выйдем из CPAN введя q.
Отредактируем файл и внесем или изменим следующие строки /etc/mail/spamassassin/local.cf:
report_safe 0
use_bayes 1
bayes_path /var/amavisd/.spamassassin/bayes
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 0
dns_available yes
header LOCAL_RCVD Received =~ /.*\(\S+\.domain\.com\s+\[.*\]\)/
describe LOCAL_RCVD Received from local machine
score LOCAL_RCVD -50
## Optional Score Increases
score DCC_CHECK 4.000
score SPF_FAIL 10.000
score SPF_HELO_FAIL 10.000
score RAZOR2_CHECK 2.500
score BAYES_99 4.300
score BAYES_95 3.500
score BAYES_80 3.000
Подробно описывать каждый параметр конфига я не буду. Кому интересно
поищите информацию на официальном сайте SpamAsssasin http://spamassassin.apache.org
Создадим и настроим домашную дирректорию для spamassassin и amavisd:
# mkdir -p /var/amavisd
# chown amavisd.amavisd /var/amavisd
# chmod 750 /var/amavisd
# cd /var/amavisd
# mkdir .spamassassin
# touch .spamassassin/user_prefs
# chown -R amavisd.amavisd .spamassassin
Скопируем файлы необходимые для дирректории amavisd chroot:
# mkdir -p etc/mail/spamassassin usr/local/share
# cp /etc/mail/spamassassin/local.cf etc/mail/spamassassin/
# cp /etc/mail/spamassassin/init.pre etc/mail/spamassassin/
# cp -r /usr/local/share/spamassassin usr/local/share
Отредактируем файл и изменим следующие строки /etc/mail/spamassassin/v310.pre
Снимите значок коментария # с двух строк как показано ниже:
# DCC - perform DCC message checks.
#
# DCC is disabled here because it is not open source. See the DCC
# license for more details.
#
loadplugin Mail::SpamAssassin::Plugin::DCC
# Razor2 - perform Razor2 message checks.
#
# Razor2 is disabled here because it is not available for unlimited free
# use. It is currently free for personal use, subject to capacity
# constraints. See the Cloudmark SpamNet Service Policy for more details.
#
loadplugin Mail::SpamAssassin::Plugin::Razor2
И скопируем файл в chroot директорию amavisd:
# cp /etc/mail/spamassassin/v310.pre /var/amavisd/etc/mail/spamassassin/
После всех этих операций запустим spamassasin.
# spamassassin --debug -lint
После запуска spamassassin выведет много информации посмотрите и
проанализируйте на налицие каких либо ошибок.
Установка и настройка Razor
Перейдем в директорию /root и скачаем последную версию:
# ftp http://prdownloads.sourceforge.net/razor/razor-agents-2.82.tar.bz2?download
Распакуем:
# bunzip2 razor-agents-2.82.tar.bz2
# tar -xvf razor-agents-2.82.tar
Зайдем в директорию и установим:
# cd razor-agents-2.82
# perl Makefile.PL
# make
# make test
# make install
Создадим дефолтные файлы конфигурации и скопируем их в нашу chroot
директорию amavisd:
# razor-admin -home=/etc/razor -d -create
# razor-admin -home=/etc/razor -d -registeк
Копируем:
# mkdir -p /var/amavisd/.razor
# cp -r /etc/razor/* /var/amavisd/.razor
# chown -R amavisd.amavisd /var/amavisd/.razor
Включить и выключить Razor мы сможем отредактировав файл
/etc/mail/spamassassin/local.cf изменив значение use_razor2 1 на use_razor2 0
Razor пишет свой собственный лог файл /var/amavisd/.razor/razor-agent.log
Файл будет рости в обьеме, что чревато последствиями если про него забыли. Так что после того
как вы убедились что все работает правильно и красиво отредактируйте файл
/var/amavisd/.razor/razor-agent.conf сменив debuglevel = 3 на debuglevel = 0 и перезапустите
amavisd.
На фаирволе порт 2703 изнутри-наружу должен быть открыт
Установка и настрока DCC:
Переходим в нашу дирректорию:
# cd /root
Скачаем и установим последую версию DCC (http://www.dcc-servers.net/dcc/)
# ftp http://www.dcc-servers.net/dcc/source/dcc-dccd.tar.Z
# tar -zxvf dcc-dccd.tar.Z
# cd cd dcc-dccd-1.3.44
# ./configure
Запустим:
# /usr/local/bin/cdcc 'info'
Если увидите что то типо этого (на фаирволее порт 6277 изнутри-наружу должен быть открыт):
dcc.rhyolite.com, - RTT+0 ms anon
# 153.19.44.233,- coral.ely.pg.gda.pl WEiAPG? server-ID 1072
# 100% of 3 requests ok 1687.64+0 ms RTT 113 ms queue wait
# 192.188.61.3,- calcite.rhyolite.com Rhyolite server-ID 101
# 100% of 2 requests ok 755.52+0 ms RTT 50 ms queue wait
Товсе у вас замечательно работает.
Скопируем файлы которые потребуются DCC в chroot:
# mkdir -p /var/amavisd/var /var/amavisd/usr/bin /var/amavisd/usr/libexec /var/amavisd/var/dcc
# mkdir -p /var/amavisd/usr/lib /var/amavisd/bin
# cp -r /var/dcc /var/amavisd/var/
# cp /usr/local/bin/dccproc /var/amavisd/usr/bin
# cp /usr/libexec/ld.so /var/amavisd/usr/libexec
# chown -R amavisd:amavisd /var/amavisd/var/dcc
# cp /bin/sh /var/amavisd/bin/
Посмотрим какие файлы нужны для работы DCC:
# ldd /usr/local/bin/dccproc
Ответ системы:
usr/local/bin/dccproc:
Start End Type Ref Name
00000000 00000000 exe 1 /usr/local/bin/dccproc
00008000 2000f000 rlib 1 /usr/lib/libm.so.2.3
00019000 20063000 rlib 1 /usr/lib/libc.so.39.3
00002000 00002000 rtld 1 /usr/libexec/ld.so
Скопируем эти файлы за исключением dccproc в директорию /var/amavisd.
Версии файлов у вас могут отличаться, но это не меняет сути.
# cp /usr/lib/libm.so.2.3 /var/amavisd/usr/lib/
# cp /usr/lib/libc.so.39.3 /var/amavisd/usr/lib/
Включать и выключать DCC вы сможете откоректировав файл
etc/mail/spamassassin/local.cf значение use_dcc 1
Добавьте в etc/mail/spamassassin/init.pre следующую строку чтобы DCC
использовался как плугин:
loadplugin Mail::SpamAssassin::Plugin::DCC
Установка и настройка Amavisd-new
Перейдем в директорию:
# cd /root
Берем отсюда самую свежую версию http://www.ijs.si/software/amavisd/#download и устанавливаем:
# ftp http://www.ijs.si/software/amavisd/amavisd-new-2.4.3.tar.gz
Распаковываем:
# tar -zxvf amavisd-new-2.4.3.tar.gz
# cd amavisd-new-2.4.3
# cp amavisd /usr/local/sbin/
# chown root.wheel /usr/local/sbin/amavisd
# chmod 550 /usr/local/sbin/amavisd
# cp amavisd.conf /etc/
# chown root.wheel /etc/amavisd.conf
# chmod 644 /etc/amavisd.conf
# touch /var/amavisd/amavis.log
# chown amavisd.amavisd /var/amavisd/amavis.log
Правим файл конфигурации /etc/amavisd.conf а лучше создадим новый файл с
такими параметрами:
use strict;
$MYHOME = '/var/amavisd';
$mydomain = 'domain.com';
$daemon_user = 'amavisd';
$daemon_group = 'amavisd';
$daemon_chroot_dir = $MYHOME;
$QUARANTINEDIR = "$MYHOME/quarantine";
$TEMPBASE = "$MYHOME/tmp";
$ENV{TMPDIR} = $TEMPBASE;
$helpers_home = $MYHOME;
$max_servers=8;
$child_timeout=20*60; # we need to adjust the timeout since it is not a localhost transfer
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;
$inet_socket_port = 10024;
$inet_socket_bind = '127.0.0.1';
@bypass_virus_checks_acl = (1);
read_hash(\%local_domains, '/etc/postfix/ mysql_relay_domains_maps.cf ');
$DO_SYSLOG = 1; # (1 = syslog, 0 = logfile)
$log_level = 5; # (0-5)
$final_spam_destiny = D_REJECT; # Set to D_REJECT, D_PASS to pass through
read_hash(\%whitelist_sender, '/var/amavisd/whitelist');
read_hash(\%blacklist_sender, '/var/amavisd/blacklist');
read_hash(\%spam_lovers, '/var/amavisd/spam_lovers');
#defending against mail bombs
$MAXLEVELS = 14;
$MAXFILES = 1500;
$MIN_EXPANSION_QUOTA = 100*1024;
$MAX_EXPANSION_QUOTA = 300*1024*1024;
$path = '/usr/bin:/bin';
$file = 'file';
$gzip = '/usr/bin/gzip'; # location of gzip on your system - Important!
$enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny)
$enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1
# SpamAssassin settings
$sa_local_tests_only = 0;
$sa_auto_whitelist = 1; # comment this line out to turn off auto whitelist
$sa_mail_body_size_limit = 64*1024; # 64KB
$sa_tag_level_deflt = 3.0; # controls adding the X-Spam-Status and X-Spam-Level headers,
$sa_tag2_level_deflt = 6.3; # controls adding 'X-Spam-Flag: YES', and editing Subject,
$sa_kill_level_deflt = $sa_tag2_level_deflt; # triggers spam evasive actions:
$sa_spam_subject_tag = '***SPAM*** ';
$sa_debug = 1; # comment this line out to turn off debugging
1; # insure a defined return
Значение параметров смотрим на офф. сайте.
Создадим директории необходимые для этого пакета:
# mkdir /var/amavisd/tmp
# chown amavisd:amavisd /var/amavisd/tmp
# chmod 750 /var/amavisd/tmp
# mkdir /var/amavisd/quarantine
# chown amavisd:amavisd /var/amavisd/quarantine
# chmod 750 /var/amavisd/quarantine
# mkdir /var/amavisd/db
# chown amavisd:amavisd /var/amavisd/db
# chmod 750 /var/amavisd/db
Далее нам надо настроить чтобы это все запускалось в chroot.
Перейдем в директорию /var/amavisd, все далее выполненые команды должны
выполняться именно находясь в этой директории:
# cd/var/amavisd
# mkdir -p etc dev tmp var/run bin
# mkdir -p usr/bin usr/share/zoneinfo usr/lib usr/libexec
Правим файл /etc/fstab
Найдем раздел /var и уберем с него параметр nodev:
Было так:
/dev/wd0g /var ffs rw,nodev,nosuid 1 2
Стало так:
/dev/wd0g /var ffs rw,nosuid 1 2
Если этого не зделать amavisd быть отвечать о проблемах, ошибках.
Перезагружаемся!
Продолжаем:
# cd /var/amavisd
# mknod dev/null с 2 2
Зделаем несколько линков:
# ln -s / var/amavisd
Скопируем файлы конфигураций в нашу chroot директорию. Если вы в
дальнейшем будете менять эти файлы их надо будет заново скопировать в
наш chroot.
# cp /etc/protocols /etc/services /etc/hosts /etc/magic /etc/resolv.conf /etc/group /etc/passwd /var/amavisd/etc
Скопируем исполняаемые файлы:
# cp /usr/bin/file /var/amavisd/bin
# cp /usr/lib/libc.so.39.3 /var/amavisd/usr/lib/
# cp /usr/libexec/ld.so /var/amavisd/usr/libexec/
# mkdir -p /var/amavisd/usr/libdata/perl5
# cp -pR /usr/libdata/perl5/unicore/ /var/amavisd/usr/libdata/perl5
Создадим файл липовый паролей:
#echo amavisd:*:3000:3000::0:0:Amavis Mail Scanner Daemon:/var/amavisd:/sbin/nologin>/var/amavisd/etc/master.passwd
#echo "amavisd:*:3000:3000::0:0:Amavis Mail Scanner Daemon:/var/amavisd:/sbin/nologin">/var/amavisd/etc/master.passwd
#pwd_mkdb -d /var/amavisd/etc/ -p /var/amavisd/etc/master.passwd
Раздадим права доступа:
# chown -R root.wheel etc dev tmp usr var
# chown -R amavisd:amavisd .spamassassin .razor quarantine var/dcc
# chmod 1777 tmp
# chmod 666 dev/null
Для логов добавим такую строку в файл /etc/rc.conf.local:
syslogd_flags="-a /var/amavisd/dev/log"
Создадим белые и черные листы для особых параметров определеных пользователей:
# touch /var/amavisd/blacklist
# touch /var/amavisd/whitelist
# touch /var/amavisd/spam_lovers
Добавим аккаунт postmaster в список spam_lovers. Так как postmaster
должен всегда получать письма.
# echo [email protected] >> /var/amavisd/spam_lovers
Настроим автоматический запуск при старте системы для этого
отредактируем файл /etc/rc.local и добавим а начало следующую строку:
echo -n ' amavisd'; /usr/local/sbin/amavisd
итог этого файла у нас получаеться такой:
### Start amavisd spam filter ###
echo -n ' amavisd'; /usr/local/sbin/amavisd
### Start Postgrey ###
echo -n 'Postgrey'; /usr/local/sbin/postgrey --inet=10023 -d --delay=50 \
--greylist-text="Policy restrictions; try later"
### MySQL chroot Serrings ###
if [ X"${mysql}" == X"YES" -a -x /usr/local/bin/mysqld_safe ]; then
.....
Добавление проверки на вирусы:
Добавим юзера и групу clamav
# groupadd clamav
# adduser
И выполните шаги по добавлению юзера не ставив пароля и для домашней
директории и шела выберите /sbin/nologin и /var/empty соответственно
Устанавливаем ClamAV из портов:
# cd /usr/ports/security/clamav
# make install
Настроим clamav для запуска в chroot.
# cd /var/amavisd
# mkdir -p usr/local/share/clamav
# mkdir -p usr/local/sbin
# mkdir -p usr/local/bin
# mkdir -p usr/local/lib
# mkdir -p var/log
# chown -R amavisd.amavisd usr/local/share/clamav var/log var/db/clamav
# chmod -R 744 usr/local/share/clamav var/log
# chmod 744 var/log
# chmod 755 usr/local/share
# cp -R /usr/local/share/clamav usr/local/share
# cp /usr/local/share/examples/clamav/*.conf etc
# cp /usr/local/sbin/clamd usr/local/sbin
# cp /usr/local/bin/clamscan usr/local/bin
# cp /usr/local/bin/clamdscan usr/local/bin
# cp /usr/local/bin/clamav-config usr/local/bin
# cp /usr/local/bin/freshclam usr/local/bin
# mknod dev/urandom c 45 2
# mknod dev/null c 2 2
Здеалем маленький скриптик для копирования нужных файлов в наш chroot с
названием ldd_copy.sh и с таким содержанием:
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
if [ "$1" != "" -a "$2" != "" ]; then
for i in `ldd $1 | egrep "(rlib|rtld)" | cut -f17 -d" "`
do
if [ ! -e $2$i ]; then
cp $i $2$i
echo $i $2$i copied
else
echo $2$i already exists
fi
done
else
echo "Usage: ldd_copy.sh <program> <destination>"
fi
И запустим его:
# ./ldd_copy.sh /usr/local/sbin/clamd /var/amavisd
# ./ldd_copy.sh /usr/local/bin/clamdscan /var/amavisd
# ./ldd_copy.sh /usr/local/bin/clamscan /var/amavisd
# ./ldd_copy.sh /usr/local/bin/freshclam /var/amavisd
# cp /var/run/ld.so.hints /var/amavisd/var/run/
Настройка ClamAV:
# cd /var/amavisd/etc
Правим файл clamd.conf
И меняем такие значения в нем:
#Example
LogFile /var/log/clamd.log
LogTime
LogVerbose
PidFile /var/amavisd/clamd.pid
LocalSocket /var/amavisd/clamd.sock
FixStaleSocket
Чтобы наш антивирус обновлялся поправим файл freshclam.conf в той же
директории и внесем такие изменения:
#Example
UpdateLogFile /var/log/freshclam.log
LogVerbose
DatabaseOwner amavisd
LocalSocket /var/amavisd/clamd.sock
Надстройка amavisd для использования ClamAV:
Правим файл /etc/amavisd.conf и вносим следующий кусок кода:
#@bypass_virus_checks_acl = qw( . ); # uncomment to DISABLE anti-virus code
$file = 'file';
$arc = ['nomarch', 'arc'];
$gzip = 'gzip';
$bzip2 = 'bzip2';
$uncompress = ['uncompress', 'gzip -d', 'zcat'];
$lha = 'lha';
$unarj = 'unarj';
$unrar = 'unrar';
$zoo = 'zoo';
### Virus scanners
# Add X-Virus-Scanned line to mail? (default: undef)
$X_HEADER_TAG = 'X-Virus-Scanned';
$remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone
# Don't notify sender when these viruses are found because they spoof From:
$viruses_that_fake_sender_re = new_RE(
qr'nimda|hybris|klez|bugbear|yaha|braid|sobig|fizzer|palyh|peido|holar'i,
qr'tanatos|lentin|bridex|mimail|trojan\.dropper|dumaru|parite|spaces'i,
qr'dloader|galil|gibe|swen|netwatch|bics|sbrowse|sco|mydoom'i,
[qr'^(EICAR\.COM|Joke\.|Junk\.)'i => 0],
[qr'^(WM97|OF97|W95/CIH-|JS/Fort)'i => 0],
);
@av_scanners = (
# http://www.clamav.net/
['Clam Antivirus-clamd',
\&ask_daemon, ["CONTSCAN {}\n", '/var/amavisd/clamd.sock'],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);
@av_scanners_backup = (
# http://www.clamav.net/
['Clam Antivirus - clamscan', 'clamscan',
'--stdout --disable-summary -r {}', [0], [1],
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);
Добавим задание в crontab чтобы антивирус периодически обновлялся:
# crontab -e
И добавим такую строку в задания
# Fresh clamAV
30 * * * * chroot -u amavisd /var/amavisd /usr/local/bin/freshclam --quiet --logverbose --daemon-notify
Настроим запуск при старте системы:
Правим файл /etc/rc.local и добавляем в конец файла строку:
chroot -u amavisd /var/amavisd /usr/local/sbin/clamd
Надстройка Postfix для всего этого
Все что осталось это отредактировать файл postfix - /etc/postfix/master.cf
Приведите его к такому виду:
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - 10 smtpd
-o content_filter=smtp-amavis:[127.0.0.1]:10024
smtp-amavis unix - - n - 3 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o local_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject,reject_unauth_destination
-o strict_rfc821_envelopes=yes
#original
#smtp inet n - - - - smtpd
....
Перезагрузитесь и я надеюсь что у вас все заработает!
Статья не претендует не на что, создавался как мануал для себя чтобы не забыть чего то.
При написании за основу брались статьи и конференции:
http://www.obsd.ruhttp://www.postfixwiki.orghttp://www.flakshack.com/anti-spam/wiki/http://www.securitystage.com
Я не утвреждаю что все это придумал я сам. Это все взято с тех или иных
источников отмеченных выше, просто переработано, переведено на более
менее понятный язык
Версия 2.0
С уважением syntax.
О всех недочетах отзывах и тд. Пишите на майл syntax at forsale.lv
Автору респект, но вот на что обратил внимание
/etc/postfix/master.cf:
ни один почтовый процесс не запущен в chroot! По ходу статью автор все процессы пытается запустить в chroot, поэтому логично хотя бы для демонов, которые общаются с сетью (smtp и smtpd) установить chroot в y. Кстати, у меня при аналогичных настройках указанные демоны при chroot = n в master.cf не работают!
От себя: всем, кто собирает свои системы путем копирования настроек из таких статей: ЗАДУМЫВАЙТЕСЬ НАД КАЖДЫМ ЗНАКОМ, читайте оригинальные маны, иначе вместо пользы такие статьи сделают вам ДИВЕРСИЮ (при всем уважении к авторам).
С уважением к автору.
У меня уже дырка в голове ... OpenBSD45.
Проблема с mysql_sock. Если на своем месте в /var/run/mysql то не работает ничего из www (phpmyadmin и т.д.), если my.cnf изменить путь на /var/www/... - работает все для www, но всему остальному куда коннектится?
Создавать ссылки из /var/run/mysql в /var/www/... (по приведенной в статье методике), или еще куда -не получается, команды проходят без сообщений, но ссылок нет (не создаются), а если просто символьную, то с ней никто дела иметь не хочет, вроде как ее и нет вообще.
Возможно ли решение, при котором доступ к mysql.sock будет возможет от всех (postfix, php...)?