A vegades trobem missatges a la cua del SMTP que no han estat entregats, i que tampoc han reportat cap NDR a l’usuari que el va enviar.
Això és degut a un problema de l’exchange 2003 SP2 amb el GreyListing.
El Greylisting és una implementació que s’està estenent a tots els productes de correu i filtre d’spam que permet filtrar el correu SPAM segons l’origen, sense haver-lo de comparar amb cap llista BlackList ni buscar a una llista de RBL.
El mecanisme del GreyListing és molt senzill. Quan arriba un correu, el servidor obté la IP Origen, el destinatari i l’adreça origen del missatge.
Si és la primera vegada que veu aquesta tripleta, denega la connexió amb un codi SMTP 451 (reintentar més tard). Aleshores el servidor origen al rebre aquesta resposta, posa el missatge a la cua i ho torna a intentar més tard. Si el “servidor” és un Spammer, el més probable és que no ho torni a reintentar, i ens estalviem el correu SPAM.
Fins aquí tot sembla correcte.
El problema és que Exchange 2003 no sap interpretar correctament aquest missatge SMTP 451, i a vegades (no sempre), deixa el missatge en un estat “catatònic”, sense enviar NDR a l’usuari ni reenviar novament el missatge.
Aquest comportament està definit al categoritzador avançat SMTP (SMTP Advanced Queuing Engine). Per defecte, quan arriba un missatge 400 d’un servidor SMTP, el que fa es reintentar durant un timeout especificat a GlitchRetrySeconds al registre (normalment 60 segons) durant dues vegades més. Si falla 3 vegades, aleshores ho posa al final de la cua SMTP per tornar-ho a reintentar, i per no aturar la resta de la cua.
El problema és que aquest temps de Glitch és massa curt, i aleshores el missatge és queda en un d’aquests 3 reintents, sense passar al cua novament, i sense avisar a l’usuari.
Hi ha diverses solucions a aquest problema. Una d’elles es aturar i arrencar el servei SMTP del servidor. Per fer això podem fer un script que cada dia ho faci. Fem un net start smtpsvr && net stop smtpsvc en una tarea programada, i obtenim aquest reinici programat.
L’altre sistema és esperar que Microsoft tregui un pedaç.
També podem incrementar el temps de GlitchRetrySeconds a 120 segons, i sembla que el problema desapareix.
Quan aparegui l’article solucionant el problema, el penjaré aquí.
Sembla que PSS de Microsoft ja té algun pedaç que proporciona a qui truca solicitant suport, però encara no tinc les dades.


