Рассчитать количество успешных и неудачных доставок на почтовый сервер Postfix

Рассчитать количество успешных и неудачных доставок на почтовый сервер Postfix

Я пытаюсь подсчитать приблизительный процент того, сколько писем мой почтовый сервер обрабатывает для успешной доставки, по сравнению с тем, сколько писем он сразу теряет как приходящие с неправильно настроенных почтовых серверов, спам и т. д.

Сначала я выполнил следующие 2 команды в каталоге /var/log/ (чтобы перехватить записи в почтовом журнале, а также старые почтовые журналы, которые были удалены):

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

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

Но затем я подумал, что эти записи могут содержать дубликаты (особенно NOQUEUE). Поэтому я запустил следующую слегка измененную команду, чтобы посмотреть, насколько велико может быть расхождение.

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

Глядя на записи в почтовом журнале, я получаю несколько записей NOQUEUE для попыток доставки. Но я думаю, это потому, что отправляющий почтовый сервер(ы) иногда пытается выполнить несколько доставок. Например:

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]

Итак, у меня 2 вопроса:

  1. Стоит ли мне беспокоиться о выявлении дубликатов записей с помощью grep NOQUEUE: reject: RCPT?
  2. Есть ли лучший метод, который мне следует рассмотреть при фильтрации этих записей журнала и получении правильных цифр?
  3. Как определить уникальную строку для каждой успешной доставки. Глядя на разницу между grep "dsn=2.0.0, status=sent (delivered to maildir)" * | wc -lи grep "dsn=2.0.0, status=sent (250 2.0.0 from MTA(" * | wc -lмы можем сказать, что разница есть.

решение1

  1. Похоже, это отдельные попытки доставки, поэтому их следует учитывать как таковые.

  2. Предполагая, что подобные вещи уже были решены, я посмотрел на munin postfix_mailstatsскрипт, как это там сделано. Это скрипт perl, поэтому регулярные выражения совместимы с perl:

Вот успешные поставки:

/ to=.*, status=sent /

Это брак:

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

Захваченная часть регулярного выражения (в скобках) — это код отклонения, который указывает, каким образом сообщение было отклонено.

  1. delivered to maildirэто локальная доставка, 250 .* from MTAэто удаленная доставка, т.е. это два разных типа доставки; поэтому неудивительно, что вы подсчитываете разное количество каждого из них.

Связанный контент