Как настроить почтовый сервер на VDS с Ubuntu и FastPanel, используя exim4 и dovecot?

Добрый день!<br/><br/>
  • 1 мая 2026 г. 15:03
Ответы на вопрос 2
Добрый день! Ниже — пошаговая инструкция и готовые примеры конфигурации для установки почтового сервера на 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/файле. Тогда я пришлю конкретные конфиги шаг за шагом.
passwd.client не поможет — это для auth, а у тебя его нет. Выкинь из головы. <br/> <br/> Скорее всего дело в порту. FASTPANEL часто ставит 587, а твой релай принимает только 25. В /etc/exim4/update-exim4.conf.conf должно быть: <br/> <pre><code>dc_eximconfig_configtype='smarthost'
dc_smarthost='адрес.релая::25'</code></pre> <br/> (двойное двоеточие перед портом — это exim4-синтаксис, важно) <br/> <br/> Потом <code>update-exim4.conf &amp;&amp; systemctl restart exim4</code> . Замороженные письма: <code>exim -qff</code> .
Похожие вопросы