Как я могу отслеживать исходящую электронную почту из Unix и Sendmail?
Вопрос
Я использую сервер FreeBSD, и мне было отправлено предупреждение о том, что с моего сервера был отправлен спам.У меня он не настроен как открытое реле, и я настроил конфигурацию sendmail.Я хотел бы знать, кто какое электронное письмо отправляет, а также его имя пользователя, тему электронного письма, а также сводную информацию о том, сколько почты они отправили.Я хотел бы создать отчет по журналу, аналогичный тому, как это делается при обработке журналов сервера Apache.
Какие у меня есть варианты?
Решение
Одна из идей состоит в том, чтобы использовать псевдоним sendmail в качестве специального сценария, который просто переносит аргументы sendmail в конец журнала перед вызовом sendmail обычным способом.
Другие советы
Вы также можете отслеживать все системные вызовы write
и read
функции, выполнив:
ps auxw | grep sendmail | awk '{print"-p " $2}' | xargs strace -s 256 -f 2>&1 | grep -E $'@|(([0-9]+\.){3}[0-9]+)' | tee -a "/var/log/sendmail-logs.log"
Это даст вам прямой доступ к информации, я думаю, вы не сможете пойти глубже.
Можете ли вы дать примеры журналов?Я думаю, что лучше всего просмотреть их с помощью grep или Cut, чтобы получить отправляемые источники/назначения.Кроме того, вы можете написать сценарий Perl для его автоматизации, если у вас есть правильное регулярное выражение.Это будет лучший вариант.
Если FreeBSD имеет конфигурацию по умолчанию, у вас есть только один способ обработки исходящей почты: проверьте, что отправляется через вашу систему sendmail в /etc/mail
.
Вся исходящая почта должна регистрироваться /var/log/maillog