Effizienter täglicher automatisierter Versand mit Mailman

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
purado
Posts: 25
Joined: 2002-08-28 12:42

Effizienter täglicher automatisierter Versand mit Mailman

Post by purado » 2004-06-14 01:34

Hallo Leute,
ich betreibe eine Witzeseite, bei der man den "Witz des Tages" per E-Mail abonnieren kann. Bisher habe ich die Abonnenten und den jeweiligen Witz des Tages (wähle ich immer für einen Monat im voraus aus) in einer MySQL-Datenbank gespeichert.
Die E-Mails habe ich dann mit einem PHP-Script und einer mail()-Schleife per Cron-Job nachts rausgejagt. Da wurde dann automatisch ein Unsubscribe-Link mit einer ID in der URL angehangen, damit die Abonnenten den "Witz des Tages" einfach abbestellen können.
Das hat ca. ein Jahr lang prima funktioniert, aber nun bei 3.300 Abonnenten steigt mir das System scheinbar aus... Damit hatte ich früher oder später aber auch gerechnet :wink:
Daher habe ich gerade Mailman installiert und das funktioniert nach kleinen Tests auch gut.
Einige Fragen bleiben für mich aber offen, vielleicht kann mir hier jemand helfen:

1.) Die User sollen sich per Double-Opt-In (Link in einer Bestätigungsmail) einschreiben können. Ist es am Besten, wenn ich bis zum Anklicken des Links in der Mail alles wie bisher per PHP und MySQL löse und erst nach der Bestätigung den User per CGI in die Mailman-Liste aufnehmen?

2.) Wie kann ich die 3.300 E-Mail-Adressen von MySQL in Mailman importieren?

3.) Zum Versand: Die Witze werden weiterhin in einer MySQL-Datenbank abgelegt sein müssen. Ist es sinnvoll, weiterhin per Cron-Job eine Mail zu verschicken, die dann halt an die Mailman-Adresse?

4.) Wenn ich das so löse, birgt das nicht ein enormes Spam-Risiko in sich? Ich möchte die Witze nicht jeden Tag per Hand als Moderator freischalten, das sollte automatisiert geschehen. Aber wenn jemand mit einer gefälschten freigeschalteten Absender-Adresse an die Mailing-Liste schreibt, würde er die ganzen Abonnenten zuspammen können?

Ist der Ansatz, Mailman für diesen Fall zu verwenden überhaupt sinnvoll, und wie sollte man das am intelligentesten mit dem Versand abwickeln?

Danke und viele Grüße,
Henning

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Effizienter täglicher automatisierter Versand mit Mailman

Post by dodolin » 2004-06-14 02:10

1) Verstehe ich nicht so ganz.
Ich würde das ganze subscribe/unsubscribe Zeugs von Mailman handeln lassen, d.h. heißt, User können sich entweder per Webinterface oder per Mail (plus Bestätigung) eintragen bzw. austragen.

2) Mailman kenne eine "Mass Subscription". Wenn du z.B. eine solche SQL-Query machen kannst, dass alle Mailadressen in einem TXT-File stehen, eine Adresse pro Zeile, dann kannst du diese TXT-Datei direkt in Mailman einlesen lassen (geht übers Webinterface).

3) Ja.

4) Nein, kein Spam-Risiko (wenn man's richtig macht). Du kannst das so regeln, dass niemand an die Liste schreiben kann und deine eigenen Mails kannst du mit einem Approved-Header mit Passwort generieren und somit automatisch passieren lassen. Ohne das Passwort kann niemand eine Mail an die Liste schreiben, bzw. sie wird dann halt nicht an alle ausgeliefert, sondern wahlweise rejected oder still nach /dev/null entsorgt.

purado
Posts: 25
Joined: 2002-08-28 12:42

Re: Effizienter täglicher automatisierter Versand mit Mailman

Post by purado » 2004-06-16 00:56

Danke für die Antwort, war mir sehr hilfreich!
Hab inzwischen alle Probleme gelöst und das System läuft.
Das mit der Opt-In-Bestätigung lasse ich jetzt aber doch nicht von Mailman verwalten. Ich will den User nicht auf die Mailman-Seiten kommen lassen, er soll sich auch bei der Bestätigung der Anmeldung im Look & Feel meiner Seite bewegen. Ausserdem verwirren die von Mailman abgefragten Infos (Mail-Adresse, Name und Passwort) den User dann wohl eher. Die Angabe der Adresse reicht ja auch.

Ich mache es jetzt so, dass der User seine E-Mail-Adresse per Formular übergibt. Er bekommt vom PHP-Script eine Mail mit einem Bestätigungslink, wenn er diesen anklickt passieren zwei Dinge:
Die Infos wie Zeit und IP-Adresse werden ein einer MySQL-Tabelle wegen Spam-Versuchen etc. festgehalten.
Ausserdem schreibt das Script per fwrite() die Mail-Adresse in ein Textfile.
Die Adressen aus dem Textfile werden einmal täglich von einem Cron-Job mit dem add_members-Script von Mailman importiert. Eine Minute später wird wiederum per Cron-Job das Textfile geleert.

Klingt umständlich, aber so kommt der User mit den Mailman-Seiten bis zu einer evtl. Abmeldung per unsubscribe-Mail nie in Kontakt. Ist in diesem Fall auch sinnvoll, da Mailman ja eher als ein One-Way-Newsletter als ein bidrektionales Diskussionsboard genutzt werden soll. Und da wären die Mailman-Funktionen wie Passwort, Ã?mpfangsptionen und Archiv zuviel des Guten. :wink:

Danke und viele Grüße,
Henning