Confundido sobre alias_maps y virtual_alias_maps

22

Ya he vuelto a leer los documentos sobre esto, así como otras publicaciones aquí, y esto aún no está claro para mí. He estado probando varias cosas para entender la diferencia entre alias_mapsy virtual_alias_mapsy no veo el uso de estos 2 ajustes separados en postfix. Esto es lo que encontré hasta ahora (Nota: estoy usando postfix en el mismo servidor que mi servidor web como cliente nulo para enviar correos electrónicos solamente) :

1) archivo / etc / aliases:

root: [email protected]

Cuando agrego lo anterior al alias_maps, noté que algunos servicios como fail2ban pueden elegir esto y envía correos electrónicos raíz a las direcciones de correo electrónico de alias mencionadas. Sin embargo, también noté que algunos otros servicios (como el mailcomando) no respetan esto y tratan de enviar el correo electrónico directamente a [email protected] que no existe (creo que es la myoriginconfiguración de postfix que está agregando @ mydomain.com) . Para solucionar esto, agregué elvirtual_alias_maps

2) / etc / postfix / virtual

root     [email protected]

Cuando se agrega lo anterior, todos los servicios utilizan este correo electrónico de alias virtual. También noté que una vez que agrego lo anterior, incluso fail2ban comienza a ignorar mi configuración inicial en el /etc/aliases/archivo y comienza a seguir la dirección de correo electrónico dada en el archivo virtual.

Ahora esto me ha confundido aún más:

  1. ¿Por qué necesitamos /etc/aliases/cuando tener el correo electrónico dentro del mapa de alias virtuales parece anularlo?

  2. ¿Cuál es el propósito de tener estos 2 mapeos de alias separados y cuándo decidimos cuándo usar qué?

  3. ¿Por qué fail2ban (que está configurado para enviar por correo electrónico root@localhost) primero siguió la dirección de correo electrónico dada en alias_maps(/ etc / aliases /) y luego decide ignorar eso una vez que virtual_alias_mapsse agregó?

  4. ¿Por qué no todos los servicios leen los alias de correo electrónico mencionados en / etc / aliases y solo funcionan cuando los alias de correo electrónico se agregan en el mapa de alias virtual?

He pasado varias horas desde ayer y todavía no estoy seguro. ¿Alguien puede ayudarme a aclarar mi confusión?

EDITAR: Este es el registro de correo cuando el correo electrónico se envía a la raíz usando el mail rootcomando. El correo electrónico de alias para root se menciona en / etc / aliases /. Pero el correo no funciona hasta que muevo este correo electrónico de alias raíz de aliases_mapsavirtual_aliases_maps

Regístrese cuando se mencione el alias de correo electrónico raíz en /etc/aliases/:

Nov 14 16:39:27 Debian postfix/pickup[4339]: 0F12643432: uid=0 from=<root>

Nov 14 16:39:27 Debian postfix/cleanup[4495]: 0F12643432: message-id=<[email protected]>

Nov 14 16:39:27 Debian postfix/qmgr[4338]: 0F12643432: from=<[email protected]>, size=517, nrcpt=1 (queue active)

Nov 14 16:39:27 Debian postfix/error[4496]: 0F12643432: to=<[email protected]>, orig_to=<root>, relay=none, delay=0.04, delays=0.03/0/0/0.01, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to domainname.com[128.199.147.136]:25: Connection refused)

Este es el registro después de que los alias de correo electrónico para la raíz se trasladen /etc/aliases/a /etc/postfix/virtualdonde la entrega del correo electrónico es exitosa después del cambio:

Nov 14 16:44:58 Debian postfix/pickup[4545]: ADD9A43436: uid=0 from=<root>

Nov 14 16:44:58 Debian postfix/cleanup[4563]: ADD9A43436: message-id=<[email protected]>

Nov 14 16:44:58 Debian postfix/qmgr[4544]: ADD9A43436: from=<[email protected]>, size=453, nrcpt=1 (queue active)

Nov 14 16:45:00 Debian postfix/smtp[4551]: ADD9A43436: to=<[email protected]>, orig_to=<root>, relay=somesite.com[108.160.157.120]:25, delay=1.9, delays=0.03/0/0.97/0.88, dsn=2.0.0, status=sent (250 OK id=1XpEqC-0002ry-9s)

Nov 14 16:45:00 Debian postfix/qmgr[4544]: ADD9A43436: removed
Neel
fuente
I also noticed that some other services (like mail command) does not respect this-> muestra la entrada del registro de correo relacionada con esta condición
masegaloeh
@masegaloeh He actualizado mi publicación con el registro de correo
Neel

Respuestas:

35

Algunos antecedentes

Postfix heredó algunas características de sendmail antiguos como milter y alias. El archivo /etc/aliaseses parte de la aliasesherencia e implementado por alias_maps. Por otro lado, postfix tiene virtual_maps/virtual_alias_maps para manejar el alias de correo electrónico. Entonces, ¿cuál es la diferencia entre ellos?

Parámetro alias_maps

  • Utilizado solo para entrega local (8)

  • De acuerdo con la clase de dirección en postfix , el correo electrónico se enviará por local (8) si los nombres de dominio del destinatario figuran en elmydestination

  • La entrada de búsqueda fue solo partes locales de direcciones de correo electrónico completas (por ejemplo, myuser de [email protected]). Descarta partes del dominio del destinatario.

  • El resultado de la búsqueda puede contener uno o más de los siguientes:

    • dirección de correo electrónico : el correo electrónico se reenviará a la dirección de correo electrónico
    • / archivo / nombre : el correo electrónico se agregará a / archivo / nombre
    • | comando : correo canalizado al comando
    • : incluye: / archivo / nombre : incluye alias de / archivo / nombre

