Quota Info und URIBL_BLOCKED mit SpamAssassin für Virtualmin

Virtualmin ist eine webbasierte Verwaltungsoberfläche für Server, die auf dem Betriebssystem Linux basieren. Die Software bietet eine Vielzahl von Funktionen, die es Benutzern ermöglichen, ihre Server effektiv zu verwalten. So können mit Virtualmin verschiedene Arten von Webanwendungen, Datenbanken und E-Mail-Diensten auf einem Server installiert und konfiguriert werden. Die Software unterstützt eine Vielzahl von Betriebssystemen, darunter CentOS, Debian, Ubuntu und Fedora. Virtualmin ist besonders nützlich für Webhosting-Provider, die viele Websites auf einem einzigen Server hosten möchten und dennoch eine hohe Leistung für die einzelnen Seiten bereitstellen möchten. Die Benutzeroberfläche ist einfach zu bedienen und ermöglicht es Benutzern, ihre Server ohne Programmierkenntnisse zu verwalten. Dazu bietet die Software auch Tools zur Überwachung der Systemleistung.

Virtualmin ist Open-Source-Software und kann kostenlos heruntergeladen und verwendet werden. Es gibt auch eine kostenpflichtige Version namens Virtualmin Pro, die zusätzliche Funktionen und Support bietet. Ein entscheidendes Feature, dass der kostenlosen Version von Virtualmin meiner Meinung nach fehlt, ist die Möglichkeit Benutzer über ihren Speicherplatzverbrauch zu benachrichtigen.

Diese Funktion kann mit zwei einfachen Skripten nachgerüstet werden. Virtualmin verwendet zum Bereitstellen von Postfächern über IMAP bzw. POP3 Dovecot. Dem Dovecot Server sind dabei die über Virtualmin gesetzten Speicherplatzbeschränkungen (Quotas) bekannt. In dem Skript werden zunächst die Ordner Spam und Papierkorb in jedem Benutzerkonto aufgeräumt. Anschließend wird der aktuelle Füllstand in jedem Postfach durch Doveadm berechnet. Die Ausgabe wird ausgewertet und Benutzer mit mehr als 70 % belegtem Speicherplatz werden an ein weiteres Skript übergeben.

#!/bin/bash  
doveadm expunge -A mailbox spam savedbefore 10d
doveadm expunge -A mailbox Trash savedbefore 10d
doveadm quota recalc -A

# Run the dovecot command and save the output to a variable 
output=$(doveadm -f flow quota get -A)  
# Process each line of the output 
while IFS= read -r line; do 
# Check if the line contains an @ symbol, a percentage, and does not contain "error" 
if [[ $line =~ "@" ]] && [[ $line =~ "%=" ]] && [[ ! $line =~ "error" ]]; then 
# Extract the email, percentage, and domain from the line 
email=$(echo "$line" | awk '{print $1}') 
percent=$(echo "$line" | awk -F'%=' '{print $2}')  
# Check if the percentage contains an integer value 
if [[ $percent =~ ^[0-9]+ ]]; then 
# Check if the percentage is greater than 70 
if [ "$percent" -gt 70 ]; then 
# Call the quota-warning.sh script with the percentage and email 
./quotaemail.sh "$percent" "$email" 
#printf "\n\n"
#echo -n "percent: $percent email: $email"
fi 
fi 
fi 
done <<< "$output"

Das zusätzliche Skript ist für den Mailversand an die Benutzer zuständig. Das erste Skript kann beispielsweise einmal wöchentlich per Cron aufgerufen werden.

#!/bin/sh
PERCENT=$1
USER=$2
ADMIN="admin@domain.tld"
FROM="admin@domain.tld"

msg="From: $FROM
To: $USER
Subject: Speicherplatz-Warnung $PERCENT% 

Sehr geehrte Nutzerin,
sehr geehrter Nutzer,

Ihr Postfach $USER belegt inzwischen $PERCENT% des moeglichen Speicherplatzes.
Bitte loeschen Sie einige Elemente aus diesem Postfach oder speichern Sie diese lokal, um Speicherplatz freizugeben. 



Dear user,

Your mailbox $USER currently allocates $PERCENT% of the possible disk space.
Please delete some items from this mailbox or save them to your local machine to free up disk space.

"

echo "$msg" | /usr/sbin/sendmail -t -f $FROM "$USER"

exit 0

Spamfilterung mit Virtualmin verbessern und „URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked“ vermeiden

Virtualmin setzt zur Spamfilterung auf SpamAssassin Mail Filter. SpamAssassin kontaktiert mehrere DNS Blacklists, die mit einer Art Fair-Use-Policy arbeiten. Ab einer gewissen Anzahl von Abfragen ist eine kostenpflichtige Mitgliedschaft erforderlich. Jetzt könnte man zunächst meinen, dass ein kleiner Mailserver davon nicht betroffen sein wird. Problematisch ist jedoch, wenn die Abfragen über einen großen Nameserver des Rechenzentrumbetreibers oder Anbieter wie Google DNS oder Cloudflare gestellt werden. Damit das nicht passiert, kann man mit dnsmasq seinen eigenen DNS Caching Server auf der selben Maschine aufsetzen. Dazu einen eventuell installierten BIND DNS Server entfernen oder auf einen anderen Port umlegen (/etc/bind/named.conf.options um listen-on port xxxx und listen-on-v6 port xxxx ergänzen) und Neustarten.

Anschließend wird dnsmasq installiert, konfiguriert und die aktuelle DNS Konfiguration durch Kopieren für dnsmasq verwendet. Durch die entsprechenden Zeilen zu uribl.com werden diese Server direkt angesprochen. Die passenden IP Adressen können mit den Befehlen „host -t ns multi.uribl.com“ und anschließend beispielsweise „host ee.uribl.com“ herausgefunden werden.

apt-get install dnsmasq

nano /etc/dnsmasq.conf
user=www-data
group=www-data

resolv-file=/etc/resolv.conf.dnsmasq
server=/multi.uribl.com/54.93.83.147
server=/multi.uribl.com/54.93.185.237
listen-address=127.0.0.1
bind-interfaces

mv /etc/resolv.conf /etc/resolv.conf.dnsmasq

nano /etc/resolv.conf
nameserver 127.0.0.1

nano /etc/spamassassin/local.cf
dns_server 127.0.0.1

Damit werden nun DNS Abfragen direkt von der eigenen Maschine an die Blocklist gestellt. Abschließend wird SpamAssassin noch so konfiguriert, dass der lokale dnsmasq Server für Abfragen verwendet wird und so das Problem URIBL_BLOCKED behoben wird.

Schreibe einen Kommentar