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 [email protected], 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 '[email protected]' 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 [email protected] 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
Respuestas:
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
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
Esto debe ir al final del archivo y
<tab>
debe ser un carácter de tabulación realfuente
bestmx
mapa para hacerlo genérico.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.
fuente
Aquí entiendo tu pregunta:
Instaló Sendmail para poder usarlo para enviar correos electrónicos desde su sitio web.
Configuraste Sendmail para que sea el servidor de correo electrónico autorizado para tu espacio de nombres DNS público.
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.
fuente
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/hosts
en 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.
fuente
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:
Puede agregar correos electrónicos locales "manualmente" en el
/etc/mail/local-host-names
archivo.(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"
3)
mailertable
se NO consultede para las entregas a los dominios enumerados en$=w
.fuente
confDONT_PROBE_INTERFACES',
True ') ya está (y siempre ha estado) habilitadoEl 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 [email protected] localmente
Y esto le dice a sendmail que reescriba los dominios en direcciones locales a domain.com, pero no altera la entrega local .
Paso 1: regrese a la configuración predeterminada.
Paso 2: usa la configuración predeterminada.
fuente