Конец лета 2026 года, такие компании как Яндекс и ВК, которой принадлежит почта Mail, изменили условия работы своих сервисов. Многие пользовались этими сервисами в том числе и в организациях. По факту, эти изменения почти не повлияли на частных лиц, а вот в организациях возник вопрос: платить Яндексу/ВК или переходить на собственный почтовый сервер. Так что передо мной встала задача организовать второй вариант. Да и для себя уже много лет хотел это сделать. Раз уж так все совпало - приступим. Эта статья будет состоять как-бы из двух частей: первая необязательная, а вторая полноценная. Но я советую изучить обе части - будет полезно. Тем более, что первая часть совсем небольшая.
Для начала нужно усвоить несколько простых вещей. Во-первых, нам конечно же нужны постоянный белый IP-адрес и доменное имя. Во-вторых, нам потребуется правильная настройка DNS-записей - очень важно для правильной работы почты. И, наконец, нужно четко понимать, что в основе работы почты лежит три основных компонента:
Немного про DNS-записи. Главных - две: PTR-запись и MX-запись.
Дополнительных - три:
Порты:
У меня почтовый сервер будет за NAT'ом. Я проброшу все порты. 1)
Кстати, для меня правка PTR-записи оказалась непростой задачей. Дело в том, что в отличии от остальных DNS-записей, эту запись правит владелец IP-адреса. В моем случае это был Ростелеком. Я более двух лет периодически мучил техподдержку Ростелекома, но никто из их операторов не мог понять, что я от них хочу: «Вам услугу подключить?» или «У вас оборудование не работает?» или «Впервые о таком слышу, у нас такого нет». И вдруг, при очередном моем звонке (было это 17 августа 2026 года), попадается некий Алексей и пытается, в отличии от остальных, меня понять. Вечером того же дня, PTR-запись поправили, чему я был бесконечно рад. Алексей, если вдруг, Вы это читаете и узнаете себя, то примите мою огромную благодарность!
Главное препятствие устранено, можно приступать к настройке почтового сервера. Остальное зависит только от меня. Начинаем.
Прежде всего создадим виртуальную машину (подробнее тут) и установим Debian Linux. Для почтового сервера я выделил 2 ядра CPU, 8 гигабайтов оперативной памяти и размер диска в 27 гигабайтов.
Пока linux устанавливается пропишем несколько DNS-записей.
После завершения установки linux нужно проверить и при необходимости изменить некоторые параметры.
Открываем файл hostname
sudo vim /etc/hostname
и записываем в него значение
Затем открываем файл hosts
sudo vim /etc/hosts
и прописываем следующие значения:
127.0.0.1 localhost.local localhost.localamin 127.0.0.1 mail.nikkutuzov.ru mail
Должно получится так:
После перезагружаем виртуальную машину
sudo systemctl reboot
и после перезагрузки проверяем. Команда
hostname -f
должна выдать значение
mail.nikkutuzov.ru
Предварительные ласки настройки окончены, можно приступать к первой или, если хочется уже поскорее, то ко второй части.
Установим Postfix, это делается простой командой:
sudo apt update && sudo apt install postfix -y
После завершения установки нужно ответить на несколько вопросов в диалоговых окнах. Первое оставляем по умолчанию Internet site, а во втором вписываем наш домен. Обратите внимание, что если я хочу, чтобы почта отправлялась с адреса username@nikkutuzov.ru, то нужно будет указать только nikkutuzov.ru
После сохраним оригинальный конфигурационный файл Postfix с помощью команды:
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf_orig
И начнем редактировать:
sudo vim /etc/postfix/main.cf
На данном этапе нас интересуют несколько строчек:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 inet_protocols = all
В первой строке мы добавим через пробел 192.168.11.13
Это только в моем случае! Я добавил IP-адрес виртуальной машины с этим сайтом, чтобы с него можно было отправлять почту без авторизации. Когда мы настроим полноценный почтовый сервер, этот адрес уже не нужно будет прописывать!
Во второй строке нам нужно поменять all на ipv4.
Иначе мы будем получать вот такие предупреждения, говорящие о неправильной PTR-записи для IPv6. А наши письма, по крайней мере до почтового ящика от Google, доходить не будут.
Далее, нужно поправить переменную myorigin и приравнять ее к значению $mydomain
myorigin = $mydomain
В итоге должно получиться примерно так:
Записываем изменения и проверяем конфигурационный файл:
sudo postfix check
Перезапускаем службу Postfix
sudo systemctl restart postfix
Проверяем её состояние
sudo systemctl status postfix
Все письма будут отправляться через 25 порт, проверим его.
sudo ss -tnlp | grep :25
Получаем ответ:
Это говорит нам, что процесс master (Postfix) слушает порт 25. Сервер готов принимать подключения на всех сетевых интерфейсах.
Примитивная настройка почти окончена, попробуем отправить первое письмо. Для этого нам понадобится пакет mailutils
sudo apt install mailutils -y
После установки mailutils можно попробовать отправить письмо командой
echo "Test letter" | mail -s "Test mail!" test-wg5fctdbn@srv1.mail-tester.com
Я использовал для тестов отличный сервис Mail Tester и всем очень советую. Первая маленькая победа.
Тут явно видно, что от нас требуется:
Отправим письмо с явным указанием отправителя
echo "Test letter" | mail -s "Test mail!" test-wg5fctdbn@srv1.mail-tester.com -aFrom:nikkutuzov@nikkutuzov.ru
Стало значительно лучше
До идеала нужно настроить DKIM
Установим openDKIM командой
sudo apt update && sudo apt install opendkim opendkim-tools -y
Сохраним оригинальный файл конфигурации
sudo cp /etc/opendkim.conf /etc/opendkim.conf_orig
Создаем директорию для DKIM
sudo mkdir -p /etc/opendkim/keys/nikkutuzov.ru
Создадим пару закрытый ключ + открытый ключ
sudo opendkim-genkey --directory /etc/opendkim/keys/nikkutuzov.ru/ --domain nikkutuzov.ru --selector mail
Поменяем владельца и права для директории и её содержимого
sudo chown -R root:opendkim /etc/opendkim/keys/nikkutuzov.ru/
sudo chmod u=rw,g=r,o= /etc/opendkim/keys/nikkutuzov.ru/*
Немного отредактируем конфигурационный файл opendkim
sudo vim /etc/opendkim.conf
Добавив в него несколько строк
AutoRestart Yes AutoRestartRate 10/1h Umask 002 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:8891@localhost
Внесем изменение в файл TrustedHosts:
sudo vim /etc/opendkim/TrustedHosts
Он должен содержать следующие строки
127.0.0.1 localhost 192.168.11.0/24 *.nikkutuzov.ru
Создадим два файла - KeyTable и SigningTable с соответствующим содержанием:
echo "mail._domainkey.nikkutuzov.ru nikkutuzov.ru:mail:/etc/opendkim/keys/nikkutuzov.ru/mail.private" | sudo tee /etc/opendkim/KeyTable
echo "*@nikkutuzov.ru mail._domainkey.nikkutuzov.ru" | sudo tee /etc/opendkim/SigningTable
Допишем в конец конфигурационного файла Postfix
sudo vim /etc/postfix/main.cf
Следующее:
### openDKIM smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept milter_protocol = 2
Перезапустим службы openDKIM и Postfix
sudo systemctl restart opendkim.service
sudo postfix check
sudo systemctl restart postfix
Теперь нужно скопировать DKIM, удалить лишние пробелы и кавычки и прописать в DNS-запись
sudo cat /etc/opendkim/keys/nikkutuzov.ru/mail.txt
Снова отправляем тестовое письмо.
echo "Test letter" | mail -s "Test mail!" test-wg5fctdbn@srv1.mail-tester.com -aFrom:nikkutuzov@nikkutuzov.ru
Ура!
Если у Вас проблемы с отправкой писем на кириллице, то в файле /etc/postfix/main.cf нужно найти строку
# Disable SMTPUTF8 for IDN Support smtputf8_enable = no
и поменять на
# Disable SMTPUTF8 for IDN Support smtputf8_enable = yes
Не забудьте перезапустить службу Postfix
sudo systemctl restart postfix
На этом примитивная настройка примитивного почтового сервера готова, мы можем получать и отправлять с него письма. Приступим к полноценной настройке полнофункционального сервера с админкой, web-интерфейсом, защитой от спама и прочего.
Как я говорил ранее, эта часть статьи самодостаточная и для настройки по ней не нужно ничего из первой части. Настраивать будем с помощью iRedMail.
Начинаем с установки зависимостей.
sudo apt update && apt install gzip dialog -y
Затем качаем последнюю версию iRedMail (на момент настройки (17 августа 2026 года) это была версия 1.8.5, а на момент работы над статьей (10 сентября 2026 года) уже вышла версия 1.8.8
wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.8.5.tar.gz
Распаковываем архив. В руководстве рекомендуется распаковывать в директорию /root Я при установке linux не указывал пароль для root, так что у меня этой директории просто нет. Так что распаковывал в домашнюю директорию пользователя, при этом никаких проблем с установкой не возникало.
tar zxf 1.8.5.tar.gz
переходим в распакованную директорию
cd iRedMail-1.8.5
Запускаем процедуру установки iRedMail.
sudo bash iRedMail.sh
Во время установки появится несколько диалоговых окон. Сам процесс установки достаточно долгий. Первые вопрос. Я выбирал значения по умолчанию. Первый скрин - предупреждает нас о том, что если было уже установлено и настроено что-то связанное с почтой, то все конфигурационные файлы будут перезаписаны, согласны - ДА! Ведь мы ставим с нуля. Даже если Вы не пропустили первую часть, уверяю, что все будет хорошо. Второй скрин - выбор директории для почтовых ящиков. Я выбрал опять же значение по умолчанию. Наконец, третий скрин - выбираем web-сервер. Тут выбор очевиден, оставляем nginx.
Затем нам предлагается выбор базы данных. В основном рекомендуют MariaDB, так как для нее больше документации, но я выбрал, как и в остальных проектах, PostgreSQL. Далее нас просят указать пароль для администратора нашей базы данных.
Далее нужно указать имя домена. Обратите внимание, что если настраивается так, чтобы письма отправлялись с vasya@example.com, то здесь нужно указать все, что после знака «собаки» (@), то есть example.com. В моем случае nikkutuzov.ru
Далее выбираем компоненты для установки.
Проверяем итоги нашего выбора и соглашаемся на установку.
Вот тут уже будет долгая установка. Остается только ждать ее окончание.
В конце установки выберите y, чтобы использовать правила брандмауэра, предоставленные iRedMail.
Установка завершена!
После установки перезагружаем наш сервер.
sudo systemctl reboot
Небольшое, но важное отступление. Заглянем немного в будущее. Разговор пойдет о сертификатах безопасности. Дело в том, что iRedMail при установке создает самоподписный сертификат сроком на 10 лет. Но при настройке, например, Thunderbird мы будем получать вот такое предупреждение.
Давайте сразу настроим Let's Encrypt сертификата, чтобы таких предупреждений не получать. Эти сертификаты выдаются на три месяца и автоматически будут продлеваться. Нужно, чтобы был открыт 80 порт!
Установим certbot
sudo apt install certbot -y
Выполним «сухой прогон», чтобы удостовериться, что у нас все получится.
sudo certbot certonly --webroot --dry-run -w /var/www/html -d mail.nikkutuzov.ru
Получим сертификат для нашей почты mail.nikkutuzov.ru 3)
sudo certbot certonly --webroot -w /var/www/html -d mail.nikkutuzov.ru
Далее мы внесем некоторые изменения, в том числе и по поводу сертификата, в файл конфигурации Postfix
sudo vim /etc/postfix/main.cf
Находим строки
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all. inet_protocols = all
Меняем на
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all. inet_protocols = ipv4
Тем самым указываем, что будем использовать только протокол IPv4, чтобы не получать ошибок, вроде этой
Находим строки
# Disable SMTPUTF8 for IDN Support smtputf8_enable = no
Меняем на
# Disable SMTPUTF8 for IDN Support smtputf8_enable = yes
Это делается, для того, чтобы письма на кириллице нормально отправлялись.
В следующем блок раскомментируем последние три строки
# # Enable SASL authentication on port 25 and force TLS-encrypted SASL authentication. # WARNING: NOT RECOMMENDED to enable smtp auth on port 25, all end users should # be forced to submit email through port 587 instead. # #smtpd_sasl_auth_enable = yes #smtpd_sasl_security_options = noanonymous #smtpd_tls_auth_only = yes
Включаем авторизацию. Конечно же, НЕ рекомендуется использовать 25 порт. Ипользовать нужно 587 или 465 порты.
И последнее с Postfix. Находим строки
# # TLS settings. # # SSL key, certificate, CA # smtpd_tls_key_file = /etc/ssl/private/iRedMail.key smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt smtpd_tls_CApath = /etc/ssl/certs
И меняем строки
smtpd_tls_key_file = /etc/ssl/private/iRedMail.key smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt
на
smtpd_tls_key_file = /etc/letsencrypt/live/mail.nikkutuzov.ru/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.nikkutuzov.ru/fullchain.pem
В итоге готовый файл должен выглядеть примерно так:
Настройка Postfix окончена, поправим Dovecot.
sudo vim /etc/dovecot/dovecot.conf
Находим строки
... # SSL: Global settings. # Refer to wiki site for per protocol, ip, server name SSL settings: # http://wiki2.dovecot.org/SSL/DovecotConfiguration ssl = required ssl_min_protocol = TLSv1.2 # log_debug = category=ssl ssl_server_cert_file = /etc/ssl/certs/iRedMail.crt ssl_server_key_file = /etc/ssl/private/iRedMail.key ...
и меняем последние две строки на
ssl_server_cert_file = /etc/letsencrypt/live/mail.nikkutuzov.ru/fullchain.pem ssl_server_key_file = /etc/letsencrypt/live/mail.nikkutuzov.ru/privkey.pem
Должно выглядеть так
Перезапускаем dovecot
sudo systemctl restart dovecot.service
Наконец, поправим DKIM запись. По умолчанию в качестве сепаратора установлено значение «dkim», а нам нужен сепаратор «mail»
Поправим конфигурационный файл amavis
sudo vim /etc/amavis/conf.d/50-user
Находим там строку
dkim_key('nikkutuzov.ru', 'dkim', '/var/lib/dkim/nikkutuzov.pem');
И поменяем значение сепаратора «dkim» на «mail»
dkim_key('nikkutuzov.ru', 'mail', '/var/lib/dkim/nikkutuzov.pem');
Должно получиться вот так
После этого генерируем ключи
sudo amavisd genrsa /var/lib/dkim/nikkutuzov.ru 2048
Смотрим на результат
sudo amavisd showkeys
Полученное значение копируем, убираем лишние кавычки и пробелы. Копируем в DNS-запись DKIM
На этом, в общем-то, настройка полностью завершена. У нас останется папка iRedMail-1.8.5 - ее лучше удалить!
$ sudo rm -rf iRedMail-1.8.5
Прежде чем удалять эту директорию изучите файл ~/iRedMail-1.8.5/iRedMail.tips В нем содеражаться:
Главное, сохраните пароль пользователя postmaster. В его почтовом ящике будет лежать письмо, в котором информация из этого файла будет продублирована!
После этого перезагружаем наш почтовый сервер.
sudo systemctl reboot
Остается перейти на мою виртуальную машину с nginx и внести в нее новую запись.
На этой машине нужно выполнить совсем немного действий. В первую очередь нужно создать простой конфигурационный файл для нашего домена mail.nikkutuzov.ru
sudo nano /etc/nginx/sites-available/mail.nikkutuzov.ru
Со следующим содержанием
server {
listen 80;
listen [::]:80;
server_name mail.nikkutuzov.ru;
}
Затем перезапустить службу nginx
sudo systemctl restart nginx.service
Выпускаем сертификат с автоматической настройкой нашего конфигурационного файла (–nginx) для нашего домена (-d mail.nikkutuzov.ru).
sudo certbot --nginx -d mail.nikkutuzov.ru
После этого нужно привести конфигурационный файл
sudo nano /etc/nginx/sites-available/mail.nikkutuzov.ru
в следующий вид
server {
server_name mail.nikkutuzov.ru;
listen 443 ssl; # managed by Certbot
listen [::]:443 ssl; # managed by Certbot
location / {
proxy_pass https://192.168.11.15;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
}
ssl_certificate /etc/letsencrypt/live/mail.nikkutuzov.ru/fullchain.pem; # managed by >
ssl_certificate_key /etc/letsencrypt/live/mail.nikkutuzov.ru/privkey.pem; # managed b>
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = mail.nikkutuzov.ru) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name mail.nikkutuzov.ru;
return 404; # managed by Certbot
}
Где 192.168.11.15 - это IP-адрес нашей виртуальной машины почтового сервера.
Перезапускаем службу nginx
sudo systemctl restart nginx.service
Настройка окончательно завершена, у нас теперь полноценный почтовый сервер с защитой от спама, антивирусной защитой, с админкой и клиентом для работы с электронной почтой с веб-интерфейсом.
Нам доступны при ссылки:
Начнем с самого интересного - админки!
Вот так выглядит окно для входа в админку.
Вводим в качестве логина postmaster@nikkutuzov.ru и пароль (мы задавали его при установке iRedMail). Давайте добавим нового пользователя.
Позже можно менять его параметры, такие как имя, размер почтового ящика, пароль и прочее.
Пользователь создан, попробуем отправить письмо! Переходим в web-клиент.
Переходим по ссылке https://mail.nikkutuzov.ru нас автоматически перенаправляет на https://mail.nikkutuzov.ru/mail
Вводим логин/пароль и попадаем в наш почтовый ящик.
Создадим и отправим письмо, с вложением
В итоге на стороне получателя видим
Все просто замечательно! Теперь совсем немного про мониторинг.
Перейдя по ссылке и введя логин и пароль пользователя postmaster мы попадаем в панель мониторинга почтового сервера. Очень много метрик!
Тут мне нечего сказать, штука, наверняка, нужная и удобная. Но я ей почти не пользовался.
Попробуем настроить почтового клиента на примере Thunderbird.
Настройку будем осуществлять на примере Thunderbird. Я пробовал на трех версиях Windows. А именно на Windows XP, Windows 7 и Windows 11. Работает замечательно хорошо везде!
Вот пример на Windows XP
Если наш сервер находится за российскими IP-адресами, то clamav не будет обновляться, так как настроенные по умолчанию зеркала заблокированы. Обычно настройки выполняются простым исправлением конфигурационного файла freshclam.conf, в debian linux так не получится. Выполняем следующие настройки.
Запустим реконфигурацию clamav
sudo dpkg-reconfigure clamav-freshclam
На все, кроме одного вопроса, отвечаем значениями по умолчанию. Только настроим «частные зеркала» (предпоследний скрин). Туда прописываем
https://clamav-mirror.ru
Затем останавливаем службу автоматического обновления вирусных баз clamav
sudo systemctl stop clamav-freshclam.service
Удаляем файл, содержащий информацию об обновлениях вирусных сигнатур.
sudo rm -f /var/lib/clamav/freshclam.dat
Удаляем временные файлы clamav
sudo rm -rf /var/lib/clamav/tmp.*
Обновляем антивирус с выводом подробной информации.
sudo freshclam -vvv
Запускаем службу автоматического обновления антивирусных баз clamav
sudo systemctl start clamav-freshclam.service
— Николай Кутузов 2026/09/10 23:21