Спочатку встановлюємо 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 #Приймаємо з'єднання на всіх інтерфейсах
#Правила, що діють на етапі команди 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. У нас ці правила виглядають наступним чином:
Роздивимось їх докладніше: 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
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