Устанавливаем свой почтовый сервер На базе Postfix и Dovecot с хранением пользователей в Mysql

Всем добрый день!

Решил написать HOWTO по мотивам недавнего внедрения почтового сервера в организации. Материал будет разбит на несколько статей, так как материала много. Параллельно с текстом вся конфигурация будет проверена на новой тестовой инсталляции FreeBSD 10.3.

Итак, в этом материале  мы рассмотрим установку и настройку нашего почтового сервера, попутно установим Mysql, PHP и Nginx. Инсталляция будет проводится в операционной системе FreeBSD 10.3 с локалью UTF-8, сервер будет иметь:

  1. Внешний интерфейс 111.111.111.111
  2. Внутренний интерфейс 10.10.10.10
  3. Имя сервера mail.test.ru
  4. Будем обслуживать домен test.ru
  5. Будем исходить из того, что в DNS вашей зоны внесены:
  • A запись типа mail    IN      A    111.111.111.111
  • MX запись          IN      MX      10      mail.test.ru.

Из чего будет состоять наш почтовый сервер:

  1. Postfix — сам MTA (mail transfer agent)
  2. Dovecot — IMAP и POP3 сервер
  3. PostfixAdmin — WEB интерфейс для администратора почтового сервера (создание, управление пользователями, виртуальными доменами)
  4. RoundCube — пользовательский WEB интерфейс к нашему почтовому серверу

Устанавливаем все необходимое

Предварительно обновив или установив набор портов.
Обновление: portsnap fetch update
Первая установка: portsnap fetch extract

MySQL:

Разрешаем запуск MySQL сервера:

Запускаем MySQL сервер:

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

  • Set root password? [Y/n] Y
  • New password: mypassword
  • Re-enter new password: mypassword
  • Remove anonymous users? [Y/n] Y
  • Disallow root login remotely? [Y/n] Y
  • Remove test database and access to it? [Y/n] Y
  • Reload privilege tables now? [Y/n] Y
Создадим базы для PostfixAdmin и RounCube:

Тем самым мы создали две базы данных:

  1. postfix с паролем mypassword и пользователем postfix для PostfixAdmin
  2. rouncube с паролем mypassword и пользователем roundcube для RoundCube

NGINX:

В config я убрал поддержку IPV6, т.к. ее не использую и убираю ее везде, остальное оставил по умолчанию.

Настройки установщика NGINX
Настройки установщика NGINX

Разрешаем запуск Nginx:

Создадим два виртуальных хоста:

  1. postfix.test.ng.ru для PostfixAdmin
  2. mail.test.ru для RounCube

Место для логов и конфигов и создадим пустые конфиги

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

В файле /usr/local/etc/nginx/nginx.conf  в секции http (перед последней закрывающей фигурной скобкой) впишем:

Конфигурационный файл виртуального хоста postfix.test.ru.conf для PostfixAdmin

Конфигурационный файл виртуального хоста mail.test.ru.conf  для RoundCube 

Пока не запускаем Nginx, запустим после установки PostfixAdmin и RoundCube.

PostfixAdmin инсталляция:

В конфигурации отмечаем MYSQL, на PostgreSQL снимаем галку (можно и не снимать)

Конфигурация PostfixAdmin
Конфигурация PostfixAdmin

RoundCube инсталляция:

В config, я дополнительно отметил GD и PSPELL

roundcube_config

PHP-FPM:

Разрешим запуск:

date.timezone = Europe/Moscow

Запустим:

Так же запустим Nginx:

PostfixAdmin установка:

Правим

Переходим в браузере на страницу http://postfix.test.ru/setup.php
Проверяем вывод, при необходимости исправляем ошибки, мне в частности было предложено установить php5-imap, установим:

Показать »

postfix_config_setup

Внизу этой странице вбиваем текущий пароль, который указали в config.inc.php в строке $CONF[‘setup_password’] в поле Setup Password, почтовый адрес администратора и задаем пароль для входа
postfix_config_setup_admin

После этого получим строку подобной этой
postfix_config_setup_admin_passwordВписываем хеш пароля в config.inc.php в строку $CONF[‘setup_password’]

Заходим на postfix.test.ru, вставляем свои данные.
Добавляем домен http://postfix.test.ru/list.php?table=domain

Postfix:

в cofig отмечаем, что нам нужна поддержка MySql и SASL
postfix_config

В конце инсталляции отвечаем утвердительно на вопрос:
Would you like to activate Postfix in /usr/local/etc/mail/mailer.conf [n]? y

Останавливаем sendmail:

Запрещаем запуск Sendmail и разрешаем запуск Postfix, прописав соответствующие строки в /etc/rc.conf

Отключаем различные задачи для обслуживания Sendmail.
Создаем файл /etc/periodic.conf и вписываем туда следующее:

Если по какой-то причине «не активировали» Postfix в конце инсталляции, то проделываем следующее:

Создаем дополнительные каталоги для хранения конфигов и ssl ключей:

Создаем ключи шифрования на 10 лет (3650 дней):

Отвечаем на вопросы:

  • Country Name (2 letter code) [AU]:RU
  • State or Province Name (full name) [Some-State]:Russia
  • Locality Name (eg, city) []:Moscow
  • Organization Name (eg, company) [Internet Widgits Pty Ltd]:Testcompany Ltd
  • Organizational Unit Name (eg, section) []:Mail Server
  • Common Name (e.g. server FQDN or YOUR name) []:mail.test.ru
  • Email Address []:postmaster@test.ru

Создадим каталог для хранения почты:

Создадим три конфигурационных файла для связи Postfix с Mysql
Для алиасов:

Для почтовых ящиков:

Для виртуальных почтовых доменов:

Редактируем конфигурационный файл Postfix:

Запускаем Postfix

Dovecot:

В config обязательно отмечаем поддержку MySQL
dovecot2_config

Разрешаем запуск:

Копируем конфиги:

Запускаем Dovecot:

Заводим почтовый ящик пользователя через PostfixAdmin

RounCube настройка:

Заходим http://mail.test.ru/installer/
Если видим такую картину, то продолжаем, если не хватает какого-либо PHP модуля, то устанавливаем и передергиваем php-fpm

Показать »

roundcube_01

Нажимаем «NEXT» и в поле «Database setup» вбиваем наши настройки:
roundcube_02

Если планируется использовать один домен, то можно жестко указать в поле username_domain, жмем «NEXT», записываем сгенерированный конфиг в файл: /usr/local/www/roundcube/config/config.inc.php
Нажимаем continue, исправляем DB config и переходим на страницу http://mail.test.ru/, если вы все сделали правильно, то должны увидеть такую страницу:
roundcube_03Вводим пользователя вида test@test.ru и его пароль и попадаем в почту:roundcube_04

Не забываем в конфигурационных файлах заменить имена и IP адреса на свои.
Почтовый сервер готов к использованию. В следующих статьях я опишу, как нам прикрутить к DNS подпись DKIM, так же опишем правила SPF для нашего домена. Настроим Graylist, Clamav, Spamassassin и организуем мониторинг сервера с помощью Mailgraph и Pflogsumm.

До встречи.

 

Устанавливаем свой почтовый сервер На базе Postfix и Dovecot с хранением пользователей в Mysql : 2 комментария

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

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