4 сентября 2017

Postfix

Настройка

По умолчанию, Postfix пытается посылать почту в напрямую используя, запросы к DNS, в частности записи типа MX.

relay_domainsсписок доменов, на которые разрешена пересылка писем
relayhostимя и порт сервера для пересылка на него писем

Если имя заключено в квадратные скобки [] — то Postfix не предпринимает попытку поиска записей типа MX.

Псевдонимы

Для псевдонимов (Aliases) требуется инициализации БД (файл с расширением  .db)

ФайлКоманда
/etc/aliasesnewaliases

Если возникает ошибка

Нужно установить переменную:/etc/postfix/main.cf

Маскарад адресов

Address masquerading

Замена одного домена или адреса другим, удобно использовать, если нужно скрыть внутренние домены при отправке почты на внешние адреса./etc/postfix/main.cf

/etc/postfix/generic

Компиляция  generic.db:

Postfix Address Rewriting

Размер сообщения

/etc/postfix/main.cf

Задается в Байтах, значение по умолчанию  10240000

Копирование всей почты

Отправка скрытых копий всех писем (Blind carbon copy) на определенный адрес./etc/postfix/main.cf

В данном примере использован локальный адрес:  bcc@localhost.localdomain

Команды

Проверка синтаксисаpostfix -c ПУТЬ_К_ФАЙЛУ_НАСТРОЕК_main.cf check
Состояние очередиpostqueue -c ПУТЬ_К_ФАЙЛУ_НАСТРОЕК_main.cf -p
Обработка очереди немедленноpostqueue -c ПУТЬ_К_ФАЙЛУ_НАСТРОЕК_main.cf -f
Очистка очередиpostsuper -c ПУТЬ_К_ФАЙЛУ_НАСТРОЕК_main.cf -d ALL
Тест адресацииpostmap -q address@domail.ru ldap:/etc/postfix/ldap-users.cf

Работа с несколькими экземплярами

При решении некоторых задач можно воспользоваться возможностью работы с несколькими экземплярами (instance) сервера.

Для работы нужно добавить такие строки:/etc/postfix/main.cf

в переменной  multi_instance_directories указывается экземпляры программы, в примере использованы следующие:

  • /etc/postfix-mx
  • /etc/postfix-1
  • /etc/postfix-n

Для того, чтобы при запуске/останове и перезапуске Postfix и по команде

нужно параметре  multi_instance_wrapper нужно указать имя группы ( ИМЯ_ГРУППЫ) в куда входя нужные экземпляров программы.

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

Для управления служит программа  postmulti.

Примеры:

Созданиеpostmulti -I ИМЯ_ЭКЗЕМПЛЯРА -G ИМЯ_ГРУППЫ -e create
Активацияpostmulti -i ИМЯ_ЭКЗЕМПЛЯРА -e enable
Управление экземпляромpostmulti -i ИМЯ_ЭКЗЕМПЛЯРА -p КОМАНДА

Managing multiple Postfix instances on a single host

Безопасность

mynetworksсписок подсетей с которых разрешена отправка через этот сервер
disable_vrfy_command = yesКлиент, подключившийся к серверу, может командой  vrfy user@domain.ru определить, существует ли заданный адрес в системе
show_user_unknown_table_name = noПри попытке клиента отправить письмо несуществующему пользователю по умолчанию сервер выдаст  550 (reject) с сообщением  user unknown in local recipient table (или другой таблице). Отключаем, пусть сервер сообщает  user unknown
smtpd_helo_required = yesТребуем от клиента приветствия (HELO/EHLO). Все, кто подключается, должны представляться
smtpd_helo_restrictions= permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostnameОграничения для этапа  HELO/EHLO. Применяются к имени хоста, его IP-адресу и приветствию  HELO/EHLO:
Разрешаем доверенные сети
Разрешаем тем, кто прошёл аутентификацию
Отбрасываем неправильное (несуществующее) имя хоста
Отбрасываем не полностью определённое доменное имя хоста
Отбрасываем, если хост по HELO/EHLO не имеет А или МХ записи
smtpd_sender_restrictions= reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unlisted_sender, permit_mynetworks, permit_sasl_authenticatedОграничения для этапа MAIL FROM. Применяется ко всему предыдущему + имя отправителя:
Отбрасываем не полностью определённое имя отправителя
Отбрасываем отправителя с несуществующего домена
Отбрасываем несуществующих отправителей
Проверяем отправителя. Если с нашего домена, то проверим, находится ли он в доверенной сети или прошёл аутентификацию
Разрешаем отправлять с доверенных сетей
Разрешаем отправлять прошедшим аутентификацию
smtpd_recipient_restrictions= reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unlisted_recipient, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination reject_invalid_hostnameОграничения для этапа RCPT TO. Применяется к предыдущему + имя получателя:
reject, если получатель отсутствует в списке нашего домена или списке пересылки. Чтобы сервер не стал открытым  relay
smtpd_data_restrictions= reject_unauth_pipelining, reject_multi_recipient_bounceОграничения для этапа DATA:
Отвергаем запрос, когда клиент посылает команды SMTP раньше времени
reject клиента с пустым именем отправителя, который отправляет сразу нескольким получателям
smtpd_etrn_restrictions= permit_mynetworks, permit_sasl_authenticated, rejectОграничиваем клиентов, которые могут запрашивать очистку очереди сообщений

Пример

Пример для вставки в файл  main.cf

Таблицы:/etc/postfix/helo_restrictions

/etc/postfix/sender_access

Скрипт для компиляции таблиц:/etc/postfix/!update_db.sh

Интеграция с другими программами

AMaViSd-new

AMaViSd-new — интерфейс между MTA и сканером вирусов/фильтром содержанияmain.cf

master.cf 

ClamAV

Для работы через ClamSMTPdmain.cf

master.cf

/etc/clamsmtpd.conf

Dovecot

Dovecot/etc/postfix/main.cf

/etc/postfix/master.cf

SpamAssassin

Эта настройка позволяет работать с SpamAssassin без использования AMaViSd-new

В файл  /etc/postfix/master.cf нужно добавить

  1. Для  smtp и  submission строку: -o content_filter=spamassassinпример:… smtp inet n — y — — smtpd -o content_filter=spamassassin … submission inet n — y — — smtpd -o content_filter=spamassassin …
  2. В конец файла:spamassassin unix — n n — — pipe user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
  3. Выполнить:postfix reloadилиservice postfix reload

SSL

Пример настройки работы по порту 587, с использованием сертификатов Let’s Encrypt:/etc/postfix/main.cf

Метки:

Опубликовано 04.09.2017 от evgeniyalf в категории "Linux