Назад | Перейти на главную страницу

Exim находит общее количество писем, отправленных за последние 24 часа на пользователя

Хотите просмотреть журналы exim за последние 24 часа и просуммировать общее количество писем для каждого пользователя, пожалуйста, предложите мне команду (ы)

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

Это может зависеть от того, как настроено ваше ведение журнала, но я думаю, что это будет работать в системе по умолчанию:

grep -oP "A=\K([A-Za-z0-9_.:]+)" /var/log/exim4/mainlog | sort | uniq -c | sort -nr

В результате получится что-то вроде этого:

151 dovecot_plain:grafana
 12 dovecot_plain:jolt
  6 dovecot_plain:banana
  2 dovecot_login:banana

Я здесь ищу А = который содержит имя пользователя и способ их аутентификации из / var / журнал / exim4 / mainlog, затем я передаю его sort и uniq -c, который объединяет их в группу и дает вам номер. Последний sort -nr просто дает мне счет в упорядоченной группе в обратном порядке (сначала максимальное число).

Если у вас разные типы аутентификации, допустим, dovecot_plain и dovecot_login но с тем же именем пользователя, то самый простой способ избавиться от этого - добавить другой grep, который получит только то, что стоит после ":", например:

grep -oP "A=\K([A-Za-z0-9_.:]+)" /var/log/exim4/mainlog | grep -oP ":\K(.*)" | sort | uniq -c | sort -nr

И вывод:

151 grafana
 12 jolt
  8 banana

Примечание: Я не учел 24-часовой лимит, так как это также зависит от того, как настроено ведение журнала, и это становится более сложным, и я думаю, что это хорошее начало. В противном случае вам нужно как-то отфильтровать временные метки журнала с помощью grep, чтобы отфильтровать даты, а затем передать их в мою строку grep.