Версия: 3.9.0
Postfix — это почтовый сервер (MTA, Mail Transfer Agent), который используется для отправки, получения и маршрутизации электронной почты в сети с использованием протокола SMTP (Simple Mail Transfer Protocol). Он часто применяется на серверах Linux для обработки почтовых сообщений.
Контактная информация:
Официальный сайт
Лицензия:
EPL-2.0 или IPL-1.0 BSD-4-Clause-UC
Базовая конфигурация Postfix.
Файлы конфигурации расположены:/etc/postfix
Значения по умолчанию указаны в файлеmain.cf.default
Файлы:
После изменения конфигурации необходимо выполнить команду:
sudo systemctl reload postfix
Работа с командой возможна только с правами root.
Синтаксис:
sudo postfix [-Dv] [-c config_dir] command
Команды:
Команда | Описание |
---|---|
check | Предупреждает о некорректых правах на файлы и каталоги, а также создаёт недостающие каталоги. |
start | Запускает почтовую систему Postfix. При этом также выполняется проверка конфигурации, описанная выше. |
start-fg | Работает аналогично start, но оставляет демон master(8) запущенным в переднем плане и включает режим "init" при запуске с PID 1. Эта команда требует отключённой поддержки нескольких экземпляров (параметр multi_instance_directories должен быть пустым). При запуске Postfix внутри контейнера см. MAILLOG_README для настройки логирования в stdout. По умолчанию Postfix ведёт логи через syslog, что требует: - Запустить syslogd внутри контейнера, или - Смонтировать сокет /dev/log хост-системы в контейнер (пример: "docker run -v /dev/log:/dev/log ...") - Указать уникальный префикс syslog_name для отличения логов конкретного экземпляра Postfix. |
stop | Корректно останавливает почтовую систему Postfix. По возможности, запущенные процессы завершаются при первой удобной возможности. |
abort | Немедленно завершает работу Postfix. Все запущенные процессы получают сигнал на немедленное завершение. Важно: Чтобы обновить конфигурацию Postfix, не используйте start и stop последовательно. Вместо этого используйте команду reload. |
flush | Принудительная доставка: попытка доставить все сообщения из отложенной очереди. Обычно повторные попытки доставки выполняются через регулярные интервалы, удваиваясь после каждой неудачной попытки. Внимание: слишком частая попытка доставки недоставляемых писем может ухудшить общую производительность доставки. |
reload | Перезагрузка конфигурационных файлов. Запущенные процессы завершаются при первой удобной возможности. |
status | Проверка состояния почтовой системы Postfix. Код завершения 0 — система работает, ненулевой код — система остановлена. |
set-permissions [name=value ...] | Устанавливает владельца и права доступа для файлов и каталогов Postfix, как указано в файле postfix-files. Можно передавать параметры в формате name=value, чтобы переопределить и обновить конкретные настройки в main.cf. Например, это может понадобиться для изменения mail_owner или setgid_group в уже установленном Postfix. Эта функция доступна, начиная с Postfix 2.1. В версиях 2.0 и ранее используйте: "$config_directory/post-install set-permissions". |
logrotate | Архивирует файл журнала, указанный в $maillog_file, добавляя к нему временной суффикс в формате $maillog_file_rotate_suffix и сжимая файл с помощью команды, указанной в $maillog_file_compressor. Это не применяется к файлам, находящимся в /dev/*. Данная функция доступна, начиная с Postfix 3.4. |
tls subcommand | Включает оппортунистический TLS в SMTP-клиенте или сервере Postfix, а также управляет закрытыми ключами и сертификатами TLS на SMTP-сервере Postfix. |
upgrade-configuration [name=value ...] | Обновляет файлы main.cf и master.cf, добавляя или изменяя службы, а также обновляя настройки конфигурации, необходимые для работы Postfix. Можно передавать параметры в формате name=value, чтобы переопределить и обновить конкретные настройки в main.cf. |
Доступные параметры:
Команда | Описание |
---|---|
-c config_dir | Использует указанный каталог вместо стандартного каталога конфигурации для чтения файлов main.cf и master.cf. Это позволяет управлять несколькими экземплярами Postfix на одном сервере. |
-D (только с postfix start) | Запускает каждый демон Postfix под управлением отладчика, указанного в параметре конфигурации debugger_command. |
-v | Включает подробный режим ведения журнала для целей отладки. Повторное указание -v увеличивает детализацию вывода. |
Необходимо выполнить команду
newaliases
хотя бы один раз, чтобы Postfix начал работать, даже если не было настроено никаких псевдонимов (aliases).
Для работы Postfix следует добавить сервис "postfix.service"
в автозапуск и запустить его:
Алиасы указываются в файле:
/etc/postfix/aliases
.
Все письма, адресованные пользователю root, следует перенаправлять на другой аккаунт, поскольку читать почту под root не рекомендуется.
Следует раскомментировать следующую строку и заменить you на реальный аккаунт.
#root: you
root: superadmin
После того как редактирование файла /etc/postfix/aliases
завершено, необходимо выполнить команду postalias:
sudo postalias /etc/postfix/aliases
Для последующих изменений можно использовать команду:
sudo newaliases
Для проверки правильно ли была заполнена конфигурация следует открыть терминал и ввести:
sudo postfix check
Чтобы отправлять почту только локальным пользователям системы (из /etc/passwd), необходимо обновить файл конфигурации /etc/postfix/main.cf
, внеся следующие изменения.
Нужно раскомментировать, изменить или добавить следующие строки:
myhostname = localhost
mydomain = localdomain
mydestination = $myhostname, localhost.$mydomain, localhost
inet_interfaces = $myhostname, localhost
mynetworks_style = host
default_transport = error: outside mail is not deliverable
Остальные настройки можно оставить без изменений. После настройки конфигурационного файла рекомендуется настроить #Алиасы и затем #Запустить Postfix.
По умолчанию Postfix/sendmail не будет отправлять электронные письма в зашифрованном виде на другие SMTP-серверы. Чтобы использовать TLS, если он доступен, следует добавить следующую строку в файл /etc/postfix/main.cf
:
smtp_tls_security_level = may
Чтобы принудительно использовать TLS (и завершать соединение с ошибкой, если удалённый сервер не поддерживает TLS), следует заменить may
на encrypt
. Однако стоит отметить, что это нарушает RFC:2487, если SMTP сервер публично доступен.
Внимание! Если используется TLS, обязательно необходимо следовать рекомендациям с сайта weakdh.org, чтобы избежать уязвимостей FREAK/Logjam. С середины 2015 года настройки по умолчанию безопасны от POODLE.
По умолчанию Postfix не принимает защищённые письма.
Необходимо получить сертификат. Укажите Postfix путь к вашим TLS-сертификатам, добавив следующие строки в файл /etc/postfix/main.cf
:
smtpd_tls_security_level = may
smtpd_use_tls = yes
smtpd_tls_cert_file = /path/to/cert.pem
smtpd_tls_key_file = /path/to/key.pem
Существует два способа приёмки защищённых писем:
Чтобы включить STARTTLS через SMTP (порт 587), необходимо раскоментировать следующие строки в /etc/postfix/master.cf:
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes
-o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_relay_restrictions=
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Параметры smtpd_*_restrictions
остаются закомментированными, поскольку в файле main.cf
по умолчанию не определены переменные $mua_*_restrictions
. Если решено настроить какие-либо из них, следует раскоментировать и эти строки.
Чтобы включить SMTPS (порт 465), необходимо раскоментировать следующие строки в /etc/postfix/master.cf:
submissions inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_relay_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Логика относительно строк $smtpd_*_restrictions
такая же, как и выше.
Установить можно пакетом:
Для установки следует воспользоваться утилитой "Установка и удаление программ".
Пакет, необходимый для установки:
Внимание! Если система загружена в режиме полного сохранения, то внесенные изменения в систему будут сохранены после перезагрузки.
Если режим загрузки другой, то рекомендуется воспользоваться утилитой "Сохранение изменений" до перезагрузки системы.