linux – Modifying iRedMail SSL Certificates – Stack Overflow

Установка и настройка корпоративного почтового сервера (step-by-step) — заметки о microsoft windows и не только…

Наша задача получить полноценный почтовый сервер с сервисами SMTP(S), IMAP(S), POP3(S), с обработкой почты на антиспам и антивирус. Также будет настроен web-доступ к почтовой системе (почта/контакты/календарь) для почтовых пользователей и администратора системы. В качестве системы будет выбран пакет iRedMail и будет развернута на Linux Debian.

Что из себя представляет сборка iRedMail и какие пакеты отвечают за какой функционал хорошо видно на этом рисунке:

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Содержание:

Подготовка системы
Установка iRedMail
Расширяем функционал iRedAdmin
Настройки системы iRedAdmin
Безопасность
Обновление iRedMail
Резервное копирование почты (Backup)
Восстановление из резервных копий
Настройки DNS
Autodiscover для почтовых клиентов
SSL Сертификат для Web-сервера
Заключение

Подготовка системы

Установим систему Debian и обновим систему и пакеты:

apt-get update && apt-get upgrade && apt-get dist-upgrade
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Настроим сеть:

nano /etc/network/interfaces

и перезапустим сеть с новыми настройками:

/etc/init.d/networking restart

Настроим имя хоста:

Hostname -f

Настроим локализацию:

linux - Modifying iRedMail SSL Certificates - Stack Overflow
dpkg-reconfigure locales
locale -a

Перегрузим сервер для принятия настроек локализации.

Сервер готов,
скачиваем актуальную версию пакета iRedMail.

Переходим на http://www.iredmail.org/download.html, проверяем расположение файла стабильной версии и копируем ссылку (на данный момент стабильная версия – 0.9.9).

Скачиваем:

wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.9.tar.bz2

Установка iRedMail

Распакуем архив и запустим скрипт установки:

tar xjf iRedMail*
cd iRedMail*
bash iRedMail.sh
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Указываем место хранения почты на диске. Оставляем по умолчанию /var/vmail.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

В качестве web-сервера предлагается Nginx, соглашаемся.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

В качестве
хранилища данных и конфигураций предлагается 3 варианта:

  • OpenLDAP – протокол для соединения с LDAP сервером по 389 порту, скажем так с Active Directory;
  • MariaDB – это когда то MySQL;
  • PostgreSQL – еще один и, на мой взгляд, один из лучших СУБД.

Для небольшой системы, до 1000 почтовых ящиков, подойдет MariaDB, что и выбираем.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Вводим пароль для Администратора MySQL (MariaDB).

linux - Modifying iRedMail SSL Certificates - Stack Overflow

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

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Далее пароль Postmaster для домена.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Здесь предлагается выбрать функционал системы. Я выбрал все, функционал каждого описан (на английском).

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Здесь предлагают
согласиться с выбранной конфигурацией, отвечаем Yes.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Далее идет установка необходимых пакетов.

После отработки скрипта будут внесены изменения в файрвол. Соглашаемся – Yes.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

По сути наш
сервер уже готов и можно обратиться к нему по протоколам SMTP/IMAP/POP или же через web.

Доступ к web-почте — https://ваш_хост/mail/.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Доступ к web-админке — https://ваш_хост/iredadmin/

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Здесь мы установили Open Source версию iRedMail и поэтому панель администратора имеет некоторое ограничения. Подробно сравнение тут — https://www.iredmail.org/admin_panel.html.

Расширяем функционал iRedAdmin

SMTPS

* POP3 service: port 110 over TLS (recommended), or port 995 with SSL.
* IMAP service: port 143 over TLS (recommended), or port 993 with SSL.
* SMTP service: port 587 over TLS.

Как мы видим в стандартной версии SMTP with SSL был убран, считается SMTP with SSL legacy (устаревший). Попробуем его включить, так как некоторые почтовые клиенты могут не поддерживают отправку SMTP через STARTTLS, порт 587.

В /etc/postfix/master.cf добавим:

465     inet  n       -       n       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o content_filter=smtp-amavis:[127.0.0.1]:10026

Перезапустим службу Postfix, чтобы включить SMTPS. Убедимся, что Amavisd прослушивает порт 10026 (и 10024, 9998).

Откроем порт 465 в брандмауэре:

nano /etc/default/iptables

-A INPUT -p tcp --dport 25 -j ACCEPT
-A INPUT -p tcp --dport 587 -j ACCEPT
-A INPUT -p tcp --dport 465 -j ACCEPT

ROUNDCUBE

Для красоты и
удобства можно сменить темы для web-почты

https://github.com/Anisotropic/chameleon-blue
https://github.com/filhocf/roundcube-chameleon

Скачиваем и
копируем папку skin в папку с RoundCube (у меня находится по
/opt/www/roundcubemail-1.3.8/skins)

Прочие настройки можно найти в /opt/www/roundcubemail-1.3.8/config/default.inc.php — тут можно настроить язык по умолчанию, подпись в окне логин/пароль, тему по умолчанию.

Установка phpMyAdmin

Некоторый ограниченный функционал можно реализовать напрямую через редактирование базы данных. Для удобства уставим phpMyAdmin:

apt-get install phpmyadmin
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Веб-сервера Nginx (его мы ставили в пакете iRedMail) нет, поэтому оставляем невыбранным тип сервера.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Соглашаемся настроить базы. Да.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Вводим пароль для
phpMyAdmin и
подтверждаем пароль.

Создаем ссылку на
сервер:

ln -s /usr/share/phpmyadmin /var/www/html/webtool

Теперь phpMyAdmin доступен по адресу — https://ваш_хост/webtool/

Логин – phpmyadmin
Пароль – наш пароль что ввели при установке
linux - Modifying iRedMail SSL Certificates - Stack Overflow

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

Создадим
пользователя для phpmyadmin с полными правами:

mysql -u root
create user 'myuser'@'localhost' identified by 'mypassword';

Проверим, создался
ли наш пользователь:

select user,host,password from mysql.user;

Дадим нашему
пользователю полные права:

grant all on *.* to 'myuser'@'localhost';

и применим изменения:

FLUSH PRIVILEGES;

Выход:

q 
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Теперь получили полные права.

POSTFIXADMIN

Основой нашей почтовой системы является POSTFIX. PostfixAdmin – это веб интерфейс настройки POSTFIX. Установим и настроим и его для нашей системы.

apt-get install postfixadmin
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Соглашаемся.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Задаем пароль для PostfixAdmin.

Создадим ссылку
на веб доступ для PostfixAdmin:

ln -s /usr/share/postfixadmin /var/www/html/postfixadmin

Теперь PostfixAdmin доступен по адресу — https://ваш_хост/postfixadmin/

Настраиваем:

nano /usr/share/postfixadmin/config.inc.php

$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'myuser';
$CONF['database_password'] = 'hRm3StSuY0WSpk0kkl9OX1Xjv8';
$CONF['database_name'] = 'vmail';
$CONF['encrypt'] = 'dovecot:SSHA';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";

Далее переходим по адресу  — https://ваш_хост/postfixadmin/setup.php

Возможные ошибки:

1. PostfixAdmin не может писать в папку templates_c 
Даем права 
chown -R www-data /usr/share/postfixadmin/templates_c 
2. Invalid query: Unknown column ‘goto’ in ‘alias’
В новой версии отсутствует колонка goto. Добавим её:
mysql -u root -p
use vmail;
ALTER TABLE alias ADD COLUMN `goto` text NOT NULL;
3. Invalid query: Duplicate key name ‘domain’
Это связано с тем, что при создании почтового домена в iRedMail мы уже создали индексы для базы, а PostfixAdmin не согласен с этим. Выполняем там же команду SQL:
DROP INDEX domain on mailbox;
DROP INDEX domain on alias;

Если все проверки пройдены, будет предложено сгенерировать пароль:

linux - Modifying iRedMail SSL Certificates - Stack Overflow

После генерации пароля получим setup_password и эту строчку добавим в config.inc.php.

$CONF['setup_password'] = '2bedf63997cbf13068a454f6e7c4b7b0:db542a801058ebb19faae42cf2145aa6986c83c7';
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Создадим Администратора PostfixAdmin: вводим ранее созданный Setup Password, логин-email Администратора и пароль.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Теперь можно заходить на PostfixAdmin.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Как уже говорилось, есть определенный функционал, который заблокирован в бесплатной версии iRedMail, скажем создание Псевдонимов (Alias). В PostfixAdmin данный функционал будет доступен.

Настройки системыiRedMail

Включение и отключение модулей почты

Про сертификаты:  Удалить контейнер электронной подписи | СБИС Помощь

iRedMail обладает достаточно широким функционалом, но может потребоваться отключить некоторые функции или модули. У iRedMail есть модуль iRedAPD, написан на Python, который управляет основными возможностями почтового сервера. Файл конфигурации iRedAPD settings.py находится /opt/iredapd.

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Удаляем ненужные модули и перезапускаем службу:

service iredapd restart

Чтобы отключить
Антивирус и Антиспам, не знаю по каким причинам, но такая возможность есть,
необходимо отредактировать файл настроек /etc/amavisd/amavisd.conf.

SpamAssassin и ClamaV завязаны на модуль Amavisd. Amavisd — это скрипт, который взаимодействует с транспортным агентом почты (MTA) и сканерами антивирусов и антиспам.

