В данной статье продемонстрирована базовая настройка связки Postfix + Dovecot + MySQL с поддержкой безопасных соединений. Статья написана с учетом того, что вы работаете с правами суперпользователя (root).
Большую часть пакетов в процессе настройки мы будем устанавливать с помощью Aptitude с загрузкой из сети. Для начала, нам нужно обновить базу данных пакетов:
# apt-get update
1. Установка MySQL-сервера и средств администрирования (phpMyAdmin)
Поскольку управлять доменами и почтовыми ящиками удобнее с помощью Postfix Admin, требуется поставить Web-сервер Apache и PHP. Плюс — работать с базами данных MySQL удобнее с использованием phpMyAdmin. Соответственно, ставим необходимые пакеты:
# apt-get install apache2 php5 mysql-server # apt-get install phpmyadmin
В итоге, будут установлены требуемые пакеты с учетом зависимостей.
Лучше соблюдать приведенную последовательность команд, поскольку в некоторых версиях Linux Debian при одновременной установке apache2 и phpmyadmin, последний — не регистрировался в хосте по-умолчанию. Однако, если планируется phpmyadmin реализовать в виде отдельного виртуального хоста, последовательность команд не критична.
2. Установка PostfixAdmin
В используемом мной дистрибутиве в списке стандартных пакетов Aptitude отсутствует PostfixAdmin, поэтому качаем его с сайта производителя и устанавливаем вручную. На момент написания статьи последняя версия 2.3. Если с сайта производителя не удается скачать, можно взять с моего сайта: postfixadmin-2.3.2_all.
Устанавливаем скачанный пакет:
# dpkg -i postfixadmin-2.3.2_all.deb
Если установщик выдаст ошибку зависимостей, т.е. не хватает пакетов, нужно просто дать еще одну команду:
# apt-get -f install
В результате будут установлены все зависимые пакеты, включая и Postfixadmin. В процессе настройки надо отметить apache2 для запуска Postfixadmin.
В ходе настройки базы данных необходимо задать пароль администратора MySQL, который был задан на первом этапе (см.п.1), а потом задать пароль для пользователя postfixadmin. Для примера я использовал 123456.
3. Настройка PostfixAdmin
На данном этапе наша задача настроить подключение PostfixAdmin к базе данных, зарегистрировать домен и несколько почтовых ящиков для нового домена.
Проверяем создала ли конфигурационная утилита базу данных и пользователя для нашего PostfixAdmin. Для этого заходим через phpMyAdmin на сервер MySQL. При установке по-умолчанию phpMyAdmin работает по адресу http://ВашХост/phpmyadmin. В списке баз данных должна быть БД postfixadmin. Не пугайтесь, что она пустая. Структура таблиц будет создана позже во время настройки подключения к БД самого PostfixAdmin. Так же в списке пользователей должен быть пользователь с идентификатором postfixadmin. Если этого нет, то необходимо создать БД и пользователя с максимальными правами доступа к этой БД.
К сожалению, конфигурационная утилита установки пакета не изменяет параметров файла config.inc.php, даже если с ее помощью создается БД. Конфигурационный файл PostfixAdmin находится в каталоге /etc/postfixadmin/config.inc.php. Изменяем параметры в данном файле в соответствии с приведенным ниже кодом:
$CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = '123456'; $CONF['database_name'] = 'postfixadmin'; $CONF['database_prefix'] = '';
Изменим алгоритм шифрования пароля заданный по-умолчанию в PostfixAdmin:
$CONF['encrypt'] = 'md5';
Обращаемся к процедуре настройки http://ВашХост/postfixadmin/setup.php. Если ошибок не обнаружено, внизу страницы появится запрос на создание пароля установки. Этот пароль используется для создания администраторов. После указания пароля и нажатия на кнопку Generate password hash, должна появится строка вида:
$CONF['setup_password'] = '272aa1a6bdc0...283ac11e57';
В файле config.inc.php необходимо найти соответствующий параметр и заменить этой строкой, только после этого можно будет создать администратора.
4. Установка и настройка Postfix
Устанавливаем
# apt-get install postfix postfix-mysql dovecot-common dovecot-imapd dovecot-pop3d openssl
После установки, чтоб предотвратить мешанину из конфигурационных файлов, в папке /etc/postfix создаем подпапку mysql. В ней будут храниться файлы запросов почтового сервера к БД. В этой папке создадим три конфигурационных файла:
4.1. virtual-alias-maps.cf
user = postfixadmin password = 123456 hosts = 127.0.0.1 dbname = postfixadmin query = select `goto` from `alias` where `address` = '%s'
4.2. virtual-mailbox-domains.cf
user = postfixadmin password = 123456 hosts = 127.0.0.1 dbname = postfixadmin query = select 1 from `domain` where `domain` = '%s'
4.3. virtual-mailbox-maps.cf
user = postfixadmin password = 123456 hosts = 127.0.0.1 dbname = postfixadmin query = select 1 from `mailbox` where `username` = '%s'
Создаем пользователя и группу, которые будут отвечать за почту, точнее за почтовые ящики:
groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /home/vmail -m
Postfix имеет удобный скрипт для управления конфигурационным файлом. Этот скрипт избавляет от необходимости искать директивы вручную. Теперь, используя этот скрипт, зададим конфигурацию для Postfix.
postconf -e virtual_mailbox_domains= mysql:/etc/postfix/mysql/virtual-mailbox-domains.cf postconf -e virtual_mailbox_maps= mysql:/etc/postfix/mysql/virtual-mailbox-maps.cf postconf -e virtual_alias_maps= mysql:/etc/postfix/mysql/virtual-alias-maps.cf postconf -e virtual_uid_maps=static:5000 postconf -e virtual_gid_maps=static:5000 postconf -e virtual_transport=dovecot postconf -e dovecot_destination_recipient_limit=1 postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem postconf -e smtpd_use_tls=yes postconf -e smtpd_sasl_type=dovecot postconf -e smtpd_sasl_path=private/auth postconf -e smtpd_sasl_auth_enable=yes postconf -e smtpd_recipient_restrictions= permit_sasl_authenticated,reject_unauth_destination
Итоговым аккордом настройки Postfix будет добавление Dovecot интерфейса. Для этого в файл /etc/postfix/master.cf добавляем две строчки:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
5. Настройка безопасного соединения TLS/SSL
На данном этапе мы создаем ключи и сертификаты для Postfix и Dovecot. Процедура проста, как гвоздь: даем пару команд и отвечаем на заданные вопросы:
openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem chmod o= /etc/ssl/private/dovecot.pem openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem chmod o= /etc/ssl/private/postfix.pem
В результате должны появится 4 файла: /etc/ssl/certs/dovecot.pem, /etc/ssl/private/dovecot.pem, /etc/ssl/certs/postfix.pem и /etc/ssl/private/postfix.pem. И не забываем дать права доступа на полученные файлы.
6. Настройка Dovecot
Конфигурационные файлы Dovecot находятся в /etc/dovecot.
6.1. dovecot.conf
Находим перечисленные ниже директивы и приводим их к заданному виду:
protocols = imap imaps pop3 pop3s disable_plaintext_auth = no mail_location = maildir:/home/vmail/%d/%n namespace private { separator = . prefix = INBOX. inbox = yes } mechanisms = plain login passdb sql { args = /etc/dovecot/dovecot-sql.conf } userdb static { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes } socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 user = vmail } client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } protocol lda { postmaster_address = postmaster@ВашДомен.ru auth_socket_path = /var/run/dovecot/auth-master mail_plugins = sieve log_path = /home/vmail/dovecot-deliver.log global_script_path = /home/vmail/globalsieverc }
6.2. dovecot-sql.conf
Настраиваем связку Dovecot с MySQL. Точно так же находим перечисленные ниже директивы и приводим их к заданному виду:
driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=123456 default_pass_scheme = PLAIN-MD5 password_query = SELECT username as user, password FROM mailbox WHERE username = '%u'
7. Завершение
Postfix и Dovecot настроены. Теперь перезапускаем и тот и другой:
# /etc/init.d/dovecot restart # postfix reload
Если все сделано без ошибок, то в файле /var/log/mail.log должны появиться строки:
mail dovecot: Dovecot v1.0.15 starting up mail dovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (postfixadmin)
Журналы ошибок и вообще результаты деятельности почтовой системы лежат в файлах:
- /var/log/mail.log
- /var/log/mail.err
- /var/log/mail.info
- /var/log/mail.warn
Тема настройки почтовой системы далее будет расширена подключением Web-интерфейса почты, подключение антивирусной программы, борьба со спамом.
Удачной настройки.
Написано под Debian но адаптировать под любой дистрибутив не составляет сложности.