
Me gustaría tener un sufijo que permita la retransmisión de correo a un host de retransmisión cuando
a) el dominio del remitente está permitido
y uno de:
b) el remitente se ha autenticado c) el cliente tiene una entrada en la lista blanca de IP
Mi enfoque actual hasta ahora es:
relayhost = [RELAYHOST]:25
smtpd_reject_unlisted_sender = yes
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/restricted_senders
smtpd_recipient_restrictions =
check_client_access cidr:/etc/postfix/ip_whitelist,
permit_sasl_authenticated,
reject_unauth_destination
con remitentes_restringidos que contienen
example.com OK
y ip_whitelist que contiene
192.168.1.3 OK
Si bien funciona el envío de correos electrónicos desde clientes autenticados o clientes de la lista blanca de IP, la restricción del dominio del remitente no funciona. Parece que tan pronto como la autenticación o el acceso al cliente coinciden, la restricción del remitente ya no se verifica.
Respuesta1
¿Por qué esto no funciona?
El valor predeterminado es permitir todo.
Especifique una lista de restricciones, separadas por comas y/o espacios en blanco. Continúe líneas largas comenzando la siguiente línea con espacios en blanco. Las restricciones se aplican en el orden especificado; la primera restricción que coincida gana.
y
check_sender_access type:table
Buscar lo especificadoacceso(5)base de datos para la
MAIL FROM
dirección, dominio, dominios principales olocalpart@
y ejecute la acción correspondiente.
Por lo tanto, su configuración primero permite example.com
y /etc/postfix/restricted_senders
luego permite todo lo demás. Elsmtpd_reject_unlisted_sender
no cambia eso, porque:
Una dirección se considera "desconocida" cuando 1) no coincide con unavirtual(5)alias ocanónico(5)mapeo, y 2) la dirección no es válida para su clase de dirección. Para obtener una definición de validación de direcciones basada en clases, consulteDIRECCIÓN_CLASS_README.
El dominio, por ejemplo, example.org
no está enlocal,alias virtual,buzón virtualnireléclase de dominio, por lo que cae en laclase de dominio predeterminada. Esta clase no tiene tablas de destino ni de destinatarios válidas. Aparentemente cualquier dirección que no pertenezca a las otras clases de dominio es válida para esta clase de dirección. Esto es lógico, ya que el sistema local no sabría qué direcciones están disponibles en el sistema remoto.
smtpd_sender_restrictions
son suficientes para esto
Olvídate de lasmtpd_reject_unlisted_sender
ya que esto se podría hacer usando smtpd_sender_restrictions
solo.
La configuración más sencilla sería:
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/restricted_senders, reject
Una alternativa podría ser utilizar
regex:
tablas:smtpd_sender_restrictions = check_sender_access regex:/etc/postfix/restricted_senders
Esto permite utilizarexpresiones regulares:
/example\.com$/ OK // 550 You are not allowed to use this sender address.
Puede probar los resultados de la búsqueda con
postmap -q
:$ /usr/sbin/postmap -q [email protected] regexp:/etc/postfix/restricted_senders 550 You are not allowed to use this sender address. $ /usr/sbin/postmap -q [email protected] regexp:/etc/postfix/restricted_senders OK