Заключительная часть базовой настройки почтового сервера. Который будет выполнять полноценную работу: функции приема, хранения и отправки сообщений. Обеспечивать возможность подключения через почтовые клиенты.
pacman -S dovecot # dovecot --version 2.4.2 (0962ed2104)
Включаем автозагрузку:
systemctl enable dovecot
Создай пользователя и группу vmail:
getent passwd vmail || useradd -r -d /srv/mail -s /usr/bin/nologin vmail getent group vmail || groupadd -r vmail usermod -g vmail vmail 2>/dev/null || true
Назначим права на каталог почты:
chmod 0700 /srv/mail/ chown -R vmail:vmail /srv/mail
Открываем конфигурационный файл:
nano /etc/dovecot/dovecot.conf
Сотрите все содержимое файла и добавьте параметры ниже.
# -------------------------------------------------------------------
# Include / modular config
# -------------------------------------------------------------------
!include_try conf.d/*.conf
# -------------------------------------------------------------------
# Protocols
# Enable the required protocols:
# - IMAP for mailbox access
# - LMTP for local mail delivery (e.g., from Postfix)
# -------------------------------------------------------------------
protocols {
imap = yes
lmtp = yes
}
# -------------------------------------------------------------------
# Mail storage (Maildir)
# Store mail in Maildir format under user's home directory
# -------------------------------------------------------------------
mail_driver = maildir
mail_path = ~/Maildir
namespace inbox {
inbox = yes
separator = /
mailbox Trash {
auto = create
special_use = \Trash
}
}
# -------------------------------------------------------------------
# Authentication (virtual users from file, no PAM)
# IMPORTANT:
# Do NOT use PAM to avoid binding authentication to system users.
# Authenticate virtual users from a password file instead.
# -------------------------------------------------------------------
auth_username_format = %{user | username}
auth_mechanisms = plain login
passdb passwd-file {
passwd_file_path = /etc/dovecot/passwd
}
userdb static {
fields {
uid = vmail
gid = vmail
home = /srv/mail/%{user | username}
}
}
# -------------------------------------------------------------------
# TLS / SSL
# Require TLS and use Let's Encrypt certificates
# -------------------------------------------------------------------
ssl = required
ssl_server {
cert_file = /etc/letsencrypt/live/mx.codebeer.ru/fullchain.pem
key_file = /etc/letsencrypt/live/mx.codebeer.ru/privkey.pem
dh_file = /etc/dovecot/dh.pem
}
ssl_server_prefer_ciphers = server
ssl_min_protocol = TLSv1.2
# -------------------------------------------------------------------
# Services / sockets for Postfix integration
# -------------------------------------------------------------------
# LMTP socket for Postfix -> Dovecot delivery (to Maildir)
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
# SASL auth socket for Postfix (submission/587)
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
Обратите внимание на строки:
cert_file = /etc/letsencrypt/live/mx.codebeer.ru/fullchain.pem key_file = /etc/letsencrypt/live/mx.codebeer.ru/privkey.pem
Здесь нужно указать свой путь к файлам сертификата и ключа.
Далее необходимо сгенерировать сертификат Диффи-Хелмана:
openssl dhparam -out /etc/dovecot/dh.pem 4096
Далее необходимо создать файл с логинами и паролями, для подключения пользователей к почтовому серверу.
В примере ниже, я создаю аккаунт admin:
PASS='yFUTHESZIoqvLtFkbqiXbPypxIUQfcPL' HASH="$(doveadm pw -s BLF-CRYPT -p "$PASS")" printf "admin:%s\n" "$HASH" | tee /etc/dovecot/passwd >/dev/null chown root:dovecot /etc/dovecot/passwd chmod 640 /etc/dovecot/passwd
Перезапускаем Dovecot
systemctl restart dovecot
Включаем автозагрузку Dovecot, делаем рестарт сервиса, проверяем состояние процесса.
mkdir -p /etc/systemd/system/dovecot.service.d cat > /etc/systemd/system/dovecot.service.d/restart.conf <<'EOF' [Unit] StartLimitIntervalSec=300 StartLimitBurst=5 [Service] Restart=on-failure RestartSec=5s EOF
Применяем настройки:
systemctl daemon-reload systemctl restart dovecot
Проверим, что Dovecot подымается после падения:
kill -9 $(pidof dovecot | awk '{print $1}')
sleep 2
systemctl --no-pager -l status dovecot
journalctl -u dovecot -n 30 --no-pager
После настройки необходимо выполнить базовую проверку работы авторизации:
doveadm auth test 'admin' 'ТВОЙ_ПАРОЛЬ'
Должно отобразится сообщение:
passdb: admin auth succeeded extra fields: user=admin
Отправка тестового сообщения:
echo test | sendmail -v [email protected] Mail Delivery Status Report will be mailed to .
Проверяем доставку файла:
# find /srv/mail/admin/Maildir -maxdepth 2 -type f \( -path '*/new/*' -o -path '*/cur/*' \) | tail /srv/mail/admin/Maildir/cur/1770503717.M975925P7891.mx.powervps.net,S=1006,W=1029:2,a