Exim/mailserver.sh
2016-10-05 22:42:29 +02:00

104 lines
3.3 KiB
Bash
Executable File

#!/usr/bin/env bash
usage(){
echo "usage: ./mailserver.sh [help] [install]"
echo "help: show this help"
echo "install: install exim/courier mail server"
}
RED="\e[91m"
GRE="\e[92m"
YEL="\e[93m"
STD="\e[0m"
[[ $# -lt 1 ]] && usage
[[ $1 == "help" ]] && usage
[[ $EUID -ne 0 ]] && echo -e "${RED}This script must be run as root.${STD}" && exit 1
install_ask_domain() {
echo -e "${GRE}Please enter the mail server's main domain${STD}"
read choice
[[ -n $choice ]] && echo $choice > /etc/mailname
[[ -z $choice ]] && install_ask_domain
}
install_exim() {
install_ask_domain
echo -e "${YEL}Two boxes will appear. Hit [Enter] each time to continue.${STD}"
read -p "Press [Enter] key to continue..."
aptitude -y install exim4 courier-imap courier-imap-ssl courier-authlib-userdb ssl-cert sudo openssl
chown -fvR daemon: courier/*
cp -fv courier/* /etc/courier/
chown -vR $USER: courier/*
mkdir -pv /etc/exim4/domains
mkdir -pv /etc/exim4/forward
cp -fv exim4/exim4.conf /etc/exim4/exim4.conf
chmod -fv 777 /var/run/courier/authdaemon/socket
/usr/share/doc/exim4-base/examples/exim-gencert
openssl genrsa -out /etc/exim4/dkim.key 2048
install_restart
gen_public_dns
}
install_spamassassin() {
aptitude -y install exim4-daemon-heavy sa-exim spamassassin pyzor razor
sudo -u debian-spamd pyzor discover
razor-admin -home=/etc/razor -discover
cp -fv spamd/sa-learn /etc/cron.daily/sa-learn
cp -fv spamd/spamassassin /etc/default/spamassassin
systemctl enable spamassassin
service spamassassin restart
install_restart
}
install_clamav() {
aptitude -y install exim4-daemon-heavy clamav clamav-daemon
adduser clamav Debian-exim
systemctl enable clamav-daemon
service clamav-daemon restart
install_restart
}
install_restart() {
service courier-authdeamon restart
service courier-imap restart
service courier-pop restart
service courier-imap-ssl restart
service courier-pop-ssl restart
service exim4 restart
}
gen_public_dns() {
DNS=$(openssl rsa -in /etc/exim4/dkim.key -pubout)
DNS=$(echo ${DNS} | sed "s/ //g" | sed "s/.*Y-----\(.*\)-----E.*/\1/g")
echo -e "${YEL}Please put these pointers on your DNS provider :${STD}"
echo -e '\t\t10800 IN MX 10 <domain>'
echo -e '\t\t10800 IN TXT "v=spf1 a -all"'
echo -e '_domainkey\t10800 IN TXT "o=~; r=postmaster@<domain>"'
echo -e "x._domainkey\t10800 IN TXT \"v=DKIM1; k=rsa; p=${DNS}\""
echo -e '_dmarc\t\t10800 IN TXT "v=DMARC1; p=quarantine"'
read -p "Press [Enter] key to continue..."
}
install_mailserver() {
echo "Do you want to install extra software ?"
echo "1. None"
echo "2. SpamAssassin (antispam)"
echo "3. ClamAV (antivirus)"
echo "4. Both SpamAssassin and ClamAV"
echo "5. Show DNS config"
echo "6. Exit"
read -p "Enter choice [1 - 6] " choice
case $choice in
1) install_exim ;;
2) install_exim && install_spamassassin ;;
3) install_exim && install_clamav ;;
4) install_exim && install_spamassassin && install_clamav ;;
5) gen_public_dns ;;
6) exit ;;
*) clear && echo -e "${RED}Please enter a valid input${STD}" && install_mailserver ;;
esac
}
[[ $1 == "install" ]] && clear && install_mailserver