Система электронной почты состоит из нескольких компонентов:
- Пользовательский агент MUA (Mail User Agent), редактор, который позволяет читать и составлять почтовые сообщения;
- Агент передачи электронной почты MSA (Mail Submission Agent), принимающий сообщения от MUA и передающий после обработки транспортной системе;
- Транспортный агент MTA (Mail Transfer Agent), который пересылает сообщение по сети на другой компьютер;
- Агент доставки DA (Delivery Agent), перемещающий сообщения в локальное хранилище (почтовый ящик или база данных);
- Необязательный агент доступа AA (Access Agent), связывающий пользовательский агент с хранилищем сообщений (по протоколу IMAP или POP).
Примеры агентов:
- Пользовательские агенты MUA: Thunderbird, MS Outlook, mac OS Mail, /bin/mail;
- Транспортные агенты MTA: sendmail, Exim, MS Exchange, Postfix;
- Агенты доставки DA: local, mail.local, procmail, Maildrop, Dovecot;
- Агенты доступа AA: Cyrus, UW imapd.
Транспортный агент может использовать несколько портов (RFC 5321):
- 25/tcp - стандартный порт, без шифрования,
- 587/tcp - порт, который используется для передачи с шифрованием STARTLS,
- 465/tcp - порт, который используется для передачи с шифрованием SSL.
Агент доставки может использовать следующие порты:
- 143/tcp - для протокола IMAP,
- 993/tcp - для протокола IMAPS (IMAP поверх SSL),
- 110/TCP - для протокола POP,
- 995/TCP - для протокола POPS (POP over SSL).
Для хранения почты обычно используется формат `mbox` или `Maildir`. В случае с`mbox` почта хранится в одном файле в `/var/mail/username`с разделителем в виде специальной строки `From` между сообщениями. В случае с`Maildir` каждое сообщение хранится в отдельном файле.
Преимущество протокола IMAP перед POP, которые используются агентами доступа для получения почты от сервера, заключается в возможности доставки сообщений по одному и улучшенной обработке больших файлов, прикреплённых к письму.
Установите и настройте MTA (Message Transfer Agent) агент Postfix. Страница документации основного конфигурационного файла `man postconf.5`. Онлайн документация доступна по ссылке http://postfix.cs.utah.edu/postfix-manuals.html.
Проверьте работоспособность, отправив письмо командой `mail` или `sendmail` на свой личный почтовый адрес. После составления письма завершите ввод символом конца файла Ctrl+D или вводом точки.
Заведите почтовые ящики `noreply@studX.myoffice.ru` и `logs@studX.myoffice.ru`. Протестируйте отправку почты с ящика `noreply`. Протестируйте приём программно-сгенерированной почты на ящик `logs`, например от демона `cron`.
Проверьте работоспособность из клиента 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.
Переподключите клиент одного из пользователей, и проверьте, что вы можете принимать и отправлять почту.
# 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; "
"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`, чтобы изменить или добавить следующие параметры: