From acc168d13e166cd3275bdfd5b6fce8b0bd677e49 Mon Sep 17 00:00:00 2001 From: myve Date: Sun, 28 Sep 2025 11:41:07 +0000 Subject: [PATCH] Add environment option to filter rejected emails --- .env | 3 +++ .../run/docker-entrypoint/init.d/70-reject.sh | 22 ++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.env b/.env index b44966c..e8e6f0a 100644 --- a/.env +++ b/.env @@ -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= diff --git a/build/run/docker-entrypoint/init.d/70-reject.sh b/build/run/docker-entrypoint/init.d/70-reject.sh index 8fb4d86..81abe42 100755 --- a/build/run/docker-entrypoint/init.d/70-reject.sh +++ b/build/run/docker-entrypoint/init.d/70-reject.sh @@ -1,14 +1,24 @@ #!/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 - cat <<- mail | sendmail reject@${MYVEMAIL_DOMAIN} - From: reject@${MYVEMAIL_DOMAIN} - To: reject@${MYVEMAIL_DOMAIN} - Subject: Rejected email found + 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} + Subject: Rejected email found - $(tail -n 1 /var/log/mail/reject.log) - mail + $(tail -n 1 /var/log/mail/reject.log) + mail + fi done >/dev/null &