Eu tenho uma pequena configuração de servidor doméstico atrás do meu modem a cabo (comunicação bresnan). Eu quero poder para esta caixa para enviar e-mail (não receber) para notificações e outros enfeites.
O que eu já fiz:
- Eu instalei e configurei o sendmail.
- Eu adicionei
mail.bresnan.net
como minha diretiva SMART_HOST
.
O que eu acredito que o problema é
Quando tento enviar um e-mail, recebo o seguinte no meu registro de e-mail:
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.
Você pode ver onde a mensagem é aceita para entrega pelo meu servidor sendmail, então onde ela tenta entregar ao servidor de bresnan e o tempo limite.
Aqui é onde está minha pergunta. Asstute readers notará que pmx0.bresnan.net
não é o que eu tenho como minha diretiva SMART_HOST
definida. Este é o servidor (%?) MX
do domínio bresnan.com/net. Aparentemente, o bresnan tem sua rede configurada para que você não possa acessar este servidor a partir de sua própria rede e, em vez disso, deve usar o mail.bresnan.net
server (ao qual eu posso me conectar). O problema é que eu não sei como dizer ao sendmail para usar este servidor e não o domínio .
O que tentei
- Definindo uma entrada de hosts para que o servidor pmx0 aponte para o endereço IP de e-mail. Isso não funciona, o que faz sentido, pois o sendmail está obviamente fazendo uma consulta MX para encontrar o servidor que retorna o IP, portanto, nunca é necessário fazer uma resolução de DNS 'normal' para que o arquivo de hosts nunca seja envolvido.
A Correção (para todas as mensagens enviadas):
Mais uma vez, o adereço vai para o webmin (veja a nota abaixo) por me ajudar a aprender isso. Se você digitar seu smarthost com colchetes que instrui o sendmail a não fazer uma pesquisa MX, então: define('SMART_HOST','[69.145.248.18]')
(Corrigir aspas > backticks) realmente funciona sem uma tabela de correspondência.
A correção (para domínios específicos):
Como apontado abaixo, é necessário configurar um mailertable
. No entanto, conforme indicado na página de manual , esse recurso também precisa estar ativado no arquivo sendmail.mc
.
Observe também que a rota do mailer não força o sendmail a usar o servidor especificado para todas as operações, ele é baseado no endereço do destinatário. Isso é realmente bom para mim, pois só preciso enviar para alguns domínios (gmail, google hospedado e meu trabalho).
Resumo :
- Adicione
FEATURE('mailertable')
ao seu arquivo sendmail.mc
. (note que a primeira citação deve ser um backtick.
- Crie seu arquivo
/etc/mail/mailertable
(consulte a página do manual )
- Crie um arquivo de mapeamento:
sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
- Reconstrua suas configurações
make -C /etc/mail
- Reinicie o sendmail:
service sendmail restart
NOTA: eu altamente recomendo usar o WebMin para editar / reconstruir esses arquivos. Sem isso eu teria enlouquecido tentando descobrir por que meu arquivo mailertable estava sendo ignorado.