Update tasks for 04_postfix_dovecot

pull/1/head
Vladimir Protsenko 2 years ago
parent e541517abf
commit 883bafe338

@ -28,14 +28,15 @@
Преимущество протокола IMAP перед POP, которые используются агентами доступа для получения почты от сервера, заключается в возможности доставки сообщений по одному и улучшенной обработке больших файлов, прикреплённых к письму. Преимущество протокола IMAP перед POP, которые используются агентами доступа для получения почты от сервера, заключается в возможности доставки сообщений по одному и улучшенной обработке больших файлов, прикреплённых к письму.
В заданиях используйте домен studX.start.myoffice.ru (193.32.63.170+X), порты 25, 587, 993. В заданиях используйте домен studX.myoffice.ru (193.32.63.170+X), порты 25, 587, 993.
``` ```
________ ________
| | | |
| клиент | (Thunderbird на ноутбуке, | клиент | (Thunderbird на ноутбуке,
|________| подключается по IMAPS протоколу на порт 993) |________| подключается по IMAPS протоколу на порт 993)
| |
| DNS A stud15.myoffice.ru -> 193.32.63.185
роутер public IP 193.32.63.185:[25,587,993] -> private IP 10.160.179.25:[25,587,993] роутер public IP 193.32.63.185:[25,587,993] -> private IP 10.160.179.25:[25,587,993]
| |
| ens18 в vlan499 с доступом в интернет с IP 10.160.179.25/24 | ens18 в vlan499 с доступом в интернет с IP 10.160.179.25/24
@ -48,12 +49,30 @@
# 1. # 1.
Установите и настройте MTA (Message Transfer Agent) агент Postfix. Страница документации основного конфигурационного файла `man postconf.5`. Онлайн документация доступна по ссылке http://postfix.cs.utah.edu/postfix-manuals.html. Установите и настройте MTA (Message Transfer Agent) агент Postfix. Страница документации основного конфигурационного файла `man postconf.5`. Онлайн документация доступна по ссылке http://postfix.cs.utah.edu/postfix-manuals.html.
Используйте параметры в конфигурации `/etc/postfix/main.cf` для будущей интеграции с dovecot:
```
home_mailbox = mail/
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
```
и раскомментируйте строки в конфигурации `/etc/postfix/master.cf`:
```
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
```
Проверьте работоспособность, отправив письмо командой `mail` или `sendmail` на свой личный почтовый адрес. После составления письма завершите ввод символом конца файла Ctrl+D или вводом точки. Проверьте работоспособность, отправив письмо командой `mail` или `sendmail` на свой личный почтовый адрес. После составления письма завершите ввод символом конца файла Ctrl+D или вводом точки.
``` ```
$ mail -s "This is a test mail from postfix stud15" <recepient email address> $ mail -s "This is a test mail from postfix stud15" <email получателя>
$ sendmail stud15.start.myoffice.ru $ sendmail <email получателя>
To: <recepient email address>
From: stud15.start.myoffice.ru
Subject: This is a test mail from postfix stud15 Subject: This is a test mail from postfix stud15
Hello, will this mail be delivered? Hello, will this mail be delivered?
Best regards, Best regards,
@ -61,12 +80,175 @@ Postfix MTA
``` ```
# 2. # 2.
Заведите почтовые ящики noreply@studX.start.myoffice.ru и logs@studX.start.myoffice.ru. Протестируйте отправку почты с ящика noreply. Протестируйте приём программно-сгенерированной почты на ящик logs, например от демона cron. Заведите почтовые ящики `noreply@studX.myoffice.ru` и `logs@studX.myoffice.ru`. Протестируйте отправку почты с ящика `noreply`. Протестируйте приём программно-сгенерированной почты на ящик `logs`, например от демона `cron`.
# 3. # 3.
Установите и настройте DA (Delivery Agent) агент Dovecot. Установите и настройте DA (Delivery Agent) агент Dovecot.
Проверьте работоспособность из клиента Thunderbird или аналога. Укажите в качестве IMAP сервера studX.start.myoffice.ru порт 993, шифрование TLS. Используйте следующую конфигурацию:
```
disable_plaintext_auth = yes
mail_privileged_group = mail
mail_location = maildir:~/mail
#set mailbox location to Maildir style
userdb {
driver = passwd
}
passdb {
args = %s
driver = pam
}
protocols = "imap"
namespace inbox {
inbox = yes
mailbox Trash {
auto = subscribe
special_use = \Trash
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Spam {
auto = subscribe
special_use = \Junk
}
mailbox Archive {
auto = subscribe
special_use = \Archive
}
}
#create and autosubscribe to some default folders
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
```
Проверьте работоспособность из клиента Thunderbird или аналога. Подключите в клиенте почтовые ящики, созданные ранее. Укажите в качестве IMAP сервера studX.myoffice.ru порт 993, шифрование TLS. Подтвердите, что вы доверяете самоподписанному сертификату.
# 4.
Вместо самоподписанных сертификатов используйте сертификаты letsencrypt, полученные на почтовом сервере с помощью утилиты `certbot`. Следуйте инструкциям на официальном сайте (https://certbot.eff.org/instructions?ws=other&os=debianbuster) для установки пакета и получении сертификата.
```
# sudo apt update
# sudo apt install snapd
# sudo snap install core; sudo snap refresh core
# sudo snap install --classic certbot
```
Временно остановите веб-сервер на 80 порту, если он работает. Certbot запустит свой сервер-агент, чтобы проверить, что вы владете доменом studX.myoffice.ru https://letsencrypt.org/ru/how-it-works/. Сертификаты будут помещены в папку `/etc/letsencrypt/live/` При запросе сертификатов учитывайте лимит обращений https://letsencrypt.org/ru/docs/rate-limits/, достижение которых приведёт к блокировке на неделю.
```
# certbot --standalone
Account registered.
Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter 'c' to cancel): stud15.myoffice.ru
Requesting a certificate for stud15.myoffice.ru
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/stud15.myoffice.ru/fullchain.pem
Key is saved at: /etc/letsencrypt/live/stud15.myoffice.ru/privkey.pem
This certificate expires on 2023-01-20.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
```
Проверьте, что расписание обновления сертификата включено командой `systemctl list-timers`. Добавьте также расписание для перезагрузки postfix, так как после обновления сертификатов postfix автоматически их не подхватывает. Например в cron:
```
0 0 * * 1 systemctl reload postfix
```
Измените путь к ключу `privkey.pem` и сертификату `fullchain.pem` в кофигурации postfix `/etc/postfix/main.cf` (параметры `smtp_tls_cert_file` и `smtpd_tls_key_file`) и dovecot `/etc/dovecot/conf.d/10-ssl.conf` (параметры `ssl_cert`, `ssl_key`). Перезагрузите postfix и dovecot.
Проверьте сертификаты командой
```
openssl s_client -connect stud15.myoffice.ru:993 -showcerts | openssl x509 -text
```
Переподключите клиент одного из пользователей, и проверьте, что вы можете принимать и отправлять почту.
# 5. *
Спам сильно повлиял на систему электронной почты. Появилось множество проверок для такого почтового трафика, которые могут помешать письму дойти до адресата. TLS увеличит вероятность доставки письма если только письмо передаётся на сервер, принимающий исключительно TLS трафик. Увеличить вероятность доставки также позволяет правильная настройка:
- SPF,
- DKIM (DomainKeys Identified Mail),
- DMARC (Domain-based Message Authentication, Reporting and Conformance),
- MAT-STS записей,
- включение поддержки DANE.
## 5.1
Настройте SPF сами или обратитесь к владельцу домена для внесения txt DNS записи следующего вида:
```
Имя: stud15.myoffice.ru.
Значение: v=spf1 ip4:193.32.63.185 a mx ~all
```
## 5.2
Настройте SPF сами или обратитесь к владельцу домена для внесения txt DNS записи следующего вида:
```
Имя: _dmarc.stud15.myoffice.ru.
Значение: v=DMARC1; p=none; aspf=r; sp=none
```
## 5.3
Настройте DKIM, установив пакеты `opendkim` и `opendkim-tools`:
```
$ sudo apt install opendkim opendkim-tools -y
$ sudo systemctl enable opendkim
$ sudo systemctl start opendkim
```
Для настройки следуйте инструкциям `man opendkim` или онлайн инструкциям http://www.opendkim.org/opendkim-README. Сгенерировать ключи и запись для DNS вы можете утилитой `opendkim-genkey` в директории `/etc/dkimkeys/stud15.myoffice.ru`. После генерации файлов поменяйте владельца на пользователя и группу `opendkim`.
```
# mkdir /etc/opendkim/stud15.myoffice.ru
# opendkim-genkey --domain stud15.myoffice.ru --selector mail
# chown opendkim:opendkim mail.private
# cat mail.txt
mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3wiGFJNaPzXwUg7zgNxLgNO247s0Flmz3t3d56Rzyfgtwwlao/7S37o1vxBLLZj+J49sh8kHNDCljmxYAG0vjkK9cWHzDH6Yst146UkLI2ltGTv+kBf1oOE4LOdUvR/N/fzWeIU5FV8wdzenxPNryWXsJiO7X11j48BtBA7NsajSdTU64aG/cF3i03OrlyE4BYxz64yUefSpNM"
"6JaGZbCg9E9ONpKhb8Rf5E1StHyC19B24/YVakxURVr5KHlxgoR7NBLCjWU4k631LpTRbgueY/zQJlKg+bmZO43cC/KdTHggECxhFKzE5AugJZtd64CeFByGMTdIF6x0+tGS6w4QIDAQAB" ) ; ----- DKIM key mail for stud15.myoffice.ru
```
Также вы можете воспользоваться онлайн сервисами для генерации ключей, например https://www.dynu.com/NetworkTools/DKIMWizard. Внесите полученную txt DNS запись сами или обратитесь к владельцу домена для внесения записи в DNS.
Отредактируйте `/etc/opendkim.conf`, чтобы изменить или добавить следующие параметры:
```
Domain stud15.myoffice.ru
Selector mail
KeyFile /etc/dkimkeys/stud15.myoffice.ru/mail.private
Socket inet:8891@localhost
```
Измените в `/etc/default/opendkim` следующий параметр (порт прослушивания сервиса opendkim):
```
SOCKET=inet:8891@localhost
```
Сконфигурируйте взаимодействие DKIM с postfix, добавив следующие параметры в конфигурационный файл `/etc/postfix/main.cf`:
```
postconf -e 'milter_default_action=accept'
postconf -e 'milter_protocol=2'
postconf -e 'smtpd_milters=inet:127.0.0.1:8891'
postconf -e 'non_smtpd_milters=inet:127.0.0.1:8891'
```
Перезапустите `opendkim` и `postfix`:
```
systemctl restart opendkim
systemctl restart postfix
```
## 5.4
Проверьте ваш почтовый домен с помощью валидатора https://esmtp.email/tools/mta-sts/.
# Релевантные источники # Релевантные источники
- https://en.wikipedia.org/wiki/Email - https://en.wikipedia.org/wiki/Email
@ -77,4 +259,7 @@ Postfix MTA
- https://ru.wikipedia.org/wiki/POP3 - https://ru.wikipedia.org/wiki/POP3
- https://ru.wikipedia.org/wiki/Postfix - https://ru.wikipedia.org/wiki/Postfix
- https://ru.wikipedia.org/wiki/Dovecot - https://ru.wikipedia.org/wiki/Dovecot
- Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley, Dan Macking. Unix Handbook. 18 Chapter. - https://ru.wikipedia.org/wiki/DomainKeys_Identified_Mail
- https://ru.wikipedia.org/wiki/DMARC
- Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley, Dan Macking. Unix Handbook. 18 Chapter.
- https://gist.github.com/howyay/57982e6ba9eedd3a5662c518f1b985c7
Loading…
Cancel
Save