Настройка почтового сервера на связке Postfix+Dovecot+MySQL+PostixAdmin+Roundcube на Centos 7. Часть 1

Автор: | Май 16, 2019

Очередная статья, как настроить почтовый сервер.
Задача: есть домен и свободная виртуалка, почему бы не настроить почтовый сервер. Настраивать будем на домене samara-it.ru. Это мой первый почтовый сервер, настраивать будем на CentOS 7. Знаю, что есть Zimbra, которая «ставится и работает», но хочется пройти процесс установки с самого начала, чтоб «прочувствовать».

Что должно получится: Почтовый сервер, с удобной web-почтой (Roundcube), и управлением через PostfixAdmin.

Итак, имеем «голую» систему. Хотя некоторые пакеты уже установлены и настроены. К примеру: wget, mc, htop, atop, nano и т.д. Не думаю, что для вас это будет проблемой. Виртуалка имеет ip: 100.100.100.1

1. Настраиваем\проверяем настройки DNS у хостера. Обязательно должна быть запись MX, без этого работать не будет! Т.к. почта должна ходить на домен samara-it.ru, значит должна быть такая MX запись:

Так же, мы должны добавить PTR запись, для этого обращаемся к хостеру и просим его добавить эту запись. У меня получилось так:

2. Настраиваем имя хоста

Проверяем, если не так, меняем

Если не так, меняем:

ВАЖНО: 100.100.100.10 mail.samara-it.ru <- эта запись должна быть первой!!!

Проверяем:

3. Установка и настройка Nginx

Nginx будем собирать из исходников с поддержкой TLS1.3. В CentOS 7 по умолчанию установлена openssl версии OpenSSL 1.0.2k-fips 26 Jan 2017. Проверим:

Для того, чтобы tls 1.3 заработал, nginx должен быть собран с версией openssl 1.1.1 или выше. Для этого соберем свой rpm со всем необходимым. Для начала установим необходимые пакеты.

Подключим репозиторий nginx, стабильной версии.Для этого создадим файл

и добавим в него следующие

Создадим структура каталогов в домашней директории

Загрузим пакет с исходниками и установим его.

При установке получим сообщение об ошибке. Дело в том, что для сборки пакетов рекомендуется использовать отдельного пользователя. Для нас это не важно. Продолжаем и  ставим зависимости.

Качаем исходники openssl. Для этого идем на сайт https://www.openssl.org и копируем ссылку на загрузку из раздела Download. На данный момент это версия 1.1.1b, качаем и распаковываем.

Поменяем в параметрах сборки нашу версию openssl и поддержку tls 1.3, правим файл ~/rpmbuild/SPECS/nginx.spec , добавляем в строку, начинающуюся с %define BASE_CONFIGURE_ARGS в самый конец к списку параметров: --with-openssl=/usr/src/openssl-1.1.1b --with-openssl-opt=enable-tls1_3 . Должно получится так (см. самый конец):

Собираем rpm:

Готовый rpm появится в ~/rpmbuild/RPM/ , установим его:

Проверяем, обращаем внимание на строки: built with OpenSSL 1.1.1b 26 Feb 2019 и configure arguments: .... --with-openssl=/usr/src/openssl-1.1.1b --with-openssl-opt=enable-tls1_3

Запрещаем системе обновлять nginx, иначе, после обновления она подменит наш nginx на новый, без tls1.3 и новой openssl

Настроем основной конфиг nginx. Приведем конфиг /etc/nginx/nginx.conf  к такому виду:

Создадим конфиг с ssl. Сертификаты ssl я уже использую от Let’s Encrypt, получение сертификата расписывать не буду. У меня wildcard сертификат. Создадим каталог и файл с настройками.

и добавим в файл это:

Обращаем внимание на строки с сертификатом и его ключем. Правим пути под свои, так же, не забываем устанавливать необходимые права на файлы сертификата и ключа. В моем случае это:

4. Установка и настройка PHP-FPM для Nginx.

Устанавливать будет PHP 7.2, для этого добавим репозиторий Remi и включим его

Ставим php-fpm

Проверяем

Настраиваем

Проверяем и если все ОК, запускаем и добавляем в автозагрузку

5. Установка и настройка MySQL

Установка

Запускаем и настраиваем

6. Установка PostfixAdmin

Создаем базу, она будет нужна для работы Exim, Dovecot, PostfixAdmin

Сделаем копию файла настроек PostfixAdmin  и вносем изменения:

Настраиваем виртуальный хость на Nginx, создаем файл nano /etc/nginx/conf.d/postfixadmin.conf

Обратите внимание на строки: allow XX.XX.XX.XX; — я разрешил доступ к серверу только с определенного ip. Если это не надо, убирите строки allow XX.XX.XX.XX; и deny all; Так же, можно настроить доступ через авторизацию.

Далее, необходимо создать директорию templates_c

Добавляем запись А в DNS postfixadmin.samara-it.ru -> 100.100.100.10. Открываем доступ по порту 80 и 443 через iptables, запускаем nginx, заходим на сайт: https://postfixadmin.samara-it.ru/setup.php

Вводим пароль в строке: Setup password, получаем хеш пароля, добавляем его в конфиг:

В строке Administrator – вводим учетную запись админиcтратора admin@samara-it.ru

Вводим пароль от админсткой учетки.

После чего переименовываем установочный файл

Заходим на сайт: https://postfixadmin.samara-it.ru и добавляем новый домен:

Далее, добавляем новый почтовый ящик

Продолжаем в Часть 2.