Como evitar que o sendmail perca mensagens quando o host remoto estiver inacessível

1

Eu tenho um pequeno domínio com vários hosts. O Sendmail está configurado para encaminhar todos os e-mails gerados localmente (principalmente mail para root@localhost gerados por tarefas agendadas) para um "hub de correio" central, usando

define('MAIL_HUB', 'somehost.mydomain.org')

em sendmail.mc . Recentemente tive um problema com o servidor de email no final remoto, para que ele não aceitasse email deste host. Isso fez com que o sendmail descartasse todos os e-mails. De /var/log/maillog :

sendmail[3133]: n4461S5s003133: n4461S5t003133: return to sender: Service unavailable
sendmail[3133]: n4461S5t003133: to=root, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=34772, relay=XXXXX.org.  [91.184.38.153], dsn=5.0.0, stat=Service unavailable
sendmail[3133]: n4461S5s003133: Losing ./qfn4461S5s003133: savemail panic

Todos os e-mails gerados durante esse período foram descartados e perdidos para sempre.

Como posso evitar isso? Idealmente, gostaria que o sendmail tentasse de novo laiter ou, eventualmente, salvasse o email em um arquivo local como último recurso.

    
por 8jean 05.05.2009 / 01:32

2 respostas

2

Seu servidor quase fez a coisa "correta" aqui.

A extremidade mais distante retornou uma mensagem de erro de classe "5xx", indicando uma falha permanente na entrega da mensagem, portanto, sua entrega final foi interrompida completamente.

Para o seu servidor continuar a enfileirar a mensagem, ele teria que ter recebido uma mensagem de classe "4xx", indicando uma falha temporária.

Para evitar que as mensagens sejam perdidas para sempre, você precisa identificar o que causou o erro "savemail panic" - elas devem ter sido devolvidas aos remetentes.

    
por 05.05.2009 / 01:37
1

Geralmente, sendmail deve salvar localmente qualquer tentativa de envio com falha nos arquivos de spool e tentar novamente por até cinco dias, então provavelmente há algum erro de configuração. De acordo com estas referências:

você precisa ter certeza de que não tem (das referências acima):

  • Alias do postmaster em falta em /etc/aliases
  • O disco rígido está cheio
  • O spool de correio do postmaster está com a propriedade errada
  • O arquivo mbox do postmaster está acima de 2 GB e procmail não pode enviar o e-mail

Além disso, verifique se você não está com um problema selinux . Pode ser que selinux esteja impedindo que sendmail salve o arquivo. EMail nunca deve ser totalmente perdido - na pior das hipóteses, deve ser devolvido ao remetente original e ao postmaster. Se o EMail estiver totalmente perdido, é um erro de configuração ou um bug no sendmail.

O que esse erro significa, no contexto, é que sendmail tentou entregar a mensagem no arquivo de spool ./qfn4461S5s003133 , mas o servidor de correio remoto retornou a resposta de erro "Serviço indisponível". Assim, o local sendmail tentou devolver o EMail. Algo deu errado ao tentar fazer isso, então o e-mail foi abandonado.

Este é o equivalente EMail da falha de barramento duplo de uma CPU. Ou seja, um erro fatal (não ser capaz de salvar ou rejeitar a mensagem EMail) que ocorre em resposta a um erro fatal (o servidor remoto fica indisponível por tempo suficiente para que o sendmail pare de tentar novamente).

    
por 05.05.2009 / 01:41