2016-08-08 17:41:39 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2016-08-08 18:43:25 +00:00
|
|
|
usage(){
|
|
|
|
echo "usage: ./mailserver.sh [help] [install]"
|
|
|
|
echo "help: show this help"
|
|
|
|
echo "install: install exim/courier mail server"
|
|
|
|
}
|
|
|
|
|
2016-08-08 22:41:17 +00:00
|
|
|
RED="\e[91m"
|
|
|
|
GRE="\e[92m"
|
|
|
|
YEL="\e[93m"
|
|
|
|
STD="\e[0m"
|
2016-08-08 18:43:25 +00:00
|
|
|
|
|
|
|
[[ $# -lt 1 ]] && usage
|
|
|
|
[[ $1 == "help" ]] && usage
|
2016-08-08 22:23:13 +00:00
|
|
|
[[ $EUID -ne 0 ]] && echo -e "${RED}This script must be run as root.${STD}" && exit 1
|
2016-08-08 18:43:25 +00:00
|
|
|
|
2016-08-15 13:38:21 +00:00
|
|
|
install_ask_domain() {
|
2016-08-08 22:41:17 +00:00
|
|
|
echo -e "${GRE}Please enter the mail server's main domain${STD}"
|
|
|
|
read choice
|
|
|
|
[[ -n $choice ]] && echo $choice > /etc/mailname
|
2016-08-15 13:38:21 +00:00
|
|
|
[[ -z $choice ]] && install_ask_domain
|
|
|
|
}
|
|
|
|
|
2016-08-08 18:43:25 +00:00
|
|
|
install_exim() {
|
2016-08-15 13:38:21 +00:00
|
|
|
install_ask_domain
|
2016-08-08 22:23:13 +00:00
|
|
|
echo -e "${YEL}Two boxes will appear. Hit [Enter] each time to continue.${STD}"
|
2016-08-15 15:18:38 +00:00
|
|
|
read -p "Press [Enter] key to continue..."
|
2016-09-28 21:23:54 +00:00
|
|
|
aptitude -y install exim4 courier-imap courier-imap-ssl courier-authlib-userdb ssl-cert sudo openssl
|
2016-08-15 13:38:21 +00:00
|
|
|
chown -fvR daemon: courier/*
|
|
|
|
cp -fv courier/* /etc/courier/
|
2016-08-08 22:23:13 +00:00
|
|
|
chown -vR $USER: courier/*
|
2016-10-05 20:42:29 +00:00
|
|
|
mkdir -pv /etc/exim4/domains
|
|
|
|
mkdir -pv /etc/exim4/forward
|
2016-08-15 17:55:19 +00:00
|
|
|
cp -fv exim4/exim4.conf /etc/exim4/exim4.conf
|
2016-08-15 13:38:21 +00:00
|
|
|
chmod -fv 777 /var/run/courier/authdaemon/socket
|
2016-08-15 15:18:38 +00:00
|
|
|
/usr/share/doc/exim4-base/examples/exim-gencert
|
|
|
|
openssl genrsa -out /etc/exim4/dkim.key 2048
|
|
|
|
install_restart
|
|
|
|
gen_public_dns
|
2016-08-08 18:43:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
install_spamassassin() {
|
2016-09-28 21:23:54 +00:00
|
|
|
aptitude -y install exim4-daemon-heavy sa-exim spamassassin pyzor razor
|
|
|
|
sudo -u debian-spamd pyzor discover
|
|
|
|
razor-admin -home=/etc/razor -discover
|
2016-08-15 13:38:21 +00:00
|
|
|
cp -fv spamd/sa-learn /etc/cron.daily/sa-learn
|
|
|
|
cp -fv spamd/spamassassin /etc/default/spamassassin
|
2016-08-15 16:13:50 +00:00
|
|
|
systemctl enable spamassassin
|
|
|
|
service spamassassin restart
|
2016-08-15 15:18:38 +00:00
|
|
|
install_restart
|
2016-08-08 18:43:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
install_clamav() {
|
2016-08-15 13:38:21 +00:00
|
|
|
aptitude -y install exim4-daemon-heavy clamav clamav-daemon
|
2016-08-15 16:13:50 +00:00
|
|
|
adduser clamav Debian-exim
|
|
|
|
systemctl enable clamav-daemon
|
|
|
|
service clamav-daemon restart
|
2016-08-15 15:18:38 +00:00
|
|
|
install_restart
|
2016-08-15 13:38:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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
|
2016-08-08 18:43:25 +00:00
|
|
|
}
|
|
|
|
|
2016-08-15 15:18:38 +00:00
|
|
|
gen_public_dns() {
|
2016-08-15 20:54:53 +00:00
|
|
|
DNS=$(openssl rsa -in /etc/exim4/dkim.key -pubout)
|
2016-08-15 15:18:38 +00:00
|
|
|
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..."
|
|
|
|
}
|
|
|
|
|
2016-08-08 18:43:25 +00:00
|
|
|
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"
|
2016-08-15 15:18:38 +00:00
|
|
|
echo "5. Show DNS config"
|
|
|
|
echo "6. Exit"
|
|
|
|
read -p "Enter choice [1 - 6] " choice
|
2016-08-08 18:43:25 +00:00
|
|
|
case $choice in
|
2016-08-15 15:18:38 +00:00
|
|
|
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 ;;
|
2016-08-08 18:43:25 +00:00
|
|
|
*) clear && echo -e "${RED}Please enter a valid input${STD}" && install_mailserver ;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
2016-09-28 21:23:54 +00:00
|
|
|
[[ $1 == "install" ]] && clear && install_mailserver
|