11. Установка Maia-Mailguard - Установка связки Postfix, MySQL, SpamAssassin, Maia в FreeBSD.

11. Установка Maia-Mailguard - Установка связки Postfix, MySQL, SpamAssassin, Maia в FreeBSD.

назад Оглавление вперед

Maia-Mailguard безусловно лучшая бесплатная утилита для настройки спам и антивирусных фильтров, из всех которые я когда либо использовал. Она позволяет пользователям устанавливать собственные настройки для фильтров спама и вирусов, администратор почтового сервера при этом может расслабиться в комнате отдыха, таким образом эта программа - серьезный помощник администратора. Узнать больше можно по адресу http://www.maiamailguard.com/.

В данном пособии описана установка версии 1.0.2a_1.

Установим Maia-Mailguard из портов.

#cd /usr/ports/security/maia
#make all install clean

Достаточно опций меню по умолчанию, однако, не стесняйтесь выбрать больше приложений для сканера. Это не повредит).

Создадим и наполним базу Maia-Mailguard

#mysql -u root -p mysql

(Введите пароль root для MySQL)

>CREATE DATABASE maia;
>GRANT ALL PRIVILEGES ON maia.*
TO vscan@localhost IDENTIFIED BY ‘vscan_password‘;
>FLUSH PRIVILEGES;
>quit
#cd /usr/local/share/doc/maia
#mysql -u root -p maia < maia-mysql.sql

Отредактируем файл /usr/local/etc/maia.conf:

    …
    # Your Maia database user’s login name
    $username = “vscan“;

    # Your Maia database user’s password
    $password = “vscan_password“;

    # The directory where Maia’s Perl scripts can be found.
    $script_dir = “/var/amavisd/maia/scripts“;
    …
    # The directory where SpamAssassin’s local.cf file can be found.
    $local_cf_dir = “/usr/local/etc/mail/spamassassin“; # default: let the script find it
    …
    # The directory where SpamAssassin’s core rules can be found.
    $system_rules_dir = “/usr/local/share/spamassassin“; # default: let the script find it
    …
    # The directory where your amavis user’s user_prefs file can be found.
    $user_rules_dir = “/var/amavisd/.spamassassin“; # default: let the script find it
    …
    # Location of your encryption key file, or undef to disable
    #$key_file = “/var/amavisd/maia.key”;
    …
    # Base URL to Maia’s PHP scripts
    $base_url = “https://www.domain.tld/maia/“; 

Запустим configtest.pl

#/var/amavisd/maia/scripts/configtest.pl 

Замечание

Существует известная проблема с утилитой ‘file()’ при работе configtest. Не волнуйтесь об этом, Maia находит и использует file(), даже если configtest говорит, что утилита не установлена. Это будет пофикшено в следующем выпуске Maia. Иначе, ПОЖАЛУЙСТА сообщите мне, если порт не правильно работает.

Разрешим доступ ‘vscan’ к файлам Maia

#cd /usr/local/etc
#chgrp vscan maia.conf amavisd.conf

Загрузим правила SpamAssassin

#su – vscan
#/var/amavisd/maia/scripts/load-sa-rules.pl --debug
#exit 

Установим из портов Smarty Engine Template

#cd /usr/ports/www/smarty
#make all install clean

Отредактируем файл /usr/local/etc/php.ini

    …
    ;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Paths and Directories ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;

    ; UNIX: “/path1:/path2″
    include_path = “.:/usr/local/share/pear:/usr/local/share/smarty”
    ;
    ; Windows: “\path1;\path2″
    ;include_path = “.;c:\php\includes”
    …

Перезагрузим конфигурацию Apache

#apachectl graceful

Отредактируем файл /usr/local/www/maia/config.php

…
$maia_sql_dsn = “mysql://vscan:vscan_password@unix(/tmp/mysql.sock)/maia“;
…
$address_rewriting_type = 4;
…
$auth_method = “sql“;
…
// Database connection string to use for authentication.
$auth_sql_dsn = “mysql://postfix:postfix_sql_password@unix(/tmp/mysql.sock)/postfix“;
…
// Name of the table that contains the user’s authentication info
$auth_sql_table = “mailbox“;
…
// Name of the column that contains the user’s name
$auth_sql_username_column = “username“;
…
// Name of the column that contains the user’s password
$auth_sql_password_column = “password“;
…
// Name of the column that contains the user’s e-mail address
$auth_sql_email_column = “username“;
…
// Password encryption type:
$auth_sql_password_type = “crypt“;
…

