#!/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!"