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çã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.

    
por ErebusBat 22.12.2010 / 18:38

1 resposta

6

Você pode contornar a pesquisa do MX adicionando uma pequena entrada no arquivo sendmail /etc/mail/mailertable .

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 ele precisar ser feito manualmente).

    
por 22.12.2010 / 20:17