diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/get_mail_stats | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/bin/get_mail_stats b/bin/get_mail_stats new file mode 100755 index 0000000..0fcf20d --- /dev/null +++ b/bin/get_mail_stats @@ -0,0 +1,69 @@ +#! /usr/bin/env bash + +set -euo pipefail +IFS=$'\n\t' + +time_frame="" +postfix_received="" +rbl_dropped="" +spampd_clean="" +spampd_spam="" +sieve_spam="" +postfix_sent="" + +function set_range() +{ + case $1 in + "month") + time_frame=$(date --date="last month" -I) + ;; + "week") + time_frame=$(date --date="last week" -I) + ;; + "day") + time_frame=$(date -I) + ;; + esac +} + +function get_stats() +{ + set +e + postfix_received=$(journalctl -S "$time_frame" _EXE=/usr/lib/postfix/bin/smtpd|grep "proxy-accept"| wc -l) + rbl_dropped=$(journalctl -S "$time_frame" -u postfix |grep "Service unavailable"| wc -l) + spampd_clean=$(journalctl -S "$time_frame" -u spampd| grep "clean message"| wc -l) + spampd_spam=$(journalctl -S "$time_frame" -u spampd| grep "identified spam"| wc -l) + sieve_spam=$(journalctl -S "$time_frame" _EXE=/usr/lib/dovecot/dovecot-lda| grep "Spam"| wc -l) + postfix_sent=$(journalctl -S "$time_frame" _EXE=/usr/lib/postfix/bin/smtp |grep "sent"| wc -l) + set -e +} + +function print_stats() +{ + echo "Mail statistics for $(hostname) since $time_frame" + echo "Received total: $postfix_received" + echo "RBL dropped: $rbl_dropped" + echo "Spampd clean: $spampd_clean" + echo "Spampd spam: $spampd_spam" + echo "Sieve spam: $spampd_spam" + echo "Sent: $postfix_sent" +} + +case ${@} in + "-w") + set_range "week" + ;; + "-m") + set_range "month" + ;; + "-d") + set_range "day" + ;; + *) + set_range "day" + ;; +esac + +get_stats +print_stats +exit 0 |