Actualmente estoy implementando otro Postfix MTA y esta vez me gustaría reducir master.cf
y deshabilitar servicios innecesarios para reducir la posible superficie de ataque y comprenderlo mejor en el proceso.
El MTA debe recibir correos electrónicos de usuarios virtuales, entregarlos al maildir apropiado y finalmente retransmitir el correo de los usuarios autenticados.
Cambiar a OpenSMTPd (con el que toda mi configuración se puede expresar en un solo archivo de 15 líneas) no es posible en este momento (no hay soporte para milter), así que estoy atrapado con Postfix.
El horror en cuestión:
# ==========================================================================
# 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
No existe ninguna página de manual que describa una configuración mínima, y las páginas de manual de cada servicio realmente no indican si se requiere o no un módulo (para algunos es bastante fácil resolverlo, para otros es casi imposible sin prueba y error interminables).
Mi intento fallido actual es el siguiente (puerto de envío omitido, por ahora solo estoy intentando que funcione la entrega de correo):
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
Esto funciona un poco, excepto que todo el correo recibido solo se entrega (a maildir) al reiniciar Postfix, y estoy bastante seguro de que está incompleto y no puede manejar los rebotes, así que todavía estoy buscando una respuesta.
Respuesta1
No te recomendaría que elimines el servicio delpor defecto maestro.cf. Te mordió cuando probaste la configuración minimalista.
Una de las razones por las que Postfix tiene muchos servicios esseguridad. Una de las ventajas es que postfix se ejecuta mediante un demonio/servicio independiente para realizar una tarea específica. Entonces, postfijomaster
puede ajustar los permisos y privilegios por servicio postfix. Por ejemplodemonio qmgr(8)no habla con el mundo exterior y se puede ejecutar con privilegios bajos fijos en un entorno chroot.
De todos modos, no tengo tiempo para hacer pruebas y errores interminables para saber qué servicio postfix se puede desactivar. Entonces te doy información sobre algún servicio y lo agrupo en varios grupos.
# 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