Создадим и отредактируем файл /usr/local/etc/apache22/Includes/maia.conf

Alias /maia/ "/usr/local/www/maia/"
<Directory "/usr/local/www/maia/" >
   AllowOverride None
   Options None
   Order allow,deny
   Allow from all
</Directory >

Перезрузим Apache

#apachectl graceful

Тест

Зайдите на страницу “https://domain.tld/maia/admin/configtest.php“. Вы увидите, что у нас не установлено много модулей PEAR. Так давайте вернемся к началу и установим их. Конечно установка всех “optional” модулей ваше дело.

Установка PEAR::Mail_Mime из портов

#cd /usr/ports/mail/pear-Mail_Mime
#make all install clean

Установка PEAR::Mail_mimeDecode из портов

#cd /usr/ports/mail/pear-Mail_mimeDecode
#make all install clean

Установка PEAR::DB из портов

#cd /usr/ports/databases/pear-DB
#make all install clean

Установка PEAR::Pager из портов

#cd /usr/ports/devel/pear-Pager
#make all install clean

Установка PEAR::Net_Socket из портов

#cd /usr/ports/net/pear-Net_Socket
#make all install clean

Установка PEAR::Net_SMTP из портов

#cd /usr/ports/net/pear-Net_SMTP
#make all install clean

В меню установки необходимо выбрать “PEAR_AUTH_SASL”.

Установим PEAR::Log из портов

#cd /usr/ports/sysutils/pear-Log
#make all install clean

В меню установки необходимо выбрать “Pear_DB”.

Замечание

Если вы хотите использовать графические утилиты Maia, то вам нужно найти все модули в /usr/ports/graphics и /usr/ports/textproc.

(Такие как):
PEAR::Image_Color
PEAR::Image_Canvas
PEAR::Image_Graph
PEAR::Numbers_Roman
PEAR::Numbers_Words

Пропатчим модуль pear-Net_IMAP

Это нужно только если вы все таки поставили графические модули PEAR

#cd /usr/local/share/pear
#fetch http://www.purplehat.org/downloads/postfix_guide/Pie.php.diff
#patch -p0 < Pie.php.diff

Перегрузим конфигурацию Apache

#apachectl graceful

Отредактируем файл /usr/local/etc/amavisd.conf

