124 lines
3.5 KiB
Bash
Executable File
124 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
until nc phpfpm 9001 -z; do
|
|
echo "Waiting for PHP on port 9001..."
|
|
sleep 3
|
|
done
|
|
|
|
until nc phpfpm 9002 -z; do
|
|
echo "Waiting for PHP on port 9002..."
|
|
sleep 3
|
|
done
|
|
|
|
mkdir -p /etc/rspamd/plugins.d \
|
|
/etc/rspamd/custom
|
|
|
|
touch /etc/rspamd/rspamd.conf.local \
|
|
/etc/rspamd/rspamd.conf.override
|
|
|
|
chmod 755 /var/lib/rspamd
|
|
|
|
|
|
[[ ! -f /etc/rspamd/override.d/worker-controller-password.inc ]] && echo '# Autogenerated by mailcow' > /etc/rspamd/override.d/worker-controller-password.inc
|
|
|
|
echo ${IPV4_NETWORK}.0/24 > /etc/rspamd/custom/mailcow_networks.map
|
|
echo ${IPV6_NETWORK} >> /etc/rspamd/custom/mailcow_networks.map
|
|
|
|
DOVECOT_V4=
|
|
DOVECOT_V6=
|
|
until [[ ! -z ${DOVECOT_V4} ]]; do
|
|
DOVECOT_V4=$(dig a dovecot +short)
|
|
DOVECOT_V6=$(dig aaaa dovecot +short)
|
|
[[ ! -z ${DOVECOT_V4} ]] && break;
|
|
echo "Waiting for Dovecot..."
|
|
sleep 3
|
|
done
|
|
echo ${DOVECOT_V4}/32 > /etc/rspamd/custom/dovecot_trusted.map
|
|
if [[ ! -z ${DOVECOT_V6} ]]; then
|
|
echo ${DOVECOT_V6}/128 >> /etc/rspamd/custom/dovecot_trusted.map
|
|
fi
|
|
|
|
RSPAMD_V4=
|
|
RSPAMD_V6=
|
|
until [[ ! -z ${RSPAMD_V4} ]]; do
|
|
RSPAMD_V4=$(dig a rspamd +short)
|
|
RSPAMD_V6=$(dig aaaa rspamd +short)
|
|
[[ ! -z ${RSPAMD_V4} ]] && break;
|
|
echo "Waiting for Rspamd..."
|
|
sleep 3
|
|
done
|
|
echo ${RSPAMD_V4}/32 > /etc/rspamd/custom/rspamd_trusted.map
|
|
if [[ ! -z ${RSPAMD_V6} ]]; then
|
|
echo ${RSPAMD_V6}/128 >> /etc/rspamd/custom/rspamd_trusted.map
|
|
fi
|
|
|
|
if [[ ! -z ${REDIS_SLAVEOF_IP} ]]; then
|
|
cat <<EOF > /etc/rspamd/local.d/redis.conf
|
|
read_servers = "redis:6379";
|
|
write_servers = "${REDIS_SLAVEOF_IP}:${REDIS_SLAVEOF_PORT}";
|
|
timeout = 10;
|
|
EOF
|
|
until [[ $(redis-cli -h redis-mailcow PING) == "PONG" ]]; do
|
|
echo "Waiting for Redis slave..."
|
|
sleep 2
|
|
done
|
|
until [[ $(redis-cli -h ${REDIS_SLAVEOF_IP} -p ${REDIS_SLAVEOF_PORT} PING) == "PONG" ]]; do
|
|
echo "Waiting for Redis master..."
|
|
sleep 2
|
|
done
|
|
redis-cli -h redis-mailcow SLAVEOF ${REDIS_SLAVEOF_IP} ${REDIS_SLAVEOF_PORT}
|
|
else
|
|
cat <<EOF > /etc/rspamd/local.d/redis.conf
|
|
servers = "redis:6379";
|
|
timeout = 10;
|
|
EOF
|
|
until [[ $(redis-cli -h redis-mailcow PING) == "PONG" ]]; do
|
|
echo "Waiting for Redis slave..."
|
|
sleep 2
|
|
done
|
|
redis-cli -h redis-mailcow SLAVEOF NO ONE
|
|
fi
|
|
|
|
chown -R _rspamd:_rspamd /var/lib/rspamd \
|
|
/etc/rspamd/local.d \
|
|
/etc/rspamd/override.d \
|
|
/etc/rspamd/rspamd.conf.local \
|
|
/etc/rspamd/rspamd.conf.override \
|
|
/etc/rspamd/plugins.d
|
|
|
|
# Fix missing default global maps, if any
|
|
# These exists in mailcow UI and should not be removed
|
|
touch /etc/rspamd/custom/global_mime_from_blacklist.map \
|
|
/etc/rspamd/custom/global_rcpt_blacklist.map \
|
|
/etc/rspamd/custom/global_smtp_from_blacklist.map \
|
|
/etc/rspamd/custom/global_mime_from_whitelist.map \
|
|
/etc/rspamd/custom/global_rcpt_whitelist.map \
|
|
/etc/rspamd/custom/global_smtp_from_whitelist.map \
|
|
/etc/rspamd/custom/bad_languages.map \
|
|
/etc/rspamd/custom/sa-rules \
|
|
/etc/rspamd/custom/dovecot_trusted.map \
|
|
/etc/rspamd/custom/rspamd_trusted.map \
|
|
/etc/rspamd/custom/mailcow_networks.map \
|
|
/etc/rspamd/custom/ip_wl.map \
|
|
/etc/rspamd/custom/fishy_tlds.map \
|
|
/etc/rspamd/custom/bad_words.map \
|
|
/etc/rspamd/custom/bad_asn.map \
|
|
/etc/rspamd/custom/bad_words_de.map \
|
|
/etc/rspamd/custom/bulk_headers.map
|
|
|
|
# www-data (82) group needs to write to these files
|
|
chown _rspamd:_rspamd /etc/rspamd/custom/
|
|
chmod 0755 /etc/rspamd/custom/.
|
|
chown -R 82:82 /etc/rspamd/custom/*
|
|
chmod 644 -R /etc/rspamd/custom/*
|
|
|
|
# Run hooks
|
|
for file in /hooks/*; do
|
|
if [ -x "${file}" ]; then
|
|
echo "Running hook ${file}"
|
|
"${file}"
|
|
fi
|
|
done
|
|
|
|
exec "$@"
|