Настройка почтового сервера на базе Postfix, Dovecot, PostfixAdmin, Roundcube и DKIM на Debian

Itnull

Admin
Регистрация
22.05.13
Сообщения
28.476
Реакции
13.148
Веб-сайт
itnull.me
Настройка почтового сервера на базе Postfix, Dovecot, PostfixAdmin, Roundcube и DKIM на Debian — это классическое, надежное и гибкое решение.

Ниже приведено пошаговое руководство. Для определенности будем считать, что ваш домен — example.com, а почтовый сервер будет доступен по адресу mail.example.com.

Шаг 1: Подготовка системы и DNS-записи​

Перед установкой пакетов необходимо настроить имя хоста и DNS-записи у вашего регистратора/провайдера.

  1. Установите 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 позволяет удобно управлять доменами и ящиками через веб-интерфейс.

  1. Скачайте последнюю версию PostfixAdmin с GitHub или SourceForge и распакуйте её в /var/www/html/postfixadmin.
  2. Создайте файл конфигурации 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";
?>

  1. Настройте права: chown -R www-data:www-data /var/www/html/postfixadmin
  2. Зайдите в браузер: 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
/etc/dovecot/conf.d/10-mail.conf:
Bash:
mail_location = maildir:/var/vmail/%d/%n/Maildir
/etc/dovecot/conf.d/10-master.conf: Настройка сокетов для авторизации Postfix и LMTP:
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
  }
}
/etc/dovecot/conf.d/10-ssl.conf: Подключите ваши SSL-сертификаты (например, от Let's Encrypt):
Bash:
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
Перезапустите Dovecot: systemctl restart dovecot

Шаг 6: Установка и настройка Postfix​

Bash:
apt install postfix postfix-mysql -y

При установке выберите Internet Site и введите ваше системное имя почты (mail.example.com).

Интеграция Postfix с базой данных (через SQL-запросы Postfixadmin)​

Создайте директорию для карт: mkdir /etc/postfix/sql/

  1. /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'
/etc/postfix/sql/mysql_virtual_alias_maps.cf:
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
Генерация ключей DKIM в Rspamd:
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/
Настройка селектора: Создайте файл /etc/rspamd/local.d/dkim_signing.conf:
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

  1. Перезапустите Postfix и Rspamd.
  2. Добавление 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.

Проверка работы​

  1. Зайдите в PostfixAdmin, создайте тестовый домен example.com и почтовый ящик [email protected].
  2. Откройте Roundcube, авторизуйтесь под созданным ящиком.
  3. Отправьте тестовое письмо на сторонний сервис (например, Gmail) или воспользуйтесь сервисом Mail-tester.com для проверки валидности SPF, DKIM и PTR записей.
 

Создайте аккаунт или войдите в систему, чтобы комментировать

Вы должны быть зарегистрированным, чтобы оставить комментарий

Создать аккаунт

Создайте аккаунт в нашем сообществе.

Войти

У вас уже есть аккаунт? Войдите здесь.

Назад
Сверху Снизу