Sendmail: comodín para direcciones locales y no locales

Sendmail: comodín para direcciones locales y no locales

Necesito configurar una configuración de servidor de correo para un entorno de prueba que acepte todo el correo (es decir, para todos los usuarios y todos los dominios, incluso los no locales) y lo coloque en un único buzón de correo local.

Lo que tengo es SLES 11 con Sendmail (8.14) donde intenté modificar /etc/mail/virtusertable para que pareciera

@ catchall

o como

@* catchall

pero fue en vano: direcciones de correo de destino (p. ej."[correo electrónico protegido]") no se reescriben encomodín@, por lo que se intenta la entrega al MX correspondiente:

# sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 [email protected]
canonify           input: santa @ northpole . org
Canonify2          input: santa < @ northpole . org >
Canonify2        returns: santa < @ northpole . org . >
canonify         returns: santa < @ northpole . org . >
parse              input: santa < @ northpole . org . >
Parse0             input: santa < @ northpole . org . >
Parse0           returns: santa < @ northpole . org . >
ParseLocal         input: santa < @ northpole . org . >
ParseLocal       returns: santa < @ northpole . org . >
Parse1             input: santa < @ northpole . org . >
MailerToTriple     input: < > santa < @ northpole . org . >
MailerToTriple   returns: santa < @ northpole . org . >
Parse1           returns: $# esmtp $@ northpole . org . $: santa < @ northpole . org . >
parse            returns: $# esmtp $@ northpole . org . $: santa < @ northpole . org . >

Parece que los comodines no se admiten en la parte del dominio de origen de la tabla de búsqueda.

¿Cómo implementaría esto con Sendmail?

Editar:segúnLos comentarios de AndrzejHe probado una entrada que se puede enviar por correo de

. local:catch-all-outgoing

así como

.. local:catch-all-outgoing

y recibió un resultado idéntico para sendmail -bven ambos casos:

# sendmail -d60.5 -bv [email protected]
map_lookup(dequote, root, %0=root) => NOT FOUND (0)
map_lookup(host, example.net, %0=example.net) => example.net. (0)
[email protected]... deliverable: mailer esmtp, host example.net., user [email protected]

(sí, root, ya que sendmailparece incapaz de ejecutarse como no root)

Editar:Resultó que la función de envío de correo no se había habilitado en el archivo de macro, por lo que sendmail.cf no contenía las reglas de reescritura adecuadas para que funcionara.

Respuesta1

Lo que te estás encontrando aquí: /etc/mail/virtusertablecreo que se limita únicamente al correo electrónico entrante, no al saliente.

Puede utilizar la ruta predeterminada en mailertable o SMART_HOST para entregar todos los mensajes no locales a un buzón/alias local.

mailertable entry:
. local:catch-all-outgoing

aliases:
catch-all-outgoing: some-local-account

Cualquier entrada LHS que no comience con un punto coincide con el nombre de host completo indicado. Las entradas LHS que comienzan con un punto coinciden con cualquier cosa que termine con ese nombre de dominio (incluido el punto inicial); es decir, se puede considerar que tienen un patrón de expresión regular ".+" inicial para una secuencia de caracteres no vacía.

El RHS siempre debe ser un par "mailer:host". El remitente es el nombre de configuración de un remitente (es decir, una línea M en el archivo sendmail.cf). El "host" será el nombre de host pasado a ese correo.

(referencia:enviar correo léame, sección "UTILIZAR TABLAS DE CORREO")

Entonces algo como:

. local:catch-all-outgoing(solo un punto segúnEl comentario de Adrzej) en /etc/mail/mailertable debería hacer que cualquier dominio.tld se redirija a la configuración del correo local definida en sendmail.cf. Con el alias que captura el nombre de host catch-all-outgoingy hace que sea una dirección de correo electrónico local.

Para que la tabla de correo funcione, debe estar habilitada en la configuración. Añadiendo

FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl

al archivo de macro m4 que genera su configuración debería encargarse de eso.

También de los archivos de ayuda del sitio sendmail:

MAILERTABLE:

Incluir una "tabla de correo" que se pueda utilizar para anular el enrutamiento para dominios particulares.(que no están en la clase {w}, es decir, nombres de host locales). El argumento de la FUNCIÓN puede ser la definición clave. Si no se especifica ninguno, la definición utilizada es:

hash /etc/mail/mailertable

Las claves de esta base de datos son nombres de dominio completos o dominios parciales precedidos por un punto, por ejemplo, "vangogh.CS.Berkeley.EDU" o ".CS.Berkeley.EDU".Como caso especial de este último, "." coincide con cualquier dominio que no esté cubierto por otras claves.Los valores deben tener el formato: correo:dominio

donde "enviador de correo" es el nombre del remitente de correo interno y "dominio" es el lugar donde enviar el mensaje. Estos mapas no se reflejan en el encabezado del mensaje.Como caso especial, los formularios: local:user reenviarán al usuario indicado utilizando el mailer local,

Respuesta2

Sendmail: comodín para direcciones locales y no locales

Puede definir SMART_HOSTpara dominios no locales y MAIl_HUBpara dominios de correo electrónico locales.

enviarcorreo.mc:

define(`SMART_HOST',`local:some_existing_user')dnl
define(`MAIL_HUB',`local:some_existing_user')dnl
dnl optional part to list local users/mailboxes excluded from the redirect
dnl in /etc/mail/direct-users file (one user per line)
LOCAL_CONFIG
FL/etc/mail/direct-users
divert(0)

PD

Úselo echo '$=w' | sendmail -btpara obtener una lista de dominios de correo electrónico locales. Sendmail por defecto lo llena automáticamente de forma mágica.

Mailertable se puede utilizar para excluir algún dominio externo de la redirección.

example.net %0

información relacionada