Почтовый сервер Postfix#
Postfix — это высокопроизводительный и масштабируемый почтовый сервер, реализующий функции Mail Transfer Agent (MTA). Предназначен для надежной доставки электронной почты в соответствии с протоколом SMTP (Simple Mail Transfer Protocol).
Функциональные особенности Postfix:
Прием входящей почты – обеспечивает прием входящей почты через протокол SMTP от внешних серверов.
Отправка исходящей почты – позволяет отправлять исходящую почту на другие почтовые серверы по протоколу SMTP.
Маршрутизация почты — выполняет маршрутизацию почты, определяя, куда доставлять сообщения (локально или на удаленные серверы).
Возможность локальной доставки почты – поддерживает локальную доставку почты пользователям на самом сервере через агенты доставки, такие как Dovecot или
local.Выстраивание очереди сообщений – организует выстраивание очереди сообщений для временного хранения и последующей обработки при недоступности получателя.
Поддержка виртуальных доменов – поддерживает работу с виртуальными доменами, позволяя обслуживать множество доменов на одном сервере с разными почтовыми ящиками.
Логирование операций – ведет подробное логирование всех операций, упрощает диагностику, мониторинг и анализ работы почтовой системы.
Плагин postfix-ldap – модуль расширения для почтового сервера Postfix, позволяющий интегрировать его с LDAP-каталогами для централизованного управления информацией о пользователях, доменах, псевдонимах и маршрутизации почты.
С помощью плагина postfix-ldap Postfix выполняет запросы к LDAP-серверу для:
проверки существования почтовых ящиков;
разрешения псевдонимов;
определения виртуальных доменов;
поиска местоположения доставки почты;
фильтрации отправителей/получателей на основе данных из каталога.
Файлы конфигурации Postfix#
По умолчанию файлы конфигурации находятся в каталоге /etc/postfix.
Основные файлы конфигурации:
/etc/postfix/main.cf– содержит глобальную конфигурацию Postfix./etc/postfix/master.cf– определяет взаимодействие Postfix с различными процессами для доставки почты.
Дополнительные часто используемые файлы:
/etc/postfix/access— задает правила доступа, например, хосты, которым разрешено подключаться к Postfix./etc/postfix/transport— сопоставляет адреса электронной почты с серверами ретрансляции./etc/aliases— содержит настраиваемый список, требуемый почтовым протоколом, описывающий псевдонимы идентификаторов пользователей.
Примечание
Файлы /etc/postfix/main.cf и /etc/postfix/master.cf должны принадлежать и быть доступными для записи только пользователю с административными полномочиями. Предоставление прав на запись означает предоставление пользователю административных полномочий.
Управление конфигурацией Postfix#
Для настройки параметров конфигурации используется утилита postconf.
Для просмотра полной текущей конфигурации почтового сервера Postfix введите:
postconf
Чтобы добавить или обновить параметр в файле /etc/postfix/main.cf, используйте:
postconf <parameter>=<value>
Где:
<parameter>- параметр, который нужно добавить или обновить;<value>- значение параметра.
Для проверки корректности конфигурации Postfix введите:
postfix check
Пример вывода команды:
postfix: /etc/postfix/main.cf: undefined parameter: relay_hoost
В данном примере отображается опечатка в параметре relayhost.
Команда postfix check выполняет базовую проверку синтаксиса и согласованности конфигурационных файлов:
Проверяет наличие и доступность ключевых файлов.
Контролирует правильность путей в
/etc/postfix/main.cf.Обнаруживает типичные ошибки, например:
несуществующие каталоги;
ошибки в параметрах;
отсутствующие сервисы в
/etc/postfix/master.cf.
После внесения изменений в файлы /etc/postfix/main.cf и /etc/postfix/master.cf выполните команду postfix reload, чтобы обновить работающую почтовую систему и применить настройки.
Синтаксис файла конфигурации /etc/postfix/main.cf#
Параметры конфигурации Postfix напоминают переменные оболочки, с несколькими важными отличиями:
Postfix не читает кавычки. Параметры задаются в формате:
<parameter> = <value>Где:
<parameter>- параметр;<value>- значение.
Для использования значения параметра в других параметрах, поместите символ
$перед его названием:<parameter_2> = $<parameter>$<parameter>можно использовать до того, как ему присвоено значение.Язык конфигурации Postfix использует отложенную оценку и не обращается к значению параметра до тех пор, пока оно не понадобится во время выполнения.
Postfix использует файлы баз данных для управления доступом, перезаписи адресов и других целей. Пример использования базы данных в Postfix:
virtual_alias_maps = hash:/etc/postfix/virtual
Настройки Postfix#
В данном разделе описаны основные конфигурационные файлы, ключевые параметры, рекомендации по настройке почтового сервера Postfix.
Доменное имя исходящей почты#
Параметр myorigin файла /etc/postfix/main.cf определяет домен, который будет указан в письмах. По умолчанию используется локальное имя: $myhostname. Для согласованности между адресами отправителя и получателя myorigin также определяет доменное имя, которое будет добавлено к неполным адресам получателей (без указания домена).
Например:
myorigin = $myhostname
myorigin = $mydomain
Где:
$myhostname- отправка почты от имениuser@$myhostname. Значение по умолчанию.$mydomain- имя доменаuser@$mydomain. Рекомендуется.
Домены для получения почты#
Параметр mydestination определяет, для каких доменов машина будет доставлять почту локально.
Можно не указывать или указать несколько доменных имен, паттернов /файл/имя и таблиц поиска тип:таблица (например, hash:, btree:, ldap:, mysql:), разделяя их пробелами и/или запятыми. Паттерны /файл/имя заменяются содержимым указанного файла. тип:таблица означает выполнение поиска в таблице с проверкой только факта существования записи. Результат поиска при этом игнорируется.
Важно
Если машина является почтовым сервером для всего домена, включите $mydomain в список.
Ниже представлены примеры настроек доменов для получения почты:
Для настройки по умолчанию введите в файл
/etc/postfix/main.cfследующие значения параметраmydestination:mydestination = $myhostname localhost.$mydomain localhostДля настройки почтового сервера для всего домена в файле
/etc/postfix/main.cfиспользуйте:mydestination = $myhostname localhost.$mydomain localhost $mydomain
Важно
Чтобы избежать «закольцовывания» при доставке почты, перечислите все имена хостов машины, включая $myhostname и localhost.$mydomain.
Пересылка почты от клиентов#
По умолчанию Postfix пересылает почту от клиентов из авторизованных сетевых блоков на любые адреса. Авторизованные сети определяются параметром mynetworks. Значение по умолчанию разрешает только локальную машину.
Можно указать доверенные сети в файле /etc/postfix/main.cf или позволить Postfix определить их самостоятельно. По умолчанию Postfix делает это автоматически. Результат зависит от значения параметра mynetworks_style.
Возможные значения mynetworks представлены в таблице ниже.
Значение |
Описание |
|---|---|
|
Пересылать почту только от локальной машины |
|
Пересылать почту от SMTP-клиентов в тех же IP-подсетях, что и локальная машина |
|
Пересылать почту от клиентов в тех же IP-сетях класса A/B/C, что и локальная машина |
В качестве альтернативы можно задать список mynetworks вручную, в этом случае Postfix игнорирует параметр mynetworks_style.
Чтобы задать список доверенных сетей вручную, перечислите их в mynetworks:
mynetworks = <network_1>/<mask_1>, <network_2>/<mask_2>
Где:
<network>- сеть;<mask>- маска сети.
Адреса для пересылки почты#
По умолчанию Postfix пересылает почту от «чужих» клиентов (клиентов вне авторизованных сетей) только на разрешенные удаленные домены. Разрешенные удаленные домены определяются параметром relay_domains. По умолчанию разрешаются все домены (и поддомены), которые указаны в параметре mydestination.
Возможные значения relay_domains представлены в таблице ниже.
Значение |
Описание |
|---|---|
|
Пересылать почту на все домены (и поддомены) |
|
Никогда не пересылать почту от клиентов вне авторизованной сети |
|
Пересылать почту на домен |
Сообщение о проблемах#
Настройте псевдоним postmaster в файле /etc/aliases для отправки сообщений об ошибках. Система Postfix сообщит о проблемах на адрес, указанный в postmaster.
Важно
После внесения изменений в файл /etc/aliases выполните команду newaliases, чтобы обновить работающую почтовую систему и применить корректировки.
По умолчанию отправляются сообщения только о серьезных проблемах (ресурсных, программных). Пример настройки файла /etc/postfix/main.cf по умолчанию:
notify_classes = resource, software
Где notify_classes - типы уведомлений об ошибках.
Возможные значения notify_classes представлены в таблице ниже.
Значение |
Описание |
|---|---|
|
Уведомить администратора о недоставленной почте. Отправить администратору копию недоставленного письма. Отправить расшифровку SMTP-сессии, если Postfix отклонил письмо |
|
Отправить администратору недоставленное письмо, если Postfix не может вернуть его отправителю |
|
Уведомить администратора о задержанной почте. Администратор получает только заголовок письма |
|
Уведомить администратора о запросах клиентов, отклоненных из-за политик (UCE) |
|
Уведомить администратора об ошибках протокола (со стороны клиента или сервера) или попытках выполнить несуществующие команды |
|
Уведомить администратора о почте, недоставленной из-за нехватки ресурсов (например, ошибки записи в файл очереди) |
|
Уведомить администратора о почте, недоставленной из-за программных ошибок |
Внешние сетевые адреса прокси/NAT#
При запуске Postfix через прокси или NAT, настройте параметр proxy_interfaces и укажите все внешние адреса, на которые Postfix принимает почту. Можно указывать символические имена хостов вместо сетевых адресов.
Логирование Postfix#
Postfix поддерживает собственную систему ведения журнала с помощью postlogd.
Настройка логирования в файл#
Для настройки Postfix на запись логов добавьте строку в файл /etc/postfix/master.cf, если она отсутствует.
postlog unix-dgram n - n - 1 postlogd
Важно
В начале строки не должно быть пробелов.
Внесите изменения в файл /var/log/postfix.log.
Чтобы изменить настройки логирования, выполните следующие шаги.
Остановите работающий почтовый сервер Postfix, выполнив команду:
postfix stopИзмените настройки логирования, используя:
postconf maillog_file=/var/log/postfix.log postconf maillog_file_permissions=0644Параметр
maillog_file_permissionsуказывается опционально для Postfix версии 3.9 и выше. Значение по умолчанию —0600, доступ к файлу имеет только пользователь с административными полномочиями. Значение0644дополнительно разрешает чтение группе и другим пользователям.Запустите Postfix:
postfix start
По умолчанию имя лог-файла должно начинаться с /var или /dev/stdout. Список разрешенных префиксов задается параметром maillog_file_prefixes. Данный механизм безопасности ограничивает последствия ошибки в конфигурации.
Настройка логирования в stdout#
Для настройки Postfix на запись логов в stdout выполните следующий сценарий.
Добавьте строку в файл
/etc/postfix/master.cf, если она отсутствует:postlog unix-dgram n - n - 1 postlogdОстановите работающий почтовый сервер Postfix, выполнив команду:
postfix stopНастройте
/etc/postfix/main.cf, добавив строку:maillog_file = /dev/stdoutЗапустите Postfix:
postfix start-fg
Ротация логов#
Команда postfix logrotate запускается вручную или через cron для регистрации ошибок и вывода сообщения об ошибках в stderr.
postfix logrotate выполняет следующие шаги:
Переименовывает текущий лог-файл, добавляя суффикс с датой и временем. Формат суффикса задается параметром
maillog_file_rotate_suffix(по умолчанию –%Y%m%d-%H%M%S).Перезагружает Postfix, чтобы
postlogdзакрыл старый лог-файл.После небольшой паузы сжимает старый лог-файл. Программа сжатия задается параметром
maillog_file_compressor(по умолчанию –gzip).При следующей записи события
postlogсоздаст новый лог-файл с правами доступа, указанными в параметреmaillog_file_permissions(по умолчанию:0600).
Примечание
Команда не выполняет ротацию логов, путь к которым находится в каталоге /dev и не удаляет старые лог-файлы.
Важно
Если Postfix остановлен, программы без режима демона (postfix, postsuper, postmulti и postlog) будут записывать ошибки напрямую в maillog_file. Иные программы ведут логи через postlogd.
Настройка параметров TLS для сервера Postfix#
Чтобы зашифровать почтовый трафик и повысить его безопасность, настройте Postfix на использование сертификата от доверенного центра сертификации (CA), а также настройте параметры безопасности TLS.
Для настройки параметров TLS:
Скопируйте следующие файлы на сервер Postfix:
Сертификат сервера:
/etc/pki/tls/certs/postfix.pem.Закрытый ключ:
/etc/pki/tls/private/postfix.key.
Укажите путь к файлам сертификата и закрытого ключа на сервере, добавив следующие строки в файл
/etc/postfix/main.cf:smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem smtpd_tls_key_file = /etc/pki/tls/private/postfix.keyОграничьте входящие SMTP-подключения только аутентифицированными пользователями в файле
/etc/postfix/main.cf:smtpd_tls_auth_only = yesПерезагрузите службу, чтобы применить изменения:
systemctl reload postfix
Поддержка LDAP в Postfix#
Postfix может использовать каталог Lightweight Directory Access Protocol (LDAP) в качестве источника данных для своих запросов. Это позволяет хранить информацию о почтовой службе в реплицируемой сетевой базе данных с детальными настройками доступа. Используйте несколько почтовых серверов без необходимости копирования их на каждый сервер.
Примечание
На системе должны быть установлены библиотеки LDAP и Make-файлы, используемые при установке Postfix.
Чтобы собрать библиотеки OpenLDAP для использования с Postfix, выполните следующую команду:
% ./configure --without-kerberos --without-cyrus-sasl --without-tls
--without-threads --disable-slapd --disable-slurpd
--disable-debug --disable-shared
Postfix с поддержкой LDAP может использоваться для реализации групповых рассылок, позволяя:
разрешать групповые адреса в списки email-адресов участников;
получать информацию о пользователях из LDAP;
интегрироваться с системами рассылки и фильтрации при дополнительной настройке.
Использование каталога LDAP в качестве таблицы поиска#
Используя сервер LDAP для хранения учетных записей, доменов или псевдонимов, настройте Postfix на использование сервера LDAP в качестве таблицы поиска. Использование LDAP вместо файлов позволяет иметь централизованную базу данных.
Важно
Перед настройкой убедитесь, что на сервере Postfix установлен плагин postfix-ldap.
Для использования каталога LDAP в качестве таблицы поиска:
Настройте параметры поиска в LDAP, создав файл
/etc/postfix/ldap-aliases.cf, в котором:Укажите имя хоста сервера LDAP:
server_host = ldap.example.ruГде
ldap.example.ru- имя хоста сервера.Укажите базовое доменное имя для поиска в LDAP:
search_base = dc=example,dc=ru
Включите источник LDAP как таблицу поиска в файле
/etc/postfix/main.cf, добавив:virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cfПерезагрузите службу, чтобы применить изменения:
systemctl reload postfix
Настройка Postfix в качестве исходящего почтового сервера для пересылки писем от авторизованных пользователей#
В данном сценарии пользователи проходят аутентификацию и используют свой адрес электронной почты для отправки писем через SMTP-сервер, настроив Postfix как исходящий почтовый сервер с поддержкой SMTP-аутентификации, шифрования TLS и ограничений по адресу отправителя.
Чтобы настроить Postfix в качестве исходящего почтового сервера:
Отредактируйте файл
/etc/postfix/main.cf, добавив следующие строки:Включите аутентификацию SMTP:
smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yesЗапретите подключения без TLS:
smtpd_tls_auth_only = yesРазрешите пересылку почты только авторизованным пользователям:
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
Перезагрузите службу, чтобы применить изменения:
systemctl reload postfix
Настройка Postfix для использования SASL#
Postfix поддерживает аутентификацию по протоколу SMTP на основе Simple Authentication and Security Layer (SASL) (SMTP AUTH), в том числе реализацию Dovecot SASL.
SMTP-сервер Postfix может взаимодействовать с реализацией Dovecot SASL, используя либо UNIX-сокет, либо TCP-сокет. Используйте этот метод, если приложения Postfix и Dovecot запущены на разных машинах.
Настройте Dovecot:
1.1. Добавьте следующие строки в файл
/etc/dovecot/conf.d/10-master.conf:service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } }Данный пример предполагает стандартные настройки SMTP-сервера Postfix, включая расположение почтовой очереди в каталоге
/var/spool/postfix/и запуск приложения от пользователя и группыpostfix.1.2. (Опционально) Настройте Dovecot на прослушивание запросов аутентификации от Postfix через TCP:
service auth { inet_listener { port = <port_number> } }Где
<port_number>- номер порта.1.3. Укажите метод, который почтовой клиент будет использовать для аутентификации в Dovecot. Отредактируйте параметр
auth_mechanismsв файле/etc/dovecot/conf.d/10-auth.conf:auth_mechanisms = plain loginНастройте Postfix, изменив файл
/etc/postfix/main.cf. Для этого выполните следующие шаги:2.1. Включите аутентификацию SMTP на SMTP-сервере Postfix:
smtpd_sasl_auth_enable = yes2.2. Укажите использование реализации Dovecot SASL для аутентификации SMTP:
smtpd_sasl_type = dovecot2.3. Укажите путь к службе аутентификации относительно каталога очереди Postfix:
smtpd_sasl_path = private/authЭтот шаг использует UNIX-доменные сокеты для взаимодействия между Postfix и Dovecot.
Чтобы настроить Postfix на использование Dovecot, расположенного на другой машине (если используется TCP-соединение), укажите конфигурационные параметры следующего вида:
smtpd_sasl_path = inet: <IP_address> : <port_number>Где:
<IP_address>- IP-адрес машины с Dovecot;<port_number>- номер порта, указанный в файле/etc/dovecot/conf.d/10-master.conf.
2.4. Укажите механизмы SASL, которые SMTP-сервер Postfix предоставляет клиентам:
smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymousДанные директивы означают, что в незашифрованных сессиях запрещена анонимная аутентификация и использование методов, передающих логины и пароли в открытом виде. Для зашифрованных сессий разрешены только неанонимные методы аутентификации.
Доставка почты из Postfix в Dovecot на одном хосте#
Настройте Postfix на доставку входящей почты в Dovecot, запущенный на том же хосте, с использованием протокола LMTP через UNIX-сокет. Данный сокет обеспечивает прямое взаимодействие между Postfix и Dovecot на локальной машине.
Настройте Postfix на использование протокола LMTP и UNIX-доменного сокета для доставки почты в Dovecot в файле
/etc/postfix/main.cf:Если необходимо использовать виртуальные почтовые ящики, добавьте следующую строку:
virtual_transport = lmtp:unix:/var/run/dovecot/lmtpЕсли требуются обычные (не виртуальные) почтовые ящики, добавьте следующую строку:
mailbox_transport = lmtp:unix:/var/run/dovecot/lmtp
Перезагрузите службу, чтобы применить изменения:
systemctl reload postfix
Доставка почты из Postfix в Dovecot на другом хосте#
Установите безопасное соединение между почтовым сервером Postfix и сервером доставки Dovecot по сети. Для этого настройте службу LMTP на использование сетевого сокета для передачи почты между серверами. По умолчанию протокол LMTP не шифруется. Однако если настроить шифрование TLS, Dovecot автоматически применяет те же параметры для службы LMTP. После этого SMTP-серверы могут подключаться к ней с использованием команды STARTTLS через LMTP.
Настройте Postfix на использование протокола LMTP и сетевого (INET) сокета для доставки почты в Dovecot в файле
/etc/postfix/main.cf, добавив следующую строку:mailbox_transport = lmtp:inet:<dovecot_host>:<port>Где:
<dovecot_host>- IP-адрес или имя хоста сервера Dovecot;<port>- номер порта службы LMTP.
Перезагрузите службу, чтобы применить изменения:
systemctl reload postfix
Архитектура Postfix#
Данный раздел описывает внутреннюю структуру и основные принципы построения почтового сервера Postfix, включая ключевые компоненты системы и их взаимодействие.
Получение почты Postfix#
Диаграмма. Получение почты Postfix
Когда сообщение поступает в почтовую систему Postfix, его первым пунктом назначения становится очередь входящих сообщений (incoming queue, «входящая очередь»). Почта из сети поступает через серверы smtpd или qmqpd. Данные серверы удаляют протокольную обертку SMTP или QMQP, выполняют базовые проверки для защиты Postfix и передают отправителя, получателей и содержимое письма серверу cleanup.
Локальные письма принимаются с помощью совместимой команды sendmail и помещаются в очередь maildrop привилегированной командой postdrop. Такая схема работает даже если почтовая система Postfix не запущена. Локальный сервер pickup забирает письма из локальной очереди, выполняет базовые проверки для защиты и передает отправителя, получателей и содержимое письма серверу cleanup. Почта из внутренних источников передается напрямую серверу cleanup. Сервер cleanup выполняет последнюю стадию обработки перед помещением письма в очередь.
Сервер trivial-rewrite переписывает адреса в стандартный формат user@fully.qualified.domain.
Доставка почты Postfix#
Диаграмма. Доставка почты Postfix
После того как письмо попадает во входящую очередь, начинается процесс его доставки. Диспетчер очередей, сервер qmgr, — центральный элемент доставки почты в Postfix. Он взаимодействует с агентами доставки smtp, lmtp, local, virtual, pipe, discard или error. Он отправляет им запросы на доставку для одного или нескольких адресов получателей. Агенты discard и error — специальные: они либо отбрасывают, либо возвращают все письма и не показаны на схеме.
Диспетчер очередей поддерживает ограниченную активную очередь (active queue) с письмами, которые он открыл для доставки. Активная очередь действует как ограниченное окно на потенциально большие входящие или отложенные очереди. Это предотвращает исчерпание памяти диспетчером очередей при высокой нагрузке. Также ведет отдельную очередь deferred для писем, которые временно не могут быть доставлены, чтобы большой объем отложенной почты не замедлял обычную работу очередей.
Сервер trivial-rewrite определяет, к какому классу (локальному или удаленному) относится каждый адрес получателя.
Клиент smtp ищет список SMTP-серверов для получателей в запросе на доставку, сортирует его по приоритету и последовательно пытается подключиться к каждому серверу, пока не доставит или не получит ответ от всех получателей. Он инкапсулирует данные с отправителем, получателями и содержимым письма согласно протоколу SMTP, включая преобразование тела сообщения из 8-битного MIME в 7-битное кодирование, но не включая кодирование заголовков по RFC 2047.
Клиент lmtp использует протокол, аналогичный SMTP, который оптимизирован для доставки на серверы почтовых ящиков. Преимущество такой настройки в том, что один сервер Postfix может обслуживать несколько серверов ящиков по LMTP, и наоборот — один сервер ящиков может принимать почту по LMTP от нескольких серверов Postfix.
Агент доставки local поддерживает почтовые ящики в стиле UNIX, файлы maildir, совместимые с qmail, базы данных общесистемных псевдонимов в стиле Sendmail и файлы пересылки для каждого пользователя .forward в стиле Sendmail. Несколько локальных агентов доставки могут запускаться параллельно, но параллельная доставка одному и тому же пользователю обычно ограничена.
Агент доставки virtual — это упрощенный агент, доставляющий только в почтовые ящики в стиле UNIX или в файлы maildir, совместимые с qmail. Данный агент может доставлять почту для нескольких доменов. Это делает его удобным для хостинга множества маленьких доменов на одном сервере.
Модуль pipe — это интерфейс для отправки почты в другие почтовые системы (входной интерфейс — команда sendmail). Интерфейс совместим с UNIX: pipe передает информацию дочернему процессу через командную строку, переменные окружения и стандартный поток ввода, и ожидает код завершения, определенный в <sysexits.h>.
Внутренние процессы Postfix#
Сервер master следит за работоспособностью всей почтовой системы Postfix. Обычно запускается при загрузке системы командой postfix start и работает до ее выключения. master отвечает за запуск серверных процессов для приема и доставки почты, а также за перезапуск процессов, завершившихся аварийно. Он также контролирует ограничения на количество запущенных процессов, заданные в файле конфигурации /etc/postfix/master.cf.cf.
Диаграмма. Иерархия процессов при запуске Postfix
Сервер anvil реализует ограничение на количество подключений и запросов от клиентов для всех серверов smtpd.
Службы bounce, defer и trace ведут собственное дерево каталогов очередей с файлами журнала на каждое письмо. Postfix использует эту информацию для отправки уведомлений отправителю о статусе доставки: failed («не доставлено»), delayed («задержано») или success («доставлено»).
Серверы flush ведут журналы по каждому получателю. Это позволяет вернуть выбранные файлы из очереди deferred обратно в incoming и запросить их доставку.
Серверы proxymap предоставляют Postfix-процессам сервис поиска по таблицам (как для чтения, так и для записи). Это позволяет обойти ограничения chroot, уменьшить количество открытых таблиц за счет их совместного использования несколькими процессами и реализовать таблицы с одним обновляющим процессом.
Сервер scache управляет кешем соединений для клиента smtp. Клиент smtp может повторно использовать TLS-зашифрованное соединение (при включенной опции smtp_tls_connection_reuse = yes).
Диаграмма. Управление кешем соединений для клиента
Диаграмма. Повторное использование соединения, зашифрованного по протоколу TLS
Серверы showq отображают состояние очереди Postfix. Эта служба выполняет работу для команд mailq и postqueue.
Диаграмма. Очередь Postfix
Серверы spawn по запросу запускают внешние команды, подключая клиент через сокет или FIFO к стандартным потокам ввода, вывода и ошибок команды.
Сервер tlsmgr запускается при включении TLS (Transport Layer Security, ранее SSL) в клиенте smtp или сервере smtpd. У него две основные задачи:
Поддержка генератора псевдослучайных чисел (PRNG), используемого для инициализации TLS-движков в процессах
smtpилиsmtpd. Состояние PRNG периодически сохраняется в файл и считывается при запускеtlsmgr.Управление кешами сессионных ключей TLS для клиента
smtpили сервераsmtpd.
Сервер verify проверяет, можно ли осуществить доставку по адресу отправителя или получателя, до того как smtpd примет письмо. verify проверяет кеш с результатами проверки адресов. Если результат не найден, сервер помещает «пробное» письмо в очередь Postfix и обрабатывает статус от агента доставки или диспетчера очередей.
Сервер postscreen может быть размещен «перед» процессами smtpd. Его задача — принимать сетевые подключения и определять, каким SMTP-клиентам разрешено взаимодействовать с Postfix.
Установка Postfix#
Чтобы установить Postfix, используйте встроенный в ОС менеджер пакетов dnf:
dnf install postfix
Запуск Postfix#
Чтобы запустить Postfix, выполните команду:
systemctl start postfix
Для проверки статуса Postfix используйте один из следующих вариантов:
проверка статуса с помощью
systemctl:systemctl status postfixпроверка статуса альтернативным способом:
postfix status
Для активации автозапуска Postfix при загрузке ОС выполните следующую команду:
systemctl enable postfix
Для проверки версии введите:
postconf mail_version
Управление Postfix#
Список основных служебных команд, используемых для управления Postfix, представлен в таблице ниже.
Команда |
Описание |
|---|---|
|
Управляет работой почтовой системы: запуск, остановка, перезапуск, администрирование. Доступна пользователю с административными полномочиями |
|
Управляет базами данных псевдонимов Postfix |
|
Отображает содержимое файлов очереди Postfix |
|
Показывает или изменяет параметры |
|
Размещает почту в каталоге |
|
Предоставляет доступ к внутренним каналам связи Postfix |
|
Обеспечивает блокировку почтовых ящиков в Postfix для использования в скриптах |
|
Предоставляет логирование в стиле Postfix |
|
Управляет таблицами поиска Postfix (например, |
|
Позволяет создавать, удалять и управлять (запуск, остановка) несколькими экземплярами Postfix |
|
Позволяет просматривать или очищать очереди |
|
Управляет очередью Postfix: удаляет старые временные файлы, перемещает файлы очереди при изменении глубины хеширования |