Установка MySQL для Postfix

Установка MySQL для Postfix

http://www.mysql.com/

Установка MySQL для Postfix потребуется в том случае, если вы решили хранить учетные записи пользователей, записи виртуальных доменов и алиасов в отдельной базе данных. Это весьма неплохая затея, если в будущем ваш почтовый сервер будет обслуживать множество доменов или общее количество пользователей возрастет до десятков или даже сотен штук. Вполне возможны и другие ситуации, когда отдельная СУБД будет очень полезна.

Во введении идут рассуждения, рассматриваются лучшие практики. Если хотите сразу к делу — переходите к следующей главе.


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


Введение

Плюсы использования отдельного хранилища всей информации о пользователях/доменах/алиасах для многих очевидны, но все же:

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

В таком случае может возникнуть вопрос когда связка Postfix + СУБД (в моем примере MySQL) не будет актуальна однозначно. Вопрос действительно важный, ведь любой администратор может оказаться на распутье во время развертывания почтового сервера, когда у него в голове будут закрадываться сомнения — «у меня сейчас пара юзеров, но кто его знает что будет через месяц/год. Может быть разумнее подцепить СУБД сейчас, чтобы избавиться от проблем в будущем?«.

На мой взгляд, лишним прикручивание MySQL к Postfix будет только в том случае, если основная роль для целевого сервера будет отличаться от почтового. Например вам нужно настроить рассылку почты с веб-ресурса и для этих целей вы поднимаете на нем MTA (Postfix). Его задача — просто отправка пользователям электронной почты с учетными данными к ресурсу (при регистрации или восстановлении пароля). В этом случае польза от связки с СУБД будет выглядеть сомнительно.

Даже если в будущем вы поднимите полноценный почтовый сервер на своем веб-сервере, это будет само по себе отвратительное решение, ведь крайне не рекомендуется миксовать роли на одном хосте. Из очевидных минусов:

  • увеличение требований производительности;
  • сложность масштабирования и прогнозирования развития из-за неоднородной нагрузки от каждой роли;
  • снижение уровня безопасности и как следствие увеличение поверхности атаки;
  • и многие другие…

Я веду к тому, что если у вас на сервере уже есть одна основная роль, то вероятнее всего вы не будете (в трезвом уме) на нем разворачивать ещё и полноценный почтовый сервер, а значит связка MySQL + Postfix вам в принципе не понадобится. Во всех остальных случаях я все же бы не оставил почтовый сервер без такого неплохого задела на будущее.

Установка MySQL для Postfix

Установка для Postfix не отличается от обычной:

apt-get install mysql-server mysql-client

Придумываем пароль для пользователя root MySQL:

img-2016-05-20-13-25-34

Повторяем его:

img-2016-05-20-13-25-52

На этом установка завершена.

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

Минусы второго очевидны:

  • абсолютно неподдерживаемая конфигурация (вашим коллегам или последователям придется разбираться в ваших же замысловатых таблицах БД и скриптах, их использующих. И хорошо, если разберутся);
  • в большинстве случаев даже очень опытный системный администратор не может похвастаться теми знаниями, которые получили разработчики продукта в процессе его многолетней разработки, отладки, тестирования и адаптации. Говоря проще — кривые руки никто не отменял и от версии к версии софта ценность ваших наработок может обнулиться, а кроме разработчиков никто не будет знать их же софт лучше;
  • риски для бизнеса. Да, есть и такое. В принципе этот пункт вытекает из первого.

Кстати, куча уникумов на блогах в интернете выдают немного отредактированную структуру БД PostfixAdmin за свои творения. При этом непонятно чем их решение лучше оригинального. Стыд и позор в общем.

Если решили идти по второму пункту, вот вам небольшой список команд отправной точки — создания вашей БД:

mysql -uroot -p
Enter password: тут введите пароль от пользователя root MySQL
mysql> CREATE DATABASE mail_db01;
mysql> CREATE USER 'mail_user01'@'localhost' IDENTIFIED BY 'пароль_юзера';
mysql> GRANT ALL PRIVILEGES ON mail_db01.* TO 'mail_user01'@'localhost';
mysql> FLUSH PRIVILEGES;

mysql> USE mail_db01;

После последней команды создавайте необходимые таблицы.

После установки СУБД на всякий случай проверьте появилась ли поддержка карт MySQL со стороны Postfix (к этому моменту он уже должен быть установлен):

postconf -m

img-2016-05-16-10-32-41

На этом, кажется, все.

Вывод

Использование отдельных баз данных для хранения служебной информации Postfix является отличной стратегией для гибко масштабируемых решений. К тому же эти базы вы сможете использовать при подвязке других компонентов (например Dovecot).

Мой вам совет — поставьте MySQL+PostfixAdmin. Радикально плохого в этой связке ничего нет, PostfixAdmin уже давно зарекомендовал себя.

comments powered by HyperComments