Calcule la recepción de la entrega exitosa del servidor de correo Postfix frente al fracaso

Calcule la recepción de la entrega exitosa del servidor de correo Postfix frente al fracaso

Estoy tratando de calcular un porcentaje aproximado de la cantidad de correo electrónico que procesa mi servidor de correo para una entrega exitosa frente a la cantidad que cae en el acto como correo electrónico proveniente de servidores de correo mal configurados, spam, etc.

Primero ejecuté los siguientes 2 comandos en el directorio /var/log/ (para capturar entradas en el registro de correo, así como registros de correo más antiguos que se han eliminado):

grep "dsn=2.0.0, status=sent (delivered to maildir)" * | wc -l
7814

grep "NOQUEUE: reject: RCPT" * | wc -l
13338

Pero luego pensé que estas entradas podrían estar recogiendo duplicados (especialmente las NOQUEUE). Entonces ejecuté el siguiente comando ligeramente modificado para ver cuánta discrepancia podría haber.

grep "dsn=2.0.0, status=sent (250 2.0.0 from MTA(" * | wc -l
8839

Al mirar las entradas de mi registro de correo, recibo varias entradas NOQUEUE para intentos de entrega. Pero creo que eso se debe a que los servidores de correo emisor a veces intentan realizar entregas múltiples. Por ejemplo:

Aug 10 10:48:24 mail postfix/smtpd[7159]: NOQUEUE: reject: RCPT from unknown[112.198.103.178]: 450 4.7.1 Client host rejected: cannot find your reverse hostname, [112.198.103.178]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<112.198.103.178>
Aug 10 10:48:24 mail postfix/smtpd[7159]: NOQUEUE: reject: RCPT from unknown[112.198.103.178]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<112.198.103.178>
Aug 10 10:48:24 mail postfix/smtpd[7159]: NOQUEUE: reject: RCPT from unknown[112.198.103.178]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<112.198.103.178>
Aug 10 10:48:24 mail postfix/smtpd[7159]: disconnect from unknown[112.198.103.178]

Entonces tengo 2 preguntas:

  1. ¿Debería preocuparme por detectar entradas duplicadas con un grep de just NOQUEUE: reject: RCPT?
  2. ¿Existe algún método mejor que debería considerar al filtrar estas entradas de registro y obtener los números correctos?
  3. ¿Cómo puedo determinar una línea única para cada entrega exitosa? Al observar la diferencia entre grep "dsn=2.0.0, status=sent (delivered to maildir)" * | wc -ly grep "dsn=2.0.0, status=sent (250 2.0.0 from MTA(" * | wc -lpodemos decir que hay una diferencia.

Respuesta1

  1. Parecen ser intentos de entrega separados, por lo que deben contarse como tales.

  2. Suponiendo que este tipo de cosas ya se hayan abordado, miré en el munin postfix_mailstatsguión cómo se hace allí. Se trata de un script en Perl, por lo que las expresiones regulares son compatibles con Perl:

Estas son entregas exitosas:

/ to=.*, status=sent /

Estos son los rechazados:

/postfix\/smtpd.*proxy-reject: \S+ (\S+)/
/postfix\/smtpd.*reject: \S+ \S+ \S+ (\S+)/
/postfix\/cleanup.* reject: (\S+)/

La parte capturada de la expresión regular (entre paréntesis) es el código de rechazo que indica cómo se rechazó el mensaje.

  1. delivered to maildires una entrega local, la 250 .* from MTAes una entrega a distancia, es decir, dos tipos distintos de entrega; así que no es extraño que cuentes números diferentes de cada uno.

información relacionada