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

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

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

PostfixAdmin - отличная программа для редактирования ваших почтовых доменов и пользователей. Она имеет много опций и упрощает настройку программы. Больше узнать о программе можно на официальном сайте http://sourceforge.net/projects/postfixadmin/.
В руководстве описана установка программы версии 2.2.1.1.

Установка Postfixadmin из портов

#cd /usr/ports/mail/postfixadmin
#make all install clean

Не забудьте в меню установки выбрать параметр “MYSQLI”.

Создадим базуPostfixAdmin

#mysql -u root -p
(Enter MySQL root password)
>CREATE DATABASE postfix;
>CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix_sql_password';
>GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
>FLUSH PRIVILEGES;

Защитим файлы PostfixAdmin

#cd /usr/local/www/postfixadmin
#find . -type f -exec chmod 640 {} \;
#find . -type d -exec chmod 750 {} \;

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

$CONF['configured'] = true;
$CONF['postfix_admin_url'] = 'https://www.domain.tld/postfixadmin/';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfix_sql_password';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';
$CONF['admin_email'] = 'postmaster@domain.tld';
$CONF['default_aliases'] = array (
        'abuse' => 'abuse@domain.tld',
        'hostmaster' => 'hostmaster@domain.tld',
        'postmaster' => 'postmaster@domain.tld',
        'webmaster' => 'webmaster@domain.tld'
);
$CONF['generate_password'] = 'NO';
$CONF['page_size'] = '20';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['aliases'] = '50';
$CONF['mailboxes'] = '50';
$CONF['maxquota'] = '1024';
$CONF['quota'] = 'YES';
$CONF['quota_multiplier'] = '1048576';
$CONF['transport'] = 'NO';
$CONF['vacation'] = 'YES';
$CONF['vacation_domain'] = 'autoreply.domain.tld';
$CONF['alias_control_admin'] = 'YES';
$CONF['special_alias_control'] = 'YES';
$CONF['show_header_text'] = 'YES';
$CONF['header_text'] = ':: Postfix Admin ::';
$CONF['show_footer_text'] = 'YES';
$CONF['footer_text'] = 'Return to domain.tld';
$CONF['user_footer_link'] = 'http://www.domain.tld/';
$CONF['welcome_text'] = <<Hello,

Welcome to your new email account!

For questions or comments regarding your mail account,
please feel free to send an email to support@domain.tld.
Likewise, any other inqueries regarding ISP NAME or their
affiliates can be sent to the same address.

Also, don't forget to check your mail settings via Maia-
Mailguard located at https://www.domain.tld/maia-mailguard/.
Simply log into your account using your email address
and password. That's it! From Maia-Mailguard, you can
adjust your spam, virus, malware, whitelists, blacklists,
etc... This will put you in full control of your email so
you never miss anything important.

Thank you for using ISP NAME and enjoy your new email
account!

Regards,
ISP NAME Staff
support@domain.tld
EOM;
?>
$CONF['emailcheck_resolve_domain']='NO';

Создадим пользователя и группу Vacation

#pw groupadd vacation
#pw useradd vacation -c Virtual\ Vacation -d /nonexistent -g vacation -s /sbin/nologin

Создадим, наполним и обезопасим директорию vacation

#mkdir /var/spool/vacation
#cp /usr/local/www/postfixadmin/VIRTUAL_VACATION/vacation.pl /var/spool/vacation/
#chown -R vacation:vacation /var/spool/vacation/
#chmod 700 /var/spool/vacation/
#chmod 750 /var/spool/vacation/vacation.pl
#touch /var/log/vacation.log /var/log/vacation-debug.log
#chown vacation:vacation /var/log/vacation*

Отредактируем скрипт /var/spool/vacation/vacation.pl

my $db_type = 'mysql';
our $db_host = 'localhost';
our $db_user = 'postfix';
our $db_pass = 'postfix_sql_password';
our $db_name = 'postfix';
our $vacation_domain = 'autoreply.domain.tld';
our $smtp_server = 'localhost';
our $smtp_server_port =25;
our $logfile = "/var/log/vacation.log";    # specify a file name here for example: vacation.log
our $debugfile = "/var/log/vacation-debug.log";  # sepcify a file name here for example: vacation.debug
our $syslog = 1;   # 1 if log entries should be sent to syslog

Добавим vacation фильтр в файл /usr/local/etc/postfix/master.cf:

Добавим в начало файла

vacation  unix  -       n       n       -       -       pipe
  flags=DRhu user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} ${recipient}

Добавим для vacation транспорт в файл /usr/local/etc/postfix/main.cf:

