Конфиг Postfix для связки с Dovecot, MySQL, PostfixAdmin

Конфиг Postfix для связки с Dovecot, MySQL, PostfixAdminВ этой статье я планирую выложить итоговый Конфиг Postfix для связки с Dovecot, MySQL, PostfixAdmin, а также прокомментировать все ключевые параметры. Разумеется повторяться я не собираюсь и копировать обзор параметров из прошлых статей не буду. Эти статьи вы всегда сможете найти по тегу Postfix configuring.


Найти больше информации о Postfix вы можете в основной статье по его настройке – Настройка Postfix.


Конфиг Postfix для связки с Dovecot, MySQL, PostfixAdmin

Первым делом, чтобы избежать неуместных вопросов в будущем, хочу обозначить версии пакетов, для которых актуальны озвученные в статье настройки:

Вскользь параметры основного конфига Postfixmain.cf – я рассмотрел в одной из начальных статей (а именно в Установка Postfix на Debian), но тогда я сделал акцент в сторону обособленного окружения MTA, то есть без связки с другими приложениями (например такими как Dovecot). Теперь же пришло время этот конфиг адаптировать для работы с Dovecot и MySQL.

Надо отметить, что частично я это сделал в предыдущих статьях:

Установка MySQL для Postfix и Настройка связки Postfix PostfixAdmin – настроил связку с MySQL для хранения всей служебной информации (учетные записи почтовых ящиков, алиасы пользователей и доменов, а также сами домены) в отдельной БД;

Виртуальные почтовые ящики Postfix – сконфигурировал Postfix для хранения всех почтовых данных виртуальных пользователей в отдельном каталоге под единственной системной учетной записью;

Связка Postfix и Dovecot – настроил Dovecot в качестве агента локальной доставки, а также использовал его реализацию SASL для аутентификации пользователей вместо Cyrus.

Тем не менее на этом работа не заканчивается и нужно довести дело до конца, сведя воедино все настройки и установив другие важные параметры. Этим и займемся ниже.

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

Пример:

Параметр queue_directory и так имеет значение по умолчанию /var/spool/postfix и в этом легко убедиться, выполнив команду:

Но возможно вы хотите подстраховаться и все же задать это значение жестко в конфиге. Это ваше право, очень многие реально так делают. Параметры с дефолтными значениями, которые уже и так подходят для моей конфигурации, я переопределять не буду. Учтите только, что параметров конфига main.cf у Postfix более 900 штук. Задавать выборочно какие-либо из них (на их же дефолтные значения), оставляя при этом другие как есть, не совсем логично.

Общие параметры

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

А теперь обо всем подробнее и по порядку.

myhostname 1 – определяет имя вашей почтовой системы. Это значение нужно задать явным образом, поскольку от него зависит множество других параметров. Если оно не задано, будет использоваться fqdn-имя вашего сервера (то есть команда hostname -f должна возвращать правильное имя). Не знаете какое имя поставить? – ставьте имя, на которое указывает mx-запись вашего домена.

mydomain 2 – имя основного домена вашей почтовой системы. Его также лучше задавать в явном виде, в виду большого количества зависимостей. Также переменная может быть получена отбрасыванием до первой точки с левой стороны имени хоста (myhostname был mail.bissquit.com, значит mydomain стал bissquit.com).

myorigin 3 – определяем имя домена по умолчанию, который будет иметь вся исходящая почта, у которой не задан домен отправителя. В принципе запись большого значения не играет, по умолчанию она равна переменной $myhostname. Тем не менее некоторое удобство она все же доставляет – например при отправке писем из консоли (удобно для тестированяи почты. Я использую обычную команду mail) у вас будет корректная запись исходящего домена.

mydestination 4 – вот тут надо быть внимательным, поскольку в значении этой переменной не должны быть заданы какие-либо используемые виртуальные домены. У меня как раз используется конфигурация с виртуальными доменами, а потому для запись не должна принимать значения $myhostname или $mydomain. Если виртуальных доменов нет, смело ставьте как минимум mydestination = $myhostname $mydomain.

Идем дальше:

alias_maps 5 и alias_database 6 – нужны для определения имен для локальной доставки писем. Я использую виртуальные почтовые ящики и локальная доставка мне в принципе не нужна, тем не менее на всякий случай параметры я оставил.

