Головна

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

Починаю публікацію циклу статей по налаштуванню поштового сервера на базі Postfix та Dovecot.

Сьогодні буде перша частина - Встановлення та базове налаштування Postfix та Dovecot.

 

До переліку статей циклу

 

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

Спочатку встановлюємо 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 допишемо рядок:

Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб побачити її. Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб побачити її.

 

Та створимо індексовану мапу з цих файлів:

#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

 

 

До переліку статей циклу