Ho una piccola configurazione del server di casa dietro il mio modem via cavo (comunicazioni bresnan). Voglio essere in grado per questa casella di inviare e-mail (non ricevere) per le notifiche e quant'altro.
Cosa ho già fatto:
- Ho installato e configurato sendmail.
- Ho aggiunto
mail.bresnan.net
come miaSMART_HOST
direttiva.
Quello che credo sia il problema
Quando tento di inviare un'e-mail, nel registro di posta ricevo quanto segue:
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns,
size=140, class=0, nrcpts=1,
msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<aburns@bresnan.net>,
size=397, class=0, nrcpts=1,
msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
to=<my@work-address.com>, 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=<my@work-address.com>, ctladdr=<aburns@bresnan.net>
(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.
Puoi vedere dove il messaggio è accettato per il recapito dal mio server sendmail, quindi dove tenta di passare al server di bresnan e il timeout.
Questa è la mia domanda. I lettori di Asstute noteranno che pmx0.bresnan.net
non è quello che ho SMART_HOST
impostato la mia direttiva. Questo è il MX
server (esterno?) Per il dominio bresnan.com/net. Apparentemente bresnan ha la sua rete configurata in modo che non puoi accedere a questo server dalla propria rete e invece devi usare il mail.bresnan.net
server (al quale posso collegarmi). Il problema è che non so come dire a sendmail di usare questo server e non il dominio .
Quello che ho provato
- Impostazione di una voce host in modo che il server pmx0 punti all'indirizzo IP di posta. Non funziona, il che ha senso dato che sendmail sta ovviamente eseguendo una query MX per trovare il server che restituisce l'IP, quindi non è mai necessario eseguire una risoluzione DNS "normale" in modo che il file hosts non venga mai coinvolto.
La correzione (per tutta la posta in uscita):
Ancora una volta, gli oggetti di scena vanno su webmin (vedi nota sotto) per aiutarmi a imparare questo. Se inserisci il tuo smarthost con parentesi quadre che indicano a sendmail di non effettuare una ricerca MX, quindi: define('SMART_HOST','[69.145.248.18]')
(Correggi le virgolette-> backtick) funziona effettivamente senza una tabella mailer.
La correzione (per domini specifici):
Come indicato di seguito mailertable
è necessario impostare a . Tuttavia, come sottolineato nella pagina man , anche questa funzione deve essere abilitata nel tuo sendmail.mc
file.
Inoltre, il percorso del mailer non impone a sendmail di utilizzare il server specificato per tutte le operazioni, ma si basa sull'indirizzo del destinatario. Questo in realtà è OK per me in quanto ho solo bisogno di inviare a pochi domini (Gmail, Google ospitato e il mio lavoro).
Riepilogo :
- Aggiungi
FEATURE('mailertable')
al tuosendmail.mc
file. (nota che la prima citazione dovrebbe essere un backtick. - Crea il tuo
/etc/mail/mailertable
file (Vedi la pagina man ) - Crea un file map:
sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
- Ricostruisci le tue configurazioni
make -C /etc/mail
- Riavvia sendmail:
service sendmail restart
NOTA: I altamente consiglia di utilizzare WebMin a modificare / ricostruire questi file. Senza di esso sarei impazzito cercando di capire perché il mio file mailertable veniva ignorato.