iankelling.org
/
git
/
distro-setup
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mainly new feature to intentionally delay sending email
[distro-setup]
/
mailtest-check
diff --git
a/mailtest-check
b/mailtest-check
index 599d4b6a4157ab0ddc31e74b58b0766e8cc61bc4..54db2c2435c295e5a3eb43cb82900c2932dd6ba4 100755
(executable)
--- a/
mailtest-check
+++ b/
mailtest-check
@@
-1,10
+1,10
@@
#!/bin/bash
#!/bin/bash
-# Usage: mail-test-check [slow] [
anything
]
+# Usage: mail-test-check [slow] [
int|nonint
]
#
# slow: do slow checks, like spamassassin
#
#
# slow: do slow checks, like spamassassin
#
-#
anything: consider
non-interactive, dont print unless something went
+#
for
non-interactive, dont print unless something went
# wrong
# wrong
@@
-76,7
+76,7
@@
esac
main() {
main() {
- local -a
unexpected_spamd_results missing_dnswl
last_usec
+ local -a
p_unexpected_spamd_results p_missing_dnswl p_
last_usec
case $HOSTNAME in
bk)
folders=(/m/md/{expertpathologyreview.com,amnimal.ninja}/testignore)
case $HOSTNAME in
bk)
folders=(/m/md/{expertpathologyreview.com,amnimal.ninja}/testignore)
@@
-88,7
+88,7
@@
main() {
;;
*)
folders=(/m/md/l/testignore)
;;
*)
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
)
+ froms=(testignore@je.b8.nz testignore@expertpathologyreview.com testignore@amnimal.ninja ian@iankelling.org z@zroe.org)
if ! $int; then
### begin rsyncing fencepost email ###
# We dont want to exit if rsync fails, that will get caught by
if ! $int; then
### begin rsyncing fencepost email ###
# We dont want to exit if rsync fails, that will get caught by
@@
-145,7
+145,7
@@
EOF
for folder in ${folders[@]}; do
for from in ${froms[@]}; do
declare -i missing_dnswl=0
for folder in ${folders[@]}; do
for from in ${froms[@]}; do
declare -i missing_dnswl=0
- declare -i dnsfail=0
+
#
declare -i dnsfail=0
declare -i unexpected=0
latest=
last_sec=0
declare -i unexpected=0
latest=
last_sec=0
@@
-195,6
+195,10
@@
EOF
# it seems like some versions of spamassassin do BODY_SINGLE_WORD, others dont, we dun care.
# bayes_00 is a new one indicating ham, we dont care if its missing.
BAYES_00|BODY_SINGLE_WORD|FROM_FMBLA_NEWDOM*|autolearn) : ;;
# it seems like some versions of spamassassin do BODY_SINGLE_WORD, others dont, we dun care.
# bayes_00 is a new one indicating ham, we dont care if its missing.
BAYES_00|BODY_SINGLE_WORD|FROM_FMBLA_NEWDOM*|autolearn) : ;;
+
+ # These have somewhat randomly been added and removed, resulting in useless alerts, so ignore them.
+ RCVD_IN_DNSWL_MED|DKIMWL_WL_HIGH) : ;;
+
SPF_HELO_NEUTRAL)
# some of my domains use neutral spf, treat them the same.
results[SPF_HELO_PASS]=t
SPF_HELO_NEUTRAL)
# some of my domains use neutral spf, treat them the same.
results[SPF_HELO_PASS]=t
@@
-211,12
+215,7
@@
EOF
keys=(DKIM_SIGNED DKIM_VALID{,_AU,_EF} SPF_HELO_PASS SPF_PASS TVD_SPACE_RATIO)
if [[ $to == *@gnu.org && $from == *@gnu.org ]]; then
keys=(ALL_TRUSTED TVD_SPACE_RATIO)
keys=(DKIM_SIGNED DKIM_VALID{,_AU,_EF} SPF_HELO_PASS SPF_PASS TVD_SPACE_RATIO)
if [[ $to == *@gnu.org && $from == *@gnu.org ]]; then
keys=(ALL_TRUSTED TVD_SPACE_RATIO)
- elif [[ $to == *@gnu.org ]]; then
- # eggs has RCVD_IN_DNSWL_MED
- keys+=(RCVD_IN_DNSWL_MED)
- elif [[ $from == *@gnu.org ]]; then
- # eggs has this. it used to have DKIMWL_WL_HIGH sometime in 2022
- keys+=(RCVD_IN_DNSWL_MED)
+ # from eggs had DKIMWL_WL_HIGH sometime in 2022, then DKIMWL_WL_MED unti march 2023
fi
for t in ${keys[@]}; do
fi
for t in ${keys[@]}; do
@@
-258,13
+257,13
@@
EOF
# echo mailtest-check: cat $latest:
# cat $latest
# echo mailtest-check: end of cat
# echo mailtest-check: cat $latest:
# cat $latest
# echo mailtest-check: end of cat
- # echo "$(tput setaf 5 2>/dev/null ||:)█$(tput sgr0 2>/dev/null||:)%.0s" $(eval echo "{1..${COLUMNS:-60}}")
#fi
fi
rm -f $resultfile
for r in ${results[@]}; do
case $r in
#fi
fi
rm -f $resultfile
for r in ${results[@]}; do
case $r in
- # iank: for when we want to handle dns errors differently
+ # iank: for when we want to handle dns errors differently.
+ # also uncomment declaration of dnsfail above.
# DKIM_INVALID|T_SPF_TEMPERROR|T_SPF_HELO_TEMPERROR)
# dnsfail+=1
# ;;
# DKIM_INVALID|T_SPF_TEMPERROR|T_SPF_HELO_TEMPERROR)
# dnsfail+=1
# ;;
@@
-274,23
+273,19
@@
EOF
esac
done
for miss in ${missing[@]}; do
esac
done
for miss in ${missing[@]}; do
- # We expect dns failures from time to time, so
- # we count them separately and alert differently.
+ # At some point we had annoying dns failures that we couldn't solve so we
+ # we counted dns fail related results separately and alert differently.
+ # DKIM_VALID|DKIM_VALID_AU|DKIM_VALID_EF|SPF_HELO_PASS|SPF_PASS|
case $miss in
case $miss in
- # iank: dns fail
- # DKIM_VALID|DKIM_VALID_AU|DKIM_VALID_EF|SPF_HELO_PASS|SPF_PASS|
- RCVD_IN_DNSWL_MED|DKIMWL_WL_HIGH)
- missing_dnswl+=1
- ;;
*)
unexpected+=1
;;
esac
done
*)
unexpected+=1
;;
esac
done
- mapfile -O ${#
missing_dnswl[@]} -t
missing_dnswl <<EOF
+ mapfile -O ${#
p_missing_dnswl[@]} -t p_
missing_dnswl <<EOF
mailtest_check_missing_dnswl{folder="$folder",from="$from"} $missing_dnswl
EOF
mailtest_check_missing_dnswl{folder="$folder",from="$from"} $missing_dnswl
EOF
- mapfile -O ${#
unexpected_spamd_results[@]} -t
unexpected_spamd_results <<EOF
+ mapfile -O ${#
p_unexpected_spamd_results[@]} -t p_
unexpected_spamd_results <<EOF
mailtest_check_unexpected_spamd_results{folder="$folder",from="$from"} $unexpected
EOF
fi # if spamdpid
mailtest_check_unexpected_spamd_results{folder="$folder",from="$from"} $unexpected
EOF
fi # if spamdpid
@@
-301,7
+296,7
@@
EOF
e $((age_sec / 60)):$(( age_sec % 60 )) ago. to:$to from:$from $latest
# usec = unix seconds
e $((age_sec / 60)):$(( age_sec % 60 )) ago. to:$to from:$from $latest
# usec = unix seconds
- mapfile -O ${#
last_usec[@]} -t
last_usec <<EOF
+ mapfile -O ${#
p_last_usec[@]} -t p_
last_usec <<EOF
mailtest_check_last_usec{folder="$folder",from="$from"} $last_sec
EOF
done # end for from in ${froms[@]}
mailtest_check_last_usec{folder="$folder",from="$from"} $last_sec
EOF
done # end for from in ${froms[@]}
@@
-310,13
+305,13
@@
EOF
dir=/var/lib/prometheus/node-exporter
path=$dir/mailtest-check.prom.$$
if $doprom && [[ -e $dir ]]; then
dir=/var/lib/prometheus/node-exporter
path=$dir/mailtest-check.prom.$$
if $doprom && [[ -e $dir ]]; then
- for l in "${
unexpected_spamd_results missing_dnswl
[@]}"; do
+ for l in "${
p_unexpected_spamd_results
[@]}"; do
printf "%s\n" "$l" >>$path
done
printf "%s\n" "$l" >>$path
done
- for l in "${missing_dnswl[@]}"; do
+ for l in "${
p_
missing_dnswl[@]}"; do
printf "%s\n" "$l" >>$path
done
printf "%s\n" "$l" >>$path
done
- for l in "${last_usec[@]}"; do
+ for l in "${
p_
last_usec[@]}"; do
printf "%s\n" "$l" >>$path
done
mv $path $dir/mailtest-check.prom
printf "%s\n" "$l" >>$path
done
mv $path $dir/mailtest-check.prom