Установка почтового сервера IredMail Ubuntu 20.04

Итак, нам потребуется следующий базовый набор записей: 
@ IN MX 10 ваш_домен
mail IN CNAME ваш_домен
ваш_домен IN A ip_сервера

Также сразу добавим SPF и DMARС-записи:

@ IN TXT "v=spf1 +a +mx ~all"
_dmarc TXT "v=DMARC1; p=none; rua=mailto:report@ваш_домен"

SPF-запись говорит о том, что почту могут отправлять узлы указанные в A и MX-записях домена,почту отправлять запрещено, но прямого указания блокировать таких отправителей нет. DMARC предписывает не предпринимать никаких действий и только присылать отчеты на указанный ящик. Впоследствии, отладив работу сервера, эти правила следует изменить .
Для начала правильно установим часовой пояс:

timedatectl set-timezone Europe/Moscow

Получить список зон можно командой:

timedatectl list-timezones

Установим имя хоста:

hostnamectl set-hostname имя сервера

Приводим файл /etc/hosts к следующему виду:

127.0.0.1 mail.ваш_домен localhost localhost.localdomain

Проверим настройки, в ответ на команду:

hostname -f

Сервер должен ответить полным именем   

Установка и базовая настройка iRedMail

Установка происходит из-под суперпользователя root находясь в его домашней директории. Прежде всего скачаем архив с продуктом, ссылку на скачивание можно получить на официальной странице.

Выполним переход в домашнюю директорию, скачаем и распакуем архив:

wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.7.1.tar.gz 
tar -xzvf 1.7.1.tar.gz

Перейдем в распакованную папку и запустим инсталлятор:

cd iRedMail-1.7.1
bash iRedMail.sh

Скрипт сначала выполнит скачивание необходимых пакетов, после чего вас встретит графический установщик:

Прежде всего вам будет задан вопрос о месте хранения почты, вы можете использовать как предложенное значение, так и указать собственное расположение:

В качестве веб-сервера  предлагается NGINX:

 Выберите  базу данных с которой  будет работать сервер (у меня собрано на MariaDB)

Указываем имя вашего домена, который будет обслуживать  сервер:

Далее будет создана учетная запись администратора с именем postmaster и вам будет предложено установить на нее пароль, при этом он не должен содержать специальных символов и не может быть пустым. Также, потом, вас попросят установить пароль для суперпользователя базы данных.

В следующем окне выбираем SOGo и все остальное (кроме Roundcubemail)

После чего вам еще раз будут показаны все выбранные настройки и предложено подтвердить выбор, после утвердительного ответа начнется процесс установки, все пакеты скачиваются из штатных репозиториев системы. В процессе установки вас могут несколько раз спросить о применении тех или иных настроек, на все из них отвечаем утвердительно. В самом конце вы можете увидеть ошибку обновления ClamAV, что связано с недоступностью серверов обновлении из РФ.

В этом случае, после завершения процесса установки, откройте файл /etc/clamav/freshclam.conf и добавьте туда строку:

DatabaseMirror https://pivotal-clamav-mirror.s3.amazonaws.com

Все остальные строки с зеркалами нужно закомментировать. После чего следует удалить файл freshclam.dat и перезапустить службу:

rm -f /var/lib/clamav/freshclam.dat
systemctl restart clamav-freshclam

После чего сервер потребуется перезагрузить.

Несколько слов о безопасности

После установки в директории с установщиком iRedMail окажутся два файла: iRedMail.tips и config. Первый содержит подробную информацию об установленных пакетах и их настройках, а также об установленных для них логинов и паролей, эта же информация будет продублирована на почтовый адрес администратора. Второй - списки паролей для различных пользователей и служб.

Данную информацию следует сохранить в надежном месте, а саму директорию с инсталлятором удалить:

rm -rf ~/iRedMail-1.7.1

Для работы сервера эти файлы не нужны, но в случае их утечки сервер будет полностью скомпрометирован.

Настройка DKIM-записи

При установке iRedMail ключ для первого обслуживаемого домена создается автоматически, его можно найти в iRedMail.tips или вывести командой:

amavisd-new showkeys

Нам потребуется блок из скобок, в котором следует удалить переносы строк и лишние кавычки.

 

Сама DNS-запись должна выглядеть так:

dkim._domainkey TXT "v=DKIM1; p=MIIBIjANBgk...XQIDAQAB"

Это позволит серверам-получателям проверить подлинность отправителя и существенно повысит вероятность успешной доставки почты адресату.

Начало работы, проверка основных функций

Почтовый сервер готов и можно начинать с ним работать. Но сначала просмотрим на доступные нам инструменты управления, в частности нам доступна бесплатная версия панели iRedAdmin, чтобы попасть в нее наберите адрес ваш_домен/iredadmin. Панель простая Вам доступно создание нового домена, нового администратора и нового пользователя.

