[Dovecot] Fix quarantine bcc, use socket for LUA API
parent
2c77586c0f
commit
cf4baa00a6
|
@ -19,18 +19,23 @@ done
|
||||||
DBPASS=$(echo ${DBPASS} | sed 's/"/\\"/g')
|
DBPASS=$(echo ${DBPASS} | sed 's/"/\\"/g')
|
||||||
|
|
||||||
# Create quota dict for Dovecot
|
# Create quota dict for Dovecot
|
||||||
|
if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||||
|
QUOTA_TABLE=quota2
|
||||||
|
else
|
||||||
|
QUOTA_TABLE=quota2replica
|
||||||
|
fi
|
||||||
cat <<EOF > /etc/dovecot/sql/dovecot-dict-sql-quota.conf
|
cat <<EOF > /etc/dovecot/sql/dovecot-dict-sql-quota.conf
|
||||||
# Autogenerated by mailcow
|
# Autogenerated by mailcow
|
||||||
connect = "host=/var/run/mysqld/mysqld.sock dbname=${DBNAME} user=${DBUSER} password=${DBPASS}"
|
connect = "host=/var/run/mysqld/mysqld.sock dbname=${DBNAME} user=${DBUSER} password=${DBPASS}"
|
||||||
map {
|
map {
|
||||||
pattern = priv/quota/storage
|
pattern = priv/quota/storage
|
||||||
table = quota2
|
table = ${QUOTA_TABLE}
|
||||||
username_field = username
|
username_field = username
|
||||||
value_field = bytes
|
value_field = bytes
|
||||||
}
|
}
|
||||||
map {
|
map {
|
||||||
pattern = priv/quota/messages
|
pattern = priv/quota/messages
|
||||||
table = quota2
|
table = ${QUOTA_TABLE}
|
||||||
username_field = username
|
username_field = username
|
||||||
value_field = messages
|
value_field = messages
|
||||||
}
|
}
|
||||||
|
@ -136,7 +141,7 @@ end
|
||||||
function script_init()
|
function script_init()
|
||||||
mysql = require "luasql.mysql"
|
mysql = require "luasql.mysql"
|
||||||
env = mysql.mysql()
|
env = mysql.mysql()
|
||||||
con = env:connect("__DBNAME__","__DBUSER__","__DBPASS__","mysql")
|
con = env:connect("__DBNAME__","__DBUSER__","__DBPASS__","localhost")
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -222,6 +227,14 @@ sed -i "s/__DBUSER__/${DBUSER}/g" /usr/local/bin/imapsync_cron.pl /usr/local/bin
|
||||||
sed -i "s/__DBPASS__/${DBPASS}/g" /usr/local/bin/imapsync_cron.pl /usr/local/bin/quarantine_notify.py /usr/local/bin/clean_q_aged.sh /etc/dovecot/lua/app-passdb.lua
|
sed -i "s/__DBPASS__/${DBPASS}/g" /usr/local/bin/imapsync_cron.pl /usr/local/bin/quarantine_notify.py /usr/local/bin/clean_q_aged.sh /etc/dovecot/lua/app-passdb.lua
|
||||||
sed -i "s/__DBNAME__/${DBNAME}/g" /usr/local/bin/imapsync_cron.pl /usr/local/bin/quarantine_notify.py /usr/local/bin/clean_q_aged.sh /etc/dovecot/lua/app-passdb.lua
|
sed -i "s/__DBNAME__/${DBNAME}/g" /usr/local/bin/imapsync_cron.pl /usr/local/bin/quarantine_notify.py /usr/local/bin/clean_q_aged.sh /etc/dovecot/lua/app-passdb.lua
|
||||||
sed -i "s/__LOG_LINES__/${LOG_LINES}/g" /usr/local/bin/trim_logs.sh
|
sed -i "s/__LOG_LINES__/${LOG_LINES}/g" /usr/local/bin/trim_logs.sh
|
||||||
|
if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||||
|
# Toggling MASTER will result in a rebuild of containers, so the quota script will be recreated
|
||||||
|
cat <<'EOF' > /usr/local/bin/quota_notify.py
|
||||||
|
#!/usr/bin/python3
|
||||||
|
import sys
|
||||||
|
sys.exit()
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
# 401 is user dovecot
|
# 401 is user dovecot
|
||||||
if [[ ! -s /mail_crypt/ecprivkey.pem || ! -s /mail_crypt/ecpubkey.pem ]]; then
|
if [[ ! -s /mail_crypt/ecprivkey.pem || ! -s /mail_crypt/ecpubkey.pem ]]; then
|
||||||
|
@ -259,6 +272,7 @@ chmod +x /usr/lib/dovecot/sieve/rspamd-pipe-ham \
|
||||||
/usr/local/sbin/stop-supervisor.sh \
|
/usr/local/sbin/stop-supervisor.sh \
|
||||||
/usr/local/bin/quota_notify.py
|
/usr/local/bin/quota_notify.py
|
||||||
|
|
||||||
|
if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||||
# Setup cronjobs
|
# Setup cronjobs
|
||||||
echo '* * * * * root /usr/local/bin/imapsync_cron.pl 2>&1 | /usr/bin/logger' > /etc/cron.d/imapsync
|
echo '* * * * * root /usr/local/bin/imapsync_cron.pl 2>&1 | /usr/bin/logger' > /etc/cron.d/imapsync
|
||||||
#echo '30 3 * * * vmail /usr/local/bin/doveadm quota recalc -A' > /etc/cron.d/dovecot-sync
|
#echo '30 3 * * * vmail /usr/local/bin/doveadm quota recalc -A' > /etc/cron.d/dovecot-sync
|
||||||
|
@ -270,6 +284,11 @@ echo '*/20 * * * * vmail /usr/local/bin/quarantine_notify.py >> /dev/console 2>&
|
||||||
echo '15 4 * * * vmail /usr/local/bin/clean_q_aged.sh >> /dev/console 2>&1' > /etc/cron.d/clean_q_aged
|
echo '15 4 * * * vmail /usr/local/bin/clean_q_aged.sh >> /dev/console 2>&1' > /etc/cron.d/clean_q_aged
|
||||||
# Fix more than 1 hardlink issue
|
# Fix more than 1 hardlink issue
|
||||||
touch /etc/crontab /etc/cron.*/*
|
touch /etc/crontab /etc/cron.*/*
|
||||||
|
else
|
||||||
|
echo '25 * * * * vmail /usr/local/bin/maildir_gc.sh >> /dev/console 2>&1' > /etc/cron.d/maildir_gc
|
||||||
|
echo '30 1 * * * root /usr/local/bin/sa-rules.sh >> /dev/console 2>&1' > /etc/cron.d/sa-rules
|
||||||
|
echo '0 2 * * * root /usr/bin/curl http://solr:8983/solr/dovecot-fts/update?optimize=true >> /dev/console 2>&1' > /etc/cron.d/solr-optimize
|
||||||
|
fi
|
||||||
|
|
||||||
# Clean old PID if any
|
# Clean old PID if any
|
||||||
[[ -f /var/run/dovecot/master.pid ]] && rm /var/run/dovecot/master.pid
|
[[ -f /var/run/dovecot/master.pid ]] && rm /var/run/dovecot/master.pid
|
||||||
|
|
|
@ -84,7 +84,7 @@ def notify_rcpt(rcpt, msg_count, quarantine_acl):
|
||||||
msg.attach(text_part)
|
msg.attach(text_part)
|
||||||
msg.attach(html_part)
|
msg.attach(html_part)
|
||||||
msg['To'] = str(rcpt)
|
msg['To'] = str(rcpt)
|
||||||
bcc = r.get('Q_GLOBAL_RCPT') or ""
|
bcc = r.get('Q_BCC') or ""
|
||||||
text = msg.as_string()
|
text = msg.as_string()
|
||||||
server.sendmail(msg['From'], [str(rcpt)] + [str(bcc)], text)
|
server.sendmail(msg['From'], [str(rcpt)] + [str(bcc)], text)
|
||||||
server.quit()
|
server.quit()
|
||||||
|
|
Loading…
Reference in New Issue