Перейти к содержимому

Настройка почтового сервера (Postfix, Dovecot, MariaDB/MySQL) в CentOS/RHEL

Установка PostfixAdmin

Скачаем архив с PostfixAdmin, распакуем и разложим его содержимое по разным папкам:

Теперь создадим в MySQL базу данных, в которой будет храниться информация о почтовых пользователях:

Условимся, что здесь и далее вместо %VMailDB%, %VMailUser% и %VMailPassWord% нужно вписывать название базы данных, имя пользователя и пароль. Никаких процентов!

Пропишем данные о созданной базе в конфигурационный файл PostfixAdmin и сделаем несколько дополнительных настроек:

Подключим PostfixAdmin к веб-серверу Apache:

Открываем в браузере ссылку https://mail.example.com/postfixadmin/setup.php Проверьте везде ли написано OK в требованиях. Далее задайте пароль для изменения настроек и получившийся хэш сохраните в файл /etc/postfixadmin/config.local.php

Теперь опять открываем в браузере ссылку https://mail.example.com/postfixadmin/setup.php, вводим пароль и создаём учётную запись администратора.

Учётная запись администратора создана, открываем PostfixAdmin по адресу https://mail.example.com/postfixadmin/ и вводим данные администратора. Наша задача для начала создать домен и почтовые ящики пользователей. Для того чтобы создать домен выбираем в меню «Domain List» и там пункт «New Domain». Заполняем форму (в поле «Transport» необходимо выбрать «dovecot») и нажимаем на кнопку «Add Domain». После создания домена – создадим пользователей и алиасы. Для этого выбираем в меню «Virtual List» и там пункт «Add Mailbox». Заполняем форму и нажимаем на кнопку «Add Mailbox». По умолчанию для домена создаётся ряд системных алиасов, почта с которых в итоге редиректится на адрес admin@example.com. Нужно теперь создать редирект с имени admin@example.com на адрес администратора. Для этого выбираем в меню «Virtual List» и там пункт «Add Alias». Вводим admin в поле «Alias», в поле «To» вводим полный адрес для редиректа и нажимаем на кнопку «Add Alias». Теперь открываем список созданных почтовых ящиков и алиасов, выбрав пункт «Virtual List» в меню «Virtual List». Если всё в порядке – приступаем к дальнейшей настройке почтовой системы.

Исправление работы PostfixAdmin с русскими символами

  • Для начала исправим кодировку в таблицах MySQL:

  • А теперь исправим php-скрипты PostfixAdmin для правильной работы с кодировкой utf-8:
    Исправить нужно все вызовы функции htmlentities в каталогах /usr/share/postfixadmin и /usr/share/postfixadmin/templates, нужно добавить 2 аргумента |, ENT_QUOTES, ‘UTF-8’|.

Исправление бага с сохранением extra-опций для fetchmail

  • В файле fetchmail.php дважды выполняется функция escape_string, поэтому слеши сохраняются в MySQL.

Установка postfix

Для начала определимся где будут физически находиться почтовые ящики пользователей. Если планируется их оставить в дефолтной папке – пропускаем этот пункт. У меня почта физически лежит на специальном разделе, который примонтирован в /srv. Для того чтобы сделать так же – монтируем раздел и выполняем следующее:

В CentOS 7 по умолчанию устанавливается postfix, а в предыдущих версиях CentOS нужно было выполнить команду:

Отредактируем основной конфигурационный файл postfix:

Блок «VIRTUAL DOMAINS» отвечает за наши обслуживаемые домены и пользователей, которые мы заводили в PostfixAdmin. Блок «SASL» нужен для авторизации пользователей на SMTP, для того чтобы можно было отправлять почту через наш сервер. В блоке «TLS» прописываем наши SSL-сертификаты, для того чтобы всё общение с почтовым сервером проходило в зашифрованном виде. А блок «SMTPD RESTRICTIONS» нужен для того чтобы отсечь львиную долю спама.

Создадим список исключений из RBL-списка. Для того чтобы иметь возможность получать почту с этих серверов даже если они по какой-то причине попадут в RBL-список.

Создадим список хостов, которые смогут без авторизации отправлять почту через наш почтовый сервис (очень опасная штука, на моей памяти реально такое понадобилось только для одного блейд-центра, который не умел авторизовываться, всё остальное железо спокойно авторизуется на smtp и без проблем отправляет почту).

Настроим dovecot в качестве почтового транспорта:

Создадим дополнительные конфигурационные файлы с данными для подключения к SQL-таблицам с данными о наших доменах и пользователях:

Postfix настроен, но запускать его не будем, пока не настроим dovecot.

Установка dovecot

Установим сервер dovecot и сопутствующие плагины для работы с базой MySQL и для работы с Sieve-фильтрами:

Запуск сервисов

Запустим dovecot и postfix и добавим их в автозагрузку:

Проверка работоспособности SMTP

Теперь проверим, принимает ли postfix почту для нашего домена:

А таким образом проверим подключение через TLS и авторизацию:

Настройка firewall

Проверив что postfix функционирует и готов к принятию почты – открываем его во внешний мир:

Настройка FetchMail

Прежде всего установим необходимые пакеты:

Теперь создадим конфигурационный файл для fetchmail:

Затем подготовим скрипт, который будет запускаться сервисом cron в определённое время и забирать для нас почту:

Добавим выполнение этого скрипта в cron:

Теперь нам необходимо залогиниться в наш PostfixAdmin и прописать почтовые учётные записи, с которых будет собираться почта. Для этого откроем веб-интерфейс PostfixAdmin и выберем в меню «Fetch Email» пункт «New Entry». Выбираем Mailbox, куда будет складываться почта, вводим имя удалённого сервера, имя пользователя и пароль, так же выбираем протокол по которому будет забираться почта (IMAP/POP3). Если на той стороне IMAP-сервер с несколькими папками, то для каждой папки нужно будет создать отдельную запись для сбора почты, и в каждой записи в поле «Folder» – указать свою папку. Если сбор почты осуществляется используя SSL-шифрование, то необходимо отметить галочкой пункт «SSL active», так же желательно заполнить поле «SSL fingerpring (md5)», для того чтобы Fetchmail не ругался на SSL-сертификат. После этого сохраняем запись нажав на кнопку «Save Changes». А для получения fingerprint нужно выполнить следующую команду:

Опубликовано вLinux

Ваш комментарий будет первым

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *