Tengo un pequeño servidor doméstico configurado detrás de mi módem por cable (comunicaciones Bresnan). Quiero que este cuadro pueda enviar correos electrónicos (no recibir) notificaciones y todo eso.
Lo que ya he hecho:
- He instalado y configurado sendmail.
- He agregado
mail.bresnan.net
como miSMART_HOST
directiva.
Lo que creo que es el problema
Cuando intento enviar un correo electrónico, aparece lo siguiente en mi registro de correo:
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns,
size=140, class=0, nrcpts=1,
msgid=<[email protected]>,
relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<[email protected]>,
size=397, class=0, nrcpts=1,
msgid=<[email protected]>,
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
to=<[email protected]>, ctladdr=aburns (1000/1000),
delay=00:00:00, xdelay=00:00:00, mailer=relay,
pri=30140, relay=[127.0.0.1] [127.0.0.1],
dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
to=<[email protected]>, ctladdr=<[email protected]>
(1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.
Puede ver dónde mi servidor de sendmail acepta el mensaje para su entrega, luego dónde intenta pasarlo al servidor de bresnan y se agota el tiempo de espera.
Aquí es donde está mi pregunta. Los lectores astutos notarán que eso pmx0.bresnan.net
no es lo que tengo SMART_HOST
configurada en mi directiva. Este es el servidor (¿externo?) MX
para el dominio bresnan.com/net. Aparentemente, Bresnan tiene su red configurada para que no pueda acceder a este servidor desde su propia red y, en su lugar, debe usar el mail.bresnan.net
servidor (al que puedo conectarme). El problema es que no sé cómo decirle a sendmail que use esto.servidory no eldominio.
lo que he probado
- Configurar una entrada de hosts para que el servidor pmx0 apunte a la dirección IP de correo. Esto no funciona, lo cual tiene sentido ya que sendmail obviamente está haciendo una consulta MX para encontrar el servidor que devuelve la IP, por lo que nunca es necesario realizar una resolución de DNS "normal" para que el archivo de hosts nunca se involucre.
La solución (para todo el correo saliente):
Nuevamente, los accesorios van para webmin (ver nota a continuación) por ayudarme a aprender esto. Si ingresa su host inteligente con corchetes, le indica a sendmail que no realice una búsqueda MX, entonces: define('SMART_HOST','[69.145.248.18]')
(Corregir las comillas->comillas invertidas) en realidad funciona sin una tabla de correo.
La solución (para dominios específicos):
Como se indica a continuación, es necesario configurar un mailertable
. Sin embargo, como se señala en elpágina de manual, esta función también debe estar habilitada en su sendmail.mc
archivo.
También tenga en cuenta que la ruta del correo no obliga a sendmail a utilizar el servidor especificado para todas las operaciones, sino que se basa en la dirección del destinatario. En realidad, esto está bien para mí, ya que solo necesito enviar a unos pocos dominios (gmail, alojamiento de Google y mi trabajo).
Resumen:
- Agregue
FEATURE('mailertable')
a susendmail.mc
archivo. (tenga en cuenta que la primera comilla debe ser una comilla invertida. - Crea tu
/etc/mail/mailertable
archivo (Verpágina de manual) - Crea un archivo de mapa:
sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
- Reconstruye tus configuraciones
make -C /etc/mail
- Reiniciar envío de correo:
service sendmail restart
NOTA:IaltamenteRecomendamos usar WebMin para editar/reconstruir estos archivos. Sin él, me habría vuelto loco tratando de descubrir por qué se ignoraba mi archivo de correo.
Respuesta1
Puede evitar la búsqueda de MX agregando una entrada breve en su /etc/mail/mailertable
archivo de sendmail.
El contenido del archivo probablemente debería tener una sola línea como:
bresnan.net esmtp:[69.145.248.18]
Guarde el archivo y reinicie sendmail (o reconstruya su sendmail.cf si debe hacerlo manualmente).