Temporär gültige Wegwerfadressen im Uberspace (qdated)

Anmerkung: Voraussetzung ist eine installierte qdated-Umgebung im ~/bin/qdated Verzeichnis und der qdated-Key im Benutzerordner! Bitte zunächst diesen Artikel lesen und verstehen! Und gebt dem Mailserver ein paar Sekunden (max. 1-2 Min) Zeit, eure neu angelegten .qmail Dateien (=Wegwerfadressen) zu erkennen!

Ich habe Gefallen an diesen „ablaufenden“ E-Mail Adressen gefunden! Da ich hin und wieder Wegwerf-Adressen verwende, aber scheinbar Datenbanken existieren, die verhindern, dass Benutzer eine solche Wegwerfadresse verwenden, muss man manchmal eine Weile suchen, bis man einen Trashmail-Anbieter findet, der nicht geblockt wird. Also dachte ich mir: Ich werde mein eigener Trashmail-Anbieter.

Anmerkung März 2015:
Inzwischen habe ich ein github Repository eingerichtet, damit wir dieses Projekt gemeinsam weiterentwickeln und bearbeiten können: https://github.com/polarvogel/qubertrash

Erzeugung einer Wegwerf-Adresse

Mit folgendem Script werden im Uberspace .qmail-Dateien erzeugt, die auf genau eine, nämlich die zu erstellende Wegwerf-Adresse hören. Dabei wird angegeben, wohin eingehende Mails weitergeleitet werden sollen (Parameter 1, z.B. „info@domain.de“ oder „uberspaceuser-info“) und wie lange diese Adresse gültig sein soll (Parameter 2, in Stunden!). Zum Schluss wird die erzeugte Adresse noch auf der Konsole ausgegeben. Diese Ausgabe könnte abgefangen werden, wenn man das Script beispielsweise in eine Internetseite integriert, auf der man sich mal eben eine Wegwerfadresse erzeugt (z.B. mit Zugangskontrolle über .htaccess, damit man nicht immer über SSH rein muss!). Unbedingt Präfix und Suffix anpassen! Das Skript sollte in ~/bin/qdated/ liegen – muss es aber nicht.

[github file = „/polarvogel/qubertrash/blob/master/generate_trash_mail.sh“]

 

Anmerkung:

Es hat einen Moment gedauert, bis ich verstanden habe, dass qdated-check NICHT mit „festen“ .qmail Dateien arbeitet, sondern nur durch eine .qmail-PREFIX-default aufgerufen werden soll. Das liegt daran, dass der Mailserver auf dem Uberspace (netqmail) während des Verarbeitens der .qmail-PREFIX-default Datei die Umgebungsvariable „DEFAULT“ setzt. Deren Inhalt ist der variable Teil der E-Mail Adresse. Beispiel: Das Präfix ist „trash“, die .qmail-trash-default existiert und ich sende eine Mail an „trash-hallihallo@domain.de“. In der DEFAULT Umgebungsvariable steht dann beim Eintreffen und Verarbeiten der Mail „hallihallo“ – oder bei qdated-Adressen eben der Zeitstempel. Bei unseren Trashmails lege ich aber für jede einzelne Wegwerfadresse eine direkte .qmail Datei an – ohne „default“. Und das bringt qdated-check dazu, sich frühzeitig zu beenden – die Mail verirrt sich ins Leere..

Diese Problematik umgehe ich nun damit, dass ich in der .qmail Datei nicht direkt den qdated-check aufrufe, sondern die Mail an ein selbstgeschriebenes Script (parse_trashmail.sh) übergebe. Dieses Script setzt dann die benötigte Umgebungsvariable, führt qdated-check aus und schickt das Ergebnis (den Exit-Code) zurück an den Mailserver. Dieses Workaround funktioniert nun ;-)

Das Skript dazu sieht so aus:

[github file = „/polarvogel/qubertrash/blob/master/parse_trashmail.sh“]

Automatische Löschung abgelaufener Adressen

Auch für das Löschen der .qmail Dateien abgelaufener Adressen habe ich ein Skript geschrieben, das 1x pro Tag als Cronjob ausgeführt werden kann. Das wäre theoretisch gar nicht nötig, da die Mails, sobald eine Adresse abgelaufen ist, gar nicht mehr angenommen werden. Ich will aber nicht, dass mein Uberspace voller verwaister .qmail-Dateien liegt… Also, Script in ~/bin/qdated/ ablegen, Präfix anpassen und als Cronjob einrichten!

[github file = „/polarvogel/qubertrash/blob/master/remove_expired_trashmails.sh“]

Ausgabe bestehender Wegwerf Adressen:

Das folgende Script gibt zeilenweise die bestehenden Wegwerfadressen und deren Ablaufdatum auf der Konsole aus. Auch hier: Präfix und Suffix anpassen.

[github file = „/polarvogel/qubertrash/blob/master/show_active_trashmails.sh“]

Download & Cronjob

Die 4 Skripte könnt ihr entweder hier heraus kopieren und in ~/bin/qdated anlegen (achtet auch die korrekten Namen der Dateien!!) oder in einem Paket bei mir herunterladen. Hier eine Anleitung zum Speichern und Ausführen von Scripten, oder in einem Rutsch der Download:

Mit crontab -e einen neuen Cronjob einrichten (dieser hier läuft jede Nacht um genau 0:00 Uhr):

Anlegen neuer Adressen mit Webinterface

Mit wenigen PHP Aufrufen kann man das Ganze auch per Webinterface erreichbar machen. Ich habe dafür eine Subdomain eingerichtet, die ich mit .htaccess für Fremde unzugänglich mache. Dazu zunächst die Subdomain im Uberspace anlegen: mkdir /var/www/virtual/UBERSPACEUSER/SUB.DOMAIN.DE . Zum Absichern dieser Domain legt man darin eine .htaccess Datei an und befolgt diese simplen Anweisungen aus dem Uberspace Wiki. Dieser Schritt ist enorm wichtig! Zusätzlich ist es zu empfehlen, diese Seite, vor allem wenn ihr unterwegs seid, nur per HTTPS zugänglich zu machen. Erzwingen könnt ihr das dadurch, dass ihr an den Beginn der .htaccess Datei noch folgendes schreibt:

Habt ihr kein SSL Zertifikat für eure eigene Domain, dann legt die Seite (und die .htaccess) einfach im Ordner „trashmail.USERNAME.SERVERNAME.uberspace.de“ an (das SSL Zertifikat eines Uberspace-Servers ist für alle Subdomains – das sind wir User quasi – gültig). Wollt ihr die Seite nun trotzdem über eine kürzere, eigene Domain erreichen, dann legt den gewünschten Ordner an, z.B. „trashmail.domain.de“, und erstellt darin eine .htaccess Datei die nur eine Weiterleitung an die HTTPS-Domain veranlasst (verursacht leider trotzdem Warnungen im Browser…):

 

Im Subdomain Ordner nun nur noch die Datei „index.php“ anlegen und mit folgendem Inhalt füllen (Variable „uberspaceuser“ in Zeile 5 anpassen):

[github file = „/polarvogel/qubertrash/blob/master/index.php“]

Die Eingaben in die Felder werden geprüft, es muss sich um eine korrekte E-Mail Adresse bzw. um eine Ganzzahl handeln. Damit schützt ihr euch vor Fehlern und Fremde können keinen Code im Uberspace ausführen.. Das Ergebnis sieht dann etwa so aus:
Trashmail_webinterface