¿Cómo hacer cumplir la dirección del remitente para que sea “login-in-user@example.org” en Postfix?


15

He configurado un servidor Postfix con SMTP AUTH (STARTTLS en el puerto 587). Todos mis usuarios están en el dominio "example.org". Quiero exigir que la dirección del remitente sea "login-in-user@example.org".

Aprendí que esto se puede lograr con las opciones main.cf

smtpd_sender_restrictions = reject_sender_login_mismatch, ...
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps

con un archivo login_maps como:

a@example.org a
b@example.org b
c@example.org c
...

(consulte también Bloquear la suplantación de direcciones del remitente con SMPT AUTH ), pero esto significaría que tendré que editar el archivo login_maps cada vez que tenga un nuevo usuario. No necesito un mapeo tan flexible: siempre debe ser "login-in-user@example.org". ¿Hay una opción más fácil?

Respuestas:


14

Primero, verifique si su instalación de Postfix admite pcre ingresando el comando postconf -my buscando una línea pcreen él. Una vez que haya verificado que tiene soporte pcre, puede hacer lo siguiente:

/etc/postfix/login_maps.pcre:

/^(.*)@example\.org$/   ${1}

En main.cf:

smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre

Esto debería funcionar bien.


Esto es perfecto. ¡Exactamente lo que estaba buscando!
— Chris Lercher

3
Para los usuarios de Ubuntu, puede obtener postfix pcre con sudo apt-get install postfix-pcre. Tal vez esto era obvio para la mayoría.
— NeilMonday

¿No hay forma de omitir el dominio en la expresión regular o $myhostnamevariable de referencia ?. Aquí puede ver que Postfix es capaz de buscar en la tabla de búsqueda por parte del usuario del correo electrónico ...
— Jaime Hablutzel

Creo que querrás retroceder y escapar del '.' carácter en el nombre de dominio para que se interprete como una coincidencia literal: /^(.*)@example\.org$/
— Arnon

De lo contrario, esto coincide con "test @ exampleXorg" y "test@example.org", lo que puede no ser exactamente el comportamiento previsto.
— Arnon

6

La expresión regular mencionada en la otra respuesta coincide con la parte del usuario de la dirección de correo electrónico ( login-in-user @ example.org). Aqui esta alguna informacion adicional.

Para usar la dirección de correo electrónico completa como nombre de usuario, use la siguiente expresión regular (por ejemplo, en /etc/postfix/login_map):

/^(.*)$/   ${1}

Esto significa que su nombre de usuario es siempre su dirección de correo electrónico completa ( login-in-user@example.org ), no se le permite enviar ningún otro nombre de usuario existente desde esa dirección, y no tiene que actualizar un archivo de configuración Postfix adicional cada vez que agregar un usuario

Esto podría usarse en un servidor que tiene múltiples dominios configurados. El usuario john.doe@example.com solo puede enviar desde esa dirección pero no desde john.doe@example.org (usuario y correo electrónico diferentes, persona diferente). El nombre de usuario john.doe sería ambiguo en este caso.

Además, según su configuración, la configuración smtpd_sender_login_maps, que debe apuntar a este archivo, puede estar en master.cf (en lugar de main.cf). La documentación oficial de Dovecot tiene el siguiente ejemplo (si está utilizando SASL / envío):

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

En este ejemplo, la configuración debe ajustarse para apuntar al archivo correcto y usar expresiones regulares o (mejor) pcre como tipo. Especialmente si un archivo llamado "virtual" ya se usa para otro propósito (por ejemplo, para virtual_alias_maps, como se muestra en un ejemplo oficial de Postfix ), se debe usar otro archivo para la asignación de inicio de sesión.

Desde:

smtpd_sender_login_maps=hash:/etc/postfix/virtual

A:

smtpd_sender_login_maps=pcre:/etc/postfix/login_map

0

¿Se puede utilizar la combinación de expresiones regulares en el encabezado como se muestra aquí: http://www.akadia.com/services/postfix_uce.html ? Luego puede combinarlo con expresiones regulares como [*@example.org] para asegurarse de que solo el remitente de example.org.


Supongamos que puedo usar "regexp:" aquí (?) ¿Cómo puedo especificar la expresión regular tal, que el usuario "a" puede enviar como "a@example.org" pero no como "b@example.org"?
— Chris Lercher

@sonstabo sería bueno si incluyeras la muestra de configuración
— Jaime Hablutzel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.