Parámetro virtual_alias_maps

  • Utilizado por entrega virtual (5)

  • Siempre se invoca por primera vez antes que cualquier otra clase de dirección. No importa si el dominio del destinatario fue incluido en mydestination, virtual_mailbox_domainso en otros lugares. Reemplazará la dirección / alias definido en otros lugares.

  • La entrada de búsqueda tiene algún formato

    • usuario @ dominio : coincidirá con el usuario @ dominio literalmente

    • usuario : coincidirá con el usuario @site cuando el sitio sea igual a $myorigin, cuando el sitio aparezca en la lista o cuando aparezca $mydestinationen la lista $inet_interfaceso $proxy_interfaces. Esta funcionalidad se superpone con la funcionalidad de la base de datos de alias locales (5).

    • @dominio : coincidirá con cualquier correo electrónico destinado domainindependientemente de las partes locales

  • El resultado de la búsqueda debe ser

    • dirección de e-mail válida
    • usuario sin dominio. Postfix se agregará $myoriginsi se append_at_myoriginestablece

¿Por qué necesitamos / etc / aliases cuando parece que el correo electrónico dentro del mapa de alias virtual lo anula?

Como puede ver arriba, alias_maps(/ etc / aliases) tiene algunas características adicionales (además del reenvío), como la canalización al comando. Contrasta con virtual_alias_mapsese solo reenviar correo electrónico.

¿Cuál es el propósito de tener estos 2 mapeos de alias separados y cuándo decidimos cuándo usar qué?

Los alias_mapsinconvenientes son que puede diferenciar si el destinatario original tiene el formulario [email protected] o [email protected] . Ambos se asignarán a la entrada raíz en alias_maps. En otras manos, puede definir diferentes direcciones de reenvío con virtual_alias_maps.

¿Por qué fail2ban (que está configurado para enviar por correo electrónico a root @ localhost) primero siguió la dirección de correo electrónico proporcionada en alias_maps (/ etc / aliases /) y luego decide ignorar eso una vez que se agregó virtual_alias_maps?

Antes de agregar virtual_alias_maps : root @ localhost tenía un alias alias_mapsporque localhost figuraba en mydestination.

Después de definir virtual_alias_maps : la entrada root(en virtual_alias_maps) no tiene partes de dominio y localhost figuraba en la lista mydestination, por lo que coincidirá root [email protected].

¿Por qué no todos los servicios leen los alias de correo electrónico mencionados en / etc / aliases y solo funcionan cuando los alias de correo electrónico se agregan en el mapa de alias virtual?

El comando mail rootenviará un correo electrónico a la raíz. Debido a la falta de partes del dominio, postfix trivial-rewrite agregará myorigin a las partes del dominio. Por lo tanto, el correo se enviará a root @ myorigin .

Antes de agregar virtual_alias_maps : Desafortunadamente, myoriginno aparece en la lista mydestination, por lo que no tendrá alias alias_maps.

Después de agregar virtual_alias_maps : la entrada root(en virtual_alias_maps) no tiene partes de dominio y myorigin (obviamente) iguales myorigin, por lo que coincidirá root [email protected].

masegaloeh
fuente
1
En la oración Los alias_mapsinconvenientes son que puedes diferenciar ... la palabra lata probablemente estaba destinada a no poder . De lo contrario, no puedo entenderlo.
Daniel Böhmer
2
  1. /etc/aliasesestá allí principalmente para la entrega local, por ejemplo, correo a la raíz desde cron, etc., es bueno mantener sus alias locales separados, virtual_alias_mapstambién se puede usar con bases de datos SQL, etc.

  2. virtual_alias_maps es para cuando tiene usuarios virtuales (y dominios virtuales), a menudo que no se asignan a usuarios del sistema, pero si no tiene dominios virtuales y muy pocos usuarios, ese tipo de funcionalidad puede no ser necesaria.

  3. A fail2ban no le importa, solo envía un correo electrónico a la MTA.

  4. Debe ser más específico, qué servicios, cómo y dónde envían el correo.

NickW
fuente
Gracias @NickW un par de cosas: (1) Para No: 4, el comando de correo es uno de los servicios que hace esto. Quiero decir, si / etc / aliases es principalmente para entrega local a usuarios locales, ¿no debería el mail rootcomando realmente caer dentro de esta categoría? ¿Por qué este servicio no considera la información en / etc / aliases cuando se trata de una entrega local? (2) Teniendo en cuenta esto para mi escenario, ¿es una buena práctica que los alias de los usuarios mencionen las direcciones de correo electrónico en ambos /etc/aliasesy virtual_alias_mapsque funcionen para todo?
Neel
1
1. Ok, el comando de correo debería usar /etc/aliasespor defecto, una pregunta realmente estúpida, que ejecutaste newaliasesdespués de actualizar el archivo, ¿verdad? 2. Diría que es excesivo, si las personas reciben correo de la máquina local, valdría la pena configurar los scripts para usar su dirección de correo electrónico adecuada, de esa manera se enrutará a través de postfix y se entregará al destino correcto.
NickW
hola @NickW sí, reconstruí los alias usando newaliasesdespués del cambio. Lo único en lo que puedo pensar es por qué no usa alias puede deberse a la configuración de postfix que se agrega @$domain_namedespués del usuario y, por virtual_alias_mapslo tanto, es necesaria para redirigir esos correos electrónicos. Leí esto en documentos de postfix y tal vez por eso el mailcomando root no funciona con aliases: postfix.org/STANDARD_CONFIGURATION_README.html#some_local De todos modos, muchas gracias por ayudarme a entender mejor a Nick. Realmente lo aprecio .. :)
Neel
Me alegro de haber ayudado :)
NickW