- Вступ
- Серія Linux Administration
- Архітектура поштової системи
- Конфігурація DNS для електронної пошти
- Встановлення Postfix (SMTP сервер)
- Автентифікація Postfix SMTP та TLS
- Встановлення Dovecot (IMAP/POP3 сервер)
- Конфігурація SPF, DKIM та DMARC
- Вебпошта з Roundcube
- Тестування поштового сервера
- Найкращі практики для продакшну
- Усунення поширених проблем
- Висновок
- Часті запитання
Вступ
Налаштування поштової служби — це складна, але важлива навичка адміністрування Linux. Цей комплексний посібник охоплює Postfix для SMTP, Dovecot для IMAP/POP3, конфігурацію DNS з записами MX/SPF/DKIM, TLS шифрування та налаштування вебпошти з Roundcube.
Ми розглянемо архітектуру доставки електронної пошти, вимоги до DNS, безпеку пошти, запобігання спаму та найкращі практики для продакшну. Кожен розділ включає практичні конфігурації та реальні приклади.
Серія Linux Administration
📚 Переглянути повний посібник Linux Administration - Опануйте всі 7 частин з нашим комплексним шляхом навчання.
Це Частина V нашого комплексного 7-частинного посібника з адміністрування Linux:
- ← Частина I: Файлова система та управління процесами
- Частина II: Аутентифікація користувачів та LDAP
- Частина III: Фаєрвол UFW та мережі
- Частина IV: systemd та SSH Hardening
- Частина V: Поштовий сервер Postfix ← Ви тут
- Частина VI: Віртуалізація QEMU KVM →
- Частина VII: Сховище LVM та RAID
Архітектура поштової системи
Повний потік електронної пошти
Компоненти електронної пошти:
- MTA (Mail Transfer Agent): Postfix - відправляє/приймає електронну пошту (SMTP)
- MDA (Mail Delivery Agent): Dovecot LDA - доставляє в поштову скриньку
- MUA (Mail User Agent): Thunderbird, Outlook - читає електронну пошту
- IMAP/POP3 сервер: Dovecot - надає доступ до поштової скриньки
Конфігурація DNS для електронної пошти
Необхідні DNS записи
Основні DNS записи:
# A запис - Вказує на IP поштового сервера
mail.example.com. 14400 IN A 203.0.113.50
# MX запис - Поштовий обмінник
example.com. 14400 IN MX 10 mail.example.com.
# SPF запис - Авторизовані сервери відправки
example.com. 14400 IN TXT "v=spf1 ip4:203.0.113.50 -all"
# DKIM запис - Підпис електронної пошти
default._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
# PTR запис - Зворотній DNS (встановлюється провайдером)
50.113.0.203.in-addr.arpa. IN PTR mail.example.com.
# DMARC запис - Політика для невдалої аутентифікації
_dmarc.example.com. 14400 IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"
Передумови:
- Статична IP адреса - Необхідна для поштового сервера
- Дійсне доменне ім'я - З доступом до управління DNS
- Зворотній DNS (PTR) - Має збігатися з прямим DNS
- IP не в чорному списку - Перевірте на mxtoolbox.com/blacklists.aspx
- Відкриті порти брандмауера - 25 (SMTP), 587 (submission), 143 (IMAP), 993 (IMAPS)
Встановлення Postfix (SMTP сервер)
Архітектура Postfix
Встановлення Postfix:
# Встановити Postfix (документація Postfix: http://www.postfix.org/documentation.html)
sudo apt install postfix
# Під час встановлення виберіть:
# - Загальний тип: Internet Site
# - Системне поштове ім'я: example.com
# Перевірити статус Postfix
systemctl status postfix
# Головний конфігураційний файл
sudo vim /etc/postfix/main.cf
Базова конфігурація Postfix (/etc/postfix/main.cf):
# Ім'я хоста та домен
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
# Слухати на всіх інтерфейсах
inet_interfaces = all
inet_protocols = ipv4
# Довірені мережі
mynetworks = 127.0.0.0/8, 192.168.1.0/24
# Домени призначення (приймати пошту для)
mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
# Розташування поштової скриньки (формат Maildir)
home_mailbox = Maildir/
# SMTP банер
smtpd_banner = $myhostname ESMTP
# Обмеження розміру повідомлення (50MB)
message_size_limit = 52428800
# Перезапустити Postfix
sudo systemctl restart postfix
Конфігурація брандмауера:
# Дозволити SMTP порти
sudo ufw allow 25/tcp # SMTP (вхідний)
sudo ufw allow 587/tcp # Submission (вихідний з автентифікацією)
sudo ufw allow 465/tcp # SMTPS (застарілий, використовуйте 587)
Автентифікація Postfix SMTP та TLS
Потік TLS шифрування
Налаштування TLS шифрування:
# Згенерувати самопідписаний сертифікат (для тестування)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/mail.key \
-out /etc/ssl/certs/mail.crt
# Встановити права доступу
sudo chmod 600 /etc/ssl/private/mail.key
# Редагувати /etc/postfix/main.cf
sudo vim /etc/postfix/main.cf
# Додати налаштування TLS:
# TLS для вхідної пошти (SMTP на порту 25)
smtpd_tls_cert_file = /etc/ssl/certs/mail.crt
smtpd_tls_key_file = /etc/ssl/private/mail.key
smtpd_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_ciphers = high
smtpd_tls_mandatory_ciphers = high
# TLS для вихідної пошти
smtp_tls_security_level = may
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_ciphers = high
Налаштування SMTP автентифікації (submission порт 587):
# Редагувати /etc/postfix/master.cf
sudo vim /etc/postfix/master.cf
# Увімкнути submission порт:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# Перезапустити Postfix
sudo systemctl restart postfix
Встановлення Dovecot (IMAP/POP3 сервер)
Архітектура Dovecot
Встановлення Dovecot:
# Встановити Dovecot з IMAP та POP3 (документація Dovecot: https://doc.dovecot.org/)
sudo apt install dovecot-core dovecot-imapd dovecot-pop3d
# Перевірити статус
systemctl status dovecot
# Головна конфігурація
ls /etc/dovecot/
ls /etc/dovecot/conf.d/
Розташування пошти Dovecot (/etc/dovecot/conf.d/10-mail.conf):
sudo vim /etc/dovecot/conf.d/10-mail.conf
# Встановити формат та розташування поштової скриньки
mail_location = maildir:~/Maildir
# Права доступу до поштової скриньки
mail_privileged_group = mail
Автентифікація Dovecot (/etc/dovecot/conf.d/10-auth.conf):
sudo vim /etc/dovecot/conf.d/10-auth.conf
# Увімкнути автентифікацію plain text (тільки через TLS)
disable_plaintext_auth = yes
auth_mechanisms = plain login
Dovecot SSL/TLS (/etc/dovecot/conf.d/10-ssl.conf):
sudo vim /etc/dovecot/conf.d/10-ssl.conf
# Увімкнути SSL/TLS
ssl = yes
ssl_cert = </etc/ssl/certs/mail.crt
ssl_key = </etc/ssl/private/mail.key
# Вимкнути старі протоколи
ssl_min_protocol = TLSv1.2
ssl_cipher_list = HIGH:!aNULL:!MD5
ssl_prefer_server_ciphers = yes
Увімкнути Postfix SASL автентифікацію (/etc/dovecot/conf.d/10-master.conf):
sudo vim /etc/dovecot/conf.d/10-master.conf
# Розкоментувати та налаштувати:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
Перезапустити сервіси:
sudo systemctl restart dovecot
sudo systemctl restart postfix
# Відкрити IMAP/POP3 порти
sudo ufw allow 143/tcp # IMAP
sudo ufw allow 993/tcp # IMAPS (IMAP через SSL)
sudo ufw allow 110/tcp # POP3
sudo ufw allow 995/tcp # POP3S (POP3 через SSL)
Конфігурація SPF, DKIM та DMARC
Потік автентифікації електронної пошти
Конфігурація SPF (DNS TXT запис):
# Дозволити пошту тільки з IP вашого сервера (документація SPF: https://www.rfc-editor.org/rfc/rfc7208.html)
example.com. IN TXT "v=spf1 ip4:203.0.113.50 -all"
# Дозволити пошту з вашого сервера та Google (якщо використовуєте Gmail)
example.com. IN TXT "v=spf1 ip4:203.0.113.50 include:_spf.google.com -all"
# Механізми SPF:
# ip4:IP - авторизувати IPv4 адресу
# ip6:IP - авторизувати IPv6 адресу
# a - авторизувати IP з A запису
# mx - авторизувати IP з MX запису
# include:domain - включити SPF іншого домену
# -all - відхилити всі інші (суворо)
# ~all - м'яке відхилення всіх інших (рекомендовано)
Конфігурація DKIM:
# Встановити OpenDKIM (документація DKIM: http://www.opendkim.org/)
sudo apt install opendkim opendkim-tools
# Згенерувати DKIM ключі
sudo mkdir -p /etc/opendkim/keys/example.com
sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s default -v
# Встановити права доступу
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod 600 /etc/opendkim/keys/example.com/default.private
# Переглянути публічний ключ для DNS
sudo cat /etc/opendkim/keys/example.com/default.txt
# Додати в DNS як TXT запис:
default._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCS..."
# Налаштувати OpenDKIM
sudo vim /etc/opendkim.conf
# Конфігурація:
Syslog yes
UMask 002
Domain example.com
Selector default
KeyFile /etc/opendkim/keys/example.com/default.private
Socket inet:8891@localhost
# Налаштувати Postfix для використання DKIM
sudo vim /etc/postfix/main.cf
# Додати:
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
# Перезапустити сервіси
sudo systemctl restart opendkim
sudo systemctl restart postfix
Конфігурація DMARC (DNS TXT запис):
# DMARC політика (документація DMARC: https://www.rfc-editor.org/rfc/rfc7489.html)
_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-forensics@example.com; pct=100"
# Параметри DMARC:
# p=none - тільки моніторинг (без дій)
# p=quarantine - відправити в спам
# p=reject - відхилити повідомлення
# rua= - агреговані звіти
# ruf= - криміналістичні звіти
# pct= - відсоток повідомлень для застосування політики (100 = всі)
Вебпошта з Roundcube
Архітектура Roundcube
Встановлення Roundcube:
# Встановити Apache, PHP та залежності
sudo apt install apache2 php php-mysql php-json php-mbstring php-xml php-zip php-curl php-intl
# Встановити Roundcube
sudo apt install roundcube roundcube-mysql
# Під час встановлення:
# - Налаштувати базу даних: Так
# - Тип бази даних: mysql
# - Пароль бази даних: [встановити пароль]
# Налаштувати Apache для Roundcube
sudo vim /etc/apache2/conf-available/roundcube.conf
# Додати:
Alias /roundcube /usr/share/roundcube
<Directory /usr/share/roundcube>
Options +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Увімкнути конфігурацію
sudo a2enconf roundcube
sudo systemctl reload apache2
# Доступ до Roundcube за адресою:
# http://mail.example.com/roundcube
Конфігурація Roundcube (/etc/roundcube/config.inc.php):
<?php
// IMAP сервер
$config['default_host'] = 'ssl://mail.example.com';
$config['default_port'] = 993;
// SMTP сервер
$config['smtp_server'] = 'tls://mail.example.com';
$config['smtp_port'] = 587;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
// Назва продукту
$config['product_name'] = 'Example Mail';
// Плагіни
$config['plugins'] = array('archive', 'zipdownload', 'password');
?>
Тестування поштового сервера
Тестування SMTP локально:
# Відправити тестовий email
echo "Test message" | mail -s "Test Subject" user@example.com
# Перевірити чергу пошти
mailq
postqueue -p
# Перевірити логи
sudo tail -f /var/log/mail.log
sudo tail -f /var/log/mail.err
# Тестування SMTP з'єднання
telnet mail.example.com 25
# Тестування submission з автентифікацією
openssl s_client -connect mail.example.com:587 -starttls smtp
Тестування з зовнішніх серверів:
# Пошук MX запису
dig MX example.com
# Перевірка SPF запису
dig TXT example.com
# Перевірка DKIM запису
dig TXT default._domainkey.example.com
# Тестування зовнішніми інструментами:
# - mxtoolbox.com - комплексне тестування електронної пошти
# - mail-tester.com - тестування спам-балу
Найкращі практики для продакшну
-
Конфігурація DNS:
- Завжди налаштовуйте PTR (зворотній DNS)
- Впроваджуйте SPF, DKIM та DMARC
- Моніторте DMARC звіти
- Тримайте DNS TTL розумним (14400)
-
Безпека:
- Завжди використовуйте TLS шифрування
- Вимагайте SMTP автентифікацію на порту 587
- Вимикайте plain text автентифікацію крім як через TLS
- Впроваджуйте fail2ban для захисту від брутфорсу
- Регулярні оновлення безпеки
-
Запобігання спаму:
- Налаштуйте SpamAssassin
- Впроваджуйте greylisting
- Використовуйте RBL (Real-time Blackhole Lists)
- Моніторте логи пошти на зловживання
-
Продуктивність:
- Використовуйте формат Maildir (краще ніж mbox)
- Впроваджуйте квоти пошти
- Налаштуйте обмеження розміру повідомлень
- Моніторте використання диску
-
Резервне копіювання:
- Регулярні резервні копії поштових скриньок
- Резервні копії конфігурацій
- Тестуйте процедури відновлення
- Документуйте всі налаштування
Усунення поширених проблем
Пошта не приймається:
# Перевірити чи Postfix слухає
sudo ss -tlnp | grep :25
# Перевірити DNS MX записи
dig MX example.com
# Перевірити чи порт 25 заблокований провайдером
telnet mail.example.com 25
# Перевірити логи Postfix
sudo tail -f /var/log/mail.log | grep -i error
Пошта відправляється в спам:
# Перевірити SPF запис
dig TXT example.com
# Перевірити DKIM підпис
sudo journalctl -u opendkim -f
# Перевірити зворотній DNS
dig -x 203.0.113.50
# Тестування на mail-tester.com
# Відправити email на згенеровану адресу
Невдача автентифікації:
# Перевірити Dovecot SASL
sudo doveadm auth test user@example.com
# Перевірити Postfix SASL
sudo postconf smtpd_sasl_auth_enable
# Перевірити логи
sudo tail -f /var/log/mail.log | grep auth
Проблеми з TLS сертифікатом:
# Тестування TLS з'єднання
openssl s_client -connect mail.example.com:993
openssl s_client -connect mail.example.com:587 -starttls smtp
# Перевірити дати сертифіката
openssl x509 -in /etc/ssl/certs/mail.crt -noout -dates
# Перевірити ланцюжок сертифікатів
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/mail.crt
Висновок
Конфігурація поштової служби Linux вимагає правильного налаштування Postfix SMTP, Dovecot IMAP/POP3, DNS записів та заходів безпеки. Розуміння архітектури MTA/MDA, автентифікації SPF/DKIM/DMARC, TLS шифрування та інтеграції вебпошти є необхідним для надійної доставки електронної пошти.
Вибирайте відповідні конфігурації: Postfix для SMTP з TLS, Dovecot для доступу до поштової скриньки, повне налаштування DNS з SPF/DKIM/DMARC та Roundcube для вебпошти. Впроваджуйте найкращі практики безпеки, моніторте доставляємість та підтримуйте регулярні резервні копії для продакшн поштових систем.
Часті запитання
П: Яка різниця між Postfix та Dovecot?
Postfix - це MTA (Mail Transfer Agent), що обробляє SMTP для відправлення та отримання email між серверами. Dovecot - це MDA (Mail Delivery Agent), що надає IMAP та POP3 для доступу користувачів до поштових скриньок. Postfix отримує пошту та передає в Dovecot для зберігання. Використовуйте обидва разом для повної функціональності поштового сервера.
П: Що таке SPF, DKIM та DMARC записи?
SPF (Sender Policy Framework) перелічує авторизовані поштові сервери в DNS TXT записах. DKIM (DomainKeys Identified Mail) криптографічно підписує email приватними ключами, що перевіряються публічними DNS записами. DMARC (Domain-based Message Authentication) визначає політики для невдач SPF/DKIM. Разом вони запобігають підробці email та покращують доставляємість.
П: Як налаштувати TLS шифрування для email?
Налаштуйте TLS в Postfix з smtpd_tls_cert_file та smtpd_tls_key_file, що вказують на сертифікати. Увімкніть через smtpd_use_tls=yes для опціонального або smtpd_enforce_tls_security=yes для обов'язкового. Налаштуйте Dovecot з ssl=yes та директивами ssl_cert/ssl_key. Використовуйте Let's Encrypt сертифікати для безкоштовних довірених TLS сертифікатів.
П: Які порти використовують поштові служби?
SMTP використовує порт 25 для сервер-сервер, 587 для автентифікованої відправки з STARTTLS та 465 для SMTPS. IMAP використовує 143 для незахищеного та 993 для SSL/TLS. POP3 використовує 110 для незахищеного та 995 для SSL/TLS. Сучасні сервери повинні використовувати виключно зашифровані порти 587, 993 та 995.
П: Як працює автентифікація email з SASL?
SASL (Simple Authentication and Security Layer) забезпечує автентифікацію для SMTP відправки. Dovecot SASL автентифікує користувачів проти системних облікових записів або баз даних. Postfix інтегрується з Dovecot SASL для перевірки облікових даних перед прийняттям пошти. Налаштуйте через smtpd_sasl_auth_enable=yes та smtpd_sasl_type=dovecot. Вимагає TLS для захисту облікових даних.
П: Чому мої email потрапляють в спам?
Email потрапляють в спам через відсутність SPF/DKIM/DMARC записів, відсутність зворотнього DNS, репутацію спільного IP, погану якість вмісту або невалідні TLS сертифікати. Тестуйте через mail-tester.com для оцінки. Налаштуйте правильну DNS автентифікацію, використовуйте виділені IP, поступово підвищуйте репутацію IP та уникайте спам-слів.
П: Як налаштувати вебпошту з Roundcube?
Встановіть Roundcube через менеджер пакетів або завантажте з roundcube.net. Налаштуйте віртуальний хост Apache/Nginx, що вказує на директорію Roundcube. Налаштуйте параметри бази даних в config/config.inc.php. Встановіть IMAP/SMTP сервер на localhost. Увімкніть плагіни в config. Доступ через браузер за https://mail.example.com/roundcube. Захистіть через HTTPS сертифікати.