Для управления почтовыми аккаунтами есть веб-интерфейс SOGo, он доступен по адресу : ваш_домен/SOGo/ SOGo это простой и удобный веб-клиент с достаточным количеством настроек и функциями для групповой работы. Поддерживается адресная книга и календари.

Проверку почты следует начинать с локальной но можно проверить и на внешней  

Проверим отправку писем внешним получателям, например, на ящик публичной почтовой службы. Если вы все сделали правильно и все нужные DNS-записи присутствуют, то письмо будет успешно доставлено, в противном случае не забываем проверить папку Спам. В нашем случае письмо успешно пришло на Rambler и мы можем убедиться, что наш сервер использовал шифрование и DKIM-подпись, которая успешно прошла проверку.

И теперь обратный тест, отправка почты извне на свой сервер. Для того, чтобы эта попытка увенчалась успехом нам нужно иметь рабочие MX и A-записи. Причем они должны обновиться именно для сервера-отправителя, в противном случае он не сможет выполнить доставку. Поэтому основные DNS-записи следует изменять заранее, оптимально - за несколько дней до настройки почтового сервера.

Если все сделано правильно  внешнюю почту вы также успешно получите.

Получение сертификатов Let's Encrypt

 Установим certbot:

apt install certbot

Проверим возможность получения сертификата:

certbot certonly --webroot --dry-run -w /var/www/html -d mail.ваш_домен

Ключ --dry-run как раз указывает на то, что нужно выполнить проверку без реального получения сертификата, ключ -d указывает домен, для которого мы хотим получить сертификат

Если проверка прошла удачно, то получаем сертификаты командой:

certbot certonly --webroot -w /var/www/html -d mail.ваш_домен

При получении сертификата  попросят указать почтовый адрес, указывайте действующую почту, на нее будут приходить уведомления, в случае если сертификат не удастся продлить автоматически.

Никаких настроек по продлению делать не нужно, certbot сам добавит в планировщик необходимые задания. После получения потребуется выполнить ряд действий: скопировать сертификаты в хранилище iRedMail и перезапустить службы. Для этого воспользуемся дополнительными возможностями certbot.

Откроем файл с настройками нашего домена /etc/letsencrypt/renewal/mail.ваш_домен.conf и внесем в секцию [renewalparams] следующую опцию:

[renewalparams]
...
renew_hook = /etc/iRedMail_ssl.sh

Теперь создадим сам файл скрипта 

nano /etc/iRedMail_ssl.sh

И внесем в него строки:

#!/bin/bash

rm -f /etc/ssl/private/iRedMail.key
rm -f /etc/ssl/certs/iRedMail.crt
ln -s /etc/letsencrypt/live/mail.ваш_домен/privkey.pem /etc/ssl/private/iRedMail.key
ln -s /etc/letsencrypt/live/mail.ваш_домен/fullchain.pem /etc/ssl/certs/iRedMail.crt

systemctl restart dovecot
systemctl restart postfix
systemctl restart nginx

Данный скрипт удаляет старые сертификаты и создает на их месте новые, точнее символические ссылки на новые сертификаты, а затем перезапускает службы. Он будет автоматически запускаться certbot при каждом успешном обновлении сертификатов. А пока сделаем его исполняемым:

chmod +x /etc/iRedMail_ssl.sh

И выполним:

/etc/iRedMail_ssl.sh

Этим проверим его работоспособность и выполним замену самоподписанных сертификатов на полученные от Let's Encrypt. Если скрипт отработал без ошибок, то снова идем в веб-интерфейс почты и убеждаемся что сервер с полноценным сертификатом. Теперь наш почтовый сервер полностью готов к эксплуатации.

Открываем порты для работы сервера:       

  • 25 — стандартный SMTP (без шифрования или через STARTTLS);
  • 80 — HTTP для порталов iRedAdmin и Roundcube;
  • 110 — стандартный POP3 (без шифрования или через STARTTLS);
  • 143 — стандартный IMAP (без шифрования или через STARTTLS);
  • 443 — защищенный HTTPS для порталов iRedAdmin и Roundcube;
  • 465 — защищенный SMTP через SSL/TLS;
  • 587 — защищенный SMTP через STARTTLS;
  • 993 — защищенный IMAP через SSL/TLS;
  • 995 — защищенный POP3 через SSL/TLS.

Мониторинг

Контроль над настроенным и установленным сервером, мониторинг основных показателей,В iRedMail не нужно дополнительно ничего делать, из коробки была установлена система мониторинга netdata. Чтобы попасть в ее графический интерфейс наберите ваш_домен/netdata и войдите под учетной записью администратора почтового сервера postmaster.

Веб-интерфейс предоставляет быстрый доступ к основным показателям в реальном времени.