В /etc/amavisd/amavisd.conf раскомментируем строчки (убираем # в начале строки):

# @bypass_virus_checks_maps = (1); # controls running of anti-virus code
# @bypass_spam_checks_maps = (1); # controls running of anti-spam code

И перезапускаем Amavisd:

systemctl restart amavisd

Настройки объема отправляемого сообщения

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

Для изменения
значения максимального размера письма необходимо отредактировать значение message_size_limit
 в /etc/postfix/main.cf

По умолчанию message_size_limit = 15728640 (15Мб), можно изменить на нужное значение в байтах и
перезапустить Postfix:

postfix reload

Сбор копий всех почтовых сообщений

Иногда есть
требования по сбору и мониторингу всей входящей и/или исходящей почты через
почтовый сервер. Данный функционал можно реализовать с помощью штатной
возможности Postfix.

Для пересылки всех сообщений (входящих/исходящих) на определенный адрес достаточно прописать в /etc/postfix/main.cf:

always_bcc = backup@mydomain.ru

Однако стоит
учитывать тот объем сообщений, который будет сваливаться туда.

Еще один вариант решения, для меня более предпочтительный, в phpmyadmin, открываем базу vmail и выполняем в ней запрос:

INSERT INTO sender_bcc_domain (domain, bcc_address, active, created) VALUES ('mydomain.ru', 'backup-out@mydomain.ru', 1, NOW());

INSERT INTO recipient_bcc_domain (domain, bcc_address, active, created) VALUES ('mydomain.ru', 'backup-in@mydomain.ru', 1, NOW());
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Настройка автоответчика

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

Настраивается автоответ через web-интерфейс почтового ящика:

linux - Modifying iRedMail SSL Certificates - Stack Overflow
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Еще для администратора почтовой системы Postfix

Просмотр настроек Postfix:

postconf -d

Просмотр очереди Postfix:

postqueue -p

Для удаления из
очереди Postfix писем от
пользователя user можно
воспользоваться скриптом:

postqueue -p | grep user | awk '{system("postsuper -d "$1)}'

Немедленная
доставка писем из очереди Postfix:

postsuper -r ALL
postfix flush

или конкретного письма:

postsuper -r ID

Безопасность

Закрываем доступ из Интернета к phpMyAdmin

В настройки Nginx (/etc/nginx/sites-available/*-default-ssl.conf) добавим:

location /webtool {
allow 127.0.0.1;	#localhost
allow 192.168.1.0/24;	#local network
deny all; 	        #deny all other sources
}

Проверим конфигурацию на ошибки:

nginx -t

и перегрузим Nginx:

systemctl reload nginx

Закрываем доступ из Интернета к PostfixAdmin

Аналогично закроем доступ для postfixadmin. В /etc/nginx/sites-available/*-default-ssl.conf добавим:

location /postfixadmin {
allow 127.0.0.1; 	#localhost
allow 192.168.1.0/24;	#local network
deny all; 	        #deny all other sources
}

Проверим и перегрузим Nginx.

Обновление iRedMail

Как и при установке, скачиваем пакет iRedAdmin:

wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-x.y.z.tar.bz2

Распаковываем архив и переходим в каталог:

tar xjf iRedAdmin-x.y.z.tar.bz2
cd iRedAdmin-x.y.z/tools/

Запускаем скрипт обновления:

bash upgrade_iredadmin.sh

Резервное копирование почты (Backup)

В качестве места для хранения резервных копий баз и почтовых сообщений создадим отдельный диск (как это сделать).

По умолчанию, при установке iRedMail в планировщик Cron добавляются задания по созданию резервных копий баз данных MySQL, SOGo, ldap (зависит от выбора во время установки). В нашем случае это базы MySQL и SOGo.

В планировщике заданий (Cron) по умолчанию существуют 2 задания на резервное копирование баз:

30   3   *   *   *   /bin/bash /var/vmail/backup/backup_mysql.sh
1   4   *   *   *   /bin/bash /var/vmail/backup/backup_sogo.sh

Архивы помещаются в каталог /var/vmail/backup.

Перенесем место резервных копий на наш диск /mnt/backup и создадим папку vmail и внутри 2 папки db и mail:

mkdir /mnt/backup/vmail
mkdir /mnt/backup/vmail/db
mkdir /mnt/backup/vmail/mail

В db будем хранить копии баз MySQL, в mail сами почтовые сообщения.

Отредактируем файл /var/vmail/backup/backup_mysql.sh и /var/vmail/backup/backup_sogo.sh заменив значение пути:

export BACKUP_ROOTDIR="/var/vmail/backup" на 
export BACKUP_ROOTDIR="/mnt/backup/vmail/db"

Значение параметра в backup_mysql.sh KEEP_DAYS=’90’ указывает сколько дней хранить резервные копии.

Запустим создание архивов вручную и проверим корректность выполнения:

/bin/bash /var/vmail/backup/backup_mysql.sh

Копируем почту. По умолчанию,
каталог для хранения переписки — /var/vmail/vmail1. Чтобы создать копию, достаточно
скопировать его содержимое.

Создадим архив наших писем в /mnt/backup/vmail/mail с датой:

tar -czvf /mnt/backup/vmail/mail/vmail- $(date  %y-%m-%d).tar.gz /var/vmail/vmail1

Создадим задание
для планировщика для ежедневного архивирования папки с почтовыми сообщениями (/var/vmail/vmail1/)

Напишем простой скрипт для Bash /var/vmail/backup/backup_mail.sh:

#!/bin/bash
keep_days=90;
cur_date=$(date --iso);
backup_dir="/mnt/backup/vmail/mail/"
source_dir="/var/vmail/vmail1"
file_name="vmail_$cur_date.tar.gz"
log_file="$backup_dir/vmail_$cur_date.log"
echo "# Starting Find old backup files in Backup Directory $backup_dir" > $log_file
find $backup_dir -type f -mtime  $keep_days -print0 | xargs -0 rm –f  >> $log_file
echo "# End Delete old backups" >> $log_file
echo "# Start Backup script" >> $log_file
echo "# Start at $(date  %Y-%m-%d-%H-%M-%S)" >> $log_file
tar -zcvf $backup_dir$file_name -P $source_dir >> $log_file
echo "# End Backup script $(date  %Y-%m-%d-%H-%M-%S)" >> $log_file

Скрипт выполнит следующее:

  • keep_days=90; время хранения архивных копий в днях;
  • удалит все файлы из каталога старше 90 дней;
  • создаст архив папки с сообщениями;
  • информацию о действиях поместит в лог файл.

Скрипт поместим в планировщик:

crontab -u root –e

выберем редактор nano и добавим строчи:

# iRedMail vMail directory backup
30  4   *   *   2,5 /bin/bash /var/vmail/backuo/backup_mail.sh

Сохраняем изменения и выходим.

Планировщик настроен на 4:30 по вторникам и пятницам.  Опять-таки политику резервного копирования нужно определять исходя из потребностей и требований компании.

Проверим задания
в Cron:

сrontab –l

Восстановление из резервных копий

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

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

Конфигурации хранятся в следующих базах MySQL:

Amavisd
iredadmin
iredapd
mysql
roundcubemail
vmail

В случае переноса почтовой системы на новый сервер, базу mysql восстанавливать не нужно.

Восстановление баз данных

Базы можно восстановить через phpMyAdmin или через консоль:

Разархивируем нужную базу на нужную дату:

bzip2 -d vmail-*.sql.bz2

Восстановим базу:

mysql -v -u root -p vmail < vmail-*.sql

Аналогично восстанавливаются все необходимые базы.

Про сертификаты:  Сертификаты TLS/SSL: что это такое | Статьи SEOnews

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

tar -xvf vmail-*.tar.gz
mv /mnt/backup/vmail/mail/vmail /* /var/vmail/vmail1/

Настройки DNS

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

Внесем изменения
в зону DNS:

mail.mydomain.ru.    3600    IN      A      111.222.333.444

где:
mail.mydomain.ru. – имя хоста нашего сервера;
3600 – TTL время жизни записи;
A – тип записи (хост);
111.222.333.444 – реальный IP адрес нашего почтового сервера.

После внесения записи в DNS к северу можно обращаться по mail.mydomain.ru.

mydomain.ru.	3600	IN	MX	10	mail.mydomain.ru.

здесь мы объявляем, что почтовым сервером (Mail eXchanger) является mail.mydomain.ru.

где:
3600 – TTL время жизни записи;
10 – приоритет.

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

Этих настроек достаточно, чтобы наш почтовый сервер начал функционировать для сети Интернет. Однако в борьбе со спамом и проверкой валидности отправителя, нужно сделать еще несколько записей в DNS: DKIM, DMARC и SPF.

DKIM (Domain Keys
Identified Mail) — это цифровая подпись, которая подтверждает подлинность
отправителя и гарантирует целостность доставленного письма.

Наш iRedMail при установке уже сгенерировал c помощью Amavisd ключ DKIM. Для просмотра дадим команду:

amavisd-new showkeys

Скопируем результат и внесем запись TXT в наш DNS сервер:

dkim._domainkey.mydomain.ru.	3600	IN	TXT	"v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIqFwU3xQ4AcLfdMwI9m/emPcmYSqkCe9evo9jYLItWaBZDLBWRXwzcDNVa492HSImXRSk 4Jd7zE7Ir 2xUzi0EShUYmBABKE4Z2x7tl7zo1iStW7DxN/ciEeRBH/iGWziBwl4crp ahyfEq5EAKr2OHDeVl12xDUwlA6yjLsrwIDAQAB"

где:
v  — версия DKIM, всегда принимает значение v=DKIM1;
p — публичный ключ, кодированный в base64.

SPF (Sender Policy
Framework) — это подпись, содержащая информацию о серверах, которые могут
отправлять почту с вашего домена. Наличие SPF снижает вероятность попадания
письма в спам.

Добавим в DNS значение SPF:

mydomain.ru.       IN           TXT         "v=spf1 a mx ~all"  

где:
v — версия SPF, обязательный параметр, всегда spf1, никакие другие версии не работают;
— принимать письма (по умолчанию);
— отклонить;
~ — «мягкое» отклонение (письмо будет принято, но будет помечено как спам);
mx — включает в себя все адреса серверов, указанные в MX записях домена;
a — IP-адрес в A-записи;
all — все остальные сервера, не перечисленные в SPF-записи.

DMARC (Domain-based Message Authentication, Reporting and Conformance) — это подпись, которая позволяет принимающему серверу решить, что делать с письмом. DMARC использует DKIM и SPF. Если отправленное сообщение не прошло проверку DKIM и SPF, то оно не пройдет и DMARC. Если же сообщение успешно прошло хотя бы одну проверку (DKIM или SPF), то и проверку DMARC сообщение пройдет успешно. DMARC добавляется только после того, как настроены записи SPF и DKIM.

Запись DNS:

_dmarc.mydomain.ru.	IN	TXT	"v=DMARC1; p=none; sp=none; pct=100; fo=0; rua=mailto:postmaster@mydomain.ru"

Подробно о DKIM, DMARC и SPF —  https://habr.com/ru/post/343128/

Autodiscover для почтовых клиентов

В Microsoft Exchange есть прекрасная служба Autodiscover для автоматического обнаружения серверов почтовой службы, которая работает через веб сервер и по сути передает клиенту, Outlook, xml файл с описанием настроек. Попробуем сделать что-то похожее с помощью DNS сервера, тем более, что данный метод описан стандартом RFC и заключается в создании SRV-записей в DNS.

SRV запись имеет данную структуру:

_service._proto.name TTL class SRV priority weight port target

Подробно про SRV записи в DNS —  https://ru.wikipedia.org/wiki/SRV-запись.

Добавим:

_imap._tcp.mydomain.ru.	        300	IN	SRV	20	10	993	mail.mydomain.ru.	
_imap._tcp. mydomain.ru.	300	IN	SRV	10	10	143	mail.mydomain.ru.	
_pop3._tcp. mydomain.ru.	300	IN	SRV	10	10	110	mail.mydomain.ru.
_pop3._tcp. mydomain.ru.	300	IN	SRV	20	10	995	mail.mydomain.ru.
_submission._tcp. mydomain.ru.	300	IN	SRV	10	10	587	mail.mydomain.ru.
_smtp._tcp. mydomain.ru.	300	IN	SRV	20	10	465	mail.mydomain.ru.

SSL Сертификат для Web-сервера

Остается прикрутить сертификат для нашего web-сервера, поскольку доступ только через https протокол. Если есть коммерческий сертификат, то необходимо установить его для Nginx, если нужна альтернатива, то — https://certbot.eff.org/lets-encrypt/debianstretch-nginx.

Заключение

Конечно данная сборка не претендует на решение для больших корпораций и компаний. При выборе почтовой системы нужно учитывать много факторов. Здесь не представлены решения по отказоустойчивости и балансировке нагрузки. Да и не думаю, что для компаний, которые ставят задачи по нагрузке, отказоустойчивости, непрерывности услуги подойдут подобные решения на открытых кодах, т.е. по сути без поддержки со стороны вендора.

Также данное решение не претендует на конкуренцию с Micorosft Exchange, мое мнение, что у Exchgane нет конкурентов, пока во всяком случае. Но у Exchange есть один минус — решения на его базе стоят не малых денег. А iRedMail представляет для маленьких и средних компаний стандартное решение для обмена сообщениями SMTP(S), IMAP(S), POP3(S) с антивирусной и антиспам защитой, плюс достаточно симпатичный веб-интерфейс с неплохим функционалом. Также можно присмотреться к веб-решению SOGo Groupware, которое присутствует в сборке iRedMail.

При этом решение бесплатное, в плане лицензионных затрат, не особо требовательно к оборудованию и ресурсам системы.

§

Проверим диски, физически подключенные к машине:

ls /dev/sd*

или

ls /dev | grep sd
linux - Modifying iRedMail SSL Certificates - Stack Overflow

У нас 2 диска /dev/sda и /dev/sdb/. Диск sda имеет 3 раздела. Диск sdb не имеет разделов. Выведем информацию по диску:

fdisk -l /dev/sdb
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Создадим раздел на диске sdb:

fdisk /dev/sdb
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Введем команду – n
и создадим единственный раздел – p

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Сохраняем и выходим – w

linux - Modifying iRedMail SSL Certificates - Stack Overflow

Далее форматируем созданный раздел
mkfs.ext4 /dev/sdb1 — для ext4 файловой системы
mkfs.ntfs /dev/sdb1 — для ntfs файловой системы

NTFS удобно для бэкап раздела, если нужно будет читать данные с него на Windows машине. С ext4 разделами на Windows возникают трудности, поскольку Windows с коробки не видит такие диски.

Однако может оказаться, что mkfs.ntfs отсутствует в системе.

Установим:

apt-get install ntfs-3g

Подробнее о NTFS под Linux — https://wiki.archlinux.org/index.php/NTFS-3G_(Русский)

Отформатируем раздел /dev/sdb1 в NTFS:

mkfs.ntfs -f /dev/sdb1
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Создадим папку buckup в /mnt — эта папка используется для монтирования, можно использовать любую папку:

mkdir /mnt/backup

Примонтируем диск:

mount -t ntfs /dev/sdb1 /mnt/backup

Однако после перезагрузки системы диск не смонтируется автоматически. Для этого получим идентификатор раздела, т.н. UUID:

blkid
linux - Modifying iRedMail SSL Certificates - Stack Overflow

Находим наш раздел и запоминаем UUID

/dev/sdb1: UUID=" 0B11987B18D10457" TYPE="ntfs"

И в файл /etc/fstab добавляем строчку:

UUID=0B11987B18D10457 /mnt/backup ntfs errors=remount-ro 0 1

Или:

echo "UUID=0B11987B18D10457 /mnt/backup ntfs errors=remount-ro 0 1" >> /etc/fstab

Можно также смонтировать по названию раздела:

/dev/sdb1 /mnt/backup ntfs errors=remount-ro 0 2

Почему удобнее UUID, а не названием раздела? Если физически переставить диски местами, то в зависимости от порта подключения (предположим SATA), поменяется и буквы дисков. Скажем с /dev/sdb на /dev/sda и наоборот. Поэтому лучше по возможности монтировать по UUID.

Про сертификаты:  ПАК «Стрелец-Мониторинг» – противопожарный мониторинг в Санкт-Петербурге | Меридиан

Перезагрузим сервер и убедимся, что раздел смонтирован:

touch /mnt/backup/testfile.txt
ls /mnt/backup/

Если есть файл testfile.txt, то диск готов.

rm /mnt/backup/testfile.txt

Инфо:
Посмотреть разделы и объем, занято и свободно df -l или df -lh если надо не байтах.

Modifying iredmail ssl certificates

The server is once again using the configuration provided above, and the domain is “www.lildirt.com”. Again, I ran a check using DigiCert’s tool, and it’s still saying I’m using my old self-signed certificate (that expires in 10 years), but I’ve changed the settings above.

OK, your mail server is mail.lildirt.com:

$ dig lildirt.com mx

; <<>> DiG 9.8.5-P1 <<>> lildirt.com mx
;; global options:  cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27746
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;lildirt.com.           IN  MX

;; ANSWER SECTION:
lildirt.com.        1799    IN  MX  10 mail.lildirt.com.

;; Query time: 109 msec
;; SERVER: 172.16.1.10#53(172.16.1.10)
;; WHEN: Mon Aug 11 18:33:49 EDT 2021
;; MSG SIZE  rcvd: 50

Now, check it with OpenSSL. You don’t have Secure SMTP running:

$ openssl s_client -connect mail.lildirt.com:465 -CAfile AddTrustExternalCARoot.crt
connect: Connection refused
connect:errno=61

And you don’t have SSL/TLS enabled on 995 (or 587 and 993 for that matter):

$ openssl s_client -connect mail.lildirt.com:995 -CAfile AddTrustExternalCARoot.crt
CONNECTED(00000003)
write:errno=54
---
no peer certificate available
---
...

And this is a problem:

$ telnet mail.lildirt.com 25
Trying 107.178.109.102...
telnet: connect to address 107.178.109.102: Operation timed out
telnet: Unable to connect to remote host

Is Postfix even running?


The server is once again using the configuration provided above, and the domain is “www.lildirt.com”. Again, I ran a check using DigiCert’s tool, and it’s still saying I’m using my old self-signed certificate

Why are you running a tool against www.lildirt.com:443? The problem you presented is for Postfix and a mail server configuration. www.lildirt.com has nothing to do with your question.

If interested, you don’t need web based tools. OpenSSL gives you everything you need to know:

$ openssl s_client -connect www.lildirt.com:443
CONNECTED(00000003)
depth=0 C = CN, ST = GuangDong, L = ShenZhen, O = mail.lildirt.com, OU = IT, CN = mail.lildirt.com, emailAddress = root@mail.lildirt.com
verify error:num=18:self signed certificate
verify return:1
depth=0 C = CN, ST = GuangDong, L = ShenZhen, O = mail.lildirt.com, OU = IT, CN = mail.lildirt.com, emailAddress = root@mail.lildirt.com
verify return:1
...

And:

$ openssl s_client -connect www.lildirt.com:443 | openssl x509 -text -noout
...
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 17052364516268315109 (0xeca62b2e24a611e5)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=CN, ST=GuangDong, L=ShenZhen, O=mail.lildirt.com, OU=IT, CN=mail.lildirt.com/emailAddress=root@mail.lildirt.com
        Validity
            Not Before: Jun  1 21:42:41 2021 GMT
            Not After : May 29 21:42:41 2024 GMT
        Subject: C=CN, ST=GuangDong, L=ShenZhen, O=mail.lildirt.com, OU=IT, CN=mail.lildirt.com/emailAddress=root@mail.lildirt.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:9a:53:ff:41:29:4f:41:01:62:40:1b:8d:98:81:
                    50:21:7a:c9:d6:29:fb:1d:67:68:de:9f:22:b9:36:
                    23:56:c4:75:aa:44:75:29:2b:84:9f:0b:0a:e4:d3:
                    4d:a1:94:8c:04:a4:35:f4:fa:03:1a:46:28:8c:a4:
                    c5:63:76:72:92:f1:a5:f8:75:cc:61:64:5b:c4:12:
                    70:a6:d0:da:62:b9:f2:d0:b9:65:d8:06:d9:aa:40:
                    21:fb:2b:df:12:e2:d3:7c:a9:0e:4e:d3:91:21:2d:
                    ad:d1:9c:1a:bf:fd:38:05:ef:9c:6e:61:2f:f9:22:
                    75:94:b1:2a:29:8b:45:b0:aa:fe:31:f3:32:9d:ce:
                    cc:2d:5d:e9:c6:0a:06:37:fd:ce:5d:09:1c:bf:98:
                    b7:d5:cc:2a:2f:e3:ba:79:a4:54:4e:70:de:dd:49:
                    e6:71:27:eb:14:ed:80:e1:bc:ab:04:c9:73:90:8d:
                    91:a7:c5:73:16:22:3d:a6:3b:84:5b:0e:a7:ec:1e:
                    67:c4:59:d9:76:17:37:16:02:94:d7:eb:82:e6:ae:
                    93:04:92:d7:2b:b4:6f:8a:d4:2b:64:77:9f:89:30:
                    34:a2:99:4a:f9:ac:d0:ec:c0:e0:0d:34:dc:03:53:
                    1e:35:96:4d:15:aa:46:70:b5:11:aa:41:84:84:00:
                    bc:2d
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                1A:6C:14:8A:E0:6F:7D:D9:80:BF:9A:80:A4:16:11:D4:C7:83:07:FB
            X509v3 Authority Key Identifier: 
                keyid:1A:6C:14:8A:E0:6F:7D:D9:80:BF:9A:80:A4:16:11:D4:C7:83:07:FB

            X509v3 Basic Constraints: 
                CA:TRUE
    Signature Algorithm: sha1WithRSAEncryption
         4b:78:ac:8d:09:a0:c1:a0:66:66:c6:6c:4e:40:75:a8:00:08:
         d6:be:31:f3:0f:48:7c:2d:ed:c6:2e:b9:39:06:38:66:a3:68:
         23:0a:d6:11:cf:2c:9d:18:60:37:25:a2:24:0f:9c:4a:2a:09:
         cc:e0:5b:36:3b:0d:47:01:47:6e:11:5a:7e:0d:9e:aa:7d:1b:
         41:3e:37:2f:b5:72:45:62:8f:cf:6f:27:d6:6f:5b:1c:bc:c7:
         9a:10:85:41:6c:c9:2f:7f:c6:b5:eb:cc:8c:ca:33:4a:83:ab:
         7a:fd:6b:dc:23:44:79:79:3b:8e:dd:de:77:d6:8e:e7:06:28:
         53:66:b9:96:ef:ad:04:7e:dd:23:99:6e:d8:9e:c5:3a:d9:ef:
         25:be:ee:90:f4:47:16:17:16:fe:37:da:f4:a9:cd:8c:54:47:
         ad:ed:ce:30:69:23:ee:58:23:bb:8f:db:0a:b7:4f:fb:00:95:
         34:c2:25:3a:37:20:2b:7d:3a:19:1c:ad:75:29:4e:f5:cb:de:
         8d:98:54:e7:f4:1c:24:a8:62:b2:0b:3e:71:2d:1a:b9:98:59:
         ca:66:ac:68:a7:a0:0a:da:8f:35:8c:d1:ba:33:1f:a4:39:bc:
         fd:58:a3:67:4d:eb:c2:00:9c:36:9a:a7:58:2c:2a:f1:38:c9:
         13:74:e0:04

From above, (1) no DNS names in Common Name (its deprecated by both the IETF and CA/Browser Forums); (2) CA:FALSE (not TRUE since you are not issuing certificates); (3) add DNS names to Subject Alternate Names (required by CA/Browser Forums).

See SSL Certificate Verification : javax.net.ssl.SSLHandshakeException on how to issue a self signed with the proper attributes and multiple DNS names in the Subject Alternate Name (SAN).


Here’s an example for armor-cloud.com. This is what its supposed to look like for Secure IMAP on port 993. You should get nearly similar results assuming you provide Secure IMAP. The difference is the domain and the CA. Notice the command finishes with Verify Return Code: 0 (ok).

$ openssl s_client -connect mail.armor-cloud.com:993 -CAfile startcom-ca.pem 
CONNECTED(00000003)
---
Certificate chain
 0 s:/C=US/CN=mail.armor-cloud.com/emailAddress=webmaster@armor-cloud.com
   i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 1 Primary Intermediate Server CA
 1 s:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 1 Primary Intermediate Server CA
   i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGTDCCBTSgAwIBAgIDEMlWMA0GCSqGSIb3DQEBCwUAMIGMMQswCQYDVQQGEwJJ
TDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0
YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3Mg
MSBQcmltYXJ5IEludGVybWVkaWF0ZSBTZXJ2ZXIgQ0EwHhcNMTQwNTI5MjIzODQy
WhcNMTUwNTMwMDYzMDAwWjBWMQswCQYDVQQGEwJVUzEdMBsGA1UEAxMUbWFpbC5h
cm1vci1jbG91ZC5jb20xKDAmBgkqhkiG9w0BCQEWGXdlYm1hc3RlckBhcm1vci1j
bG91ZC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCSL72lQJya
JQ6vvXQpWUzAjOxuI 5u2bmBmblc7AoFDwOoFozg1aEUz5B7q/9DcJZpX8eF76JG
3E/zoU8s7pq30U1LAbg3d7Rg5OTc8bJd21BdUz8Bt3OctFxTKhddYpSkM3LjGEuR
9tRzTCY/KDFglZMBDoz4iJdHFTL3WaCCuvulaanz/zMFx2Kp4p9Jep8/BR4OtfOx
8RexSVwmjXm CmN6npBl2cl3Li4XUKqfr9uMD24cNgom/Plt3lq4FQpGsb8k29S0
6JMJYpKXFVM/XGKNI8g3aQdxi3daQiTgngtw8r7n8nHUTIOIl/kg3dfDwSYW6sE/
LyXfjYl XY2/AgMBAAGjggLqMIIC5jAJBgNVHRMEAjAAMAsGA1UdDwQEAwIDqDAT
BgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUqOXcMohVao8F4j9YVhdZj98N
WxkwHwYDVR0jBBgwFoAU60I00Jiwq5/0G2sI98xkLu8OLEUwMAYDVR0RBCkwJ4IU
bWFpbC5hcm1vci1jbG91ZC5jb22CD2FybW9yLWNsb3VkLmNvbTCCAVYGA1UdIASC
AU0wggFJMAgGBmeBDAECATCCATsGCysGAQQBgbU3AQIDMIIBKjAuBggrBgEFBQcC
ARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjCB9wYIKwYBBQUH
AgIwgeowJxYgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwAwIBARqB
vlRoaXMgY2VydGlmaWNhdGUgd2FzIGlzc3VlZCBhY2NvcmRpbmcgdG8gdGhlIENs
YXNzIDEgVmFsaWRhdGlvbiByZXF1aXJlbWVudHMgb2YgdGhlIFN0YXJ0Q29tIENB
IHBvbGljeSwgcmVsaWFuY2Ugb25seSBmb3IgdGhlIGludGVuZGVkIHB1cnBvc2Ug
aW4gY29tcGxpYW5jZSBvZiB0aGUgcmVseWluZyBwYXJ0eSBvYmxpZ2F0aW9ucy4w
NQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5zdGFydHNzbC5jb20vY3J0MS1j
cmwuY3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2Nz
cC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMS9zZXJ2ZXIvY2EwQgYIKwYBBQUHMAKG
Nmh0dHA6Ly9haWEuc3RhcnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczEuc2VydmVy
LmNhLmNydDAjBgNVHRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJ
KoZIhvcNAQELBQADggEBAGN4 kuLiZdUVgNL2cjLLv5IeLhq5Ly35BKJ8SohkKdM
B2cWOC3r iFohxRI VvILOwh7GCuWsWWJLOd17klgWf3EF7EkYFyR4PB6m71BdRD
RTNDXw27Xw0lADMBP36f28lo8X26EJbpav7MVNK9gqbdHU/dEYfY34S9li/iXe2n
E7Resh/vPEmFuebSrpHrfUT5fWWsbZKWcEZOWJwd8nqztI/7TdI63H9O1BgrCxQ/
lL t9HsRfoh7EjEmjYy7O4q1oFAa0RmYvsikhVJo  6gsyPKHcOKzb65RWb2RTiM
lzbvqlg3 XplAdVzzqC M0C5JHeIXAZosWTmkgDGPHU=
-----END CERTIFICATE-----
subject=/C=US/CN=mail.armor-cloud.com/emailAddress=webmaster@armor-cloud.com
issuer=/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 1 Primary Intermediate Server CA
---
No client certificate CA names sent
---
SSL handshake has read 3524 bytes and written 626 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : AES256-GCM-SHA384
    Session-ID: E6CD57CF3A522AC3093C3A734EE8C8369F8ECD5A0C1206FB77184D481910B9B8
    Session-ID-ctx: 
    Master-Key: 5DC080AC9627E8294A2C675D5177BFDC25B897371FEA36944CB60181B4C39D15E284DCB04A174AECCB41175430FFBFF3
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 29 80 70 c1 ea 19 57 e3-25 5b ee eb 12 39 f8 c3   ).p...W.%[...9..
    0010 - 97 c6 38 82 cd 4e a2 5d-ba b9 06 5f 4f 62 25 34   ..8..N.]..._Ob%4
    0020 - a1 6b 49 04 8a 8b 9f d2-e7 3c 0d 63 70 ae dc aa   .kI......<.cp...
    0030 - 9f d5 a1 d1 e4 26 01 bb-0e 1a f7 7f 35 0e af 6b   .....&......5..k
    0040 - 28 70 be e0 d3 4f 93 62-c8 2c 2c 43 2a 32 71 f3   (p...O.b.,,C*2q.
    0050 - 4a 1b 5a 35 4c d5 e2 e6-ad c1 65 18 42 4b 67 89   J.Z5L.....e.BKg.
    0060 - 8b 97 95 dd cf 0f 3e b1-32 6e 52 a0 77 9c 86 cc   ......>.2nR.w...
    0070 - 47 39 b4 66 60 33 74 12-b1 25 a5 4e 71 0d 60 e5   G9.f`3t..%.Nq.`.
    0080 - 79 8f a3 9c 06 a1 5b cc-a3 f7 c4 bd f4 86 77 0c   y.....[.......w.
    0090 - 5f 24 57 38 06 fa a2 34-57 e7 64 56 ce 73 24 ad   _$W8...4W.dV.s$.

    Start Time: 1407799533
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
* OK IMAPrev1

Оцените статью
Мой сертификат
Добавить комментарий