как создавал ключи


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 Гб.