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

Dieser Eintrag wurde veröffentlicht in Alle Artikel, Uberspace und getaggt als , , , , , , , . Fügen Sie den permalink zu Ihren Favoriten hinzu.

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

  1. eugen sagt:

    Vielen Dank für die super ausführliche Anleitung! Gerade für mich als Neuling war sie ausführlich genug. Gerade auch solche Kleinigkeiten wie “Wie führt man shell skripte aus” in der Verlinkten Anleitung oben, habe mir geholfen!

    :)

  2. Eine exzellente Anleitung, genau wie auch die zu den temporären Adressen, welche ich zuerst ausprobiert habe.
    Ich hatte bei diesen Scrippten trotz Nutzung von mcedit/nano/vi das Problem, das die Scripte nicht liefen, da sie /bin/bash^M nicht kennen, verständlicherweise.
    Auch ein mehrfaches Editieren der entsprechenden Zeile in diversen verschiedenen Editoren (s.o.) brachte nichts.
    Erst, als ich mit dem Befehl

    sed -i -e ‘s/\r$//’ SCRIPT_NAME.sh

    die Scripte von Carriage return Systemzeichen bereinigt habe, liefen sie wie am Schnürchen.

    Von daher: Daumen hoch!

    Als nächstes nehme ich mir deine OpenID-Anleitung vor

    P.S. Email ist 5 Tage gültig *fg*

    • Ben sagt:

      Hi,

      danke für den Hinweis und das Lob. Hast du die Scripte per Copy&Paste aus dem Browser? Dann müsste ich wohl nochmal das Plugin untersuchen.

      Du hast ja nun ein Workaround, das werde ich verlinken – danke!

      Gruß

      • Gabriel sagt:

        Hi,

        C&P aus dem Browser, runtergeladen, ich hab alles versucht außer abtippen :-D Ich glaube, ich habs gemacht mit C&P in Notepad++, dann von da aus rüber zum nano in die Shell.

        Das Script “remove…” hier auf der Seite entspricht btw. nicht ganz dem, welches man runterladen kann. In der Download-Version steht noch ein (wie ich finde praktisches) echo $i” deleted.” hinter der Zeile 23 (hier auf der Seite). So bekommt man immer eine schöne Zusammenfassung vom cron-Job, was denn alles gelöscht wurde.

        Gruß

  3. Patrick sagt:

    Hey, danke für die Anleitung, allerdings wirft er mir bei den Scripts – egal ob kopiert oder von dir runtergeladen folgende Fehler aus:

    ./remove_expired_trashmails.sh
    ./remove_expired_trashmails.sh: Zeile 17: let: INTERVAL=: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \”=\”).
    ./remove_expired_trashmails.sh: Zeile 19: let: VALIDUNTIL=1392419616+: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \”+\”).
    ./remove_expired_trashmails.sh: Zeile 21: [: -lt: Einstelliger (unärer) Operator erwartet.
    ./remove_expired_trashmails.sh: Zeile 17: let: INTERVAL=: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \”=\”).
    ./remove_expired_trashmails.sh: Zeile 19: let: VALIDUNTIL=1392419758+: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \”+\”).
    ./remove_expired_trashmails.sh: Zeile 21: [: -lt: Einstelliger (unärer) Operator erwartet.
    [gummipun@triangulum qdated]$ nano show_active_trashmails.sh
    [gummipun@triangulum qdated]$ chmod +x show_active_trashmails.sh
    [gummipun@triangulum qdated]$ ./show_active_trashmails.sh
    ./show_active_trashmails.sh: Zeile 19: let: INTERVAL=: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \”=\”).
    ./show_active_trashmails.sh: Zeile 21: let: VALIDUNTIL=1392419616+: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \”+\”).
    ./show_active_trashmails.sh: Zeile 23: [: -lt: Einstelliger (unärer) Operator erwartet.
    date: ungültiges Datum „@“
    trash-322227408.ejlaj@8300111.de gueltig bis
    ./show_active_trashmails.sh: Zeile 19: let: INTERVAL=: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \”=\”).
    ./show_active_trashmails.sh: Zeile 21: let: VALIDUNTIL=1392419758+: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \”+\”).
    ./show_active_trashmails.sh: Zeile 23: [: -lt: Einstelliger (unärer) Operator erwartet.
    date: ungültiges Datum „@“
    trash-322227550.pemgp@8300111.de gueltig bis

    Hast du eine Lösung dazu?

    Grüße

    • Jürgen sagt:

      Der Fehler tritt auf wenn in einer .qmail-trash-* Datei ein parameter nicht existiert.

      die Dateinen müssen ja folgenden Inhalt haben:
      |~/bin/qdated/parse_trashmail.sh 332458427.bhhni 7200
      what-is@my.name

      Wenn der Parameter 7200 fehlt (oder was auch immer beim erzeugen der Datei angegeben wurde) bricht das Script mit dieser Fehlermeldung ab. Einfach die fehlerhafte .qmail-Datei von Hand löschen und der Fehler ist behoben.

      Jürgen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.