Собственный почтовый сервер даёт полный контроль над данными, независимость от сторонних провайдеров и возможность гибкой настройки под задачи бизнеса. Это решение подходит для компаний, которые ценят конфиденциальность, хотят кастомизировать почтовую инфраструктуру или снизить операционные расходы.
Для безопасности рекомендуется не работать под root. Создайте отдельного пользователя с правами администратора:
sudo adduser info
sudo usermod -aG sudo info
Пример конфигурации /etc/ssh/sshd_config:
Port 7080
PermitRootLogin no
AllowUsers info myname
После изменений перезагрузите службу:
sudo systemctl restart sshd
sudo apt update
sudo apt -y install postfix sasl2-bin mailutils
При настройке Postfix выберите режим «No Configuration» — конфигурацию выполним вручную.
/etc/postfix/main.cfmyhostname = test.ru
mydomain = test.ru
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
message_size_limit = 10485760
mailbox_size_limit = 1073741824
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject
Примените изменения:
sudo newaliases
sudo systemctl restart postfix
sudo apt -y install dovecot-core dovecot-pop3d dovecot-imapd
/etc/dovecot/dovecot.conf
listen = *, ::
/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/home/info/Maildir
/etc/dovecot/conf.d/10-master.conf — интеграция с Postfix:
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
Перезапустите службу:
sudo systemctl restart dovecot
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d test.ru
В main.cf добавьте:
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/test.ru/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/test.ru/privkey.pem
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
В /etc/dovecot/conf.d/10-ssl.conf:
ssl = yes
ssl_cert = /etc/letsencrypt/live/test.ru/fullchain.pem
ssl_key = /etc/letsencrypt/live/test.ru/privkey.pem
Примените изменения:
sudo systemctl restart postfix dovecot
В main.cf:
virtual_mailbox_domains = test.ru
virtual_mailbox_base = /home/info
virtual_mailbox_maps = hash:/etc/postfix/virtual-mailbox
virtual_uid_maps = static:20000
virtual_gid_maps = static:20000
/etc/postfix/virtual-mailboxinfo@test.ru test.ru/info/Maildir/
Примените маппинг:
sudo postmap /etc/postfix/virtual-mailbox
sudo systemctl restart postfix
Создайте файл /etc/dovecot/users с хэшированным паролем:
sudo doveadm pw -s CRAM-MD5
Добавьте строку в формате:
info@test.ru:{CRAM-MD5}хэш_пароля
В auth-passwdfile.conf.ext укажите путь к файлу пользователей и метод аутентификации.
Разрешает отправку почты только с вашего сервера:
test.ru. IN TXT "v=spf1 ip4:100.90.88.77 a mx ~all"
Указывает, как обрабатывать письма, не прошедшие проверки:
_dmarc.test.ru. IN TXT "v=DMARC1; p=none; aspf=r; sp=none"
Рекомендуется начать с политики
p=noneдля мониторинга, затем перейти кp=quarantineилиp=reject.
Подпись исходящих писем криптографическим ключом.
Настройка требует установки opendkim и публикации публичного ключа в DNS.
echo "Тестовое сообщение" | mail -s "Проверка" info@test.ru
sudo tail -f /var/log/mail.log
Установите pflogsumm для формирования отчётов:
sudo apt install pflogsumm
sudo pflogsumm -d today /var/log/mail.log
telnet test.ru 25
telnet test.ru 587
telnet test.ru 143
Добавьте в crontab ежедневный отчёт:
00 01 * * * sudo pflogsumm -e -d yesterday /var/log/mail.log | mail -s 'Postfix Daily Report' admin@test.ru
Регулярно архивируйте: