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 = postmaster@domain.com
bounce_notice_recipient = postmaster@domain.com
2bounce_notice_recipient = postmaster@domain.com
error_notice_recipient = postmaster@domain.com
#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).*names*=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.coms+[.*])/
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 postmaster@domain.com >> /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 {} ", '/var/amavisd/clamd.sock'],
qr/OK$/, qr/FOUND$/,
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.ru
- http://www.postfixwiki.org
- http://www.flakshack.com/anti-spam/wiki/
- http://www.securitystage.com

Я не утвреждаю что все это придумал я сам. Это все взято с тех или иных
источников отмеченных выше, просто переработано, переведено на более
менее понятный язык

Обновлено: 13.03.2015