bullmail/script/bullmail.sh

104 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
#
# Input your settings here
#
tls_cert="/etc/apache2/ssl/yourdomain.com.pem"
tls_key="/etc/apache2/ssl/yourdomain.com.key"
hostname="mail.yourdomain.com"
domain="yourdomain.com"
#
# Script
#
echo "Welcome to bullmail"
if [ "$EUID" -ne 0 ]; then
echo "Run this shit as root. Exiting"
exit 1
fi
packages="dovecot-core dovecot-imapd postfix rspamd postfix dovecot-lmtpd dovecot-sieve dovecot-managesieved postfix postfix-pcre"
echo "=== Cleaning up garbage... ==="
rm -rf /etc/rspamd/
rm -rf /etc/dovecot/
apt purge --autoremove $packages -y
echo "=== Installing packages ==="
apt install $packages -y
echo "=== Configuring rspamd ==="
echo "Generating DKIM keys..."
mkdir -p /var/lib/rspamd/dkim
chown _rspamd:_rspamd /var/lib/rspamd/dkim
chmod 750 /var/lib/rspamd/dkim
dkim=$(rspamadm dkim_keygen -d $domain -s mail)
private_key=$(echo "$dkim" | awk 'BEGIN {RS="-----END PRIVATE KEY-----"} NR==1 {print $0 RS}' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
dns_record=$(echo "$dkim" | awk 'BEGIN {RS="-----END PRIVATE KEY-----"} NR==2 {print $0}' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
touch /var/lib/rspamd/dkim/$domain.mail.key
echo "$private_key" > "/var/lib/rspamd/dkim/$domain.mail.key"
rspamd_dkim=$(< "$PWD/dkim_signing.conf")
rspamd_dkim="${rspamd_dkim//__domain__/$domain}"
echo "$rspamd_dkim" > "/etc/rspamd/local.d/dkim_signing.conf"
chown _rspamd:_rspamd /var/lib/rspamd/dkim/$domain.mail.key
chmod 644 /var/lib/rspamd/dkim/$domain.mail.key
cp $PWD/milter_headers.conf /etc/rspamd/local.d/milter_headers.conf
cp $PWD/actions.conf /etc/rspamd/local.d/actions.conf
touch /var/log/rspamd/rspamd.log
chown _rspamd:_rspamd -R /etc/rspamd/local.d
chown _rspamd:_rspamd /var/log/rspamd/rspamd.log
chmod 744 /etc/rspamd/local.d
chmod 644 /etc/rspamd/local.d/*
chmod 644 /var/log/rspamd/rspamd.log
echo "Restarting rspamd..."
service rspamd restart
echo "=== Configuring Postfix ==="
postfix_conf=$(< "$PWD/main.cf")
postfix_conf="${postfix_conf//KEY.pem/$tls_cert}"
postfix_conf="${postfix_conf//KEY.key/$tls_key}"
postfix_conf="${postfix_conf//__domain__/$domain}"
postfix_conf="${postfix_conf//__hostname__/$hostname}"
echo "$postfix_conf" > "/etc/postfix/main.cf"
escaped_domain="${hostname//./\\.}"
header_checks=$(< "$PWD/header_checks")
header_checks="${header_checks//__hostname__/$escaped_domain}"
touch /etc/postfix/header_checks
echo "$header_checks" > "/etc/postfix/header_checks"
cp $PWD/master.cf /etc/postfix/master.cf
echo "Restarting Postfix..."
service postfix restart
echo "=== Configuring Dovecot ==="
dovecot_conf=$(< "$PWD/dovecot.conf")
dovecot_conf="${dovecot_conf//KEY.pem/$tls_cert}"
dovecot_conf="${dovecot_conf//KEY.key/$tls_key}"
dovecot_conf="${dovecot_conf//__domain__/$domain}"
echo "$dovecot_conf" > "/etc/dovecot/dovecot.conf"
mkdir -p /etc/dovecot/sieve
cp $PWD/spam2junk.sieve /etc/dovecot/sieve
sievec /etc/dovecot/sieve/spam2junk.sieve
chown -R vmail:vmail /etc/dovecot/sieve
echo "Restarting Dovecot..."
service dovecot restart
echo "Done. Please set this TXT record on your $domain domain."
echo $dns_record
echo "Bye!"