Postfix corrupt queue: como trabalhar com isso

3

O servidor postfix coloca às vezes os e-mails na fila corrompida. Esses e-mails nunca são verificados porque há um erro no arquivo (vejo "tipo de registro incorreto: 43 no conteúdo da mensagem"). Na documentação, posso ver "Arquivos de fila ilegíveis ou danificados são movidos aqui para inspeção".

OK. Eu posso lê-los com postcat, mas depois disso, o que devo fazer? Posso removê-los sem erro? O que devo fazer para colocá-los de volta na fila de envio? Eu encontrei um lugar para mover os arquivos para maildrop mas nada acontece.

Obrigado!

Dom

    
por Dom 29.01.2010 / 09:58

3 respostas

7

É um comportamento bastante estranho, eu nunca vi postfix fazendo isso, sempre, você tem um postfix muito antigo, ou você deve ter algum tipo de problema de hardware em algum lugar, como corrupção de memória ou corrupção do disco rígido.

Para colocar de volta seu e-mail na fila, a maneira mais fácil seria fazer isso com postcat e um pouco de awk , algo como (mas YMMV):

postcat -q <m-id>  |
awk 'BEGIN {data=0}
     /^*** HEADER EXTRACTED/ {data=0;print "."; print "quit"}
     data==1 {if ($0 == ".") { $0 = ".."}; print}
     /^*** MESSAGE CONTENTS/ {data=1; print "DATA"}
     data==0 && /^sender:/ {print "HELO myfqdn\nMAIL FROM: " $2}
     data==0 && /^original_recipient: / {print "RCPT TO: " $2}' |
sendmail -bs
    
por 02.02.2010 / 10:05
4

Acabei com mensagens corrompidas depois de editar manualmente mensagens erradas com o vim. Para corrigir isso eu tive que editar os arquivos usando um editor hexadecimal okteta . Resumidamente, a primeira linha da mensagem contém 5 valores ascii. O primeiro e último valores são o comprimento da mensagem, o segundo valor é o tamanho do envelope. Não tenho certeza sobre os outros valores.

Cada registro é precedido por um tipo de registro de 1 byte e um comprimento de registro de 1 byte. Ambos os valores são binários e precisam ser alterados conforme necessário com um editor hexadecimal.

Você pode usar várias opções no postcat para detectar se há algum erro.

    postcat <msgid>
    postcat -b <msgid>
    postcat -e <msgid>
    postcat -v <msgid>

Para reenviar a mensagem, tive que adicionar "HELO myfqdn \ n" imediatamente antes do "MAIL FROM:"

    
por 29.11.2012 / 16:22
0

Você pode fornecer um número de versão do postfix? Qual distribuição é essa?

(Ainda é mais provável que isso indique um problema de hardware.)

EDIT: então o problema de corrupção e / ou memória do sistema de arquivos. Tente rodar o memtest.

    
por 02.02.2010 / 10:26

Tags