Частина 6. Альтернативні методи збереження налаштувань користувачів. Використання MySQL.

Налаштування поштового сервера на базі Postfix, Dovecot та RoundCube. Зміст



Облікові дані користувачів можна зберігати у базі даних. Для цього підходитьPostgreSQL та MySQL.

Розглянемо використання MySQL, як більш популярний варіант

Налаштування в MySQL

Зайдемо в MySQL з правами root

$ mysql -uroot -p

Створимо базу даних з іменем maildata для поштової системи

mysql> Create DATABASE maildata;

Створимо користувача mail з паролем mail та надамо йому повний доступ до нашої бази

mysql> GRANT all ON maildata.* TO 'mail'@'localhost' IDENTIFIED BY 'mail';

Перейдемо до щойно створеної бази

mysql> use maildata;

та створимо таблицю користувачів, де будуть зберігатися email-адреса (вона ж логін користувача), пароль цього користувача та закінчення шляху до його поштової теки.

mysql> CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, path varchar(80) NOT NULL, PRIMARY KEY(email));

Також створимо таблицю псевдонімів:

mysql> CREATE TABLE aliase (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY(source));

Значення полів аналогічні тим, як ми зберігали їх у файлах.

Тепер заповнимо ці таблиці тестовими даними:

mysql> insert into users (email,password,path) values ('admin@study.local','admin','study.local/admin/');

mysql> insert into aliase (source,destination) values ('postmaster@study.local','admin@study.local');

Всі попередні налаштування не обов'язково робити з командного рядка. Все це можна виконати за допомогою веб-інтерфейсу, наприклад phpMyAdmin.

Налаштування Postfix

Встановимо підтримку MySQL Postfix'ом

# apt install postfix-mysql

Додамо в файл /etc/postfix/main.cf підтримку даних в базі MySQL

virtual_alias_maps = hash:/etc/postfix/virtual mysql:/etc/postfix/aliase.cf

virtual_mailbox_maps = hash:/etc/postfix/vmailbox mysql:/etc/postfix/box-sql.cf

Зверніть увагу на те, що не обов'язково відключати попередні файли даних. Postfixможе одночасно використовувати декілька джерел даних.

Створимо файл обробки псевдонімів /etc/postfix/aliase.cf і запишемо в нього

user = mail # Логін

password = mail # Пароль

dbname = maildata # Назва БД

hosts = 127.0.0.1 # Хост з БД

query = SELECT destination FROM aliase WHERE source = '%s' # SQL запит для обробки псевдонімів

Також створимо файл /etc/postfix/box-sql.cf для обробки адрес отримувачів

user = mail # Логін

password = mail # Пароль

dbname = maildata # Назва БД

hosts = 127.0.0.1 # Хост з БД

query = SELECT path FROM users WHERE email = '%s' # SQL запит для обробки адрес поштових скриньок

Налаштування Dovecot

Для того, щоб Dovecot міг звертатися за даними користувачів до MySQL,треба встоновити додатковий пакет

# apt install dovecot-mysql

Розкоментуємо в файлі /etc/dovecot/conf.d/10-auth.conf рядок

!include auth-sql.conf.ext

Зверніть увагу — Dovecot, як і Postfix може одночасно використовувати декілька баз користувачів.

Далі у файл /etc/dovecot/dovecot-sql.conf.ext треба внести рядки

driver = mysql

# параметри з'єднання з сервером БД

connect = host=localhost dbname= maildata user=mail password=mail

default_pass_scheme = PLAIN #паролі зберігаємо у відкритому вигляді

# рядки SQL-запитів

password_query = SELECT email AS email,password FROM users WHERE email = '%u'

user_query = SELECT email AS user, '5000' AS uid, '5000' AS gid FROM users WHERE email = '%u'

Тепер можна використовувати базу MySQL як сховище налаштувань користувачів та поштових псевдонімів.

Налаштування поштового сервера на базі Postfix, Dovecot та RoundCube. Зміст

Возврат к списку