Сначала прочитайте предыдущую часть
Эта статья является седьмой в серии "Настройка почтового сервера на Linux".
В предыдущей части мы рассматривали, как настроить аутентификацию пользователей с помощью Dovecot и PostgreSQL.
Если еще не проверяли, я рекомендую сначала прочитать данную статью.
👉 Предыдущая часть: Настройка auth-sql.conf.ext Dovecot и хэширование паролей
Структура конфигурационного файла Postfix
Postfix является SMTP-сервером, отвечающим за отправку почты, и использует различные конфигурационные файлы для настройки своей работы.
В этой статье мы объясним структуру конфигурационного файла Postfix и его основные задачи.
Основные конфигурационные файлы Postfix
Имя файла | Роль |
---|---|
/etc/postfix/main.cf | Основной конфигурационный файл Postfix (отправка почты, сетевые настройки и т.д.) |
/etc/postfix/master.cf | Управление сервисами Postfix (SMTP, LMTP, аутентификация SASL и т.д.) |
/etc/postfix/virtual | Сопоставление виртуальных пользователей (доменов) |
/etc/postfix/aliases | Управление псевдонимами почтовых адресов системных пользователей |
/etc/postfix/transport | Указание маршрута отправки почты для определенных доменов/адресов |
/etc/postfix/relay_domains | Настройки разрешенных доменов для реле |
/etc/postfix/sasl_passwd | Хранение информации для аутентификации SMTP релейного сервера |
/etc/postfix/sql/*.cf | Конфигурационные файлы для интеграции с базой данных (PostgreSQL) |
Основные настройки Postfix (main.cf
)
Рассмотрим основные настройки, определяющие работу Postfix.
Файл расположен по адресу /etc/postfix/main.cf
.
1️⃣ Основные настройки почтового сервера
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
myhostname
→ Имя хоста почтового сервераmydomain
→ Настройка основного доменаinet_interfaces
→ Настройка для приема почты на всех сетевых интерфейсахinet_protocols
→ Использовать только IPv4 (IPv6 можно отключить)
2️⃣ Ограничения на реле почты
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
permit_mynetworks
→ Разрешить реле с доверенных сетейpermit_sasl_authenticated
→ Разрешить реле только для аутентифицированных пользователей SASLdefer_unauth_destination
→ Заблокировать анонимное реле
3️⃣ Виртуальные пользователи и интеграция с базой данных
Чтобы Postfix использовал PostgreSQL для управления виртуальными доменами и почтовыми ящиками, необходимо добавить следующие настройки.
virtual_mailbox_domains = pgsql:/etc/postfix/sql/virtual_domains.cf
virtual_mailbox_maps = pgsql:/etc/postfix/sql/virtual_mailboxes.cf
virtual_alias_maps = pgsql:/etc/postfix/sql/virtual_aliases.cf
🔹 Пояснение
- virtual_mailbox_domains
→ Поиск возможных виртуальных доменов в базе данных
- virtual_mailbox_maps
→ Поиск информации о почтовых ящиках пользователей в базе данных
- virtual_alias_maps
→ Поиск псевдонимов электронной почты в базе данных
💡 Если используется MySQL
Вместоpgsql:
, используйтеmysql:
.💡 В условиях высокой нагрузки использование proxy:pgsql: может быть более эффективным.
Однако в обычной среде без proxy: также достаточно.
Настройка Postfix для использования базы данных
Для того чтобы Postfix использовал PostgreSQL, необходимо установить соответствующие пакеты.
sudo apt update
sudo apt install postfix postfix-pgsql
postfix
→ Основной почтовый сервер Postfixpostfix-pgsql
→ Пакет, позволяющий Postfix интегрироваться с PostgreSQL
После завершения установки необходимо создать конфигурационный файл для настройки Postfix на получение информации пользователей из PostgreSQL.
Настройки интеграции Postfix с базой данных (создание файлов virtual_*.cf
)
Postfix использует файлы virtual_domains.cf
, virtual_mailboxes.cf
, virtual_aliases.cf
для поиска информации в базе данных.
Эти файлы необходимо создать вручную, следуя представленным ниже рекомендациям.
1️⃣ /etc/postfix/sql/virtual_domains.cf
(Настройки поиска доменов)
user = mailadmin
password = yourpassword
dbname = mail
hosts = 127.0.0.1
query = SELECT domain_name FROM mail_domain WHERE domain_name='%s' AND active=true
Пояснение
user
→ Учетная запись пользователя PostgreSQL (убедитесь, что учетная запись существует в БД, чтобы Postfix мог к ней обращаться.)
password
→ Пароль учетной записи PostgreSQL (пароль для пользователя mailadmin
)
dbname
→ Название базы данных
hosts
→ Адрес сервера базы данных (локальный сервер)
query
→ Поиск возможных доменов в таблице mail_domain
2️⃣ /etc/postfix/sql/virtual_mailboxes.cf
(Настройки поиска почтовых ящиков)
user = mailadmin
password = yourpassword
dbname = mail
hosts = 127.0.0.1
query = SELECT home_directory FROM mail_users WHERE email='%s'
Пояснение
query
→ Поиск пути для хранения почты пользователя (возвращает поле home_directory
из таблицы mail_users
)
Postfix возвращает путь, чтобы сохранить почту пользователя в правильной директории
3️⃣ /etc/postfix/sql/virtual_aliases.cf
(Настройки поиска псевдонимов электронной почты)
user = mailadmin
password = yourpassword
dbname = mail
hosts = 127.0.0.1
query = SELECT destination_email FROM mail_alias WHERE source_email='%s'
Пояснение
query
→ Если есть псевдоним, поиск реального адреса электронной почты, на который будет передано сообщение
Ищет электронные адреса, на которые зарегистрирован псевдоним, ссылаясь на таблицу mail_alias
Настройки безопасности
Эти конфигурационные файлы содержат пароли, поэтому они должны быть защищены.
sudo chmod 640 /etc/postfix/sql/virtual_*.cf
sudo chown root:postfix /etc/postfix/sql/virtual_*.cf
🔒 Меры предосторожности:
Поскольку настройки содержат пароли, необходимо ограничить доступ, чтобы другие пользователи не могли их прочитать. Установите chmod 640, чтобы только процессы Postfix (группа postfix) могли иметь доступ.
Перезагрузка настроек Postfix
После завершения настроек необходимо перезагрузить Postfix для применения изменений.
sudo systemctl restart postfix
Итоги и следующие шаги
✅ Объяснены структура конфигурационного файла Postfix и его роли
✅ Добавлены основные настройки в main.cf
Postfix
✅ Настроены файлы virtual_*.cf
для интеграции Postfix с PostgreSQL
В следующей части мы собираемся рассмотреть, как настроить аутентификацию SMTP, интегрируя Postfix с Dovecot.
Таким образом, мы планируем полностью настроить почтовый сервер для отправки и получения почты.
👉 Следующая часть: Интеграция Postfix с Dovecot и аутентификация SMTP (Скоро!)
댓글이 없습니다.