Linuchs: automatische Mehrfach-Mails vermeiden

Moin,

wenn ein MItgliedskalender (Termine einer Gruppe) aufgerufen wird und leer ist, wird in der DB nachgeschaut, wann die letzte freundliche Erinnerung war, Events einzugeben.

Erst nach Ablauf von 30 Tagen erfolgt eine neue freundliche Erinnerung.

Dann wir die Mail aufbereitet, versendet und das neue Datum vermerkt.

Das dauert seine Zeit und seien es auch nur hundertstel Sekunden. Bots sind aber schneller und lesen diesen Kalender in derselben Sekunde mehrfach, weiß der Teufel, warum.

Das führt dazu, dass zahlreiche Gruppen bis zu 10 gleichlautende Mails in derselben Minute bekommen. Ein Ärgernis, was ich gerne vermeiden möchte.

Was kann ich tun?

Hate schon mal IPs gespeichert und für 3 sec gesperrt, das führte aber auch zum Abweisen schneller Seitenwechsel durch Menschen.

Gruß, Linuchs

  1. wenn ein MItgliedskalender (Termine einer Gruppe) aufgerufen wird und leer ist, wird in der DB nachgeschaut, wann die letzte freundliche Erinnerung war, Events einzugeben.

    Einen Aufruf anzubieten, der keine Ergebnisse liefert, ist nicht schön. Daher stelle ich den gesamten Ansatz in Frage.

    Was kann ich tun?

    Raus mit der Logik aus dem Terminabruf. Hinterleg Dir einen Cronjob, der einmal am Tag über die DB rauscht, die Mails rausjagt und den Timestamp setzt.

    1. Lieber Mitleser,

      +1 von mir. Konkret heißt das, dass das Script nur dann auf Mailversenden prüfen darf, wenn es auch vom Cronjob her aufgerufen wird. Das kann man zur Not mit einem URL-Parameter ($_GET) tun, wenn es keine anderen Möglichkeiten (wie z.B. $_SERVER['REMOTE_ADDR']) gibt, die Quelle des Aufrufs zu ermitteln.

      Liebe Grüße

      Felix Riesterer

      1. +1 von mir. Konkret heißt das, dass das Script nur dann auf Mailversenden prüfen darf, wenn es auch vom Cronjob her aufgerufen wird. Das kann man zur Not mit einem URL-Parameter ($_GET) tun, wenn es keine anderen Möglichkeiten (wie z.B. $_SERVER['REMOTE_ADDR']) gibt, die Quelle des Aufrufs zu ermitteln.

        Ich würde dafür ein separates Script hernehmen, was bestenfalls überhaupt nicht via HTTP erreichbar ist.

        1. Ich habe verstanden, den Mailversnd NICHT von einem externem Aufruf abhängig zu machen, sondern einmal am Tag die Mitglieder auf leere Kalender zu überprüfen.

          Vernünftige Idee. Danke.

  2. Hallo,

    Fehlerquelle gefunden.

    Es ist richtig, dass Bots „angreifen“. Aber ich habe beim Senden der Mails die Mailadresse mit Vereinsname nicht codiert. Die Vereinsnamen enthalten Umlaute, Anführungszeichen usw.

    Chor Überlingen <info@example.com>

    Die Mail wird gar nicht abgeschickt, damit das Datum im Stammsatz nicht aktualisieiert und ich habe mir selbst fälschlicherweise eine Bestätigungs-Mail geschickt.

    Die Empfänger sind gar nicht belästigt worden.