X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=mailtest-check;fp=mailtest-check;h=c7d40c17502e967b808e2e251a6b50b63cb1464c;hb=774fe9ab8c8d5c71614feda5a283b4a91fb3f145;hp=e99789594fc131d04c75a237e94da434e848c82f;hpb=46fb17d56b093264b69cc20192603da2604111ca;p=distro-setup diff --git a/mailtest-check b/mailtest-check index e997895..c7d40c1 100755 --- a/mailtest-check +++ b/mailtest-check @@ -93,7 +93,31 @@ main() { folders=(/m/md/l/testignore) froms=(testignore@je.b8.nz testignore@expertpathologyreview.com testignore@amnimal.ninja ian@iankelling.org z@zroe.org iank@gnu.org) if ! $int; then - timeout 120 rsync --chown iank:iank -e "ssh -oIdentitiesOnly=yes -F /dev/null -i /root/.ssh/jtuttle" -t --inplace -r 'jtuttle@fencepost.gnu.org:/home/j/jtuttle/Maildir/new/' /m/md/l/testignore/new + ### begin rsyncing fencepost email ### + # We dont want to exit if rsync fails, that will get caught by + # our later test by virtue of not having the latest email. + did_rsync=false + try_start_time=$EPOCHSECONDS + try_limit=140 # somewhat arbitrary value + while ! $did_rsync; do + try_left=$(( try_limit - ( EPOCHSECONDS - try_start_time) )) + timeout=120 # somewhat arbitrary value + if (( try_left < 0 )); then + break + fi + if (( try_left < timeout )); then + timeout=$try_left + fi + if timeout $timeout rsync --chown iank:iank -e "ssh -oIdentitiesOnly=yes -F /dev/null -i /root/.ssh/jtuttle" -t --inplace -r 'jtuttle@fencepost.gnu.org:/home/j/jtuttle/Maildir/new/' /m/md/l/testignore/new; then + did_rsync=true + else + sleep 4 + fi + done + if ! $did_rsync; then + echo mailtest-check: warning: fencepost rsync failed + fi + ### end rsyncing fencepost email ### fi ;; esac @@ -138,6 +162,7 @@ EOF last_sec="$file_sec" fi done <$tmpfile + rm -f $tmpfile to=$(awk '/^Envelope-to: / {print $2}' $latest) @@ -237,12 +262,21 @@ EOF #fi fi rm -f $resultfile - unexpected=$(( unexpected + ${#results[@]} )) + for r in ${results[@]}; do + case $r in + DKIM_INVALID|T_SPF_TEMPERROR|T_SPF_HELO_TEMPERROR) + missing_dnswl+=1 + ;; + *) + unexpected=$(( unexpected + 1 )) + ;; + esac + done for miss in ${missing[@]}; do - # We expect dns reputation services to go down from time to time, so + # We expect dns failures from time to time, so # we count them separately and alert differently. case $miss in - RCVD_IN_DNSWL_MED|DKIMWL_WL_HIGH) + DKIM_VALID|DKIM_VALID_AU|DKIM_VALID_EF|SPF_HELO_PASS|SPF_PASS|RCVD_IN_DNSWL_MED|DKIMWL_WL_HIGH) missing_dnswl+=1 ;; *)