https://itseason.ru/iredmail-install/
Установка SSL сертификата Let’s Encrypt
Устанавливать сертификат мы будем при помощи утилиты certbot. Сначала добавим репозиторий.
[root@hostname ~]# add-apt-repository ppa:certbot/certbot
Затем установим сам certboot с необходимыми компонентами.
[root@hostname ~]# apt install python-certbot-nginx
Получаем сертификат.
[root@hostname ~]# certbot —nginx -d домен.ru
После запуска команды система попросит вас ввести адрес электронной почты, вводим. После вы скорее всего получите ошибку, что не возможно найти серверный блок, для которого генерировался сертификат. В данном случае это нормально, так поскольку никакого серверного блока у нас и нет. Для нас главное получить сертификат.
Получение сертификата
Как видим сертификат успешно получен и система указала нам пути к самому сертификату и к ключу. Они то нам как раз и нужны. Вообще мы получили 4 файла, которые будут хранится в папке «/etc/letsencrypt/live/домен». Теперь необходимо сообщить веб-серверу о нашем сертификате, то есть заменить вшитый сертификат на тот, который мы только что получили. Для этого нам необходимо отредактировать всего лишь один файл.
[root@hostname ~]# nano /etc/nginx/templates/ssl.tmpl
И изменяем в нем две последние строчки.
Заменяем SSL сертификат
Меняем пути в файле на пути, которые нам сообщила система при получении сертификата.
Замена SSL сертификата
И перезапускаем NGINX.
[root@hostname ~]# service nginx restart
Теперь пробуем снова зайти в iRedAdmin.
Проверка SSL сертификата
Ошибки сертификата больше нет. Сертификат действителен. Можно кликнуть на замок и посмотреть его свойства. По окончании срока действия сертификата certboot должен обновить его в автоматическом режиме.
Теперь сообщим о сертификате Dovecot и Postfix. Для этого отредактируем два конфигурационных файла. Выполняем:
[root@hostname ~]# nano /etc/dovecot/dovecot.conf
Находим блок:
#SSL: Global settings.
И меняем прописанный там сертификат на наш.
Замена сертификата для Dovecot
Так же обратите внимание на строчку «ssl_protocols». Ее значение должно быть «!SSLv3», иначе получите ошибку «Warning: SSLv2 not supported by OpenSSL. Please consider removing it from ssl_protocols» при перезапуске Dovecot.
Далее настроим Postfix:
[root@hostname ~]# nano /etc/postfix/main.cf
Находим блок:
# SSL key, certificate, CA
И изменяем в нем пути на пути к файлам нашего сертификата.
Замена сертификата для Postfix
На этом установка сертификата закончена. Необходимо перезапустить Dovecot и Postfix, но лучше выполнить перезагрузку сервера.
[root@hostname ~]# service dovecot restart
[root@hostname ~]# service postfix restart
Или:
[root@hostname ~]# reboot
Установка PHPMyAdmin
Этот пункт является необязательным, но я рекомендую выполнить его и установить PHPMyAdmin для удобства работы с базами данных.
[root@hostname ~]# apt install phpmyadmin
Установщик спросит на работу с каким веб-сервером настраивать PHPMyAdmin, так как NGINX в этом списке нет, просто нажимаем TAB и идем дальше.
Выбор веб-сервера
Далее соглашаемся и вводим пароль на системную базу данных. Можете придумывать пароль любой сложности, он вам в дальнейшем даже не понадобится.
Установка PHPMyAdmin
После окончания установки для того, что бы phpmyadmin заработал нужно сделать симлинк на директорию с которой по умолчанию работает NGINX.
[root@hostname ~]# ln -s /usr/share/phpmyadmin /var/www/html
И пробуем зайти на https://домен/phpmyadmin/
PHPMyAdmin
PHPMyAdmin работает. Подключение защищено сертификатом, никаких ошибок нет. Идем дальше. Создадим администратора баз данных MySQL (MariaDB).
[root@hostname ~]# mysql
И попадаем в консоль управления MariaDB. Далее поочередно делаем команды:
MariaDB > CREATE USER ‘admin’@’localhost’ IDENTIFIED BY ‘пароль’;
MariaDB > GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’localhost’ WITH GRANT OPTION;
MariaDB > FLUSH PRIVILEGES;
Создание пользователя MySQL
Пробуем авторизоваться с ним в PHPMyAdmin.
PHPMyAdmin
Все OK, вход выполнен. PHPMyAdmin готов к работе.
Установка PostfixAdmin
В принципе PostfixAdmin, как и PHPMyAdmin можно не устанавливать. Почтовый сервер прекрасно будет работать и без этих компонентов. Но тогда в вы не сможете создавать почтовые алиасы. Если вам этого и не надо, то смело можете пропустить эти разделы. Если же алиасы вам все таки нужны, то варианта у вас два: покупка платной версии iReaAdmin или установка PostfixAdmin. Конечно можно делать это и без дополнительного ПО, прописывая алиасы в базе данных в ручную, но это не всегда удобно и не для всех подходит. Я рекомендую использовать PostfixAdmin, его установку и интеграцию с iRedMail мы сейчас и рассмотрим. Запускаем установку:
[root@hostname ~]# apt install postfixadmin
Соглашаемся и создаем пароль для системной базы программы.
Установка PostfixAdmin
Установка PostfixAdmin
Делаем симлинк по аналогии с установкой PHPMyAdmin.
[root@hostname ~]# ln -s /usr/share/postfixadmin /var/www/html
Делаем пользователя, от имени которого запускается веб-сервер владельцем каталога. В нашем случае NGINX запускается от имени пользователя www-data.
[root@hostname ~]# chown -R www-data /usr/share/postfixadmin
Теперь нам нужно отредактировать конфигурационный файл PostfixAdmin и внести в него информацию о базе данных, которую использует iRedAdmin. По умолчанию эта база называется vmail. Если зайти в PHPMyAdmin то можно ее там увидеть. И так, для того что бы PostfixAdmin мог вносить изменения в базу данных прописываем ее в конфигурации PostfixAdmin.
[root@hostname ~]# nano /etc/postfixadmin/config.inc.php
Находим строки:
$CONF[‘database_type’] = $dbtype;
$CONF[‘database_host’] = $dbserver;
$CONF[‘database_user’] = $dbuser;
$CONF[‘database_password’] = $dbpass;
$CONF[‘database_name’] = $dbname;
И приводим к виду:
$CONF[‘database_type’] = ‘mysqli’; # Тип базы данных
$CONF[‘database_host’] = ‘localhost’; # Хост сервера баз данных
$CONF[‘database_user’] = ‘admin’; # Логин с правами на запись в базу vmail. Можно использовать созданный ранее admin
$CONF[‘database_password’] = ‘пароль’; # Пароль пользователя указанного выше
$CONF[‘database_name’] = ‘vmail’; # Название базы данных iRedMail
Внесение информации о базе данных
Если вы планируете использовать почтовый веб-клиент SOGo, то необходимо сделать еще одно дополнительное действие, а именно поменять шифрование PostfixAdmin в пункте $CONF[‘encrypt’] с ‘md5crypt’ на ‘dovecot:SHA512-CRYPT’. Если вы это не сделаете, то при попытке авторизации в SOGo пользователем созданным в PostfixAdmin получите ошибку неверный логин или пароль.
Изменение типа шифрования
Теперь, что бы успешно завершить установку и не получить ошибок необходимо выполнить запрос к базе данных. Удобно это сделать через PHPMyAdmin. Выбираем базу vmail и переходим на вкладку SQL. В окне вводим:
DROP INDEX domain on mailbox;
DROP INDEX domain on alias;
ALTER TABLE alias ADD COLUMN `goto` text NOT NULL;
Запрос к базе данных
И нажимаем «Вперед». Теперь у нас все готово, можно переходить в веб-интерфейс PostfixAdmin и завершать установку. Для этого в браузере необходимо набрать: https://домен/postfixadmin/setup.php.
Должно появиться следующее:
Установка PostfixAdmin
Если все сделано по инструкции, то ошибок быть не должно. Если все же будут, то их предается устранить, иначе система не даст вам продолжить. Задаем пароль установки и жмем «Generate password hash». Система сгенерирует хеш пароля, который необходимо вставить в параметр $CONF[‘setup_password’].
Завершение установки PostfixAdmin
Изменение настроек файла конфигурации
Теперь вводим только что созданный пароль и создаем администратора PostfixAdmin. Администратора с логином postmaster лучше не создавать, поскольку могут быть проблемы со входом в панель администрирования iRedAdmin.
Создание администратора PostfixAdmin
Создание администратора PostfixAdmin
Все, администратор создан. Можно выполнять вход.
Обратите внимание, что с точки зрения безопасности файл setup.php в директории postfixadmin лучше переименовать или удалить.
Переходим: https://домен/postfixadmin/ и вводим только что созданные учетные данные. В PostfixAdmin, так же как и в iRedAdmin, доступен русский язык. Его можно выбрать при авторизации.
PostfixAdmin
Пробуем создать почтовый ящик пользователя.
Создание почтового ящика
И авторизоваться в SOGo: https://домен/SOGo/
SOGo
Все получилось. Идем дальше.
Включение/Отключение модулей iRedMail
За управление модулями iRedMail отвечает iRedAPD. Он имеет конфигурационный файл, в котором прописаны работающие модули. Если тот или иной модуль вам не нужен, его можно удалить из файла конфигурации и он перестанет работать. Выполняем:
[root@hostname ~]# nano /opt/iredapd/settings.py
Находим строчку «plugins» и удаляем из нее не нужные вам компоненты. Я уберу компонент «greylisting». Он конечно достаточно эффективно защищает от спама, по при этом часто не доходят и нужные письма.
Greylist (серый список) — технология автоматической защиты от спама, основанная на анализе поведения сервера отправителя почты. При включенном «greylisting» сервер в первый раз отказывается принять письмо с неизвестного ему адреса, сообщая о временной ошибке. В таком случае сервер отправитель должен повторить отправку позже. Спамерские программы обычно такого не делают. Если письмо отправляется повторно, оно добавляется в список на 30 дней и уже обмен почтой происходит с первого раза. Использовать этот модуль или нет решайте сами.
Включение/Отключение модулей почты
Включение/Отключение модулей почты
После внесения изменений необходимо перезапустить iRedAPD.
[root@hostname ~]# service iredapd restart
Тестирование почтового сервера
На этом настройка почтового сервера iRedMail закончена. Можно приступать к завершающему этапу — тестированию. Создадим два почтовых ящика. Для проверки один через iRedAdmin, второй через PostfixAdmin и отправим письмо с одного ящика на другой и наоборот. В iRedAdmin создадим ящик user1@домен.ru. В PostfixAdmin — user2@домен.ru
Создание пользователя в iRedAdmin
Создание пользователя в PostfixAdmin
Проверяем что пользователи создались.
iRedAdmin
PostfixAdmin
Если вы обратить внимание на графу «Кому» в перечне ящиков PostfixAdmin, то можно заметить разницу между ящиками созданными в iRedAdmin и PostfixAdmin. Ящики созданные в iRedAdmin отмечены как «Forward only», а созданные в PostfixAdmin как — «Mailbox». Я сначала долго не мог понять почему так происходит и какая между ними разница, и наконец заметил одну вещь. Ящики в iRedAdmin создаются без алиасов, а ящики в PostfixAdmin с алиасом на самого себя.
Алиасы
И если эти алиасы удалить, то ящики станут отображаться как и созданные в iRedAdmin «Forward only».
Удаление алиасов
Алиасы удалены. Проверяем PostfixAdmin.
PostfixAdmin
Как видим все ящики стали «Forward only». Точно так же если создать в ящике созданном в iRedAdmin алиас сам на себя, то он станет «Mailbox». В принципе, на работоспособность почты это никак не влияет. Единственное вы не сможете создать алиас на ящике созданном в PostfixAdmin. Вместо создания алиаса, нужно будет отредактировать уже имеющийся. Кстати об алиасах, в новой версии iRedMail необходимо внести изменение в одну из карт Postfix, которая отвечает за алиасы. И если вы этого не сделаете, то созданные алиасы не будут работать. Для этого необходимо в файле /etc/postfix/mysql/virtual_alias_maps.cf исправить:
query = SELECT forwardings.forwarding FROM forwardings,domain WHERE forwardings.address=’%s’ AND forwardings.domain=’%d’ AND forwardings.domain=domain.domain AND forwardings.active=1 AND domain.backupmx=0 AND domain.active=1
На:
query = SELECT alias.goto FROM alias,domain WHERE alias.address=’%s’ AND alias.domain=’%d’ AND alias.domain=domain.domain AND alias.active=1 AND domain.backupmx=0 AND domain.active=1
Выполняем:
[root@hostname ~]# nano /etc/postfix/mysql/virtual_alias_maps.cf
И исправляем.
Настройка алиасов
Перезапускаем Postfix:
[root@hostname ~]# service postfix restart
После этого все должно заработать.
И так, приступим к проверке почты. В ящик user1 мы зайдем через Roundcube, а в ящик user2 — через SOGo и отправим письмо с ящика user1 на user2 и обратно.
Отправка письмо с Roundcube
Получение письма в SOGo
Отправка письма в SOGo
Получение письма в Roundcube
Все работает без каких либо проблем. Доставка письма занимает от двух до пяти секунд. Точно так же письма прекрасно доставляются на сервера яндекса и mail.ru (проверено).
Теперь проверим алиасы. Создадим ящик user3 и сделаем алиас с ящика user1 на ящик user2. И отправим письмо с ящика user3 на ящик user1. При этом письмо должно будет прийти на ящик user2.
Создание алиаса
Отправка письма с ящика user3 на ящик user1
Получение письма на ящике user2
С работой алиасов тоже все в порядке.
Протестируем работу почтового сервера через локальный почтовый клиент. В примере рассмотрим Mozilla Thunderbird. Создадим еще двух пользователей: client1 и client2. Один ящик подключим по IMAP, другой по POP3 и отправим письмо с одного ящика на другой.
Подключение по IMAP
Подключение по POP3
Отправляем письмо с Клиент 1 на Клиент 2.
Отправка с Клиент 1
Получение на Клиент 2
И в обратном порядке.
Отправка с Клиент 2
Получение на Клиент 1
Все работает.
Если перейти по адресу: https://домен/netdata, то можно наблюдать графики состояния системы.
NetData
NetData
NetData
NetData
NetData
Заключение
На этом установка, настройка и тестирование почтовой системы iRedMail закончены. В итоге мы получили полностью бесплатный полноценный почтовый сервер с действующим SSL сертификатом, двумя разными почтовыми веб-клиентами, двумя панелями управления, а так же встроенными в почту антиспамом и антивирусом. По вашему желанию вместо почтовых веб-клиентов можно использовать локальные почтовые клиенты такие как Microsoft Outlook или Mozilla Thunderbird. Если не планируете использовать почтовые веб-клиенты их можно вообще не устанавливать, что бы не нагружать лишним сервер, или установить что-то одно, что вам нравится больше. Мне лично больше нравится SOGo, тем что его интерфейс оптимизирован под мобильные устройства, тем самым очень удобно просматривать электронную почту со смартфона. Тоже самое касается NetData и iRedAdmin, если не планируете пользоваться то лучше не устанавливать. Данная почтовая система не сильно требовательна к ресурсам. Все это работает на VPS сервере с 1024 Мб оперативной памяти и одним виртуальным процессором. Если у вас остались какие-либо вопросы по данной почтовой системе пишите в комментариях.
P.S. В ходе тестирования данного продукта на различных операционных системах с 1 Гб оперативной памяти (Ubuntu, Debian, CentOS) выяснилось, что 1 Гб мало для работы ClamAV. Почти во всех случаях при использовании 1 Гб памяти антивирус ссылался на ошибку связанную с базой данных. При это на операционных системах Debian и Ubuntu антивирус просто не сканировал проходящую через сервер почту, в остальном все работало нормально. На CentOS ситуация была несколько иной. Служба clamd полностью вешала систему, тем самым делая невозможным нормальную работу сервера. При попытке входа в веб-интерфейсы периодически NGINX выдавал 502 и 504 ошибки. Почта отправлялась тоже через раз. При этом если добавить оперативной памяти до 2 Гб, то во всех случаях никаких проблем с работой антивируса и сервера в целом не наблюдалось. ClamAV сканировал проходящую через почтовый сервер почту, о чем писал в логах. При попытке отправить вирус во вложении оправка блокировалась. Потребление памяти составляло примерно 1.2 — 1.7 Гб.