Monitoruj dostarczanie poczty wychodzącej Postfix

11

Używam GNU Mailman z Postfixem do prowadzenia listy mailingowej i chciałbym monitorować dostarczanie poczty wychodzącej, to znaczy: dla każdej poczty wysłanej z listy sprawdź, czy odpowiedź 250 (OK) została odebrana, a jeśli nie , zgłoś się do mnie.

Na razie robię szybkie i brudne:

# cat /var/log/syslog | grep "smtp.*to=.*" | grep -v 250

Czy istnieje czysty sposób monitorowania wyników programu smtpd?

Stéphane Caron
źródło
1
Z pewnością to musi być bezużyteczne użyciecat ? Przynajmniej możesz zrobićgrep "smtp.*to=.*" /var/log/syslog | grep -v 250
CVn
Osobiście uważam, że ta krucjata jest nieco pedantyczna w większości kontekstów i wolę bardziej czytelny, modułowy format
OP

Odpowiedzi:

8

Nie ma możliwości monitorowania wysłanych wiadomości e-mail w czysty sposób. Możesz tylko grep szczegóły w maillogu Postfix.

Oto przykład:

log='logfile of postfix'
grep "status=sent" $log | \
egrep -ve 'postfix/(cleanup|pickup|master|qmgr|smtpd|local|pipe)'

A także unikaj dzienników dla dkimitp. Jeśli potrzebujesz liczby maili, włóż rurkę na wc -lkońcu.

mailer
źródło
3

Co powiesz na:

multitail -eX "smtp.*to=<(.*)>.*sent.*250" './bin/received' -f /var/log/maillog

./bin/received to skrypt powłoki, który pobiera docelowy adres e-mail jako parametr i coś z nim robi.

Guillermo Payet
źródło
0

Obserwuję, kto wysyła pocztę e-mail przez mój serwer z tym:

tail -f /var/log/mail.log | grep 'sasl'

Pokazuje, kto jest uwierzytelnionym użytkownikiem, który wysyła.

użytkownik1182988
źródło