This script will purge Exim4, reinstall it and configure it to use SpamAssassin and ClamAV.
First, backup /etc/exim4
mkdir -p /root/backup_etc_exim4/
cp -prf /etc/exim4/ /root/backup_etc_exim4/
Now execute the script:
curl -fsSLm15 https://7j.gg/instexim | sudo bash -s --
Once finished, show the output of this command:
systemctl status exim4 --no-pager -l
Just in case, this is the script:
#!/usr/bin/env bash
if [[ $EUID -ne 0 ]]; then
echo "Error: script must be run as root"
exit 2
fi
export PATH=$PATH:/sbin
HESTIA='/usr/local/hestia'
HESTIA_BIN="$HESTIA/bin"
HESTIA_INSTALL_DIR="$HESTIA/install/deb"
HESTIA_COMMON_DIR="$HESTIA/install/common"
version_ge() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" -o -n "$1" -a "$1" = "$2"; }
gen_pass() {
matrix=$1
length=$2
if [ -z "$matrix" ]; then
matrix="A-Za-z0-9"
fi
if [ -z "$length" ]; then
length=16
fi
head /dev/urandom | tr -dc $matrix | head -c$length
}
check_result() {
if [ $1 -ne 0 ]; then
echo "Error: $2"
exit $1
fi
}
#Remove and reinstall exim4
exim=yes
spamd=yes
clamd=yes
sieve=no
echo "[ * ] Removing Exim4 packages"
apt purge -q -y "exim4*" &>/dev/null
echo "[ * ] Installing Exim4 packages"
apt install -q -y exim4 exim4-daemon-heavy &>/dev/null
if [ "$exim" = 'yes' ]; then
"$HESTIA_BIN/v-change-sys-config-value" "MAIL_SYSTEM" "exim4"
if [ "$clamd" = 'yes' ]; then
"$HESTIA_BIN/v-change-sys-config-value" "ANTIVIRUS_SYSTEM" "clamav-daemon"
fi
if [ "$spamd" = 'yes' ]; then
"$HESTIA_BIN/v-change-sys-config-value" "ANTISPAM_SYSTEM" "spamassassin"
fi
if [ "$sieve" = 'yes' ]; then
"$HESTIA_BIN/v-change-sys-config-value" "SIEVE_SYSTEM" "yes"
fi
fi
if [ "$exim" = 'yes' ]; then
echo "[ * ] Configuring Exim mail server"
gpasswd -a Debian-exim mail >/dev/null 2>&1
exim_version=$(exim4 --version | head -1 | awk '{print $3}' | cut -f -2 -d .)
# if Exim version > 4.9.4 or greater!
if ! version_ge "4.94" "$exim_version"; then
# Ubuntu 22.04 (Jammy) uses Exim 4.95 instead but config works with Exim4.94
cp -f $HESTIA_INSTALL_DIR/exim/exim4.conf.4.95.template /etc/exim4/exim4.conf.template
else
cp -f $HESTIA_INSTALL_DIR/exim/exim4.conf.template /etc/exim4/
fi
cp -f $HESTIA_INSTALL_DIR/exim/dnsbl.conf /etc/exim4/
cp -f $HESTIA_INSTALL_DIR/exim/spam-blocks.conf /etc/exim4/
cp -f $HESTIA_INSTALL_DIR/exim/limit.conf /etc/exim4/
cp -f $HESTIA_INSTALL_DIR/exim/system.filter /etc/exim4/
touch /etc/exim4/white-blocks.conf
if [ "$spamd" = 'yes' ]; then
sed -i "s/#SPAM/SPAM/g" /etc/exim4/exim4.conf.template
fi
if [ "$clamd" = 'yes' ]; then
sed -i "s/#CLAMD/CLAMD/g" /etc/exim4/exim4.conf.template
fi
# Generate SRS KEY If not support just created it will get ignored anyway
srs=$(gen_pass)
echo $srs >/etc/exim4/srs.conf
chmod 640 /etc/exim4/srs.conf
chmod 640 /etc/exim4/exim4.conf.template
chown root:Debian-exim /etc/exim4/srs.conf
rm -rf /etc/exim4/domains
mkdir -p /etc/exim4/domains
rm -f /etc/alternatives/mta
ln -s /usr/sbin/exim4 /etc/alternatives/mta
update-rc.d -f sendmail remove >/dev/null 2>&1
update-rc.d -f postfix remove >/dev/null 2>&1
systemctl stop postfix >/dev/null 2>&1
update-rc.d exim4 defaults
systemctl start exim4 >/dev/null
check_result $? "exim4 start failed"
fi
echo "[ * ] Done!"