現在、さらに別の Postfix MTA を導入中ですが、今回は、master.cf
攻撃対象となる可能性のある領域を減らすために不要なサービスを減らして無効にし、その過程でより深く理解したいと考えています。
MTA は仮想ユーザーへの電子メールを受信し、適切なメールディレクトリに配信し、最後に認証されたユーザーからのメールを中継する必要があります。
OpenSMTPd (これを使用すると、設定全体を 15 行のファイル 1 つで表現できます) への切り替えは現時点では不可能 (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
これは一応動作しますが、受信したメールはすべて Postfix を再起動したときにのみ (maildir に) 配信されます。また、不完全でバウンスを処理できないことはほぼ確実なので、まだ答えを探しています。
答え1
サービスを削除することはお勧めしませんデフォルト マスター.cfミニマリスト構成を試したときに、これに悩まされました。
postfixに多くのサービスがある理由の一つは安全利点の1つは、特定のタスクを実行するために別のデーモン/サービスによって実行されることです。そのため、postfixはmaster
postfixサービスごとに権限と特権を調整できます。たとえば、qmgr(8) デーモン外部と通信せず、chroot 環境で固定された低い権限で実行できます。
とにかく、無効にできる 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