¿Cuál es la mejor manera de analizar los encabezados del correo electrónico devuelto (no se puede entregar) que se envía de vuelta a mi servidor y determinar si se trata de un rechazo suave o duro?
Solo envío correos electrónicos de suscripción voluntaria a mis usuarios, pero ocasionalmente algunas direcciones de correo electrónico quedan obsoletas. Cuando un correo electrónico se devuelve a mi servidor, me gustaría saber por qué se devolvió (suave / duro). Entonces puedo tratarlo adecuadamente en mi base de datos y / o marcar al usuario para que actualice su correo electrónico la próxima vez que inicie sesión.
Estoy usando Ubuntu y Postfix. He implementado con éxito VERP con alias y alias virtuales. Por lo tanto, los correos electrónicos devueltos tienen una ruta de retorno de [email protected] , y puedo canalizarlos a un script.
Ahora que tengo la configuración VERP, sé a quién se envió el correo electrónico original, pero necesito analizar los encabezados de correo devueltos para determinar si es un rebote suave o un rebote duro.
¿Cuál es la mejor manera de manejar esto? Según tengo entendido, no todos los servidores de correo cumplen las mismas reglas, y los encabezados pueden tener una variedad de formatos. ¿Hay algún proyecto de código abierto que haga un seguimiento de este tipo de cosas? ¿Algo simple que pueda implementar que clasifique la mayoría de los rebotes correctamente?
Estoy tratando de proteger la reputación de mi servidor de correo, por lo que cualquier ayuda es muy apreciada.
fuente
grep " dsn=5." /var/log/mail.log | pcregrep -o1 " to=<(.+?)>" | sort | uniq -c
Generalmente hay dos tipos de rebotes
El primer caso ya estaba cubierto por la excelente respuesta de Esa Jokinen arriba. Su mejor apuesta es analizar el registro de correo.
El segundo caso fue un caso especial de rebotes. El escenario de ejemplo:
Aquí el ejemplo del segundo tipo devuelve el correo electrónico. Hay una regla de reenvío del servidor de correo de Yahoo [email protected] -> [email protected] . Lamentablemente, el servidor de correo de example.net rechaza el mensaje :(
Para este caso, su único método es analizar el mensaje de rebotes. Desafortunadamente, no hay un formato de rebotes estándar, por lo que debe analizar el cuerpo y determinar el rechazo causado.
La lista de verificación de características de su análisis de rebote postfix:
Para la segunda característica, puedes buscar en Google algún mensaje de rechazo común. El ejemplo es este bounce-regex-list.xml de Jakub Liska .
Esa Jokinen hizo un buen punto en el comentario a continuación sobre estos dos tipos de rebote. Si su objetivo es mantener la reputación del servidor, entonces tratar con el primer tipo de rebote debería ser suficiente. El segundo rebote fue sobre limpiar tus listas. Por lo tanto, se debe borrar el correo electrónico muerto, liberando así algunos recursos en su servidor.
Algunos administradores de listas de correo como PHPlist y Mailman también se ocupan de este problema de rebote al analizar el cuerpo del correo electrónico ya que no tienen recursos para analizar el registro de correo.
fuente