¿Cómo configuro sendmail para enviar correo a través de un registro MX y no a localhost?


8

Estoy tratando de hacer que sendmail transfiera correos a los servidores especificados en los registros MX, así que cuando el servidor envíe un correo electrónico a me@domain.com, quiero que salte localhost e ir directamente a gmail.

He revisado los documentos de sendmail, pero no entiendo cómo dar cuenta de mi situación. Esencialmente, el nombre de host de mi servidor es 'www.dominio.com', pero cuando envío un correo electrónico a 'me@dominio.com' termina en la cola de correo local.

Cuando ejecuto sendmail en modo de depuración:

sendmail -bt
> $=w

Yo obtengo:

www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___] 

Por lo tanto, está interceptando todo el correo saliente a domain.com. No quiero que llegue localhost. Quiero que vaya a los servidores de Gmail.

Todo el correo destinado a otras direcciones funciona bien. También tengo sendmail configurado para usar DKIM.

Agregué un registro a mailertable (y reconstruí mailertable.db y volví a compilar el archivo mc> cf), pero no estoy seguro de si eso es lo que tengo que hacer o si lo estoy haciendo correctamente.

domain.com esmtp:[aspmx.l.google.com]

¿Cómo consigo que permita que el correo vinculado a users@domain.com abandone el servidor?

INFORMACIÓN ADICIONAL: Aquí está mi archivo sendmail.mc:

divert(-1)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl

define(`confDEF_USER_ID', ``8:12'')dnl

define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl

define(`confTO_IDENT', `0')dnl

FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl

FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`relay_based_on_MX')dnl
FEATURE(`relay_entire_domain')dnl

LOCAL_DOMAIN(`localhost.localdomain')dnl

MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl

EXPOSED_USER(`root')dnl

FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')

MAILER(smtp)dnl
MAILER(procmail)dnl

1
La lógica de tu pregunta es completamente errónea. Se reduce a "No quiero usar Sendmail para enviar mi correo. ¿Cómo configuro Sendmail con una configuración adicional para enviar el correo exactamente como Sendmail envía el correo por defecto?" Respuesta: déjalo en paz. O bien, su pregunta debe reformularse por completo para transmitir lo que realmente está intentando hacer, o debe dejar de entrometerse en la configuración de su servidor y dejar que haga lo que hace sin romperla.
Sammitch

1
Bien entonces. alternativamente, explícame qué haría si solo quisiera enviar un correo electrónico desde el servidor y no a él.
Octopus

Respuestas:


8

Finalmente encontré una solución bastante completa aquí . Para resumir, hay una serie de opciones (la mayoría de las cuales se han mencionado en otras respuestas, pero por alguna razón no funcionó en mi escenario particular).

Opción 1: elimine la entrada de / etc / mail / local-host-names

para mí este archivo ya estaba vacío

Opción 2: elimine cualquier entrada LOCAL_DOMAIN en el archivo mc

no tenía ninguno

Opción 3: dile a sendmail que no pruebe las interfaces

define(`confDONT_PROBE_INTERFACES', `true')dnl

en mi caso esto se configuró, pero el host problemático todavía estaba presente en la clase w de sendmail

Opción 4: cambie el nombre del servidor. el enlace externo proporcionado anteriormente incluso dice específicamente: "Si quiero eliminar whipple.org de la clase w, podría cambiar el nombre del servidor a frodo.whipple.org, www.whipple.org, elvis.whipple.org, por ejemplo".

Para mí esto no fue suficiente. con el host llamado www.dominio.com , la clase de sendmails todavía contenía AMBOS www.dominio.com Y dominio.com (incluso después de reiniciar)

Opción 5: ESTO ES LO QUE FUNCIONÓ PARA MÍ, agregue un LOCAL_RULE_0 al archivo mc sendmail

LOCAL_RULESETS
LOCAL_RULE_0
R$* < @domain.com. > $*  <tab>$#esmtp $@ mail.domain.com $: $1<@domain.com.>$2

Esto debe ir al final del archivo y <tab>debe ser un carácter de tabulación real


Iría con la opción 5 y usaría un bestmxmapa para hacerlo genérico.
adamo

Este funciona perfectamente. Gracias por Octopus LOCAL_RULESETS LOCAL_RULE_0 R $ * <@ domain.com. > $ * <tab> $ # esmtp $ @ mail.domain.com $: $ 1 <@ domain.com.> $ 2 esto debe ir al final del archivo y <tab> en realidad debe usar la tecla tab en lugar de el código.
Vinodh Kumar

7

Cambiar el nombre de host del servidor. No hay una razón válida para que un nombre de host sea igual a un nombre de dominio simple.


sí, lo intenté, incluso cuando configuré el nombre de host en www.dominio.com sendmail quiere mantener todo vinculado a www.dominio.com, dominio.com y localhost. Puedo ver eso cuando ejecuto sendmail en modo de depuración y escribo $ = w. Reescribí la pregunta un poco para explicarla.
Octopus

3

Aquí entiendo tu pregunta:

  1. Instaló Sendmail para poder usarlo para enviar correos electrónicos desde su sitio web.

  2. Configuraste Sendmail para que sea el servidor de correo electrónico autorizado para tu espacio de nombres DNS público.

  3. No desea que Sendmail tenga autoridad para su espacio de nombres DNS público. Desea que el correo electrónico enviado a su espacio de nombres DNS público se envíe a su correo electrónico alojado en Google.

Solución: reconfigure Sendmail para que no tenga autoridad para su espacio de nombres DNS público.


2
Mi pregunta es sobre la configuración de sendmail. ¿Puede su respuesta ser más específica que "reconfigurar sendmail"?
Octopus

0

No tengo mucha experiencia con la configuración de sendmail, pero creo que debería estar haciendo lo correcto con respecto a los registros MX. Sin embargo, imagino que podría ser posible que antes de las búsquedas de DNS, sendmail consulte primero el archivo de hosts locales /etc/hostsen la mayoría de los sistemas operativos basados ​​en Unix antes de usar sus servidores DNS. Si ese es el caso, y hay una entrada en el archivo de hosts que se refiere a su máquina como domain.com si configura eso como el nombre de host, eso podría estar sucediendo. Puede editar el archivo de hosts para satisfacer sus necesidades en este caso particular modificando las entradas o agregando nuevas.

O puede configurar sendmail para ignorar el archivo de hosts del sistema local al resolver las URL. No estoy seguro de cómo hacer eso.


0

1) Sendmail llena automáticamente la lista de dominios de correo electrónico locales ( $=w).

No puede desactivarlo utilizando la siguiente línea en su sendmail.mc:

define(`confDONT_PROBE_INTERFACES',`True')

Puede agregar correos electrónicos locales "manualmente" en el /etc/mail/local-host-namesarchivo.
(Requiere HUPing o reiniciar el demonio sendmail después)

2) Sendmail puede agregar (autoconfigurado) "este nombre de correo electrónico de host" ( $j) a la lista de dominios de correo electrónico locales.

Puede definir "este nombre de correo electrónico de host"

define(`confDOMAIN_NAME',`hostname.example.net')

3) mailertablese NO consultede para las entregas a los dominios enumerados en $=w.


pero definir ( confDONT_PROBE_INTERFACES',True ') ya está (y siempre ha estado) habilitado
Octopus

Por lo tanto, su caso puede estar cubierto por la opción 2.
AnFi

Todas estas son buenas sugerencias que he explorado por completo, pero creo que la opción 2 es lo mismo que agregar hosts al archivo local-host-names. en este caso quiero EXCLUIR un host, NO INCLUIR uno.
Octopus

0

El código que está enviando el correo, ¿está utilizando una dirección de correo electrónico completa o simplemente está haciendo que el servidor lo envíe por correo a través de una cuenta local? Porque:

Esto le dice a sendmail que entregue todo el correo a users@localhost.localdomain localmente

LOCAL_DOMAIN(`localhost.localdomain')dnl

Y esto le dice a sendmail que reescriba los dominios en direcciones locales a domain.com, pero no altera la entrega local .

MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl

Bien entonces. alternativamente, explícame qué haría si solo quisiera enviar un correo electrónico desde el servidor y no a él.

Paso 1: regrese a la configuración predeterminada.
Paso 2: usa la configuración predeterminada.


Sí, eso es correcto, pero lo estoy enviando a usuario@dominio.com. La configuración predeterminada tiene exactamente los mismos problemas que describí en la pregunta.
Octopus
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.