Установка MySQL для Postfix потребуется в том случае, если вы решили хранить учетные записи пользователей, записи виртуальных доменов и алиасов в отдельной базе данных. Это весьма неплохая затея, если в будущем ваш почтовый сервер будет обслуживать множество доменов или общее количество пользователей возрастет до десятков или даже сотен штук. Вполне возможны и другие ситуации, когда отдельная СУБД будет очень полезна.
Во введении идут рассуждения, рассматриваются лучшие практики. Если хотите сразу к делу – переходите к следующей главе.
Найти больше информации о Postfix вы можете в основной статье по его настройке – Настройка Postfix.
Введение
Плюсы использования отдельного хранилища всей информации о пользователях/доменах/алиасах для многих очевидны, но все же:
- почти неограниченный уровень масштабирования;
- удобство администрирования;
- более гибкие возможности разграничения прав доступа.
В таком случае может возникнуть вопрос когда связка Postfix + СУБД (в моем примере MySQL) не будет актуальна однозначно. Вопрос действительно важный, ведь любой администратор может оказаться на распутье во время развертывания почтового сервера, когда у него в голове будут закрадываться сомнения – “у меня сейчас пара юзеров, но кто его знает что будет через месяц/год. Может быть разумнее подцепить СУБД сейчас, чтобы избавиться от проблем в будущем?“.
На мой взгляд, лишним прикручивание MySQL к Postfix будет только в том случае, если основная роль для целевого сервера будет отличаться от почтового. Например вам нужно настроить рассылку почты с веб-ресурса и для этих целей вы поднимаете на нем MTA (Postfix). Его задача – просто отправка пользователям электронной почты с учетными данными к ресурсу (при регистрации или восстановлении пароля). В этом случае польза от связки с СУБД будет выглядеть сомнительно.
Даже если в будущем вы поднимите полноценный почтовый сервер на своем веб-сервере, это будет само по себе отвратительное решение, ведь крайне не рекомендуется миксовать роли на одном хосте. Из очевидных минусов:
- увеличение требований производительности;
- сложность масштабирования и прогнозирования развития из-за неоднородной нагрузки от каждой роли;
- снижение уровня безопасности и как следствие увеличение поверхности атаки;
- и многие другие…
Я веду к тому, что если у вас на сервере уже есть одна основная роль, то вероятнее всего вы не будете (в трезвом уме) на нем разворачивать ещё и полноценный почтовый сервер, а значит связка MySQL + Postfix вам в принципе не понадобится. Во всех остальных случаях я все же бы не оставил почтовый сервер без такого неплохого задела на будущее.
Установка MySQL для Postfix
Установка для Postfix не отличается от обычной:
1 2 3 |
apt-get install \ mysql-server \ mysql-client |
Придумываем пароль для пользователя root MySQL:
Повторяем его:
На этом установка завершена.
Дальше вам надо решить будете ли вы пользоваться PostfixAdmin, который сам создаст структуру и даже поможет наполнить её начальными данными, или же вы любите хардкор и уже находитесь в предвкушении изобретения собственного велосипеда. Под вторым вариантом подразумевается ручное создание всей необходимой структуры и адаптирование в последующем под неё скриптов для вытаскивания данных. В принципе я проходил оба пути.
Минусы второго очевидны:
- абсолютно неподдерживаемая конфигурация (вашим коллегам или последователям придется разбираться в ваших же замысловатых таблицах БД и скриптах, их использующих. И хорошо, если разберутся);
- в большинстве случаев даже очень опытный системный администратор не может похвастаться теми знаниями, которые получили разработчики продукта в процессе его многолетней разработки, отладки, тестирования и адаптации. Говоря проще – кривые руки никто не отменял и от версии к версии софта ценность ваших наработок может обнулиться, а кроме разработчиков никто не будет знать их же софт лучше;
- риски для бизнеса. Да, есть и такое. В принципе этот пункт вытекает из первого.
Кстати, куча уникумов на блогах в интернете выдают немного отредактированную структуру БД PostfixAdmin за свои творения. При этом непонятно чем их решение лучше оригинального. Стыд и позор в общем.
Если решили идти по второму пункту, вот вам небольшой список команд отправной точки – создания вашей БД:
1 |
mysql -uroot -p |
1 2 3 4 5 6 7 |
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 (к этому моменту он уже должен быть установлен):
1 |
postconf -m |
На этом, кажется, все.
Вывод
Использование отдельных баз данных для хранения служебной информации Postfix является отличной стратегией для гибко масштабируемых решений. К тому же эти базы вы сможете использовать при подвязке других компонентов (например Dovecot).
Мой вам совет – поставьте MySQL+PostfixAdmin. Радикально плохого в этой связке ничего нет, PostfixAdmin уже давно зарекомендовал себя.