¿Por qué esto no funciona?

¿Por qué esto no funciona?

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?

Elsmtpd_sender_restrictions:

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 FROMdirección, dominio, dominios principales o localpart@y ejecute la acción correspondiente.

Por lo tanto, su configuración primero permite example.comy /etc/postfix/restricted_sendersluego permite todo lo demás. Elsmtpd_reject_unlisted_senderno 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.orgno 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_restrictionsson suficientes para esto

Olvídate de lasmtpd_reject_unlisted_senderya que esto se podría hacer usando smtpd_sender_restrictionssolo.

  • 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 conpostmap -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
    

información relacionada