我目前正在部署另一个 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
我不建议你从默认 主配置文件当你尝试极简配置时你就已经被它咬了。
Postfix 拥有众多服务的原因之一是安全其中一个优点是 Postfix 由单独的守护进程/服务运行以执行特定任务。因此,Postfixmaster
可以调整每个 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