我目前正在部署另一個 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
這有點有效,除了所有收到的郵件僅在重新啟動 Postfix 時傳遞(到 maildir),而且我很確定它不完整並且無法處理退回郵件,所以我仍在尋找答案。
答案1
我不建議您從預設 大師.cf。當你嘗試極簡配置時,你已經被它咬住了。
postfix 擁有眾多服務的原因之一是安全。優點之一是 postfix 由單獨的守護程式/服務運行來執行特定任務。因此,postfixmaster
可以調整每個 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