Установка почтового сервера Postfix на Ubuntu в связке Postfix + Dovecot + MySQL
Установка почтового сервера Postfix на Ubuntu в связке Postfix + Dovecot + MySQL
В данной статье продемонстрирована базовая настройка связки 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 при одновременной установке apache2 и phpmyadmin, последний — не регистрировался в хосте по-умолчанию.
2. Установка PostfixAdmin
В используемом мной дистрибутиве в списке стандартных пакетов Aptitude отсутствует PostfixAdmin, поэтому качаем его с сайта производителя и устанавливаем вручную. На момент написания статьи последняя версия 2.3.
Устанавливаем скачанный пакет:
# 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 = postfixadminpassword = 123456hosts = 127.0.0.1dbname = postfixadminquery = select `goto` from `alias` where `address` = '%s'4.2. virtual-mailbox-domains.cf
user = postfixadminpassword = 123456hosts = 127.0.0.1dbname = postfixadminquery = select 1 from `domain` where `domain` = '%s'4.3. virtual-mailbox-maps.cf
user = postfixadminpassword = 123456hosts = 127.0.0.1dbname = postfixadminquery = select 1 from `mailbox` where `username` = '%s'Создаем пользователя и группу, которые будут отвечать за почту, точнее за почтовые ящики:
# groupadd -g 5000 vmail# useradd -g vmail -u 5000 vmail -d /home/vmail -mPostfix имеет удобный скрипт для управления конфигурационным файлом. Этот скрипт избавляет от необходимости искать директивы вручную. Теперь, используя этот скрипт, зададим конфигурацию для Postfix. Обычно для настройки параметров, дабы не вводить это все каждый раз вручную, я создаю отдельный скрипт. Назовем его postfix-myconf.sh:
#!/bin/shpostconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql/virtual-mailbox-domains.cfpostconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql/virtual-mailbox-maps.cfpostconf -e virtual_alias_maps=mysql:/etc/postfix/mysql/virtual-alias-maps.cfpostconf -e virtual_uid_maps=static:5000postconf -e virtual_gid_maps=static:5000postconf -e virtual_transport=dovecotpostconf -e dovecot_destination_recipient_limit=1postconf -e smtpd_tls_cert_file=/etc/ssl/cert/postfix.pempostconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pempostconf -e smtpd_use_tls=yespostconf -e smtpd_sasl_type=dovecotpostconf -e smtpd_sasl_path=private/authpostconf -e smtpd_sasl_auth_enable=yespostconf -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 pop3sdisable_plaintext_auth = nomail_location = maildir:/home/vmail/%d/%nnamespace private { separator = . prefix = INBOX. inbox = yes}mechanisms = plain loginpassdb 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 = mysqlconnect = host=127.0.0.1dbname=postfixadmin user=postfixadmin password=123456default_pass_scheme = PLAIN-MD5password_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 upmail 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-интерфейса почты, подключение антивирусной программы, борьба со спамом.
Удачной настройки.
8. Возможные проблемы и способы их решения
В логах ошибка: postfix fatal: open database /etc/aliases.db: no such file or directory
Решение:
Генерируем aliases.db с использованием скрипта postalias:
# postalias /etc/aliases /etc/aliases.dbВ результате создадутся необходимые файлы.
0