...
$max_servers = 2;             # number of pre-forked children (2..15 is common)
...
$mydomain = 'domain.tld';
...
#$key_file = "$MYHOME/maia.key";
...
$DO_SYSLOG = 1;
...
@lookup_sql_dsn = ( ['DBI:mysql:maia:localhost', 'vscan', 'vscan_password'] );
...
$unrar = ['rar', 'unrar'];
...
$myhostname = 'host.domain.tld';
...
$X_HEADER_LINE = "Maia Mailguard";
...
### http://www.clamav.net/
['ClamAV-clamd',
   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
   qr/\bOK$/, qr/\bFOUND$/,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
...

Добавим Maia-Mailguard в автозагрузку

#echo 'maia_enable="YES"' >> /etc/rc.conf
#/usr/local/etc/rc.d/maia start 

Тест

Перейдите на страницу “https://domain.tld/maia/“. Вы должны увидеть страницу с предложением входа. Это отлично! Тогда войдите и получите привилегии администратора…

Вместо страницы по умолчанию “https://domain.tld/maia/login.php”, зайдите на страницу “https://domain.tld/maia/login.php?super=register” и залогинтесь под существующим виртуальным пользователем (Наиболее вероятно пользователем, которого вы добавили с помощью программы Postfixadmin ранее). Необходимо использовать полный адрес электронной почты в качестве логина в Maia-Mailguard. То есть: username@domain.tld. Этот пользователь получит привилегии администратора в Maia (Так что будьте осторожны с выбором пользователя).

Теперь, когда вы вошли в Maia-Mailguard как администратор, нажмите на ссылку “Admin” в верху страницы (Картинка ввиде ключа). В “Administration Menu” нажмите “System Configuration“. У каждого почтового сервера будут разные настройки. Однако, есть некоторые вещи, о которых Вы должны знать:

  1. Удостоверьтесь что *ВСЕ* имена файлов (За исключением изображения эмблемы) указаны с *ПОЛНЫМ ПУТЕМ*.
  2. Параметр “Mail size limit” не должен быть выше чем, параметр max_allowed_packet MySQL (10M в моем примере) в /var/db/mysql/my.cnf. Помните, что это значение указано в байтах. Так, для 10*1024*1024 имеем 1048576 (10M).

Важно

Для каждого домена, созданного при помощи Postfixadmin или любым другим способом, нужно создать домен в Maia, чтобы она могла создать пользователей. Это могло бы показаться избыточной проблемой, но оно действительно имеет значение и вот почему. Когда Maia получает почту для пользователя, который не существует, она использует настройки для домена по умолчанию (@.). Это прекрасно. Однако, если Maia считает, что письмо может быть спамом, то пользователь, не сможет восстановить это сообщение, так как установки по умолчанию не хранят карантин для несуществующих пользователей. Убедитесь, что добавили в Maia, все домены добавленные через PostfixAdmin.

Отредактируем /usr/local/etc/postfix/main.cf

    # Maia-Mailguard
    #
    content_filter=smtp-amavis:[127.0.0.1]:10024

    # LOCAL PATHNAME INFORMATION
    #
    # The queue_directory specifies the location of the Postfix queue.
    # This is also the root directory of Postfix daemons that run chrooted.
    # See the files in examples/chroot-setup for setting up Postfix chroot
    # environments on different UNIX systems.
    #
    queue_directory = /var/spool/postfix
    …

Отредактируем /usr/local/etc/postfix/master.cf

Добавьте красный текст в конец файла.

    smtp-amavis unix - - n - 2 smtp
      -o smtp_data_done_timeout=2400
      -o smtp_send_xforward_command=yes
      -o disable_dns_lookups=yes
      -o max_use=20
    127.0.0.1:10025 inet n - n - - smtpd
      -o content_filter=
      -o local_recipient_maps=
      -o relay_recipient_maps=
      -o smtpd_restriction_classes=
      -o smtpd_delay_reject=no
      -o smtpd_client_restrictions=permit_mynetworks,reject
      -o smtpd_helo_restrictions=
      -o smtpd_sender_restrictions=
      -o smtpd_recipient_restrictions=permit_mynetworks,reject
      -o mynetworks_style=host
      -o mynetworks=127.0.0.0/8
      -o strict_rfc821_envelopes=yes
      -o smtpd_error_sleep_time=0
      -o smtpd_soft_error_limit=1001
      -o smtpd_hard_error_limit=1000
      -o smtpd_client_connection_count_limit=0
      -o smtpd_client_connection_rate_limit=0
      -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

Перегрузите Postfix:

#postfix reload

Отредактируйте задания cron для пользователя “vscan”:

#crontab -u vscan -e

Скопируйте и вставьте в crontab пользователя vscan.

#Load new rules and store into Maia database.
30 4 * * * /var/amavisd/maia/scripts/load-sa-rules.pl > /dev/null
#Train Spam Assassin.
0 * * * * /var/amavisd/maia/scripts/process-quarantine.pl --learn --report > /dev/null
#Take a snapshot of the stats at the start of every hour.
0 * * * * /var/amavisd/maia/scripts/stats-snapshot.pl > /dev/null
#Purge mail that has not been confirmed.
0 23 * * * /var/amavisd/maia/scripts/expire-quarantine-cache.pl > /dev/null
#Send quarantine reminders.
0 15 * * * /var/amavisd/maia/scripts/send-quarantine-reminders.pl > /dev/null
#Send quarantine digests.
0 15 * * * /var/amavisd/maia/scripts/send-quarantine-digests.pl > /dev/null
#Force bayesian auto-expiry during off-peak hours.
25 2 * * * /usr/local/bin/sa-learn --sync --force-expire > /dev/null
назад Оглавление вперед