Add environment option to filter rejected emails

This commit is contained in:
myve 2025-09-28 11:41:07 +00:00
commit acc168d13e
2 changed files with 19 additions and 6 deletions

3
.env
View file

@ -31,6 +31,9 @@ MYVEMAIL_BLACKLIST_DOMAINS=
# Blacklist invididual email addresses (eg. email@website.tld,email2@website2.tld2)
MYVEMAIL_BLACKLIST_EMAILS=
# Filter rejected email updates from a pattern separated by commas
MYVEMAIL_REJECT_FILTER=
# Volumes
MYVEMAIL_VOLUME_MARIADB=
MYVEMAIL_VOLUME_SSL=

View file

@ -1,9 +1,18 @@
#!/usr/bin/env bash
# Check filters
unset filters
if [ ${MYVEMAIL_REJECT_FILTER} ]
then
filters+=(${MYVEMAIL_REJECT_FILTER//,/ })
fi
# Notify if rejected emails were found
while true
do
bash -c 'tail -n +0 --pid=$$ -f /var/log/mail/maillog.debug* | grep --line-buffered -F -v -f /var/log/mail/reject.log | { sed "/NOQUEUE: reject/q" && kill $$ ;}'
grep -h "NOQUEUE: reject" /var/log/mail/maillog.debug* | grep -F -v -f /var/log/mail/reject.log >>/var/log/mail/reject.log
if ! tail -n 1 /var/log/mail/reject.log | grep -i -q "$(printf '%s\|' ${filters[@]:-impossible-string-that-would-never-be-grepped} | sed 's|\\\|$||')"
then
cat <<- mail | sendmail reject@${MYVEMAIL_DOMAIN}
From: reject@${MYVEMAIL_DOMAIN}
To: reject@${MYVEMAIL_DOMAIN}
@ -11,4 +20,5 @@ do
$(tail -n 1 /var/log/mail/reject.log)
mail
fi
done >/dev/null &