#!/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 < /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 @redis-mailcow..." sleep 2 done until [[ $(redis-cli -h ${REDIS_SLAVEOF_IP} -p ${REDIS_SLAVEOF_PORT} PING) == "PONG" ]]; do echo "Waiting for Redis @${REDIS_SLAVEOF_IP}..." sleep 2 done redis-cli -h redis-mailcow SLAVEOF ${REDIS_SLAVEOF_IP} ${REDIS_SLAVEOF_PORT} else cat < /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 # Provide additional lua modules ln -s /usr/lib/$(uname -m)-linux-gnu/liblua5.1-cjson.so.0.0.0 /usr/lib/rspamd/cjson.so 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_header.map \ /etc/rspamd/custom/bad_header.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 "$@"