mynetworks 7 – отвечает за список доверенных сетей. Если ваш сервер работает в локальной сети, а в интернет ходит через NAT, для вас вполне разумно добавить в этот список адреса вашей локалки. Это будет полезно, если локальные клиенты используют ваш почтовый сервер для пересылки сообщений.

mailbox_size_limit 8 ограничивает максимальный размер файла почтового ящика. Если изменяете ограничение, то позаботьтесь о том, чтобы оно не было меньше значения message_size_limit. 0 – ограничения нет.

Следующая секция – TLS (настройки параметров TLS сервера SMTP):

smtpd_use_tls 9 – активируем использование TLS. Удивительно, но по умолчанию этот параметр имеет значение no.

smtpd_tls_cert_file 10 и smtpd_tls_key_file 11 – пути к файлам сертификата и его ключа соответственно.

smtpd_tls_auth_only 12 – не допускаем использование SASL без TLS. Этот параметр я также упоминал в статье Связка Postfix и Dovecot, но тут о нем напомнить не помешает.

smtpd_tls_security_level 13 – обозначает политику использования TLS (none – не требует; may – позволяет, но не требует; encrypt – требует. Публичным серверам не рекомендуется выставлять значение encrypt в соответствии с RFC 2487).

В процессе настройки TLS, вам придется сгенерировать сертификат. Вот команда, позволяющая это сделать:

Сразу позаботьтесь о безопасности, правильно настроив разрешения на файл с частным ключом сертификата:

Также хочу сказать пару слов об ограничениях (restrictions). Дело в том, что различных вариаций параметров в этой секции может быть огромное множество. Для начала вы можете оставить все как есть и ужесточать политики в том случае, если будет пролезать большое количество спама. Мне больше нравится такой вариант. Кому-то нравится подход с противоположной стороны – поставить жесткие политики и уже после анализа логов смотреть что можно упростить. Тут выбор за вами.

Описывать секцию restrictions дело очень хлопотное в виду разнообразия настроек, да и к тому же в документации все разжевано очень неплохо. Именно поэтому я позволю себе пропустить этот раздел.

Виртуальные почтовые ящики

Настройкой виртуальных пользователей я занимался в статье Виртуальные почтовые ящики Postfix и исходя из неё, в конфиг необходимо внести следующие строчки:

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

Виртуальные пользователи, домены, etc.

Дальше необходимо в конфиг добавить параметры, указывающие на mysql-карты с информацией о пользователях, алиасах и доменах. Про эти параметры я подробно рассказывал в статье Настройка связки Postfix PostfixAdmin, там же вы найдете и описание настройки PostfixAdmin.

Не забудьте, что уже на этом этапе идет некоторая связка с Dovecot (шифрование паролей в базе PostfixAdmin).

Dovecot-LDA + Dovecot-SASL

Postfix позволяет использовать Dovecot в качестве агента локальной доставки и об этом я также говорил в одной из своих статей (Связка Postfix и Dovecot). Сделать это можно с минимумом настроек, добавив в конфиг main.cf следующие строчки:

Не забудьте, что внести изменения нужно и в master.cf, это важный шаг:

Также Dovecot имеет собственную реализацию SASL (которую полностью поддерживает Postfix и о которой шла речь в Связка Postfix и Dovecot) и нет причин, по которой её не нужно использовать, поэтому смело добавляем в main.cf:

Напоминаю, что опцию smtpd_tls_auth_only = yes я добавил в конфиг выше в описании общих параметров, а если быть более конкретным, то в секции TLS.

Итоговый конфиг main.cf

Собственно, вот он, вот он конфиг моей мечты! Итак, как подведение итогов, выкладываю полное содержание main.cf ниже.

Не забудьте про изменения в master.cf, о них я говорил выше. На этом все.

Вывод

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

Хочу отметить, что во время настройки Postfix я руководствовался соображениями минимального объема параметров конфигурации для достижения поставленной цели. Другими словами, у меня в конфиге указаны лишь те параметры, без которых обойтись ну никак не получится.  Все остальное на ваше усмотрение – меняйте, экспериментируйте.

Яндекс.Метрика