Недавно разбирался как поднять почтовый сервер на Postfix в связке с Dovecot, для памяти опишу как поднять такой сервер на Debian 10. Все действия ниже будут выполняться от root.
Настройка DNS записей
# Добавляем DNS-записи для вашего почтового сервера:
@ MX 10 mail.example.com.
mail A 192.168.1.10
Настройка системы
# Задаем имя системы (mail
) в файле (/etc/hostname
):
echo mail > /etc/hostname
# Указываем в файле (/etc/hosts
) строку содержащую IP-адрес с полным доменным именем (FQDN).
127.0.0.1 localhost
192.168.1.10 mail.example.com mail
[stextbox id=’info’]ИНФОРМАЦИЯ: В приведенном выше примере 192.168.1.10
— это IP-адрес машины, mail
— это имя локального хоста, а mail.example.com
это полное доменное имя.[/stextbox]
Настройка MySQL
Данные о пользователях почтового сервера (адреса электронной почты), доменах и псевдонимах будут хранится в базе данных MySQL.
# Устанавливаем MySQL сервер.
apt-get install mariadb-server -y
# Выполняем базовую настройку безопасности MySQL сервера и входим на сервер.
mysql_secure_installation
mariadb
# Создаем базу данных для работы почтового сервера, пользователя для работы с базой данных и делегируем права на созданную базу данных.
CREATE DATABASE postfix;
CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix';
GRANT SELECT ON postfix.* TO 'postfix'@'localhost';
FLUSH PRIVILEGES;
# Переключаемся на созданную базу данных, для создания необходимых таблиц.
use postfix;
# Создаем таблицу для доменов, которые будут получать почту:
CREATE TABLE `virtual_domains` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
);
# Создаем таблицу для всех адресов электронной почты и паролей:
CREATE TABLE `virtual_users` (
`id` int(11) NOT NULL auto_increment,
`domain_id` int(11) NOT NULL,
`password` varchar(106) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
);