X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=mailtest-check;h=7454086099322db19eec59bee04471d555fc297d;hb=d7551546ac323c5d4b49370c885646bcf96e959f;hp=81363012fc0b3de90f64b47ee3213caaa4a21256;hpb=e958999a4ab6fddd723270b596b4899c0811fa41;p=distro-setup diff --git a/mailtest-check b/mailtest-check index 8136301..7454086 100755 --- a/mailtest-check +++ b/mailtest-check @@ -21,7 +21,9 @@ e() { $int || return 0; printf "mailtest-check: %s\n" "$*"; } # We run this cronjob along with sending the test email every 5 minutes, # so give it 1 minute to arrive, then if the latest email is older than # 7 minutes, the last 2 haven't arrived in a reasonable amount of time. -min_limit=7 +# However, when machines reboot things can get delayed, so add 10 mins, +# not sure if that is a good number or not. +min_limit=17 # spamassassin checking takes about 8 seconds. only do that every @@ -76,12 +78,21 @@ esac getspamdpid() { if [[ ! $spamdpid || ! -d /proc/$spamdpid ]]; then - spamdpid=$(systemctl show --property MainPID --value spamassassin | sed 's/^1$//' ||:) + # try twice in case we are restarting, it happens. + for i in 1 2; do + spamdpid=$(systemctl show --property MainPID --value spamassassin | sed 's/^[10]$//' ||:) + if [[ $spamdpid ]]; then + break + fi + sleep 30 + done fi } getspamdpid pr() { - cat >>/var/lib/prometheus/node-exporter/mailtest-check.prom.$$ + if [[ -e /var/lib/prometheus/node-exporter ]]; then + cat >>/var/lib/prometheus/node-exporter/mailtest-check.prom.$$ + fi } pr < 0 )) @@ -131,7 +142,8 @@ for folder in ${folders[@]}; do # servers. # example line that sed is parsing: # (-0.1 / 5.0 requ) DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,SPF_HELO_PASS=-0.001,SPF_PASS=-0.001,TVD_SPACE_RATIO=0.001 autolearn=_AUTOLEARN - for r in $($spamcpre sudo -u Debian-exim spamassassin -t --cf='score PYZOR_CHECK 0' <"$latest" | tail -n2 | head -n1 | sed -r 's/^\([^)]*\) *//;s/=[^, ]*([, ]|$)/ /g'); do + raw_results="$($spamcpre sudo -u Debian-exim spamassassin -t --cf='score PYZOR_CHECK 0' <"$latest" | tail -n2 | head -n1 | sed -r 's/^\([^)]*\) *//;s/=[^, ]*([, ]|$)/ /g')" + for r in $raw_results; do case $r in # got this in an update 2022-01. dun care T_SCC_BODY_TEXT_LINE|SCC_BODY_SINGLE_WORD) : ;; @@ -217,4 +229,8 @@ if $slow; then mailtest_check_unexpected_spamd_results $unexpected EOF fi -mv /var/lib/prometheus/node-exporter/mailtest-check.prom.$$ /var/lib/prometheus/node-exporter/mailtest-check.prom + +dir=/var/lib/prometheus/node-exporter +if [[ -e $dir ]]; then + mv $dir/mailtest-check.prom.$$ $dir/mailtest-check.prom +fi