425 lines
18 KiB
Bash
425 lines
18 KiB
Bash
#!/bin/bash
|
|
#systemctl stop firewalld
|
|
|
|
check_return() {
|
|
#check previous command result , 0 = ok , non-0 = something wrong.
|
|
if [[ $? -eq "0" ]]; then
|
|
:
|
|
else
|
|
echo -e "\ncommand failed, exiting..."
|
|
exit
|
|
fi
|
|
}
|
|
|
|
echo 'backup configs'
|
|
cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-bak_$(date '+%Y-%m-%d_%H_%M:%S')
|
|
cp /etc/postfix/master.cf /etc/postfix/master.cf-bak_$(date '+%Y-%m-%d_%H_%M:%S')
|
|
cp /etc/postfix/main.cf /etc/postfix/main.cf-bak_$(date '+%Y-%m-%d_%H_%M:%S')
|
|
cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext-bak_$(date '+%Y-%m-%d_%H_%M:%S')
|
|
|
|
ZONE=$(firewall-cmd --get-default-zone)
|
|
firewall-cmd --zone=$ZONE --add-port=4190/tcp --permanent
|
|
systemctl stop firewalld
|
|
|
|
echo 'Stop CSF'
|
|
csf -x
|
|
|
|
MAILSCANNER=/etc/MailScanner
|
|
|
|
if [ -d $MAILSCANNER ]; then
|
|
echo "MailScanner found. If you wish to reinstall then remove the package and revert"
|
|
echo "Postfix back to its original config at /etc/postfix/main.cf and remove"
|
|
echo "/etc/MailScanner and /usr/share/MailScanner directories"
|
|
exit
|
|
fi
|
|
|
|
### Check SpamAssasin before moving forward
|
|
|
|
DIR=/etc/mail/spamassassin
|
|
|
|
if [ -d "$DIR" ]; then
|
|
sa-update
|
|
else
|
|
echo "Please install SpamAssasin through the CyberPanel interface before proceeding"
|
|
exit
|
|
fi
|
|
|
|
### OS Detection
|
|
Server_OS=""
|
|
Server_OS_Version=""
|
|
if grep -q -E "CentOS Linux 7|CentOS Linux 8|CentOS Stream" /etc/os-release ; then
|
|
Server_OS="CentOS"
|
|
elif grep -q "Red Hat Enterprise Linux" /etc/os-release ; then
|
|
Server_OS="RedHat"
|
|
elif grep -q "AlmaLinux-8" /etc/os-release ; then
|
|
Server_OS="AlmaLinux"
|
|
elif grep -q "AlmaLinux-9" /etc/os-release ; then
|
|
Server_OS="AlmaLinux"
|
|
elif grep -q "AlmaLinux-10" /etc/os-release ; then
|
|
Server_OS="AlmaLinux"
|
|
elif grep -q -E "CloudLinux 7|CloudLinux 8" /etc/os-release ; then
|
|
Server_OS="CloudLinux"
|
|
elif grep -q -E "Rocky Linux" /etc/os-release ; then
|
|
Server_OS="RockyLinux"
|
|
elif grep -q -E "Ubuntu 18.04|Ubuntu 20.04|Ubuntu 20.10|Ubuntu 22.04|Ubuntu 24.04" /etc/os-release ; then
|
|
Server_OS="Ubuntu"
|
|
elif grep -q -E "Debian GNU/Linux 11|Debian GNU/Linux 12|Debian GNU/Linux 13" /etc/os-release ; then
|
|
Server_OS="Debian"
|
|
elif grep -q -E "openEuler 20.03|openEuler 22.03" /etc/os-release ; then
|
|
Server_OS="openEuler"
|
|
else
|
|
echo -e "Unable to detect your system..."
|
|
echo -e "\nCyberPanel is supported on x86_64 based Ubuntu 18.04, Ubuntu 20.04, Ubuntu 20.10, Ubuntu 22.04, Ubuntu 24.04, Ubuntu 24.04.3, Debian 11, Debian 12, Debian 13, CentOS 7, CentOS 8, CentOS 9, RHEL 8, RHEL 9, AlmaLinux 8, AlmaLinux 9, AlmaLinux 10, RockyLinux 8, RockyLinux 9, CloudLinux 7, CloudLinux 8, openEuler 20.03, openEuler 22.03...\n"
|
|
exit
|
|
fi
|
|
|
|
Server_OS_Version=$(grep VERSION_ID /etc/os-release | awk -F[=,] '{print $2}' | tr -d \" | head -c2 | tr -d . )
|
|
|
|
echo -e "System: $Server_OS $Server_OS_Version detected...\n"
|
|
|
|
if [[ $Server_OS = "CloudLinux" ]] || [[ "$Server_OS" = "AlmaLinux" ]] || [[ "$Server_OS" = "RockyLinux" ]] || [[ "$Server_OS" = "RedHat" ]] ; then
|
|
Server_OS="CentOS"
|
|
#CloudLinux gives version id like 7.8, 7.9, so cut it to show first number only
|
|
#treat CloudLinux, Rocky, Alma and RedHat as CentOS
|
|
elif [[ "$Server_OS" = "Debian" ]] ; then
|
|
Server_OS="Ubuntu"
|
|
#Treat Debian as Ubuntu for package management (both use apt-get)
|
|
fi
|
|
|
|
if [[ $Server_OS = "CentOS" ]] && [[ "$Server_OS_Version" = "7" ]] ; then
|
|
|
|
setenforce 0
|
|
yum install -y perl yum-utils perl-CPAN
|
|
yum install -y gcc cpp perl bzip2 zip make patch automake rpm-build perl-Archive-Zip perl-Filesys-Df perl-OLE-Storage_Lite perl-Sys-Hostname-Long perl-Sys-SigAction perl-Net-CIDR perl-DBI perl-MIME-tools perl-DBD-SQLite binutils glibc-devel perl-Filesys-Df zlib unzip zlib-devel wget mlocate clamav "perl(DBD::mysql)"
|
|
|
|
rpm -Uvh https://forensics.cert.org/centos/cert/7/x86_64/unrar-5.4.0-1.el7.x86_64.rpm
|
|
export PERL_MM_USE_DEFAULT=1
|
|
curl -L https://cpanmin.us | perl - App::cpanminus
|
|
perl -MCPAN -e 'install Encoding::FixLatin'
|
|
perl -MCPAN -e 'install Digest::SHA1'
|
|
perl -MCPAN -e 'install Geo::IP'
|
|
perl -MCPAN -e 'install Razor2::Client::Agent'
|
|
perl -MCPAN -e 'install Net::Patricia'
|
|
|
|
freshclam -v
|
|
|
|
elif [[ $Server_OS = "CentOS" ]] && [[ "$Server_OS_Version" = "8" ]] ; then
|
|
|
|
setenforce 0
|
|
yum install -y perl yum-utils perl-CPAN
|
|
dnf --enablerepo=powertools install -y perl-IO-stringy
|
|
dnf --enablerepo=PowerTools install -y perl-IO-stringy
|
|
yum install -y gcc cpp perl bzip2 zip make patch automake rpm-build perl-Archive-Zip perl-Filesys-Df perl-OLE-Storage_Lite perl-Net-CIDR perl-DBI perl-MIME-tools perl-DBD-SQLite binutils glibc-devel perl-Filesys-Df zlib unzip zlib-devel wget mlocate clamav clamav-update "perl(DBD::mysql)"
|
|
|
|
rpm -Uvh https://forensics.cert.org/centos/cert/8/x86_64/unrar-5.4.0-1.el8.x86_64.rpm
|
|
|
|
export PERL_MM_USE_DEFAULT=1
|
|
curl -L https://cpanmin.us | perl - App::cpanminus
|
|
|
|
perl -MCPAN -e 'install Encoding::FixLatin'
|
|
perl -MCPAN -e 'install Digest::SHA1'
|
|
perl -MCPAN -e 'install Geo::IP'
|
|
perl -MCPAN -e 'install Razor2::Client::Agent'
|
|
perl -MCPAN -e 'install Sys::Hostname::Long'
|
|
perl -MCPAN -e 'install Sys::SigAction'
|
|
|
|
freshclam -v
|
|
|
|
elif [[ $Server_OS = "CentOS" ]] && [[ "$Server_OS_Version" = "9" ]] ; then
|
|
|
|
setenforce 0
|
|
dnf install -y perl dnf-utils perl-CPAN
|
|
dnf --enablerepo=crb install -y perl-IO-stringy
|
|
dnf install -y gcc cpp perl bzip2 zip make patch automake rpm-build perl-Archive-Zip perl-Filesys-Df perl-OLE-Storage_Lite perl-Net-CIDR perl-DBI perl-MIME-tools perl-DBD-SQLite binutils glibc-devel perl-Filesys-Df zlib unzip zlib-devel wget mlocate clamav clamav-update "perl(DBD::mysql)"
|
|
|
|
# Install unrar for AlmaLinux 9 (using EPEL)
|
|
dnf install -y unrar
|
|
|
|
export PERL_MM_USE_DEFAULT=1
|
|
curl -L https://cpanmin.us | perl - App::cpanminus
|
|
|
|
perl -MCPAN -e 'install Encoding::FixLatin'
|
|
perl -MCPAN -e 'install Digest::SHA1'
|
|
perl -MCPAN -e 'install Geo::IP'
|
|
perl -MCPAN -e 'install Razor2::Client::Agent'
|
|
perl -MCPAN -e 'install Sys::Hostname::Long'
|
|
perl -MCPAN -e 'install Sys::SigAction'
|
|
perl -MCPAN -e 'install Net::Patricia'
|
|
|
|
freshclam -v
|
|
|
|
elif [ "$CLNVERSION" = "ID=\"cloudlinux\"" ]; then
|
|
|
|
setenforce 0
|
|
yum install -y perl yum-utils perl-CPAN
|
|
yum install -y gcc cpp perl bzip2 zip make patch automake rpm-build perl-Archive-Zip perl-Filesys-Df perl-OLE-Storage_Lite perl-Sys-Hostname-Long perl-Sys-SigAction perl-Net-CIDR perl-DBI perl-MIME-tools perl-DBD-SQLite binutils glibc-devel perl-Filesys-Df zlib unzip zlib-devel wget mlocate clamav "perl(DBD::mysql)"
|
|
|
|
rpm -Uvh https://forensics.cert.org/centos/cert/7/x86_64/unrar-5.4.0-1.el7.x86_64.rpm
|
|
export PERL_MM_USE_DEFAULT=1
|
|
curl -L https://cpanmin.us | perl - App::cpanminus
|
|
perl -MCPAN -e 'install Encoding::FixLatin'
|
|
perl -MCPAN -e 'install Digest::SHA1'
|
|
perl -MCPAN -e 'install Geo::IP'
|
|
perl -MCPAN -e 'install Razor2::Client::Agent'
|
|
perl -MCPAN -e 'install Net::Patricia'
|
|
|
|
freshclam -v
|
|
|
|
elif [[ $Server_OS = "Ubuntu" ]]; then
|
|
|
|
apt-get install -y libmysqlclient-dev
|
|
|
|
apt-get install -y cpanminus gcc perl bzip2 zip make patch automake rpm libarchive-zip-perl libfilesys-df-perl libole-storage-lite-perl libsys-hostname-long-perl libsys-sigaction-perl libregexp-common-net-cidr-perl libmime-tools-perl libdbd-sqlite3-perl binutils build-essential libfilesys-df-perl zlib1g unzip mlocate clamav libdbd-mysql-perl unrar libclamav-dev libclamav-client-perl libclamunrar9
|
|
|
|
cpanm Encoding::FixLatin
|
|
cpanm Digest::SHA1
|
|
cpanm Geo::IP
|
|
cpanm Razor2::Client::Agent
|
|
cpanm Net::Patricia
|
|
cpanm Net::CIDR
|
|
|
|
sudo systemctl stop clamav-freshclam.service
|
|
|
|
freshclam
|
|
|
|
sudo systemctl start clamav-freshclam.service
|
|
|
|
fi
|
|
|
|
echo "header_checks = regexp:/etc/postfix/header_checks" >>/etc/postfix/main.cf
|
|
echo "/^Received:/ HOLD" >>/etc/postfix/header_checks
|
|
|
|
systemctl restart postfix
|
|
|
|
if [[ $Server_OS = "Ubuntu" ]]; then
|
|
wget https://github.com/MailScanner/v5/releases/download/5.4.4-1/MailScanner-5.4.4-1.noarch.deb
|
|
dpkg -i *.noarch.deb
|
|
|
|
mkdir /var/run/MailScanner
|
|
mkdir /var/lock/subsys
|
|
mkdir /var/lock/subsys/MailScanner
|
|
chown -R postfix:postfix /var/run/MailScanner
|
|
chown -R postfix:postfix /var/lock/subsys/MailScanner
|
|
chown -R postfix:postfix /var/spool/MailScanner
|
|
|
|
elif [[ $Server_OS = "CentOS" ]]; then
|
|
wget https://github.com/MailScanner/v5/releases/download/5.4.4-1/MailScanner-5.4.4-1.rhel.noarch.rpm
|
|
rpm -Uvh *.rhel.noarch.rpm
|
|
elif [ "$OS" = "NAME=\"CloudLinux\"" ]; then
|
|
wget https://github.com/MailScanner/v5/releases/download/5.3.3-1/MailScanner-5.3.3-1.rhel.noarch.rpm
|
|
rpm -Uvh *.rhel.noarch.rpm
|
|
fi
|
|
|
|
mkdir /var/spool/MailScanner/spamassassin
|
|
|
|
chown postfix.mtagroup /var/spool/MailScanner/spamassassin
|
|
chown root.mtagroup /var/spool/MailScanner/incoming/
|
|
chown postfix.mtagroup /var/spool/MailScanner/milterin
|
|
chown postfix.mtagroup /var/spool/MailScanner/milterout
|
|
chown postfix.mtagroup /var/spool/postfix/hold
|
|
chown postfix.mtagroup /var/spool/postfix/incoming
|
|
usermod -a -G mtagroup nobody
|
|
|
|
chmod g+rx /var/spool/postfix/incoming
|
|
chmod g+rx /var/spool/postfix/hold
|
|
chmod -R 0775 /var/spool/postfix/incoming
|
|
chmod -R 0775 /var/spool/postfix/hold
|
|
|
|
sed -i 's/^Run As User =.*/& postfix/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Run As Group =.*/& postfix/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Incoming Queue Dir =.*/Incoming Queue Dir = \/var\/spool\/postfix\/hold/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Outgoing Queue Dir =.*/Outgoing Queue Dir = \/var\/spool\/postfix\/incoming/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^MTA =.*/MTA = postfix/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Quarantine User =.*/& postfix/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Quarantine Group =.*/& mtagroup/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Quarantine Permissions =.*/Quarantine Permissions = 640/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Virus Scanners =.*/Virus Scanners = clamav/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Is Definitely Not Spam =.*/Is Definitely Not Spam = \&SQLWhitelist/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Is Definitely Spam =.*/Is Definitely Spam = \&SQLBlacklist/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^SpamAssassin User State Dir =.*/& \/var\/spool\/MailScanner\/spamassassin/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Always Looked Up Last =.*/Always Looked Up Last = \&MailWatchLogging/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Quarantine Whole Message =.*/Quarantine Whole Message = yes/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Spam List =.*/Spam List = SBL + XBL/' /etc/MailScanner/MailScanner.conf
|
|
sed -i 's/^Sign Clean Messages =.*/Sign Clean Messages = no/' /etc/MailScanner/MailScanner.conf
|
|
|
|
mkdir /usr/local/CyberCP/public/mailwatch
|
|
|
|
cd /usr/local/CyberCP/public/mailwatch
|
|
|
|
git clone --depth=1 https://github.com/mailwatch/MailWatch.git --branch 1.2 --single-branch
|
|
|
|
mv /usr/local/CyberCP/public/mailwatch/MailWatch/* /usr/local/CyberCP/public/mailwatch/
|
|
|
|
PASSWORD=$(cat /etc/cyberpanel/mysqlPassword)
|
|
USER=root
|
|
DATABASE=mailscanner
|
|
ADMINPASS=$(cat /etc/cyberpanel/adminPass)
|
|
|
|
### Fix a bug in MailWatch SQL File
|
|
|
|
sed -i 's/char(512)/char(255)/g' /usr/local/CyberCP/public/mailwatch/create.sql
|
|
|
|
##
|
|
|
|
mysql -u${USER} -p${PASSWORD} <"/usr/local/CyberCP/public/mailwatch/create.sql"
|
|
mysql -u${USER} -p${PASSWORD} -e "use mailscanner"
|
|
mysql -u${USER} -D${DATABASE} -p${PASSWORD} -e "GRANT ALL ON mailscanner.* TO root@localhost IDENTIFIED BY '${PASSWORD}';"
|
|
mysql -u${USER} -D${DATABASE} -p${PASSWORD} -e "FLUSH PRIVILEGES;"
|
|
mysql -u${USER} -D${DATABASE} -p${PASSWORD} -e "INSERT INTO mailscanner.users SET username = 'admin', password = MD5('${ADMINPASS}'), fullname = 'admin', type = 'A';"
|
|
|
|
cp /usr/local/CyberCP/public/mailwatch/mailscanner/conf.php.example /usr/local/CyberCP/public/mailwatch/mailscanner/conf.php
|
|
|
|
sed -i "s/^define('DB_USER',.*/define('DB_USER','root');/" /usr/local/CyberCP/public/mailwatch/mailscanner/conf.php
|
|
sed -i "s/^define('DB_PASS',.*/define('DB_PASS','${PASSWORD}');/" /usr/local/CyberCP/public/mailwatch/mailscanner/conf.php
|
|
sed -i "s/^define('MAILWATCH_HOME',.*/define(\'MAILWATCH_HOME\', \'\/usr\/local\/CyberCP\/public\/mailwatch\/mailscanner');/" /usr/local/CyberCP/public/mailwatch/mailscanner/conf.php
|
|
|
|
MSDEFAULT=/etc/MailScanner/defaults
|
|
if [ -f "$MSDEFAULT" ]; then
|
|
sed -i 's/^run_mailscanner=.*/run_mailscanner=1/' /etc/MailScanner/defaults
|
|
elif [ ! -f "$MSDEFAULT" ]; then
|
|
touch /etc/MailScanner/defaults
|
|
echo "run_mailscanner=1" >>/etc/MailScanner/defaults
|
|
fi
|
|
|
|
cp /usr/local/CyberCP/public/mailwatch/MailScanner_perl_scripts/MailWatchConf.pm /usr/share/MailScanner/perl/custom/
|
|
sed -i 's/^my (\$db_user) = .*/my (\$db_user) = \x27'${USER}'\x27;/' /usr/share/MailScanner/perl/custom/MailWatchConf.pm
|
|
sed -i 's/^my (\$db_pass) = .*/my (\$db_pass) = \x27'${PASSWORD}'\x27;/' /usr/share/MailScanner/perl/custom/MailWatchConf.pm
|
|
ln -s /usr/local/CyberCP/public/mailwatch/MailScanner_perl_scripts/MailWatch.pm /usr/share/MailScanner/perl/custom
|
|
ln -s /usr/local/CyberCP/public/mailwatch/MailScanner_perl_scripts/SQLBlackWhiteList.pm /usr/share/MailScanner/perl/custom
|
|
ln -s /usr/local/CyberCP/public/mailwatch/MailScanner_perl_scripts/SQLSpamSettings.pm /usr/share/MailScanner/perl/custom
|
|
sed -i "s/^\$pathToFunctions =.*/\$pathToFunctions = '\/usr\/local\/CyberCP\/public\/mailwatch\/mailscanner\/functions.php';/" /usr/local/CyberCP/public/mailwatch/upgrade.php
|
|
|
|
/usr/local/lsws/lsphp72/bin/php /usr/local/CyberCP/public/mailwatch/upgrade.php
|
|
systemctl enable mailscanner
|
|
systemctl restart mailscanner
|
|
|
|
IPADDRESS=$(cat /etc/cyberpanel/machineIP)
|
|
|
|
### Furhter onwards is sieve configurations
|
|
|
|
#echo 'Setting up spamassassin and sieve to deliver spam to Junk folder by default'
|
|
##echo "If you wish mailscanner/spamassassin to send spam email to a spam folder please follow the tutorial on the Cyberpanel Website"
|
|
#echo 'Fix protocols'
|
|
#sed -i 's/^protocols =.*/protocols = imap pop3 lmtp sieve/g' /etc/dovecot/dovecot.conf
|
|
#
|
|
#sed -i "s|^user_query.*|user_query = SELECT '5000' as uid, '5000' as gid, '/home/vmail/%d/%n' as home,mail FROM e_users WHERE email='%u';|g" /etc/dovecot/dovecot-sql.conf.ext
|
|
#
|
|
#if [ "$OS" = "NAME=\"Ubuntu\"" ]; then
|
|
# if [ "$UBUNTUVERSION" = "VERSION_ID=\"18.04\"" ]; then
|
|
# apt-get install -y dovecot-managesieved dovecot-sieve dovecot-lmtpd net-tools pflogsumm
|
|
# elif [ "$UBUNTUVERSION" = "VERSION_ID=\"20.04\"" ]; then
|
|
# apt-get install -y libmysqlclient-dev
|
|
# sed -e '/deb/ s/^#*/#/' -i /etc/apt/sources.list.d/dovecot.list
|
|
# apt install -y dovecot-lmtpd dovecot-managesieved dovecot-sieve net-tools pflogsumm
|
|
# fi
|
|
#
|
|
#elif [ "$CENTOSVERSION" = "VERSION_ID=\"7\"" ]; then
|
|
#
|
|
# yum install -y nano net-tools dovecot-pigeonhole postfix-perl-scripts
|
|
#
|
|
#elif [ "$CENTOSVERSION" = "VERSION_ID=\"8\"" ]; then
|
|
#
|
|
# rpm -Uvh http://mirror.ghettoforge.net/distributions/gf/el/8/gf/x86_64/gf-release-8-11.gf.el8.noarch.rpm
|
|
# dnf --enablerepo=gf-plus upgrade -y dovecot23*
|
|
# dnf --enablerepo=gf-plus install -y dovecot23-pigeonhole
|
|
# dnf install -y net-tools postfix-perl-scripts
|
|
#
|
|
#elif [ "$CLNVERSION" = "ID=\"cloudlinux\"" ]; then
|
|
# yum install -y nano net-tools dovecot-pigeonhole postfix-perl-scripts
|
|
#fi
|
|
#
|
|
## Create Sieve files
|
|
#mkdir -p /etc/dovecot/sieve/global
|
|
#touch /var/log/{dovecot-lda-errors.log,dovecot-lda.log}
|
|
#touch /var/log/{dovecot-sieve-errors.log,dovecot-sieve.log}
|
|
#touch /var/log/{dovecot-lmtp-errors.log,dovecot-lmtp.log}
|
|
#touch /etc/dovecot/sieve/default.sieve
|
|
#chown vmail: -R /etc/dovecot/sieve
|
|
#chown vmail:mail /var/log/dovecot-*
|
|
#
|
|
#echo 'Create Sieve Default spam to Junk rule'
|
|
#cat >>/etc/dovecot/sieve/default.sieve <<EOL
|
|
#require "fileinto";
|
|
#if header :contains "X-Spam-Flag" "YES" {
|
|
# fileinto "INBOX.Junk E-mail";
|
|
#}
|
|
#EOL
|
|
#
|
|
#echo "Adding Sieve to /etc/dovecot/dovecot.conf"
|
|
#cat >>/etc/dovecot/dovecot.conf <<EOL
|
|
#
|
|
#service managesieve-login {
|
|
# inet_listener sieve {
|
|
# port = 4190
|
|
# }
|
|
#}
|
|
#service managesieve {
|
|
#}
|
|
#protocol sieve {
|
|
# managesieve_max_line_length = 65536
|
|
# managesieve_implementation_string = dovecot
|
|
# log_path = /var/log/dovecot-sieve-errors.log
|
|
# info_log_path = /var/log/dovecot-sieve.log
|
|
#}
|
|
#plugin {
|
|
#sieve = /home/vmail/%d/%n/dovecot.sieve
|
|
#sieve_global_path = /etc/dovecot/sieve/default.sieve
|
|
#sieve_dir = /home/vmail/%d/%n/sieve
|
|
#sieve_global_dir = /etc/dovecot/sieve/global/
|
|
#}
|
|
#protocol lda {
|
|
# mail_plugins = $mail_plugins sieve quota
|
|
# postmaster_address = postmaster@example.com
|
|
# hostname = server.example.com
|
|
# auth_socket_path = /var/run/dovecot/auth-master
|
|
# log_path = /var/log/dovecot-lda-errors.log
|
|
# info_log_path = /var/log/dovecot-lda.log
|
|
#}
|
|
#protocol lmtp {
|
|
# mail_plugins = $mail_plugins sieve quota
|
|
# log_path = /var/log/dovecot-lmtp-errors.log
|
|
# info_log_path = /var/log/dovecot-lmtp.log
|
|
#}
|
|
#EOL
|
|
#
|
|
#hostname=$(hostname)
|
|
#
|
|
#echo 'Fix postmaster email in sieve'
|
|
#postmaster_address=$(grep postmaster_address /etc/dovecot/dovecot.conf | sed 's/.*=//' | sed -e 's/^[ \t]*//' | sort -u)
|
|
#
|
|
#sed -i "s|postmaster@example.com|$postmaster_address|g" /etc/dovecot/dovecot.conf
|
|
#sed -i "s|server.example.com|$hostname|g" /etc/dovecot/dovecot.conf
|
|
#sed -i "s|postmaster@example.com|$postmaster_address|g" /etc/dovecot/dovecot.conf
|
|
#
|
|
##Sieve the global spam filter
|
|
#sievec /etc/dovecot/sieve/default.sieve
|
|
#
|
|
##Sieve the global spam filter
|
|
#sievec /etc/dovecot/sieve/default.sieve
|
|
#
|
|
#if [ "$OS" = "NAME=\"Ubuntu\"" ]; then
|
|
# sed -i 's|^spamassassin.*|spamassassin unix - n n - - pipe flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e /usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}|g' /etc/postfix/master.cf
|
|
#
|
|
#elif [ "$OS" = "NAME=\"CentOS Linux\"" ]; then
|
|
# sed -i 's|^spamassassin.*|spamassassin unix - n n - - pipe flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e /usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}|g' /etc/postfix/master.cf
|
|
#
|
|
#elif [ "$OS" = "NAME=\"CloudLinux\"" ]; then
|
|
# sed -i 's|^spamassassin.*|spamassassin unix - n n - - pipe flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e /usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}|g' /etc/postfix/master.cf
|
|
#
|
|
#fi
|
|
|
|
echo 'Restart and check services are up'
|
|
systemctl restart dovecot && systemctl restart postfix && systemctl restart spamassassin && systemctl restart mailscanner
|
|
|
|
csf -e
|
|
|
|
echo "MailScanner successfully installed. MailWatch successfully installed."
|
|
echo "Visit https://${IPADDRESS}:8090/mailwatch/mailscanner"
|
|
echo "Username: admin"
|
|
echo "Password: ${ADMINPASS}"
|
|
#echo "If you wish mailscanner/spamassassin to send spam email to a spam folder please follow the tutorial on the Cyberpanel Website"
|
|
echo "Firewalld is stopped. Either enable, install CSF or use an alternative!"
|
|
echo "Optional cpan/cpanm modules are available for MailScanner. Cronjobs and further postfix tools are available for MailWatch"
|
|
echo "See https://www.mailwatch.org and https://docs.mailwatch.org/install/optional-setup.html"
|
|
exit
|