¿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.