Назад | Перейти на главную страницу

Минимальный Postfix master.cf

В настоящее время я развертываю еще один Postfix MTA, и на этот раз я хотел бы проредить master.cf и отключите ненужные службы, чтобы уменьшить потенциальную поверхность атаки и лучше понять это в процессе.

MTA должен получать электронные письма виртуальным пользователям, доставлять их на соответствующий почтовый ящик и, наконец, ретранслировать почту от аутентифицированных пользователей.

Переключение на OpenSMTPd (с которым вся моя конфигурация может быть выражена в одном 15-строчном файле) на данный момент невозможно (без поддержки milter), поэтому я застрял на Postfix.

Рассматриваемый ужас:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#submission inet n       -       n       -       -       smtpd
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

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

Моя текущая неудачная попытка следующая (порт отправки опущен, пока я только пытаюсь заставить работать доставку почты):

smtp inet n - - - - smtpd
cleanup unix n - - - 0 cleanup
qmgr unix - - - 300 1 qmgr
rewrite unix - - - - - trivial-rewrite
proxymap unix - - - - - proxymap
virtual unix - n - - - virtual
anvil unix - - - - 1 anvil
local unix - n - - - local

Это вроде работает, за исключением того, что вся полученная почта доставляется (в maildir) только при перезапуске Postfix, и я почти уверен, что она неполная и не может обрабатывать отказы, поэтому я все еще ищу ответ.

Я не рекомендую вам удалять службу из дефолт master.cf. Это вас укусило, когда вы попробовали минималистичный конфиг.

Одна из причин, по которой postfix имеет много услуг, - это безопасность. Одним из преимуществ является запуск постфикса отдельным демоном / службой для выполнения конкретной задачи. Итак, постфикс master может настроить разрешения и привилегии для каждой службы postfix. Например qmgr (8) демон не общается с внешним миром, и его можно запускать с фиксированными низкими привилегиями в chrooted среде.

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

# INPUT SERVICE
smtp      inet  n       -       n       -       -       smtpd
#submission inet n       -       n       -       -       smtpd
pickup    unix  n       -       n       60      1       pickup

# PROCESSING SERVICE
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite

# OUTPUT SERVICE
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp

# HELPER
# Generate bounce
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce

# For postfix recipient/sender verification See www.postfix.org/ADDRESS_VERIFICATION_README.html
verify    unix  -       -       n       -       1       verify

# Outgoing Connection manager 
scache    unix  -       -       n       -       1       scache

# TLS Cache Manager
tlsmgr    unix  -       -       n       1000?   1       tlsmgr

# maintains statistics about client connection counts or client request rates
anvil     unix  -       -       n       -       1       anvil

# Needed by mailq command
showq     unix  n       -       n       -       -       showq

# Needed by postqueue -f
flush     unix  n       -       n       1000?   0       flush

# Proxymap
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap