mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2025-08-02 17:14:31 +02:00
Fix #1093, pflogsumm and logwatch
This commit is contained in:
parent
0d1e716f36
commit
008b8e6bce
6 changed files with 173 additions and 24 deletions
25
target/bin/report-pflogsumm-yesterday
Executable file
25
target/bin/report-pflogsumm-yesterday
Executable file
|
@ -0,0 +1,25 @@
|
|||
#!/bin/bash
|
||||
set -eo
|
||||
|
||||
HOSTNAME=$1
|
||||
RECIPIENT=$2
|
||||
SENDER=$3
|
||||
errex() {
|
||||
echo -e "$@" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
test -x /usr/sbin/pflogsumm || errex "Critical: /usr/sbin/pflogsumm not found"
|
||||
|
||||
BODY=$(gzip -cdfq $(ls -tr /var/log/mail/mail.log*) | /usr/sbin/pflogsumm --problems_first -d yesterday)
|
||||
|
||||
sendmail -t <<EOF
|
||||
From: $SENDER
|
||||
To: $RECIPIENT
|
||||
Subject: Postfix summary for $HOSTNAME sent $(date '+%Y-%m-%d_%H%M%S')
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
$BODY
|
||||
EOF
|
||||
|
|
@ -33,7 +33,8 @@ DEFAULT_VARS["SPOOF_PROTECTION"]="${SPOOF_PROTECTION:="0"}"
|
|||
DEFAULT_VARS["TLS_LEVEL"]="${TLS_LEVEL:="modern"}"
|
||||
DEFAULT_VARS["ENABLE_SRS"]="${ENABLE_SRS:="0"}"
|
||||
DEFAULT_VARS["REPORT_RECIPIENT"]="${REPORT_RECIPIENT:="0"}"
|
||||
DEFAULT_VARS["REPORT_INTERVAL"]="${REPORT_INTERVAL:="daily"}"
|
||||
DEFAULT_VARS["LOGROTATE_INTERVAL"]="${LOGROTATE_INTERVAL:=${REPORT_INTERVAL:-"daily"}}"
|
||||
DEFAULT_VARS["LOGWATCH_INTERVAL"]="${LOGWATCH_INTERVAL:="none"}"
|
||||
DEFAULT_VARS["VIRUSMAILS_DELETE_DELAY"]="${VIRUSMAILS_DELETE_DELAY:="7"}"
|
||||
|
||||
##########################################################################
|
||||
|
@ -164,9 +165,14 @@ function register_functions() {
|
|||
_register_setup_function "_setup_environment"
|
||||
_register_setup_function "_setup_logrotate"
|
||||
|
||||
if [ "$REPORT_RECIPIENT" != 0 ]; then
|
||||
_register_setup_function "_setup_mail_summary"
|
||||
fi
|
||||
if [ "$PFLOGSUMM_TRIGGER" != "none" ]; then
|
||||
_register_setup_function "_setup_mail_summary"
|
||||
fi
|
||||
|
||||
if [ "$LOGWATCH_TRIGGER" != "none" ]; then
|
||||
_register_setup_function "_setup_logwatch"
|
||||
fi
|
||||
|
||||
|
||||
# Compute last as the config files are modified in-place
|
||||
_register_setup_function "_setup_chksum_file"
|
||||
|
@ -438,8 +444,26 @@ function _setup_default_vars() {
|
|||
|
||||
# update POSTMASTER_ADDRESS - must be done done after _check_hostname()
|
||||
DEFAULT_VARS["POSTMASTER_ADDRESS"]="${POSTMASTER_ADDRESS:=postmaster@${DOMAINNAME}}"
|
||||
# update REPORT_SENDER - must be done done after _check_hostname()
|
||||
DEFAULT_VARS["REPORT_SENDER"]="${REPORT_SENDER:=mailserver-report@${HOSTNAME}}"
|
||||
|
||||
# update REPORT_SENDER - must be done done after _check_hostname()
|
||||
DEFAULT_VARS["REPORT_SENDER"]="${REPORT_SENDER:=mailserver-report@${HOSTNAME}}"
|
||||
DEFAULT_VARS["PFLOGSUMM_SENDER"]="${PFLOGSUMM_SENDER:=${REPORT_SENDER}}"
|
||||
|
||||
# set PFLOGSUMM_TRIGGER here for backwards compatibility
|
||||
# when REPORT_RECIPIENT is on the old method should be used
|
||||
if [ $"REPORT_RECIPIENT" != "0" ]; then
|
||||
DEFAULT_VARS["PFLOGSUMM_TRIGGER"]="${PFLOGSUMM_TRIGGER:="logrotate"}"
|
||||
else
|
||||
DEFAULT_VARS["PFLOGSUMM_TRIGGER"]="${PFLOGSUMM_TRIGGER:="none"}"
|
||||
fi
|
||||
|
||||
# Expand address to simplify the rest of the script
|
||||
if [ $"REPORT_RECIPIENT" == "1" ]; then
|
||||
REPORT_RECIPIENT="$POSTMASTER_ADDRESS"
|
||||
DEFAULT_VARS["REPORT_RECIPIENT"]="${REPORT_RECIPIENT}"
|
||||
fi
|
||||
DEFAULT_VARS["PFLOGSUMM_RECIPIENT"]="${PFLOGSUMM_RECIPIENT:=${REPORT_RECIPIENT}}"
|
||||
DEFAULT_VARS["LOGWATCH_RECIPIENT"]="${LOGWATCH_RECIPIENT:=${REPORT_RECIPIENT}}"
|
||||
|
||||
for var in ${!DEFAULT_VARS[@]}; do
|
||||
echo "export $var=\"${DEFAULT_VARS[$var]}\"" >> /root/.bashrc
|
||||
|
@ -626,7 +650,7 @@ function _setup_dovecot_local_user() {
|
|||
|
||||
if [[ ! $(grep '@' /tmp/docker-mailserver/postfix-accounts.cf | grep '|') ]]; then
|
||||
if [ $ENABLE_LDAP -eq 0 ]; then
|
||||
notify 'fatal' "Unless using LDAP, you need at least 1 email account to start the server."
|
||||
notify 'fatal' "Unless using LDAP, you need at least 1 email account to start Dovecot."
|
||||
defunc
|
||||
fi
|
||||
fi
|
||||
|
@ -1385,17 +1409,17 @@ function _setup_logrotate() {
|
|||
notify 'inf' "Setting up logrotate"
|
||||
|
||||
LOGROTATE="/var/log/mail/mail.log\n{\n compress\n copytruncate\n delaycompress\n"
|
||||
case "$REPORT_INTERVAL" in
|
||||
case "$LOGROTATE_INTERVAL" in
|
||||
"daily" )
|
||||
notify 'inf' "Setting postfix summary interval to daily"
|
||||
notify 'inf' "Setting postfix logrotate interval to daily"
|
||||
LOGROTATE="$LOGROTATE rotate 1\n daily\n"
|
||||
;;
|
||||
"weekly" )
|
||||
notify 'inf' "Setting postfix summary interval to weekly"
|
||||
notify 'inf' "Setting postfix logrotate interval to weekly"
|
||||
LOGROTATE="$LOGROTATE rotate 1\n weekly\n"
|
||||
;;
|
||||
"monthly" )
|
||||
notify 'inf' "Setting postfix summary interval to monthly"
|
||||
notify 'inf' "Setting postfix logrotate interval to monthly"
|
||||
LOGROTATE="$LOGROTATE rotate 1\n monthly\n"
|
||||
;;
|
||||
esac
|
||||
|
@ -1404,10 +1428,41 @@ function _setup_logrotate() {
|
|||
}
|
||||
|
||||
function _setup_mail_summary() {
|
||||
notify 'inf' "Enable postfix summary with recipient $REPORT_RECIPIENT"
|
||||
[ "$REPORT_RECIPIENT" = 1 ] && REPORT_RECIPIENT=$POSTMASTER_ADDRESS
|
||||
sed -i "s|}| postrotate\n /usr/local/bin/postfix-summary $HOSTNAME \
|
||||
$REPORT_RECIPIENT $REPORT_SENDER\n endscript\n}\n|" /etc/logrotate.d/maillog
|
||||
notify 'inf' "Enable postfix summary with recipient $PFLOGSUMM_RECIPIENT"
|
||||
case "$PFLOGSUMM_TRIGGER" in
|
||||
"daily_cron" )
|
||||
notify 'inf' "Creating daily cron job for pflogsumm report"
|
||||
echo "#!/bin/bash" > /etc/cron.daily/postfix-summary
|
||||
echo "/usr/local/bin/report-pflogsumm-yesterday $HOSTNAME $PFLOGSUMM_RECIPIENT $PFLOGSUMM_SENDER" \
|
||||
>> /etc/cron.daily/postfix-summary
|
||||
chmod +x /etc/cron.daily/postfix-summary
|
||||
;;
|
||||
"logrotate" )
|
||||
notify 'inf' "Add postrotate action for pflogsumm report"
|
||||
sed -i "s|}| postrotate\n /usr/local/bin/postfix-summary $HOSTNAME \
|
||||
$PFLOGSUMM_RECIPIENT $PFLOGSUMM_SENDER\n endscript\n}\n|" /etc/logrotate.d/maillog
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function _setup_logwatch() {
|
||||
notify 'inf' "Enable logwatch reports with recipient $LOGWATCH_RECIPIENT"
|
||||
case "$LOGWATCH_INTERVAL" in
|
||||
"daily" )
|
||||
notify 'inf' "Creating daily cron job for logwatch reports"
|
||||
echo "#!/bin/bash" > /etc/cron.daily/logwatch
|
||||
echo "/usr/sbin/logwatch --range Yesterday --hostname $HOSTNAME --mailto $LOGWATCH_RECIPIENT" \
|
||||
>> /etc/cron.daily/logwatch
|
||||
chmod 744 /etc/cron.daily/logwatch
|
||||
;;
|
||||
"weekly" )
|
||||
notify 'inf' "Creating weekly cron job for logwatch reports"
|
||||
echo "#!/bin/bash" > /etc/cron.weekly/logwatch
|
||||
echo "/usr/sbin/logwatch --range 'between -7 days and -1 days' --hostname $HOSTNAME --mailto $LOGWATCH_RECIPIENT" \
|
||||
>> /etc/cron.weekly/logwatch
|
||||
chmod 744 /etc/cron.weekly/logwatch
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function _setup_environment() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue