Частина 1. Встановлення та базове налаштування Postfix та Dovecot

Налаштування поштового сервера на базі Postfix, Dovecot та RoundCube. Зміст

Встановлення поштового сервера


Спочатку встановлюємо Postfix та Dovecot:
$sudo apt install postfix dovecot-core dovecot-imapd
Відмовляємося від запропонованих варіантів налаштувань. Мається на увазі, що все налаштуємо самі без жодного автоматизму з боку розробників.

Постінсталяційний скрипт повідомить, що в такому стані Postfix працювати не може.
Створимо відсутній файл конфігурації:
$ sudo touch /etc/postfix/main.cf
На цьому встановлення завершене.

Підготовка до налаштування поштового сервера

Створимо місце для зберігання пошти на сервері для нашого поштового домену study.local:
#mkdir -p /var/spool/mail/study.local
Створимо групу virtual та користувача virtual:
#groupadd -g 5000 virtual
#useradd -g virtual -u 5000 virtual
Для них ми призначили uid та gid 5000. Число було обрано довільно, як достатньо велике.
Вкажемо власника та права доступу до теки з поштою:
#chown virtual:virtual /var/spool/mail/study.local
#chmod 770 /var/spool/mail/study.local


Налаштування Postfix

Відкриваємо на редагування файл /etc/postfix/main.cf та приведемо його до наступного вигляду:
#Так наш сервер буде представлятися при відправленні та отриманні пошти
smtpd_banner = $myhostname ESMTP (ubuntu)
biff = no #Вимикаємо використання comsat
#Забороняємо автоматично доповнювати неповне доменне ім'я в адресі листа
append_dot_mydomain = no
queue_directory = /var/spool/postfix #Вказуємо теку черги для Postfix
myhostname = mail.study.local #Вказуємо ім'я нашого хоста
alias_maps =
mydestination = localhost #Вказуємо, для яких доменів будемо приймати пошту

#Вказуємо, для яких віртуальних доменів будемо приймати пошту
virtual_mailbox_domains = study.local
virtual_mailbox_base = /var/spool/mail/ #Початок шляху для зберігання пошти
virtual_alias_maps = hash:/etc/postfix/virtual #Файл з описом поштових аліасів
virtual_mailbox_maps = hash:/etc/postfix/vmailbox #Файл з описом поштових скриньок
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

mynetworks = 127.0.0.0/8 #Вказуємо список довірених підмереж
inet_interfaces = all #Приймаємо з'єднання на всіх інтерфейсах

#Описуємо авторизацію через Dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_helo_required = yes #Обов'язково при з'єднанні вимагати helo
#Далі налаштовуємо фільтри прийому/відправлення пошти

#Правила, що діють на етапі команди HELO
smtpd_helo_restrictions = permit_mynetworks,
                                                permit_sasl_authenticated,
                                                reject_unknown_client,
                                                eject_non_fqdn_hostname,
                                                reject_invalid_hostname,
                                                reject_unknown_hostname

#Правила, що діють на етапі команди rcpt to
smtpd_recipient_restrictions = permit_mynetworks,
                                                permit_sasl_authenticated,
                                                reject_unauth_destination,
                                                reject_unknown_sender_domain,
                                                reject_unknown_recipient_domain,
                                                reject_non_fqdn_recipient,
                                                reject_non_fqdn_sender


Правила фільтрації поштових повідомлень.

Якщо наш сервер буде приймати та пересилати будь-які поштові повідомлення, то дуже швидко він буде внесений до всіх чорних списків, як розповсюджувач спаму. Крім того значно підвищиться навантаження на наш сервер — всі вхідні листи треба обробляти не лише самому поштовому серверу, а ще й антивірусу та антиспаму. Для зниження навантаження на сервер, а також для блокування небажаних повідомлень ще на етапі їх прийняття, використовуються правила фільтрації вхідних повідомлень. Вони записані в нашому файлі конфігурації в блоках smtpd_helo_restrictions та smtpd_recipient_restrictions. У нас ці правила виглядають наступним чином:

smtpd_helo_restrictions = permit_mynetworks,
                                                permit_sasl_authenticated,
                                                reject_unknown_client,
                                                eject_non_fqdn_hostname,
                                                reject_invalid_hostname,

smtpd_recipient_restrictions = permit_mynetworks,
                                                permit_sasl_authenticated,
                                                reject_unauth_destination,
                                                reject_unknown_sender_domain,
                                                reject_unknown_recipient_domain,
                                                reject_non_fqdn_recipient,
                                                reject_non_fqdn_sender


Роздивимось їх докладніше:
permit_mynetworks — приймати всі листи з довіреної зони
permit_sasl_authenticated — приймати всі листи по з'єднанням з авторизацією
reject_unauth_destination — відкидати листи, які не відносяться до доменів, що ми обслуговуємо
reject_unknown_sender_domain — відкидати листи від невідомого домену відправника
reject_unknown_recipient_domain — відкидати листи для невідомого домену отримувача
reject_non_fqdn_recipient — відкидати листи для неповного домену отримувача
reject_non_fqdn_sender — відкидати листи від неповного домену відправника
reject_non_fqdn_hostname — відкидати листи, якщо ім'я сервера відправника неповне
reject_invalid_hostname — відкидати листи, якщо неправильне ім'я сервера відправника
reject_unknown_hostname — відкидати листи, якщо невідоме ім'я сервера відправника

Ці правила виконуються по черзі від першого до останнього. Якщо лист не потрапив під жодне правило, то його буде прийнято.

Налаштування Dovecot

Проведемо налаштування Dovecot версії 2.xx.
В теці /etc/dovecot, на відміну від старих версій програми, ми маємо багато файлів конфігурації. При чому навіть з підтеками.
Звичайно можна всю конфігурацію звести в один файл, але це не дуже правильно, бо суперечить тому, що задумали розробники.
Відкриємо основний файл конфігурації /etc/dovecot/dovecot.conf та приведемо його до наступного вигляду:

# За яким протоколом працюємо
protocols = imap
# Слухаємо з'єднання на всіх інтерфейсах по протоколу IPv4
listen = *
# Робоча тека
base_dir = /var/run/dovecot/
# Ім'я інстансу (для відображення в лозі)
instance_name = dovecot
# Рядок привітання
login_greeting = Dovecot ready.
# Відключати клієнтські з'єднання при виключенні або перезавантаженні майстер-сервісу
shutdown_clients = yes
# Сокет керуючого сервісу doveadm
doveadm_socket_path = doveadm-server
# Підключаємо окремі файли конфігурації
!include conf.d/*.conf

Тепер переходимо до теки /etc/dovecot/conf.d
Відкриємо в ній файл 10-auth.conf і пропишемо в ньому два рядки:
disable_plaintext_auth = no
auth_mechanisms = plain login
а також в кінці цього файлу закоментуємо рядок
!include auth-system.conf.ext
та розкоментуємо
!include auth-passwdfile.conf.ext

Далі відредагуємо файл 10-mail.conf

mail_location = maildir:/var/spool/mail/%d/%n
mail_uid = 5000
mail_gid = 5000
mail_privileged_group = virtual
valid_chroot_dirs = /var/spool/mail/

Далі нас буде цікавити файл 10-master.conf

service imap-login {
inet_listener imap {
#port = 143
}
inet_listener imaps {
#port = 993
#ssl = yes
}
}

service auth {
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
# Auth process is run as this user.
user = postfix
group = postfix
}

І, нарешті, в файлі 10-ssl.conf треба прописати:
ssl = no

Наостаннє, треба видалити файл 15-mailboxes.conf

Створення поштових скриньок та псевдонімів

Тепер створимо користувача та поштову скриньку для нього:
Логін — user@study.local
Пароль — password
Адреса — user@study.local

Створимо необхідні файли в Postfix:
# touch /etc/postfix/vmailbox
# touch /etc/postfix/virtual

Пропишемо в Postfix дані про нову поштову скриньку. Для цього в файл /etc/postfix/vmailbox допишемо рядок:
user@study.local study.local/user/
Створимо для прикладу аліас на цю поштову скриньку. Для цього в файл /etc/postfix/virtual допишемо рядок:
postmaster@study.local user@study.local

Та створимо індексовану мапу з цих файлів:
#postmap /etc/postfix/virtual
#postmap /etc/postfix/vmailbox

Тепер потрібно перезапустити Postfix:
# service postfix restart

Внесемо дані про нашого користувача в Dovecot.
Якщо подивитися файл auth-passwdfile.conf.ext то ми побачимо, що логіни та паролі користувачів мають зберігатися у файлі /etc/dovecot/users зі схемою шифрування CRYPT.
Створимо запис для користувача user@study.local з паролем user.
$doveadm pw -s CRYPT -u user@study.local -p password

Отримані дані внесемо до файлу /etc/dovecot/users
user@study.local:{CRYPT}CaKFEZXiRl/aE:5000:5000

Налаштування поштового сервера на базі Postfix, Dovecot та RoundCube. Зміст

Возврат к списку