У меня есть сервер Exim с несколькими настроенными доменами. В каждом домене у меня есть несколько учетных записей электронной почты. Время от времени компьютер, настроенный с одним из этих адресов электронной почты, заражается и начинает рассылать спам.
Раньше я использовал Isoqlog для получения отчетов о самых популярных отправителях писем, но он больше не работает с тех пор, как был обновлен в 2005 году.
Мне нужен способ узнать 50 самых популярных аккаунтов электронной почты, рассылающих спам, за последние 24 часа (не отправителя, а аккаунт, который используется для аутентификации при отправке спама. Отправитель может быть поддельным, поэтому достоверных данных нет).
Есть идеи, есть ли пакет (типа Isoqlog или аналогичный), который может это сделать? Спасибо
решение1
Вам не нужна сложная программа для извлечения информации из файла журнала.Строка журнала Exim4для входящей почты выглядит так:
2020-01-18 02:19:41 1iscm4-0000Nt-TE <= [email protected]\
H=verified_rdns.example.net (helo.example) [192.0.2.1] P=esmtpsa\
X=TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128 CV=no A=dovecot_gssapi:auth_user\
S=3812 [email protected]
с отправителем конверта [email protected]
, отправляющим хостом H=verified_rdns.example.net (helo.example) [192.0.2.1]
и списком tag=value
.
Нас больше всего интересует тег, A
который имеет значение вида authenticator:auth_user
, где authenticator
- имяАутентификатор Exim4который вы указали в файле конфигурации и auth_user
являетесь аутентифицированным пользователем.
Собрав все вместе, мы можем вывести количество электронных писем, отправленных каждым пользователем за время, охватываемое файлом журнала, с помощью простого bash
скрипта:
#!/bin/bash
if [ $# -lt 1 ]; then
2>& echo Usage: $0 "<exim_mainlog_file>"
2>& echo Example: $0 /var/log/exim4/mainlog
exit 1
fi
# To save typing
d='[[:digit:]]'
a='[[:alnum:]]';
pref="^$d\{4\}-$d\{2\}-$d\{2\} $d\{2\}:$d\{2\}:$d\{2\} $a\{6\}-$a\{6\}-$a\{2\}"
logfile="$1"
zgrep "$pref <=" "$logfile" |
grep -oh "A=[[:alnum:]_]\+:[[:alnum:]_]\+" |
cut -d : -f 2 |
sort |
uniq -c |
sort -rn