Установка почтового сервера Postfix на Ubuntu в связке Postfix + Dovecot + MySQL

Автор Itworkroom

Установка почтового сервера 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 = 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. Обычно для настройки параметров, дабы не вводить это все каждый раз вручную, я создаю отдельный скрипт. Назовем его postfix-myconf.sh:

#!/bin/sh
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/cert/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-интерфейса почты, подключение антивирусной программы, борьба со спамом.

Удачной настройки.

8. Возможные проблемы и способы их решения

В логах ошибка: postfix fatal: open database /etc/aliases.db: no such file or directory

Решение:

Генерируем aliases.db с использованием скрипта postalias:

# postalias /etc/aliases /etc/aliases.db

В результате создадутся необходимые файлы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *