O que faria com que meu servidor SendMail não reconhecesse o recebimento de uma sequência TCP?

1

Meu conhecimento sobre o TCP / IP Stack está um pouco enferrujado, então, por favor, tenha paciência comigo ...

Eu tenho um servidor CentOS 5.7 com SendMail e estou vendo problemas intermitentes de tempo limite enviando e-mails (principalmente e-mails maiores) para outros domínios remotos. Isso não acontece com todos os anexos ou domínios de destinatários. Apenas algum. Depois de alguns problemas com a resolução de problemas, acho que diminuí o para o TCP Sequences não sendo reconhecido.

Aqui está um detalhamento da sessão TCP de uma captura de pacote que coletei diretamente no meu MTA (fooMTA):

Packet 1 - 11: Standard TCP handshake followed by initial SMTP conversation.  No errors.  
Packet #12 Recipient MTA: TCP sequence 231.  Ack 91. 
Packet #13 FooMTA: TCP sequence 91.  Ack 305. 
Packet #14 FooMTA: TCP sequence 1115.  Ack 305. 
Packet #15 Recipient MTA: TCP sequence 305.  Ack 2495.
Packet #16 FooMTA: TCP sequence 2495.  Ack 305.
Packet #17 FooMTA: TCP sequence 5255.  Ack 305. 
Packet #18: Recipient MTA: TCP sequence 305.  Ack 5255. 
Packet #19: FooMTA: TCP sequence 6635.  Ack 305. 
Packet #20: FooMTA: TCP sequence 8015.  Ack 305. 
Packet #21: Recipient MTA: TCP Sequence 305.  Ack 8015.
Packet #22: FooMTA: TCP Sequence 10775.  Ack 305. 
Packet #23: FooMTA: TCP Sequence 13535.  Ack 305. 
Packet #24: Recipient MTA: TCP sequence 305.  Ack 10775
Packet #25: FooMTA: TCP Sequence 14915.  Ack 305

Continua assim com meu servidor ainda pensando que não recebeu a sequência 305 ... em resposta, o lado remoto eventualmente retransmite seus dados anteriores pensando que nunca chegou. Eventualmente, a lacuna fica tão grande que nenhum novo dado é enviado e o MTA remoto continua retransmitindo coisas antigas. Isso contribui para um backoff exponencial e, eventualmente, o lado remoto desiste.

O que é estranho para mim é que eu vejo a sequência TCP "faltante" (305 neste caso) chegando de volta ao meu servidor (via uma captura de pacote coletada diretamente do fooMTA) Então eu não entendo porque meu servidor continua pedindo isto.

Isso pode estar relacionado ao firewall? Qual seria o próximo passo na solução de problemas?

    
por Mike B 20.06.2012 / 06:54

1 resposta

1

Tente isto: no seu /etc/sysctl.conf adicione as seguintes linhas na parte inferior:

net.ipv4.tcp_rmem = 4096 87380 174760
net.ipv4.tcp_wmem = 4096 16384 131072
net.ipv4.tcp_window_scaling = 0

Então, como root, execute sysctl -p

Se isso funcionar, ele contorna o problema. Não resolve isso. Pode ser uma variedade de razões que causam isso, de um roteador não tratar adequadamente o TCP Window Scaling, para um switch que também sofre com isso, até para cabeamento defeituoso. Em alguns casos, descobri uma estranha combinação do driver de dispositivo da interface de rede e todas as opções acima.

    
por 20.06.2012 / 09:57