Calcule o recebimento da entrega bem-sucedida do Postfix Mailserver vs.

Calcule o recebimento da entrega bem-sucedida do Postfix Mailserver vs.

Estou tentando calcular uma porcentagem aproximada de quanto e-mail meu servidor de e-mail processa para uma entrega bem-sucedida versus quanto ele cai no local como e-mail proveniente de servidores de e-mail mal configurados, spam, etc.

Primeiro executei os 2 comandos a seguir no diretório /var/log/ (para capturar entradas no maillog, bem como maillogs mais antigos que foram removidos):

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

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

Mas então pensei que essas entradas poderiam estar coletando duplicatas (especialmente as NOQUEUEs). Então executei o seguinte comando ligeiramente modificado para ver quanta discrepância poderia haver.

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

Olhando minhas entradas de maillog, estou recebendo várias entradas NOQUEUE para tentativas de entrega. Mas acho que isso ocorre porque os servidores de envio de e-mail às vezes tentam várias entregas. Por exemplo:

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]

Então eu tenho 2 perguntas:

  1. Devo me preocupar em capturar entradas duplicadas com um grep justo NOQUEUE: reject: RCPT?
  2. Existe um método melhor que devo considerar ao filtrar essas entradas de log e encontrar os números corretos?
  3. Como posso determinar uma linha exclusiva para cada entrega bem-sucedida. Olhando para a diferença entre grep "dsn=2.0.0, status=sent (delivered to maildir)" * | wc -le grep "dsn=2.0.0, status=sent (250 2.0.0 from MTA(" * | wc -lpodemos dizer que há uma diferença.

Responder1

  1. Essas parecem ser tentativas de entrega separadas, portanto devem ser contadas como tal.

  2. Presumindo que esse tipo de coisa já deve ter sido resolvido, olhei no munin postfix_mailstatsroteiro como é feito lá. Esse é um script Perl, portanto os regexps são compatíveis com Perl:

Estas são entregas bem-sucedidas:

/ to=.*, status=sent /

Estas são rejeições:

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

A parte capturada da regexp (entre colchetes) é o código de rejeição que indica como a mensagem foi rejeitada.

  1. delivered to maildiré uma entrega local, 250 .* from MTAé uma entrega remota, ou seja, dois tipos distintos de entrega; então não é estranho que você conte números diferentes de cada um.

informação relacionada