Eu tenho um pequeno servidor doméstico configurado atrás do meu modem a cabo (comunicações Bresnan). Quero poder que esta caixa envie e-mails (não receba) para notificações e outros enfeites.
O que eu já fiz:
- Eu instalei e configurei o sendmail.
- Eu adicionei
mail.bresnan.net
como minhaSMART_HOST
diretriz.
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 e, em seguida, onde ela tenta entregá-la ao servidor de Bresnan e atinge o tempo limite.
É aqui que está minha pergunta. Leitores astutos perceberão que pmx0.bresnan.net
não é assim que estabeleci minha SMART_HOST
diretiva. Este é o MX
servidor (externo?) Do domínio bresnan.com/net. Aparentemente, o bresnan tem sua rede configurada para que você não possa acessar este servidor de dentro de sua própria rede e, em vez disso, deva usar o mail.bresnan.net
servidor (ao qual posso me conectar). O problema é que não sei como dizer ao sendmail para usar issoservidore não odomínio.
O que eu tentei
- Configurando uma entrada de hosts para que o servidor pmx0 aponte para o endereço IP de correio. 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, para que nunca haja necessidade de fazer uma resolução de DNS 'normal' para que o arquivo hosts nunca seja envolvido.
A correção (para todos os e-mails enviados):
Novamente, os adereços vão para o webmin (veja a nota abaixo) por me ajudar a aprender isso. Se você inserir 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 as aspas-> crases) na verdade funciona sem uma tabela de mailer.
A correção (para domínios específicos):
Conforme apontado abaixo, a configuração de a mailertable
é necessária. Contudo, como apontado nopágina de manual, esse recurso também precisa estar habilitado em seu sendmail.mc
arquivo.
Observe também que a rota do mailer não força o sendmail a usar o servidor especificado para todas as operações, ela é baseada no endereço do destinatário. Na verdade, isso é bom para mim, pois só preciso enviar para alguns domínios (Gmail, Google hospedado e meu trabalho).
Resumo:
- Adicione
FEATURE('mailertable')
ao seusendmail.mc
arquivo. (observe que a primeira citação deve ser um crase. - Crie seu
/etc/mail/mailertable
arquivo (vejapágina de manual) - Crie um arquivo de mapa:
sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
- Reconstrua suas configurações
make -C /etc/mail
- Reinicie o sendmail:
service sendmail restart
OBSERVAÇÃO:EUaltamenterecomendo usar o WebMin para editar/reconstruir esses arquivos. Sem isso eu teria enlouquecido tentando descobrir por que meu arquivo mailertable estava sendo ignorado.
Responder1
Você pode contornar a pesquisa MX adicionando uma entrada curta ao seu /etc/mail/mailertable
arquivo sendmail.
O conteúdo do arquivo provavelmente deve ter uma única linha como:
bresnan.net esmtp:[69.145.248.18]
Salve o arquivo e reinicie o sendmail (ou reconstrua seu sendmail.cf se isso precisar ser feito manualmente).