...
# TRANSPORT MAP
#
# See the discussion in the ADDRESS_REWRITING_README document.
transport_maps = hash:/usr/local/etc/postfix/transport
vacation_destination_recipient_limit = 1
...

Добавим в файл /usr/local/etc/postfix/transport

#echo 'autoreply.domain.tld vacation:' >> /usr/local/etc/postfix/transport

Создадим для Postfix базу транспорт

#postmap /usr/local/etc/postfix/transport

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

Alias /postfixadmin/ "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin/">
   Options Indexes
   AllowOverride AuthConfig
   Order allow,deny
   Allow from all
</Directory>

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

#apachectl configtest
#apachectl graceful

Запустим необходимые приложения

#/usr/local/etc/rc.d/mysql-server start
#/usr/local/etc/rc.d/dovecot start
#/usr/local/etc/rc.d/postfix start

Замечание:

Проверьте файлы /var/log/maillog и /var/log/messages на отсутствие ошибок.

Если вы получаете ошибку в журналах о $mydestination, проверьте чтобы _НИКАКИЕ_ ‘виртуальные’ домены которые вы хостите _НЕ БЫЛИ БЫ_ в списке в файле /etc/hosts. Очевидно проблема возникает из за того что Postfix не может определить виртуален домен или нет. (Спасибо Валентину)

Протестируем и назначим администратора PostfixAdmin.

Посетите страничку “http://domain.tld/postfixadmin/. Нажмине ссылку “setup” в тексте и посмотрите вывод, для того чтобы не возникло проблем. Сначала вам будет предложено ввести почтовый адрес и пароль для учетной записи ‘Administror’ в PostfixAdmin. Можно использовать любой адрес и пароль. После того как мы добавили учетную запись ‘Administrator’, “Все кажется прекрасным… вы готовы танцевать rock & roll!”Удалите файл /usr/local/www/postfixadmin/setup.php (или переместите куда нибудь).

Добавим домен и пользователя в Postfix

Откроем страничку “http://domain.tld/postfixadmin/”
Введем имя пользователя и пароль для PostfixAdmin, указанный нами при установке. Выберем “Domain List”, “New Domain“ и заполним нужные поля. Дальше нажмите “Virtual List”, “Add Mailbox“ и заполните нужные поля.

Подключимся telnet к localhost на 25 порт:

#telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.domain.tld.
Escape character is ‘^]’.
220 test.domain.tld ESMTP Postfix
EHLO test.com
250-test.domain.tld
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
STARTTLS
220 2.0.0 Ready to start TLS
quit
quit

Подключимся telnet к localhost на 465 порт:

#telnet localhost 465
Trying 127.0.0.1…
Connected to host.domain.tld.
Escape character is ‘^]’.
quit
quit

Замечание:

Вы ничего не увидите, подключившись к 465 порту, так как для работы требуется SSL шифрование, а вы не используете его прямо сейчас. Если соединение установилось, уже хорошо. Дальнейшую проверку можно произвести клиентом умеющим SSL для SMTP.

Подключимся telnet к localhost на 110 порт:

#telnet localhost 110
Connected to host.domain.tld.
Escape character is ‘^]’.
+OK ISP Mail Server Ready.
user user@domain.tld (Use the account you created via the web interface)
+OK
pass password (Use password you just created for above user)
+OK Logged in.
list
+OK 1 messages:
1 844
.
quit
+OK Logging out
Connection closed by foreign host.

Проверьте свой лог файл /var/log/maillog на наличие ошибок. Если нет ни одной, примите мои поздравления. Вы закончили установку Postfix с виртуальными пользователями и доменами.

Внимание!!! У меня не заработал скрипт vacation.pl. Не хватало:

#cd /usr/ports/mail/p5-MIME-EncWords
#make install clean
#cd /usr/ports/mail/p5-Email-Valid
#make install clean
#cd /usr/ports/mail/p5-Mail-Sender
#make install clean
#cd /usr/ports/devel/p5-Log-Log4perl
#make install clean
#cd /usr/ports/devel/p5-Log-Dispatch
#make install clean

Не забудьте поставить галку MAIL-SENDER

В файл /etc/hosts добавить:

127.0.0.1 autoreply.domain.tld

Подробнее о vacation смотрите в файле /usr/local/www/postfixadmin/VIRTUAL_VACATION/INSTALL.TXT

Еще возможности PostfixAdmin http://www.sergeysl.ru/freebsd-postfixadmin/

Также рекомендую посмотреть Postfixadmin, сбор почты скриптом fetchmail.pl
Найдена ошибка в скрипте mkeveryone.pl.
Чтобы заработали домены алиасы, создаваемые в Postfixadmin читайте заметку alias_domain в Postfixadmin

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