Тема создания собственного почтового сервера снова приобрела повышенную актуальность, но для многих администраторов это весьма непростая задача. А так как почта является для многих организаций чувствительным сервисом, то плохо работающий почтовый сервер способен доставить массу неприятностей. Поэтому, если вам необходима собственная почта, но нет времени и желания глубоко вдаваться в тему, то лучше всего выбрать готовую сборку, которая поможет быстро получить гарантированно работающее решение. Сегодня мы рассмотрим одну из таких сборок - iRedMail.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
iRedMail - это бесплатное почтовое решение на базе открытого ПО, под капотом вы найдете все те же Postfix и Dovecot, плюс ряд дополнительных служб и настроек, которые разработчики продукта заботливо соединили между собой в единый комплекс. При этом никаких собственных "импровизаций" iRedMail не добавляет, весь софт настраивается стандартным образом через стандартные файлы конфигурации, что позволяет, при необходимости, производить тонкую настройку вручную.
А так как просто почта сегодня уже мало кого интересует, то мы добавим немного групповой работы при помощи веб-клиента SOGo, который предоставляет работу с календарями и задачами, а также синхронизацию через ActiveSync и работу по MAPI с Microsoft Outlook. Также в данной статье мы рассмотрим получение сертификатов при помощи Let's Encrypt, что позволит повысить безопасность нашего сервера.
Доменные имена и DNS-зона
Почтовая система крайне чувствительна к правильной настройке DNS, поэтому с нее и начнем. Сделать это нужно заранее, так как изменения в DNS не распространяются мгновенно. В нашем примере будет использован реальный технический домен, который мы использовали специально для подготовки материала.
Итак:
- it-31.ru - используемый домен
- mk-61 - почтовый сервер, полное доменное имя (FQDN) mk-61.it-31.ru
- mail - псевдоним для более удобного обращения к почте
- 203.0.113.25 - IP-адрес почтового сервера
Итак, нам потребуется следующий базовый набор записей:
@ IN MX 10 mk-61
mail IN CNAME mk-61
mk-61 IN A 203.0.113.25
Обратите внимание, что в качестве MX-записи мы используем реальное имя сервера, а не IP-адрес и не запись псевдонима.
Также сразу добавим SPF и DMARС-записи:
@ IN TXT "v=spf1 +a +mx ~all"
_dmarc TXT "v=DMARC1; p=none; rua=mailto:report@it-31.ru"
SPF-запись говорит о том, что почту могут отправлять узлы указанные в A и MX-записях домена, остальным узлам, скорее всего, почту отправлять запрещено, но прямого указания блокировать таких отправителей нет. DMARC предписывает не предпринимать никаких действий и только присылать отчеты на указанный ящик. Впоследствии, отладив работу сервера, эти правила следует изменить на более строгие, подробнее об этом можно прочитать в нашей статье:
Настраиваем свой почтовый сервер. Что нужно знать. Ликбез
Затем просим провайдера или хостера, предоставившего нам выделенный IP-адрес добавить в обратную зону PTR-запись:
25.113.0.203 IN PTR mk-61.it-31.ru.
Еще раз напомним, PTR-запись создается владельцем IP-адреса и содержит имя сервера фактически отправляющего почту с этого адреса.
Перед тем, как приступать к дальнейшим настройкам следует убедиться, что работают как минимум A и MX-записи.
Предварительная настройка сервера
Прежде всего определимся с выбором операционной системы, решающим фактором здесь будет поддержка SOGo Groupware, что ограничивает выбор между Debian 11 и Ubuntu 20.04 LTS, поэтому наш выбор - Debian 11. Также обратите внимание на то, что SOGo недоступен для архитектуры ARM.
iRedMail рассчитан на установку в чистую систему, поэтому следует выполнить минимальную установку Debian или заказать сервер в минимальной конфигурации. Для этого можете воспользоваться следующим руководством:
Linux - начинающим. Установка и первоначальная настройка Debian 11 для сервера
Для начала правильно установим часовой пояс:
timedatectl set-timezone Europe/Moscow
Получить список зон можно командой:
timedatectl list-timezones
Теперь установим имя хоста:
hostnamectl set-hostname mk-61
Важно - в данной команде указываем короткое имя сервера.
Затем приведем файл /etc/hosts к следующему виду:
127.0.0.1 mk-61.it-31.ru mk-61 localhost localhost.localdomain
Теперь проверим настройки, в ответ на команду:
hostname
Сервер должен сообщить нам короткое имя. а на команду:
hostname - f
Полное, т.е. FQDN.
Установка и базовая настройка iRedMail
Все дальнейшие действия мы будем выполнять из-под суперпользователя root находясь в его домашней директории. Прежде всего скачаем архив с продуктом, ссылку на скачивание можно получить на официальной странице.
Выполним переход в домашнюю директорию, скачаем и распакуем архив:
cd
wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.6.2.tar.gz
tar -xzvf 1.6.2.tar.gz
Теперь перейдем в распакованную папку и запустим инсталлятор:
cd iRedMail-1.6.2
bash iRedMail.sh
Скрипт сначала выполнит скачивание необходимых пакетов, после чего вас встретит псевдографический установщик.
Прежде всего вам будет задан вопрос о месте хранения почты, вы можете использовать как предложенное значение, так и указать собственное расположение хранилища, здесь все зависит от структуры вашей дисковой подсистемы и предполагаемых объемов почты.
В качестве веб-сервера безальтернативно предлагается NGINX:
А вот в качестве базы данных мы будем использовать PostgreSQL - это надежное и производительное решение для работы с любыми объемами данных, в т.ч. и большими.
Затем указываем имя домена, который будет обслуживать наш сервер, в нашем случае просто it-31.ru
Следующим шагом будет создана учетная запись администратора с именем postmaster и вам будет предложено установить на нее пароль, при этом он не должен содержать специальных символов и не может быть пустым. Также, потом, вас попросят установить пароль для суперпользователя СУБД.
В следующем окне выбираем SOGo и все остальное, с Roundcubemail выбор нужно обязательно снять! В противном случае фильтрация почты в SOGo работать не будет, так как они используют несовместимые настройки.
После чего вам еще раз будут показаны все выбранные настройки и предложено подтвердить выбор, после утвердительного ответа начнется процесс установки, все пакеты скачиваются из штатных репозиториев системы. В процессе установки вас могут несколько раз спросить о применении тех или иных настроек, на все из них отвечаем утвердительно. В самом конце вы можете увидеть ошибку обновления 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.2
Для работы сервера эти файлы не нужны, но в случае их утечки сервер будет полностью скомпрометирован.
Настройка DKIM-записи
При установке iRedMail ключ для первого обслуживаемого домена создается автоматически, его можно найти в iRedMail.tips или вывести командой:
amavisd-new showkeys
Нам потребуется блок из скобок, в котором следует удалить переносы строк и лишние кавычки.
Сама DNS-запись должна выглядеть так:
dkim._domainkey TXT "v=DKIM1; p=MIIBIjANBgk...DQIDAQAB"
Это позволит серверам-получателям проверить подлинность отправителя и существенно повысит вероятность успешной доставки почты адресату.
Начало работы, проверка основных функций
В целом, наш почтовый сервер готов и можно начинать с ним работать. Но сначала просмотрим на доступные нам инструменты управления, в частности нам доступна бесплатная версия панели iRedAdmin, чтобы попасть в нее наберите адрес mail.it-31.ru/iredadmin. Панель простая, если не сказать - примитивная. Вам доступно создание нового домена, нового администратора и нового пользователя.
Не следует удивляться, для полноценного управления существует коммерческая iRedAdmin-Pro, но можно прекрасно обходиться и без нее, ниже мы расскажем, как, а для начала и этого достаточно. Создадим нового пользователя для проверки и покинем консоль.
Для повседневной работы мы будем использовать веб-интерфейс SOGo, он доступен по адресу почтового сервера или по псевдониму: mail.it-31.ru. Советуем везде использовать псевдоним, так как почтовый сервер в последующем вы можете и поменять, а псевдоним позволяет не менять настройки у пользователей, достаточно будет изменить единственную DNS-запись.
SOGo представляет простой и удобный веб-клиент с достаточным количеством настроек и функциями для групповой работы. Поддерживается адресная книга и календари.
Проверку почты следует начать с внутренней доставки, для нее требуется только правильная настройка сервера, отправим письмо с одного ящика на другой. Не ленитесь, заполните все поля и приложите вложение. Если что-то пойдет не так, то лучше узнать об этом сейчас, чем от пользователей, которые начнут работать с системой.
Отправили, переходим в другой почтовый ящик и проверяем получение:
Следующим шагом проверим отправку писем внешним получателям, например, на ящик публичной почтовой службы. Если вы все сделали правильно и все нужные DNS-записи присутствуют, то письмо будет успешно доставлено, в противном случае не забываем проверить папку Спам. В нашем случае письмо успешно пришло на Яндекс, и мы можем убедиться, что наш сервер использовал шифрование и DKIM-подпись, которая успешно прошла проверку.
И теперь обратный тест, отправка почты извне на свой сервер. Для того, чтобы эта попытка увенчалась успехом нам нужно иметь рабочие MX и A-записи. Причем они должны обновиться именно для сервера-отправителя, в противном случае он не сможет выполнить доставку. Поэтому основные DNS-записи следует изменять заранее, оптимально - за несколько дней до настройки почтового сервера.
Мы надеемся, что у вас все сделано правильно и внешнюю почту вы также успешно получите.
Затем можно попробовать настроить почтовый клиент, в нашем случае это будет Thunderbird. Для настройки достаточно просто указать адрес почты и пароль от почтового ящика, клиент сам определит не только основные, но и дополнительные настройки, предложив вам подключить адресные книги и календарь.
Все содержимое почты и календаря будет синхронизировано с клиентом, и синхронизация будет работать в обе стороны. Т.е. спокойно можно использовать почтовый клиент совместно в веб-интерфейсом, не испытывая никаких неудобств и затруднений.
Также можем сразу проверить работу фильтров, для проверки антиспама отправьте в теле письма строку:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Отправитель должен получить репорт от системы антиспама, а у получателя письмо сразу должно упасть в папку Спам.
Для проверки антивируса отправьте во вложении файл со строкой:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Отправка будет блокирована, и отправитель также получит репорт.
На этом проверку основных функций почтового сервера можно считать законченной.
Получение сертификатов Let's Encrypt
Все это время мы работали с самоподписанным сертификатом, это не влияет на надежность шифрования, но создает проблемы с доверием, особенно если вы работаете из публичных сетей. Приучать пользователей игнорировать предупреждения безопасности - это очень плохая практика, поэтому настроим получение полноценных сертификатов от Let's Encrypt.
Для начала установим certbot:
apt install certbot
После чего проверим возможность получения сертификата:
certbot certonly --webroot --dry-run -w /var/www/html -d mail.it-31.ru -d mk-61.it-31.ru
Ключ --dry-run как раз указывает на то, что нужно выполнить проверку без реального получения сертификата, ключи -d указывают домены, для которых мы хотим получить сертификат. При этом в общее имя (CN) сертификата будет записан домен указанный первым, остальные домены будут указаны в поле альтернативное имя. Никакого существенного значения это не имеет, но "для красоты" мы поставили первым псевдоним.
Если проверка прошла удачно, то получаем сертификаты командой:
certbot certonly --webroot -w /var/www/html -d mail.it-31.ru -d mk-61.it-31.ru
При получении сертификата у вас попросят указать почтовый адрес, указывайте действующую почту, так как не нее будут приходить уведомления, в случае если сертификат не удастся продлить автоматически.
Никаких настроек по продлению делать не нужно, certbot сам добавит в планировщик необходимые задания. А вот после получения нам потребуется выполнить ряд действий: скопировать сертификаты в хранилище iRedMail и перезапустить службы. Для этого воспользуемся дополнительными возможностями certbot.
Откроем файл с настройками нашего домена /etc/letsencrypt/renewal/mail.it-31.ru.conf и внесем в секцию [renewalparams] следующую опцию:
[renewalparams]
...
renew_hook = /etc/iRedMail_ssl.sh
Теперь создадим сам файл скрипта (если вы используете встроенный редактор mc, то замените в команде nano на mcedit):
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.it-31.ru/privkey.pem /etc/ssl/private/iRedMail.key
ln -s /etc/letsencrypt/live/mail.it-31.ru/fullchain.pem /etc/ssl/certs/iRedMail.crt
systemctl restart dovecot
systemctl restart postfix
systemctl restart nginx
Данный скрипт удаляет старые сертификаты и создает на их месте новые, точнее символические ссылки на новые сертификаты, а затем перезапускает службы. Он будет автоматически запускаться certbot при каждом успешном обновлении сертификатов. А пока сделаем его исполняемым:
chmod +x /etc/iRedMail_ssl.sh
И выполним:
/etc/iRedMail_ssl.sh
Тем самым мы проверим его работоспособность и выполним замену самоподписанных сертификатов на полученные нами от Let's Encrypt. Если скрипт отработал без ошибок, то снова идем в веб-интерфейс почты и убеждаемся что мы работаем теперь с полноценным сертификатом.
Теперь наш почтовый сервер полностью готов к эксплуатации.
Дополнительные инструменты управления
Как мы уже успели увидеть, родная панель управления крайне скудна по возможностям, поэтому в сети встречается достаточно решений разной степени удобности и полезности. Но все они сводятся к тому, чтобы внести необходимые изменения в базу данных SQL. От установки различных веб-панелей и прочих веб-скриптов лучше всего отказаться, так как это все создаст дополнительные угрозы безопасности, особенно если сервер у вас находится не в пределах периметра, а на внешнем хостинге.
Со своей стороны мы можем порекомендовать набор скриптов iRedMail-scripts, основное их достоинство в том, что они работают исключительно локально и просто преобразуют ваши запросы в SQL-команды, которые вы потом должны выполнить на сервере СУБД. При этом вы полностью контролируете ситуацию и можете дополнительно проверить, дополнить или изменить результат их работы.
Первоначально работа с ними может показаться в чем-то сложной, но впоследствии вы оцените все преимущества такого подхода, позволяющему вам, как администратору, самому управлять собственной системой, а не надеяться на чей-то чужой "черный ящик".
Для получения скриптов установим git:
apt install git
Перейдем в домашнюю директорию и клонируем репозиторий:
cd
git clone https://github.com/jeekkd/iRedMail-scripts.git
Все скрипты достаточно неплохо документированы, достаточно просто открыть файл или запустить его без параметров.
В нашем примере мы создадим несколько алиасов и привяжем их к почтовом аккаунту администратора. Для начала перейдем в директорию со скриптами:
cd ~/iRedMail-scripts/Scripts
Затем создадим первый алиас, вывод команд мы будем выполнять в SQL-файл.
./create-alias.sh report@it-31.ru > ~/output.sql
Обратите внимание, что для перенаправления мы использовали знак >, который перезапишет файл назначения.
Теперь второй алиас:
./create-alias.sh admin@it-31.ru >> ~/output.sql
Здесь и далее для перенаправления вывода мы будем использовать знак >>, который будет дописывать существующий файл новыми строками.
Теперь свяжем с нашими алиасами существующие почтовые ящики, к каждому алиасу можно привязать несколько ящиков, и вся почта направленная на алиас будет перенаправляться в каждый из них.
./add-user-to-alias.sh report@it-31.ru postmaster@it-31.ru >> ~/output.sql
./add-user-to-alias.sh admin@it-31.ru postmaster@it-31.ru >> ~/output.sql
В нашем случае мы все замкнули на админский ящик.
Если мы откроем теперь файл output.sql, то увидим в нем обычные SQL-команды, которые можем исправлять, дополнять, копировать. Никаких глубоких знаний здесь не нужно, достаточно базовых познаний в SQL.
После того, как файл с командами сформирован остается только загрузить его в СУБД, для этого скопируем его в домашнюю папку суперпользователя базы данных и изменим владельца:
cp ~/output.sql /var/lib/postgresql/
chown postgres:postgres /var/lib/postgresql/output.sql
Теперь войдем под пользователем postgres:
su postgres
Откроем консоль psql к нужной базе:
psql -d vmail
И загрузим файл, после чего выйдем из консоли:
\i ~/output.sql
\q
Теперь, для проверки, можем направить почту на алиас и проконтролировать ее получение в основном почтовом ящике.
Мониторинг
Контроль над настроенным и установленным сервером требует наличия инструментов мониторинга основных показателей. В случае с iRedMail вам не нужно дополнительно ничего делать, так как из коробки была установлена система мониторинга netdata, если вы, конечно, не сняли галочку на этапе установки. Чтобы попасть в ее графический интерфейс наберите mail.it-31.ru/netdata и войдите под учетной записью администратора почтового сервера postmaster.
Веб-интерфейс предоставляет быстрый доступ к основным показателям в реальном времени.
Ниже можно просмотреть графики основных метрик и ознакомиться со статистикой всех используемых служб сервера, например, количество забаненых Fail2ban адресов.
Более подробно разбирать систему мониторинга мы не будем, она достаточно проста и освоить ее самостоятельно не составит труда.
На этом наша статья подходит к завершению и за кадром осталось довольно многое, но с ее помощью вы сможете установить и настроить собственный почтовый сервер в течении получаса. И его сразу можно будет запустить в работу, что важно, особенно для начинающих. А более тонкие и детальные настройки мы будем рассматривать в наших будущих статьях.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии