#! /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