Como configurar o sendmail para retransmitir através de um servidor específico

11

Eu tenho uma pequena configuração de servidor doméstico atrás do meu modem a cabo (comunicações bresnan). Desejo poder enviar esta caixa de correio eletrônico (não receber) para notificações e outros enfeites.

O que eu já fiz:

  • Eu instalei e configurei o sendmail.
  • Eu adicionei mail.bresnan.netcomo minha SMART_HOSTdiretiva.

O que eu acredito que o problema é

Quando tento enviar um email, recebo o seguinte no meu log de email:

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 passar para o servidor da bresnan e o tempo limite é excedido.

É aqui que está minha pergunta. Leitores astutos perceberão que pmx0.bresnan.netnão é isso que eu SMART_HOSTdefini como minha diretiva. Este é o MXservidor (externo?) Do domínio bresnan.com/net. Aparentemente, o bresnan tem sua rede configurada para que você não possa acessar esse servidor de dentro da própria rede e, em vez disso, deve usar o mail.bresnan.netservidor (ao qual eu posso me conectar). O problema é que não sei como informar o sendmail para usar este servidor e não o domínio .

O que eu tentei

  • Definir uma entrada de hosts para que o servidor pmx0 aponte para o endereço IP do email. 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 seja necessário fazer uma resolução de DNS 'normal' para que o arquivo de hosts nunca se envolva.

A correção (para todos os emails de saída):

Novamente, o props vai para o webmin (veja a nota abaixo) para me ajudar a aprender isso. Se você digitar seu smarthost entre colchetes que instrui o sendmail a não fazer uma pesquisa MX, então: define('SMART_HOST','[69.145.248.18]')(Corrija as aspas-> backticks) realmente funciona sem uma tabela de correspondência.

A correção (para domínios específicos):

Conforme indicado abaixo, mailertableé necessário configurar um . No entanto, conforme indicado na página de manual , esse recurso também precisa ser ativado no seu sendmail.mcarquivo.

Observe também que a rota do remetente não força o sendmail a usar o servidor especificado para todas as operações, é baseada no endereço do destinatário. Isso é bom para mim, pois só preciso enviar para alguns domínios (gmail, google hospedado e meu trabalho).

Resumo :

  • Adicione FEATURE('mailertable')ao seu sendmail.mcarquivo. (observe que a primeira citação deve ser um backtick.
  • Crie seu /etc/mail/mailertablearquivo (consulte a página do 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

NOTA: eu altamente recomendo usar o Webmin para editar / reconstruir esses arquivos. Sem ele, eu ficaria louco tentando descobrir por que meu arquivo mailertable estava sendo ignorado.

ErebusBat
fonte
Podemos ver o seu sendmail.mc?
Larsks
Ao fazer alterações no arquivo de configuração sendmail.mc, você reiniciou o sendmail após cada alteração?
ewwhite

Respostas:

7

Você pode contornar a pesquisa do MX adicionando uma pequena entrada ao seu /etc/mail/mailertablearquivo 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 o seu sendmail.cf se for necessário manualmente).

ewwhite
fonte
2
Sua resposta estava correta; no entanto, tive que tomar algumas medidas adicionais. Para outras pessoas que enfrentam esse problema, veja minha edição acima.
ErebusBat