Налаштування поштового сервера. Частина 1. Встановлення та базове налаштування Postfix та Dovecot.
- Деталі
- Категорія: Поштовий сервер
- Опубліковано: Середа, 20 березня 2019, 12:07
- Автор: Yakim
- Перегляди: 4971
Починаю публікацію циклу статей по налаштуванню поштового сервера на базі 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
Підтримайте, будь ласка автора
та придбайте книгу
"Налаштування поштового
сервера на базі Postfix, Dovecot
та RoundCube"
В електронному вигляді