Exim4 will not come up

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!"
1 Like