So I have a very cool (and quite full) Hestia server but I do not like the anti-spam capabilities and I wanted to have a reliable incoming and outgoing mail cluster before it. I therefor installed Proxmox Mail Gateway 8 on three nodes to do the filtering. But I have over 20 users and more than 100 mail domains to change.
SO! Batch-mode on.
What I wanted is to disable anti-spam, antivirus and reject spam settings. And also enable the smart relay to use the PMG cluster for outgoing mail.
After importing all mail domain names into Proxmox as ‘relay domains’ (trusted domains for which Proxmox can accept emails), I wrote this script to get all configured mail domains for a Hestia user and change the settings.
Just save it as mailchange.sh, do a chmod +x mailchange.sh and run it with a username:
./mailchange.sh hestia.username
The script:
#!/bin/bash
clear
# Change this to your PMG cluster host and the relay port
relayhost="relay.domain.com"
relayport="26"
RED="\033[31m"
GREEN="\033[32m"
NORMAL="\033[0;39m"
if [ -z "$1" ]; then
printf "$RED"
echo "Error: The first argument must be a valid username."
printf "$NORMAL"
exit 1
else
user="$1"
fi
# Getting all domains for username
v-list-mail-domains $1 | awk '{print $1}' | grep -v -e 'DOMAIN' -e '------' -e 'Error:' > $1_domains.txt
# Showing current mail domain settings
echo ""
printf "$GREEN"
echo Current mail domains and settings
echo ""
printf "$NORMAL"
v-list-mail-domains $1
# You can still get out of here!
echo ""
printf "$RED"
read -p "Ready to change the settings? (yes/no) " yn
case $yn in
yes ) printf "$GREEN";
echo OK, we will proceed;;
no ) echo exiting...;
printf "$NORMAL";
exit;;
* ) echo invalid response;
exit 1;;
esac
printf "$NORMAL"
while IFS= read -r domain
do
echo ""
v-delete-mail-domain-antispam $1 $domain >/dev/null
v-delete-mail-domain-antivirus $1 $domain >/dev/null
v-delete-mail-domain-reject $1 $domain >/dev/null
v-delete-mail-domain-smtp-relay $1 $domain >/dev/null
v-add-mail-domain-smtp-relay $1 $domain $relayhost "" "" $relayport >/dev/null
printf "$GREEN"
echo "Removed settings and added smart relay for domain $domain"
printf "$NORMAL"
done < $1_domains.txt
echo ""
printf "$GREEN"
echo New mail domains and settings
echo ""
printf "$NORMAL"
v-list-mail-domains $1
Before:
After:
Done!