104 lines
3.0 KiB
Bash
Executable File
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!"
|