В настоящее время я развертываю еще один 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