iRedMail - корпоративная почта

Инструкция по развертыванию корпоративной почты с использованием iRedMail

Вместо предисловия

Когда речь заходит о корпоративной почте, чаще всего на ум приходят какие-то коммерческие On-line сервисы почтовых сообщений, например от Google, Yandex или Mail.ru. Или же коммерческие Standalone решения от Micorosoft или Kerio.

Не всегда использование сторонних сервисов оправдано технически, и уж тем более не всегда оправдано экономически.

В данной статье мы рассмотрим установку и настройку корпоративного почтового сервера на базе свободного open source ПО iRedMail

Требования к почтовой системе:

  • Конфиденциальность - все данные хранятся на собственном/арендном VPS или выделенном сервере. Доступ к ним есть только у вас.

  • Открытый код - тут все понятно. Есть возможность изучить код, чтобы понять как работает ПО.

  • Бесплатное ПО - тут все понятно. За использование программным обеспечением платить не нужно.

  • Безопасность - использование почтовых служб через безопасные соединение (POP3 / IMAP / SMTP через TLS, веб-почта с HTTPS). Электронные письма, если это возможно, при передаче шифруются с использованием TLS. Пароли хранятся в SSHA512 или BCRYPT (BSD).

  • Web-интерфейс - управление почтой, папками, фильтрами и прочим через удобный UI.

  • АнтиСПАМ и АнтиВИРУС - SpamAssassin, ClamAV, SPF, DKIM, серые списки, белые списки, черные списки. Помещение обнаруженного спама на карантин в базу данных SQL для дальнейшего изучения.

  • Web-интерфейс администратора - управление почтовой системой через WEB интерфейс.

Требования к серверу

Как таковых требований к аппаратной составляющей не предъявляется, единственное что указано на сайте iRedMail - минимум 2Gb оперативной памяти для небольшого почтового сервера.

В тоже время, если вы планируете использовать средства групповой работы, такие как общие календари, общие контакты и ActiveSync - рекомендуется выделять для почтовой системы 16Gb оперативной памяти.

В нашем примере, чтобы выбрать "золотую середину", мы будем использовать VPS сервер по тарифу [2021] Standard у которого 4 x 2,8GHz vCPU \ 8Gb vRAM \ 80Gb NVMe. В качестве ОС мы будем использовать CentOS 7. Вы же можете использовать для своих задач любой тариф и любую ОС, которые по вашему мнению подойдут именно вам. Конкретных рекомендаций нет - сервер должен быть подходящим под вашу задачу.

Подготовительная часть

В данной статье мы будем использовать домен mail.virtualdc.ru как пример для почтового сервера, который в свою очередь будет обслуживать домен virtualdc.ru. Вы же должны поменять домен почтового сервера и обслуживаемый домен на свои собственные.

Первоначальные настройки DNS

Для начала мы должны настроить DNS таким образом, чтобы прямая и обратная зона для нашего домена mail.virtualdc.ru возвращали корректные значения.

Прямая зона настраивается на ваших DNS серверах, которые предоставляются хостингом или регистратором.

Обратная зона настраивается на DNS серверах хостинга, который предоставляет вам услугу VPS или выделенного сервера.

NSLOOKUP для прямой зоны

nslookup mail.virtualdc.ru
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: mail.virtualdc.ru
Address: 212.22.64.88

NSLOOKUP для обратной зоны

nslookup 212.22.64.88
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
88.64.22.212.in-addr.arpa name = mail.virtualdc.ru.

Обратите внимание на то, что обратная зона возвращает корректное имя домена. В нашем случае это mail.virtualdc.ru. Если запись обратной зоны не корректна (не соответствует прямой зоне), то почта работать не будет.

Далее мы должны настроить так называемую MX (Mail Exchange ) запись которая будет указывать всем остальным почтовым серверам местонахождение нашего сервера.

У MX записи есть следующие значения:

  • Имя домена - в нашем случае virtualdc.ru. или @ (в зависимости от DNS сервера)

  • Приоритет - в нашем случае 10 (да, почтовых серверов может быть несколько, и у каждого может быть свой приоритет на обработку писем)

  • Тип записи - MX

  • Значение записи - mail.virtualdc.ru. (точка в конце имени домена обязательна)

После внесения записей в DNS, проверяем их корректность

nslookup -type=MX virtualdc.ru
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
virtualdc.ru mail exchanger = 10 mail.virtualdc.ru.

После нужно настроить SPF записи, которые указывают всем остальным почтовым серверам на соответствие домена отправителя почтовому серверу. Более подробно об SPF можно прочитать в Wikipedia, ну а мы продолжим настройку.

SPF запись это простая TXT запись в DNS, которая имеет следующие значения:

  • Имя записи - в нашем случае virtualdc.ru. или @ (в зависимости от DNS сервера)

  • TTL (опционально) - в нашем случае это 3600

  • Тип - TXT

  • Значение - "v=spf1 mx -all" (наличие кавычек зависит от типа DNS сервера)

Значение записи SFP очень важно для корректной доставки почты в Входящие (Inbox) а не в СПАМ (Junk). Существует очень много вариантов реализации этой записи, мы же с вами остановились на универсальном.

После внесения записей в DNS, проверяем их корректность

nslookup -type=TXT virtualdc.ru
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
virtualdc.ru text = "v=spf1 mx -all"

Установка iRedMail

Подключаемся к серверу по SSH и вводим следующие команды:

cd /tmp
wget https://github.com/iredmail/iRedMail/archive/1.3.2.tar.gz
tar -xzvf 1.3.2.tar.gz
cd iRedMail-1.3.2/
sh iRedMail.sh

После начинается установка почтового сервера и открывается следующий диалог, в котором нажимаем Yes

Приветствие установщика

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

Место расположения почтовых ящиков

Выбираем web сервер. Вариантов не много, или с WEB интерфейсом живем, или без него. Выбираем NGINX.

Выбор WEB сервера

Выбираем базу данных. Рекомендуем использовать MySQL.

Выбор базы данных

Указываем пароль для пользователя root базы данных (не пароль от сервера)

Пароль для root в mysql

Добавляем первый почтовый домен, в нашем случае virtualdc.ru

Добавляем первый почтовый домен

Задаем пароль для администратора почтового сервера

Задаем пароль для администратора почтового сервера

Выбираем устанавливаемые компоненты

Выбор компонентов почтового сервера

По окончанию конфигурации получаем следующий вывод:

*************************************************************************
***************************** WARNING ***********************************
*************************************************************************
* *
* Below file contains sensitive infomation (username/password), please *
* do remember to *MOVE* it to a safe place after installation. *
* *
* * /tmp/iRedMail-1.3.2/config
* *
*************************************************************************
********************** Review your settings *****************************
*************************************************************************
* Storage base directory: /var/vmail
* Mailboxes:
* Daily backup of SQL/LDAP databases:
* Store mail accounts in: MariaDB
* Web server: Nginx
* First mail domain name: virtualdc.ru
* Mail domain admin: [email protected]
* Additional components: Roundcubemail SOGo netdata iRedAdmin Fail2ban
< Question > Continue? [y|N]

Нажимаем Y и начинается установка.

В процессе установки появится подобный диалог, везде нажимаем Y

*************************************************************************
* iRedMail-1.3.2 installation and configuration complete.
*************************************************************************
[ INFO ] Disable SELinux in /etc/selinux/config.
< Question > Would you like to use firewall rules provided by iRedMail?
< Question > File: /etc/firewalld/zones/iredmail.xml, with SSHD ports: 22. [Y|n]

По завершению установки вы получите следующее сообщение

********************************************************************
* URLs of installed web applications:
*
* - Roundcube webmail: https://mail.virtualdc.ru/mail/
* - SOGo groupware: https://mail.virtualdc.ru/SOGo/
* - netdata (monitor): https://mail.virtualdc.ru/netdata/
*
* - Web admin panel (iRedAdmin): https://mail.virtualdc.ru/iredadmin/
*
* You can login to above links with below credential:
*
* - Username: [email protected]
* - Password: Pa$$w0rD
*
*
********************************************************************
* Congratulations, mail server setup completed successfully. Please
* read below file for more information:
*
* - /tmp/iRedMail-1.3.2/iRedMail.tips
*
* And it's sent to your mail account [email protected]
*
********************* WARNING **************************************
*
* Please reboot your system to enable all mail services.
*
********************************************************************

Перезагрузка сервера СТРОГО обязательна!!!

reboot

После презагрузки пробуем зайти по всем установленным компонентам

Вход в web-интерфейс почты https://mail.virtualdc.ru/mail/

Вход в панель администратор https://mail.virtualdc.ru/iredadmin/

Вход в SOGo https://mail.virtualdc.ru/SOGo/

Вход в netdata https://mail.virtualdc.ru/netdata/

На этом первоначальная настройка почтового сервера завершена. Но сервер еще НЕ готов к работе.

SSL сертификат

Следующим логичным пунктом настройки будет установка SSL сертификата. И тут мы встаем на распутье - какой SSL использовать? Есть как минимум два варианта, коммерческий SSL или SSL бесплатный.

Вариант с само-подписанным сертификатом мы не рассматриваем, но он также имеет право на жизнь.

Какой вариант выбрать, решать только вам, мы же в данной статье будем использовать коммерческий SSL сертификат Sectigo PositiveSSL. Тем же, кто решил пойти по пути бесплатного SSL, рекомендуем ознакомиться с официальной документацией по установке SSL сертификата Let`s Encrypt.

Итак, используя коммерческий SSL сертификат мы опустим процедуру его получения, примем как факт то, что у нас есть сам сертификат с цепочкой ca-bundle и секретный ключ.

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

mv /etc/ssl/certs/iRedMail.crt{,.bak}
mv /etc/pki/tls/private/iRedMail.key{,.bak}

После этого перемещаем наш сертификат и ключ на место старых сертификатов:

mv /tmp/domain.crt /etc/ssl/certs/iRedMail.crt
mv /tmp/domain.key /etc/pki/tls/private/iRedMail.key

Перезапускаем сервисы:

service postfix restart
service dovecot restart
service nginx restart
service mariadb restart

Переходим в web-интерфейс и проверяем что SSL сертификат работает:

Проверка SSL
Информация об установленном сертификате

Не лишним будет пройти проверку в SSL Labs:

Оценка безопасности сервера