Postfix: Установка почтового сервера Linux Debian + 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 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 но адаптировать под любой дистрибутив не составляет сложности.

Запись опубликована в рубрике Администрирование. Добавьте в закладки постоянную ссылку.

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

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

*

code