Monday, July 24th, 2017

OpenBSD + Postfix + Antispam

Published on Апрель 7, 2009 by   ·   Комментариев нет

Итак у нас есть свежепоставления ось 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).*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


Распаковываем:
[cc lang="bash" tab_size="2" lines="-1"]
    # 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 {}\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.ru
http://www.postfixwiki.org
http://www.flakshack.com/anti-spam/wiki/
http://www.securitystage.com

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

Версия 2.0
С уважением syntax.
О всех недочетах отзывах и тд. Пишите на майл syntax at forsale.lv







































































Смотрите также:

Readers Comments (Комментариев нет)




Да человек я, человек! =)

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]