Uberspace – Mit Catchall-Adressen Spam erkennen/eingrenzen

Während der letzten Monate habe ich mich mit einer Emailadresse bei verschiedenen Diensten angemeldet. Nach und nach resultierte das in einer zuvor nicht dagewesenen Welle an Spamnachrichten. Leider kann man mit einer Emailadresse nicht wirklich nachvollziehen, ob ein Anbieter Emailadressen weiterverkauft oder diese auf irgendeine Art und Weise ergaunert wurden. Nach ein paar Minuten des Grübelns fiel mir eine Lösung ein: Mit Hilfe von Catchall-Adressen und separaten Unterordnern die Übeltäter entlarven.

Voraussetzungen?

Im weiteren Teil des Artikels gehe ich davon aus, das ihr den grundlegenden Umgang mit .qmail bzw. maildrop auf einem Uberspace beherrscht. Andernfalls bietet das Uberspace Wiki einen guten Einstieg.

Idee?

Die Idee besteht darin, dass wir eine Catchall-Adresse anlegen. Dem zu „beliebigen“ Teil der Emailadresse wird jedoch immer ein eigener Unterordner angelegt. Beispiel:

  • .qmail-account-default bzw. account-[CATCHALL]@domain.tld
  • [CATCHALL] auf ^[A-Za-z0-9-]{1,25}$ begrenzen
  • ~/Maildir/.Accounts ist ein Mailordner

Dann möchten wir folgende Zuweisungen erreichen:

  • account-test@domain.tld >> ~/Maildir/.Account.test
  • account-foobar@domain.tld >> ~/Maildir/.Account.foobar
  • usw…

Umsetzung?

Für die Umsetzung benötigen wir zunächst eine neue Catchall-Adresse:

> cat ~/.qmail-account-default 
|maildrop $HOME/.maildrop-account

Wie man erkennen kann, werden die Emails an Maildrop weitergeleitet. Das Script sieht folgendermaßen aus:

> cat ~/.maildrop-account
#Base maildir
MAILDIR = "$HOME/Maildir/.Account"

#Logfile
logfile "$HOME/.maildrop-account.log"

#Import the 'catchall' part of the receivers email address
import DEFAULT

#Only deliver emails for allowed email addresses.
if ($DEFAULT =~ /^[A-Za-z0-9-]{1,25}$/)
{

#Check the existence of an appropriate mailfolder and create it if necessary.
 `test -d "$MAILDIR.$DEFAULT"`
 if( $RETURNCODE == 1 )
 {
 `maildirmake "$MAILDIR.$DEFAULT"`
 }

#Deliver the email
 to "$MAILDIR.$DEFAULT";
}

#Ignore all other emails
exit

Ich hoffe mal, das die Kommentare bzw. die 20 Zeilen Code selbsterklärend sind. Zuletzt muss noch das Logfile angelegt werden:

> touch ~/.maildrop-accounts.log
> chmod 600 ~/.maildrop-accounts.log

Setup testen?

Um das Setup zu testen, kann man sich vom Uberspace-Host einfach selbst eine Email schicken:

> echo "test" | mail -s testmail account-test@domain.tld

Nachdem man einige Sekunden gewartet hat, sollte ein neuer Eintrag im Logfile erschienen und ein neuer Ordner angelegt worden sein:

> ls ~/Maildir/ | grep test
drwx------ 5 gehaxelt gehaxelt 4.0K Oct 12 11:50 .Account.test

Zuletzt sollte man noch in seinem Mailclient diesen neuen Ordner abonnieren.

Fazit

Wenn nun eine der Catchall-Adressen mit Spam belagert wird, so bleibt dieser zumindest in einem Unterordner und die Herkunft lässt sich eventuell einfacher bestimmen.

~Sebastian