Головна

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

До переліку статей циклу

Облікові дані користувачів можна зберігати у базі даних. Для цього підходить 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 (Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.','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"

В електронному вигляді

Придбати

 

 

Додати коментар

Захисний код
Оновити