Головна
Частина 6. Альтернативні методи збереження налаштувань користувачів. Використання MySQL.
- Деталі
- Категорія: Поштовий сервер
- Опубліковано: Четвер, 13 червня 2019, 13:01
- Автор: Super User
- Перегляди: 4261
Облікові дані користувачів можна зберігати у базі даних. Для цього підходить 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"
В електронному вигляді