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 -bv
en 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 sendmail
parece 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/virtusertable
creo 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-outgoing
y 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_HOST
para dominios no locales y MAIl_HUB
para 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 -bt
para 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