Настройка связки Postfix PostfixAdmin

postfix logoНастройка связки Postfix PostfixAdmin является альтернативой ручному созданию базы данных, а также её структуры, при желании использовать внешнее хранилище служебных данных для Postfix. В статье будут рассмотрены логические связки Postfix и MySQL.


Найти больше информации о Postfix вы можете в основной статье по его настройке — Настройка Postfix.


Введение

Для полноценного почтового сервера будет странным использовать системные учетные записи для отправки/доставки почты. Этому есть неплохая альтернатива — подключить отдельную базу данных MySQL для хранения в ней служебной информации. В ней могут храниться не только учетные данные пользователей, но и домены (особенно актуально, если ваш Postfix обслуживает несколько доменов), а также алиасы доменов и пользователей.

Нюанс в том, что начинающему администратору обычно не сразу удается разобраться в связке Postfix + MySQL. Не способствуют этому и множество конфигов в интернете, которые своими россыпями параметров только запутывают. Я же постараюсь выделить из конфига только нужны для настройки связки параметры, не заостряя внимание на других. При этом в рамках этой статьи не идет речь о 100% работающем конфиге на все случаи жизни. Есть ещё кучи настроек (например аутентификация, ведь пароли пользователей в базе хранятся обычно в зашифрованном виде), которые необходимо задать, чтобы ваш сервер заработал нормальным образом.

Настройка связки Postfix PostfixAdmin

Начнем с самого основного — установки пакетов

Установка пакетов

Устанавливаем необходимые пакеты, если их у вас ещё нет:

MySQL: во время установки будет запрос пароля пользователя root MySQL. Подробнее про MySQL и Postfix читайте в статье Установка MySQL для Postfix в ней же и рассмотрены сценарии использования связки Postfix+MySQL.

Postfix: во время установки будет запрошен вариант конфигурации. Если не знаете какой выбрать, оставьте отмеченный по умолчанию. Подробнее см. в статье Установка Postfix на Debian. В ней же описана и начальная настройка MTA.

PostfixAdmin: ставьте из пакетов, не надо мучений с исходниками.

Dovecot: все верно, он понадобится уже на этом этапе. В последующем все равно надо будет его устанавливать, сделаем это сейчас.

Настройка PostfixAdmin

Теперь о главном:

Идем в браузер по пути http://ip_адрес_сервера/postfixadmin/setup.php и задаем пароль установки. Вот так это все выглядит:

Настройка связки Postfix + PostfixAdmin 01

Пароль ставим любой (разумеется подумайте о криптостойкости), нажимаем на кнопку генерации хэша пароля, полученный хэш копируем, он понадобится далее:

Настройка связки Postfix + PostfixAdmin 02

Страницу не закрываем. Дальше все действия будут происходить в конфигурационном файле PostfixAdmin, для начала сделаем его бэкап:

Ну а теперь приступаем к редактированию:

Нужно изменить следующие параметры:

Снова идем в веб-интерфейс. На этот раз создаем аккаунт суперадмина:

  • Setup password — задаем ранее сохраненный пароль установки;
  • Администратор — имя ящика админа. В моем случае был admin@bissquit.com;
  • Пароль — пароль админа;
  • Пароль (еще раз) — повторяем пароль.

Нажимаем Add Admin.

Настройка связки Postfix + PostfixAdmin 03

Переходим на страницу http://ip_адрес_сервера/postfixadmin и вводим учетные данные только что созданного суперадминистратора.

Настройка связки Postfix + PostfixAdmin 04

В веб-интерфейсе добавляем:

  1. основной домен (снимаем галочку — Почтовый сервер является резервным MX, в Алиасы и Ящики выставляем любые нужные значения или оставляем как есть);
  2. почтовый ящик админа (после его создания нужно отредактировать алиасы основного домена, указав в поле Кому только что созданный ящик админа);
  3. домен-алиас (при необходимости. Обычно добавляют также адрес mx-записи — mail.domain.tld).

Смотрим что должно получиться:

Настройка связки Postfix + PostfixAdmin 05

На этом настройка PostfixAdmin заканчивается. Теперь надо как-то объяснить Postfix, что у него теперь вся конфигурация находится в MySQL.

Настройка Postfix

В чем суть: нужно создать несколько карт sql, с помощью которых Postfix будет вытягивать нужную ему информацию. При этом данные из MySQL будут нужны только для сравнения и больше ни для чего. Например приходит к нему письмо для получателя admin@bissquit.com:

  • он выполняет sql-запрос (обращаясь к карте), где условием where будет являться имя домена, на который пришло письмо;
  • MySQL ему возвращает результат, что да, такой домен в базе есть;
  • Postfix думает Отлично, значит я обслуживаю этот домен, значит почту надо принять, а теперь проверю ка я есть ли у меня такой получатель;
  • Следующий этап — проверка получателя и так далее.

Это всего лишь пример, призванный показать принцип работы, не заостряйте на нем внимание, лучше займемся созданием карт.

Для начала сделаем для них отдельный каталог:

Ну а теперь приступим непосредственно к картам. Сначала будет идти команда создания файла, потом будет его содержимое.

Напоминаю, что формат карт имеет вид параметр = значение. То есть после = все должно идти в одну строку. Для сведения — велосипед я не изобретал, эти карты — творение разработчиков PostfixAdmin, найти вы их сможете на sourceforge.net 1. Кстати, в большинстве случаев идейные противники PostfixAdmin нагло тырят эти самые карты (а ещё sql-дампы самой базы) и, поменяв пару параметров, выдают за свои творения, а потом ещё и говорят как плохо использовать PostfixAdmin. Юниксоиды такие юниксоиды. Без комментариев…

На всякий случай рекурсивно меняем владельца каталога и права доступа:

Пришло время дополнить конфиг Postfix. В принципе можно его предварительно забэкапить:

Открываем файл:

Дополняем его:

На этом настройка связки завершена.

Вывод

В статье рассмотрен вариант хранения всей служебной информации (списки доменов, пользователей, алиасов и т.п.) Postfix в отдельной базе данных MySQL. База может быть создана как вручную, так и автоматически с помощью PostfixAdmin. Второй вариант более простой, удобный в администрировании и разграничении прав доступа. Тем не менее по первому пути стоит пройти хотя бы для того, чтобы лучше понимать как все устроено.

Хочу напомнить, что настроив свой почтовый сервер точно по статье, вероятнее всего он у вас не взлетит. Как минимум потому, что не настроена аутентификация (напоминаю, что учетные данные в базе хранятся в зашифрованном виде и это явно задано в конфиге PostfixAdmin — $CONF[‘encrypt’] = ‘dovecot:CRAM-MD5’;). Дело в том, что эта статья призвана скорее показать принцип работы, чем дать читателю работающий конфиг.

Работающий конфиг будет выложен в последних статьях про настройку Postfix + Dovecot + PostfixAdmin + MySQL.


UPD 08.06.2016: а вот и оттестированные конфиги как и обещал:

Позже будут ещё.


comments powered by HyperComments