Add a sendmail every time a rejected email is found

This commit is contained in:
myve 2025-02-25 22:34:27 +00:00
commit 9e4093fea1
3 changed files with 42 additions and 22 deletions

View file

@ -6,9 +6,9 @@ set -e
trap '[ "${?}" -ne 77 ] || exit 77' ERR trap '[ "${?}" -ne 77 ] || exit 77' ERR
function die function die
{ {
local reset="\e[0m" local reset="\e[0m"
local red="\e[0m\e[0;31m" local red="\e[0m\e[0;31m"
local yellow="\e[0m\e[0;33m" local yellow="\e[0m\e[0;33m"
echo -e "${red} echo -e "${red}
Error encountered in the following init script: Error encountered in the following init script:
@ -18,23 +18,23 @@ ${red}
Aborting... Aborting...
${reset}" ${reset}"
exit 77 exit 77
} }
# Reset logs # Reset logs
for log in /var/log/maillog{,.{0..9}} /var/log/maillog.debug{,.{0..9}} for log in /var/log/mail/maillog{,.{0..9}} /var/log/mail/maillog.debug{,.{0..9}} /var/log/mail/reject.log
do do
if [ ! -f ${log} ] if [ ! -f ${log} ]
then then
touch ${log} touch ${log}
fi fi
done done
syslogd -O /var/log/maillog -s 2000000 -b 10 syslogd -O /var/log/mail/maillog -s 2000000 -b 10
# Run all scripts in init folder # Run all scripts in init folder
for file in /docker-entrypoint/init.d/*.sh for file in /docker-entrypoint/init.d/*.sh
do do
bash -c ${file} || die ${file} bash -c ${file} || die ${file}
done done
# Reload services # Reload services
@ -43,4 +43,4 @@ postfix reload &&
echo -e "\n\e[1;32mMail service is ready\e[0m\n" echo -e "\n\e[1;32mMail service is ready\e[0m\n"
# Monitor log # Monitor log
tail -f /var/log/maillog{,.{0..9}} /var/log/maillog.debug{,.{0..9}} tail -f /var/log/mail/maillog{,.{0..9}} /var/log/mail/maillog.debug{,.{0..9}}

View file

@ -6,22 +6,41 @@ atd
# Roundcube cleanup (daily) # Roundcube cleanup (daily)
while true while true
do do
at -f /usr/share/webapps/roundcube/bin/cleandb.sh midnight at -f /usr/share/webapps/roundcube/bin/cleandb.sh midnight
sleep 1d sleep 1d
done & done &
# Update Postscreen Whitelists (daily) # Update Postscreen Whitelists (daily)
while true while true
do do
at -f /usr/local/bin/postwhite/postwhite midnight at -f /usr/local/bin/postwhite/postwhite midnight
sleep 1d sleep 1d
done & done &
# Update Yahoo! IPs for Postscreen Whitelists (weekly) # Update Yahoo! IPs for Postscreen Whitelists (weekly)
while true while true
do do
at -f /usr/local/bin/postwhite/scrape_yahoo midnight sunday at -f /usr/local/bin/postwhite/scrape_yahoo midnight sunday
sleep 7d sleep 7d
done &
# Notify if rejected emails were found
while true
do
unset reject
reject=$(grep "NOQUEUE: reject" /var/log/mail/maillog* | grep -F -v -f /var/log/mail/reject.log)
if [ ${reject} ]
then
echo "${reject}" >>/var/log/mail/reject.log
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)
mail
fi
sleep 30
done & done &
# # Refresh ssl keys daily # # Refresh ssl keys daily

View file

@ -482,7 +482,8 @@ cp /usr/local/bin/postwhite/postwhite.conf /etc
#// Syslog #// Syslog
#// #//
############### ###############
cat >/etc/syslog.conf <<- 'syslog.conf' mkdir -p /var/log/mail/
mail.info /var/log/maillog cat >/etc/syslog.conf <<- syslog
mail.* /var/log/maillog.debug mail.info /var/log/mail/maillog
syslog.conf mail.* /var/log/mail/maillog.debug
syslog