Добрый день! Ниже — пошаговая инструкция и готовые примеры конфигурации для установки почтового сервера на VDS с Ubuntu + FastPanel, используя Exim4 (MTA) и Dovecot (IMAP/POP/LMTP). Я опишу основную архитектуру, нужные пакеты, DNS, TLS, DKIM/DMARC/SPF, а также минимальные конфиги Exim4 ↔ Dovecot (аутентификация и доставка в Maildir). В конце — советы по тестированию и отладке.
Важное замечание
- FastPanel умеет управлять почтой сам — если вы хотите использовать его почтовые функции, проверьте, не конфликтуют ли они с ручной установкой Exim4/Dovecot. Если FastPanel уже управляет почтой — лучше или использовать встроенные возможности, или отключить/удалить их почтовый модуль перед ручной установкой.
- Некоторые хостеры блокируют исходящую почту (порт 25) — проверьте у провайдера.
1) Что будет установлено и как организовано
- Exim4 — SMTP-сервер (приём/отправка).
- Dovecot — IMAP/POP3 и LMTP/lda (доставка в Maildir) + SASL для аутентификации SMTP.
- Почтовые ящики — Maildir расположенные в /var/vmail/<domain>/<user>/ (виртуальные пользователи, не системные).
- Ограничения/фильтрация (по желанию): SpamAssassin, ClamAV, opendkim.
2) Установка базовых пакетов (Ubuntu)
Выполните под root или sudo:
apt update
apt install exim4 dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd \
dovecot-mysql (если будете использовать БД) opendkim spamassassin clamav
При установке exim4 выберите тип "internet site" (если потребуется можно изменить позже через debconf или вручную).
3) Структура виртуальных ящиков
Пример: используем пользователя vmail (uid/gid 1500) и хранение в /var/vmail.
useradd -r -u 1500 -g mail -d /var/vmail -s /sbin/nologin vmail
mkdir -p /var/vmail
chown -R vmail:mail /var/vmail
chmod -R 770 /var/vmail
Создавайте домены и ящики как /var/vmail/example.com/user/Maildir/{cur,new,tmp}
(Далее покажу пример с passwd-file; альтернативно можно подключать FastPanel DB или MySQL пользователи.)
4) Dovecot — минимальная конфигурация для виртуальных Maildir
В /etc/dovecot/conf.d/10-mail.conf:
- mail_location = maildir:/var/vmail/%d/%n/Maildir
Если используете passwd-file (для теста):
В /etc/dovecot/conf.d/auth-passwdfile.conf.ext (пример):
passdb {
driver = passwd-file
args = username_format=%u /etc/dovecot/users
}
userdb {
driver = static
args = uid=1500 gid=8 home=/var/vmail/%d/%n allow_all_users=yes
}
В /etc/dovecot/users добавьте запись вида:
user@example.com:{PLAIN}password:1500:8::/var/vmail/example.com/user::maildir:/var/vmail/example.com/user/Maildir
(Для продакшна используйте sha-опции или sql-базу, не храните пароли в открытом виде.)
В /etc/dovecot/conf.d/10-master.conf добавьте (или адаптируйте) unix-listener'ы для Exim:
service auth {
unix_listener /var/run/dovecot/exim-auth {
mode = 0660
user = exim
group = exim
}
# если будете использовать LMTP через сокет:
unix_listener /var/run/dovecot/lmtp {
mode = 0660
user = exim
group = mail
}
}
В /etc/dovecot/conf.d/10-ssl.conf укажите сертификаты (пример с Let's Encrypt):
ssl = required
ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/example.com/privkey.pem
Перезапустите dovecot:
systemctl restart dovecot
5) Exim4 — базовая конфигурация и интеграция с Dovecot
Простейший путь на Debian/Ubuntu — редактировать /etc/exim4/update-exim4.conf.conf (или через debconf):
/etc/exim4/update-exim4.conf.conf:
dc_eximconfig_configtype='internet'
dc_other_hostnames='example.com;mail.example.com'
dc_local_interfaces='0.0.0.0 ; ::0'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
После изменения выполните:
update-exim4.conf
systemctl reload exim4
Аутентификация SMTP через Dovecot
Создайте файл /etc/exim4/conf.d/auth/30_exim4-config_dovecot (если вы используете split config) с содержимым:
dovecot_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/exim-auth
dovecot_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/exim-auth
Если ваш Exim собран без драйвера dovecot (маловероятно в репозитории), можно использовать saslauthd или TCP-авторизацию. Убедитесь, что Dovecot создал сокет /var/run/dovecot/exim-auth и владелец/права позволяют exim читать.
Доставка писем (используем LMTP Dovecot)
Создайте транспорт (файл /etc/exim4/conf.d/transport/30_exim4-config_dovecot_lmtp):
dovecot_lmtp:
driver = lmtp
socket = /var/run/dovecot/lmtp
user = vmail
group = mail
И маршрутизатор для локальных получателей (router):
dovecot_router:
driver = accept
domains = +local_domains
transport = dovecot_lmtp
check_local_user
require_files = +/var/vmail/$domain/$local_part/Maildir
После всех изменений выполните:
update-exim4.conf
systemctl restart exim4
TLS для Exim4
В /etc/exim4/conf.d/main/00_local_tls или /etc/exim4/exim4.conf.template укажите:
tls_certificate = /etc/letsencrypt/live/example.com/fullchain.pem
tls_privatekey = /etc/letsencrypt/live/example.com/privkey.pem
Перезапустите exim4.
6) DKIM (opendkim), SPF и DMARC
SPF: добавьте TXT-запись в DNS:
example.com. TXT "v=spf1 mx a ip4:<ваш_внешний_IP> -all"
DKIM: установите opendkim:
apt install opendkim opendkim-tools
Конфиг:
- /etc/opendkim.conf: укажите KeyTable, SigningTable, Socket (например, unix:/var/run/opendkim/opendkim.sock)
- Создайте ключи:
mkdir -p /etc/opendkim/keys/example.com
opendkim-genkey -s default -d example.com
chown -R opendkim:opendkim /etc/opendkim/keys
Добавьте в DNS TXT рекорд: default._domainkey.example.com → содержимое из default.txt
Свяжите Exim с opendkim (в Exim можно настроить milter: add dkim milter_socket = local:/var/run/opendkim/opendkim.sock). На Debian/Ubuntu: в /etc/exim4/exim4.conf.template добавьте опции milter или подключите через конфиг split.
DMARC: TXT-запись в DNS:
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:postmaster@example.com"
7) Порты и firewall
Откройте порты:
ufw allow 25/tcp # SMTP
ufw allow 587/tcp # Submission (SMTP AUTH)
ufw allow 465/tcp # SMTPS (если используете)
ufw allow 143/tcp # IMAP (необязательно)
ufw allow 993/tcp # IMAPS
ufw allow 110/tcp # POP3
ufw allow 995/tcp # POP3S
8) Проверки и тестирование
- Проверьте, что DNS: A, MX, PTR (reverse) согласованы. PTR должен указывать на hostname, совпадающий с A.
- Проверка TLS для SMTP: openssl s_client -starttls smtp -crlf -connect mail.example.com:587
- Проверка IMAPs: openssl s_client -connect mail.example.com:993
- Тест SMTP AUTH: telnet/mail client или swaks:
swaks --server mail.example.com --port 587 --tls --auth LOGIN --auth-user user@example.com --auth-password secret
Логи:
- Exim: /var/log/exim4/mainlog
- Dovecot: /var/log/dovecot.log или journalctl -u dovecot
9) Спам/антивирус (рекомендации)
- SpamAssassin + amavisd-new для интеграции.
- ClamAV для проверки вложений.
- Rate-limiting/greylisting (по необходимости).
10) Типичные проблемы и подсказки
- Порт 25 заблокирован у провайдера — обратитесь в поддержку или используйте smarthost.
- Неверные права на unix socket — exim не сможет аутентифицировать пользователей.
- Неправильный путь к сертификатам — TLS не заработает.
- Если используете FastPanel — убедитесь, что он не пытается управлять теми же сервисами/портами.
11) Примеры файлов и дальнейшая помощь
Если хотите, я могу:
- Подготовить полный набор конфигов Exim4 (split или unsplit) под вашу версию Ubuntu;
- Подготовить Dovecot конфиг с SQL-подключением (если FastPanel хранит почтовые пользователи в MySQL);
- Помочь сформировать DNS-записи (приведите домен и IP);
- Проверить логи при ошибках — пришлите строки из /var/log/exim4/mainlog и /var/log/dovecot.log.
Напишите, какая версия Ubuntu у вас (20.04/22.04/…), используете ли FastPanel почту сейчас, и хотите ли виртуальные почтовые аккаунты в MySQL/файле. Тогда я пришлю конкретные конфиги шаг за шагом.