- Автор темы
- Администратор
- Модер.
- #1
Настройка почтового сервера на базе Postfix, Dovecot, PostfixAdmin, Roundcube и DKIM на Debian — это классическое, надежное и гибкое решение.
Ниже приведено пошаговое руководство. Для определенности будем считать, что ваш домен — example.com, а почтовый сервер будет доступен по адресу mail.example.com.
2. Настройте DNS-записи:
/etc/dovecot/conf.d/10-mail.conf:
/etc/dovecot/conf.d/10-master.conf: Настройка сокетов для авторизации Postfix и LMTP:
/etc/dovecot/conf.d/10-ssl.conf: Подключите ваши SSL-сертификаты (например, от Let's Encrypt):
Перезапустите Dovecot: systemctl restart dovecot
При установке выберите Internet Site и введите ваше системное имя почты (mail.example.com).
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf:
/etc/postfix/sql/mysql_virtual_alias_maps.cf:
Перезапустите Postfix: systemctl restart postfix
Генерация ключей DKIM в Rspamd:
Настройка селектора: Создайте файл /etc/rspamd/local.d/dkim_signing.conf:
Интеграция Postfix с Rspamd (через Milter): Добавьте в конец /etc/postfix/main.cf:
В процессе установки dbconfig-common предложит автоматически создать базу данных для Roundcube. Соглашайтесь.
Настройте конфигурацию вашего веб-сервера (Nginx или Apache), чтобы корень сайта (например, webmail.example.com) смотрел в /var/www/html/roundcube или /usr/share/roundcube.
Ниже приведено пошаговое руководство. Для определенности будем считать, что ваш домен — example.com, а почтовый сервер будет доступен по адресу mail.example.com.
Шаг 1: Подготовка системы и DNS-записи
Перед установкой пакетов необходимо настроить имя хоста и DNS-записи у вашего регистратора/провайдера.- Установите FQDN (имя хоста):
Bash:
hostnamectl set-hostname mail.example.com
2. Настройте DNS-записи:
- A-запись: mail.example.com указывает на IP вашего сервера.
- MX-запись: @ MX 10 mail.example.com.
- TXT (SPF): v=spf1 mx a ip4:IP_ВАШЕГО_СЕРВЕРА ~all
- PTR-запись (Reverse DNS): Крайне важна! Запрашивается у хостинга. IP вашего сервера должен разрешаться в mail.example.com.
Шаг 2: Установка веб-окружения и базы данных (LAMP/LEMP)
PostfixAdmin и Roundcube требуют базу данных (MySQL/MariaDB) и веб-сервер (Apache или Nginx + PHP). Установим MariaDB и PHP:
Bash:
apt update && apt upgrade -y
apt install mariadb-server php-fpm php-mysql php-mbstring php-imap php-curl php-gd php-xml php-intl php-zip -y
Создание базы данных
Зайдите в MySQL и создайте базу данных и пользователя для почты:
SQL:
CREATE DATABASE mailserver;
CREATE USER 'mailuser'@'localhost' IDENTIFIED BY 'Ваш_Сложный_Пароль';
GRANT ALL PRIVILEGES ON mailserver.* TO 'mailuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Шаг 3: Установка и настройка PostfixAdmin
PostfixAdmin позволяет удобно управлять доменами и ящиками через веб-интерфейс.- Скачайте последнюю версию PostfixAdmin с GitHub или SourceForge и распакуйте её в /var/www/html/postfixadmin.
- Создайте файл конфигурации config.local.php:
PHP:
<?php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'mailuser';
$CONF['database_password'] = 'Ваш_Сложный_Пароль';
$CONF['database_name'] = 'mailserver';
$CONF['default_aliases'] = array (
'abuse' => '[email protected]',
'hostmaster' => '[email protected]',
'postmaster' => '[email protected]',
'webmaster' => '[email protected]'
);
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['encrypt'] = 'dovecot:ARGON2I'; // Используем современное шифрование Dovecot
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
?>
- Настройте права: chown -R www-data:www-data /var/www/html/postfixadmin
- Зайдите в браузер: http://mail.example.com/postfixadmin/setup.php, следуйте инструкциям для создания суперпользователя (Setup Password и Admin-аккаунт).
Шаг 4: Настройка системного пользователя для почты
Вся виртуальная почта будет храниться в одном каталоге под единым системным пользователем (например, vmail).
Bash:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/vmail -m
Шаг 5: Установка и настройка Dovecot
Dovecot отвечает за доставку почты в ящики (MDA) и аутентификацию (SASL) для Postfix.
Bash:
apt install dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql -y
Связь Dovecot с базой данных
Отредактируйте /etc/dovecot/dovecot-sql.conf.ext:
Bash:
driver = mysql
connect = host=localhost dbname=mailserver user=mailuser password=Ваш_Сложный_Пароль
default_pass_scheme = ARGON2I
password_query = SELECT username AS user, password FROM mailbox WHERE username = '%u' AND active='1'
user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username = '%u' AND active='1'
Основные файлы конфигурации Dovecot
- /etc/dovecot/dovecot.conf: Убедитесь, что включены нужные протоколы: protocols = imap lmtp
- /etc/dovecot/conf.d/10-auth.conf:
Bash:
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext
Bash:
mail_location = maildir:/var/vmail/%d/%n/Maildir
Bash:
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
Bash:
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
Шаг 6: Установка и настройка Postfix
Bash:
apt install postfix postfix-mysql -y
При установке выберите Internet Site и введите ваше системное имя почты (mail.example.com).
Интеграция Postfix с базой данных (через SQL-запросы Postfixadmin)
Создайте директорию для карт: mkdir /etc/postfix/sql/- /etc/postfix/sql/mysql_virtual_domains_maps.cf:
Bash:
user = mailuser
password = Ваш_Сложный_Пароль
hosts = localhost
dbname = mailserver
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf:
Bash:
user = mailuser
password = Ваш_Сложный_Пароль
hosts = localhost
dbname = mailserver
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
Bash:
user = mailuser
password = Ваш_Сложный_Пароль
hosts = localhost
dbname = mailserver
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Настройка
Приведите конфигурационный файл к следующему виду (или добавьте параметры):
Bash:
myhostname = mail.example.com
mydisposition = localhost
mydestination = localhost
# Виртуальные домены и ящики
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf
# SSL/TLS
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
# SASL Аутентификация через Dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
Настройка
Раскомментируйте строки для включения submission (порт 587) и smtps (порт 465), чтобы клиенты могли безопасно отправлять почту:
Bash:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
Перезапустите Postfix: systemctl restart postfix
Шаг 7: Настройка DKIM (Rspamd или OpenDKIM)
В современных реалиях для DKIM/SPF/DMARC проще и эффективнее использовать Rspamd, так как он заменяет собой OpenDKIM, OpenDMARC и Amavis (антивирус/антиспам).
Bash:
apt install rspamd -y
Bash:
mkdir -p /var/lib/rspamd/dkim/
rspamadm dkim_keygen -b 2048 -s mail -k /var/lib/rspamd/dkim/mail.key > /var/lib/rspamd/dkim/mail.pub
chown -R _rspamd:_rspamd /var/lib/rspamd/dkim/
Bash:
allow_username = true;
auth_only = true;
selector = "mail";
path = "/var/lib/rspamd/dkim/$selector.key";
Интеграция Postfix с Rspamd (через Milter): Добавьте в конец /etc/postfix/main.cf:
Bash:
smtpd_milters = inet:127.0.0.1:11332
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
- Перезапустите Postfix и Rspamd.
- Добавление TXT-записи в DNS: Откройте файл /var/lib/rspamd/dkim/mail.pub. Внутри будет готовая запись для вашего DNS-менеджера. Имя записи: mail._domainkey, тип: TXT, значение: v=DKIM1; k=rsa; p=ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ.
Шаг 8: Установка и настройка Roundcube (Webmail)
Roundcube — это удобный веб-интерфейс для пользователей.
Bash:
apt install roundcube roundcube-mysql -y
В процессе установки dbconfig-common предложит автоматически создать базу данных для Roundcube. Соглашайтесь.
Настройка подключения в
Укажите параметры подключения к вашему IMAP/SMTP серверу:
PHP:
$config['imap_host'] = 'ssl://mail.example.com:993';
$config['smtp_host'] = 'tls://mail.example.com:587';
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['support_url'] = '';
$config['plugins'] = array('archive', 'zipdownload');
Настройте конфигурацию вашего веб-сервера (Nginx или Apache), чтобы корень сайта (например, webmail.example.com) смотрел в /var/www/html/roundcube или /usr/share/roundcube.
Проверка работы
- Зайдите в PostfixAdmin, создайте тестовый домен example.com и почтовый ящик [email protected].
- Откройте Roundcube, авторизуйтесь под созданным ящиком.
- Отправьте тестовое письмо на сторонний сервис (например, Gmail) или воспользуйтесь сервисом Mail-tester.com для проверки валидности SPF, DKIM и PTR записей.
