Итак, нам потребуется следующий базовый набор записей:
@ 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.6.8
Для работы сервера эти файлы не нужны, но в случае их утечки сервер будет полностью скомпрометирован.
Настройка DKIM-записи
При установке iRedMail ключ для первого обслуживаемого домена создается автоматически, его можно найти в iRedMail.tips или вывести командой:
amavisd-new showkeys
Нам потребуется блок из скобок, в котором следует удалить переносы строк и лишние кавычки.
Сама DNS-запись должна выглядеть так:
dkim._domainkey TXT "v=DKIM1; p=MIIBIjANBgk...XQIDAQAB"
Это позволит серверам-получателям проверить подлинность отправителя и существенно повысит вероятность успешной доставки почты адресату.
Начало работы, проверка основных функций
В целом, наш почтовый сервер готов и можно начинать с ним работать. Но сначала просмотрим на доступные нам инструменты управления, в частности нам доступна бесплатная версия панели iRedAdmin, чтобы попасть в нее наберите адрес ваш_домен/iredadmin. Панель простая, если не сказать - примитивная. Вам доступно создание нового домена, нового администратора и нового пользователя.
Для повседневной работы мы будем использовать веб-интерфейс SOGo, он доступен по адресу почтового сервера или по псевдониму: ваш_домен/SOGo/ Советуем везде использовать псевдоним, так как почтовый сервер в последующем вы можете и поменять, а псевдоним позволяет не менять настройки у пользователей, достаточно будет изменить единственную DNS-запись.
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.crtsystemctl 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.
Веб-интерфейс предоставляет быстрый доступ к основным показателям в реальном времени.