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

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

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.netcomo minha SMART_HOSTdiretriz.

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.netnão é assim que estabeleci minha SMART_HOSTdiretiva. Este é o MXservidor (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.netservidor (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.mcarquivo.

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 seu sendmail.mcarquivo. (observe que a primeira citação deve ser um crase.
  • Crie seu /etc/mail/mailertablearquivo (vejapágina de manual)
  • Crie um arquivo de mapa:sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
  • Reconstrua suas configuraçõesmake -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/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 seu sendmail.cf se isso precisar ser feito manualmente).

informação relacionada