Mobiles bloggen mit WordPress

WordPress bietet von Haus aus schon die Möglichkeit, Blogeinträge via eMail zu veröffentlichen. Das ganze funktioniert relativ einfach: Man braucht lediglich ein eigenes POP3-Postfach für WordPress, und dieses wird bei jedem Auruf der wp-mail.php von WordPress abgefragt. Aber wie gestaltet man das komfortabel und möglichst automatisch?

Die einfachste Möglichkeit zuerst: Man öffnet die URL von Zeit zu Zeit manuell. So kann man zwar von unterwegs Blogeinträge vorbereiten und schon mal per eMail an WordPress schicken, aber „komfortabel“ oder „automatisch“ ist das nicht gerade.

Die nächste Möglichkeit wäre, das Postfach bei jedem Seitenaufruf abzufragen. Dazu braucht man lediglich ein

file_get_contents("http://my-domain/path-to/wp-mail.php")

einzufügen, und schon erscheinen neue Postings automatisch. Dumm nur, wenn das eigene Blog nicht oft besucht wird und so beim ersten Besuch nach einem Post per Mail ebendieses noch nicht sichtbar ist. Auch wird sehr häufig das Postfach geprüft, ohne daß eine neue Mail da ist. Bei stark frequentierten Blogs kann dies zu einer nicht unerheblichen Last auf dem Server oder anderen unangenehmen Effekten führen. GMX z.B. reagiert auf zu häufige POP3-Logins mit einer temporären Sperre des Postfachs. Durch eine prozentuale Steuerung ließe sich dies zwar eindämmen, aber letztendlich ist es nicht das, was man möchte.

Besser sind da schon zeitgesteuerte Lösungsansätze. Unter Unix lässt sich das einfach mittels cron realisieren. Um das Postfach z.B. alle 10 Minuten abfragen zu lassen, genügt ein Eintrag wie dieser in der Crontab:

*/10 * * * * wget http://my-domain/path-to/wp-mail.php

Neue Beiträge erscheinen so spätestens nach 10 Minuten im Blog. Wenn der eigene Webservice keine Cronjobs zuläßt, helfen webbasierte Dienste. Ein überzeugendes und noch dazu kostenloses Angebot bietet z.B. cronjob.de.

Ein kleiner Wermutstropfen bleibt aber: Das Postfach wird noch immer ständig geprüft, auch wenn es nichts zu tun gibt. Idealerweise sollte nur beim Eingang einer eMail etwas passieren, dann aber zeitnah. Aber wie geht das? Wohl dem, der seinen eigenen Webserver betreibt 🙂 Für Ralph habe ich das vor kurzem realisiert.

Bei mir kümmert sich qmail um die eMails. Postings gehen an die Adresse my-fancy-mobile-blog@my-domain. Dafür muß eine Datei mit dem Namen .qmail-my-fancy-mobile-blog angelegt werden:

# erst mal die Mail ins Postfach schreiben
/Pfad-zum-Maildir/
# und jetzt das Postfach durch WordPress abfragen
| /usr/bin/wget -q -O /dev/null http://my-domain/path-to/wp-mail.php

Und schon funktioniert das. 🙂

Wenn man die Ausgabe von wp-mail.php nicht in die ewigen Jagdgründe schicken, sondern sie lieber per Mail versenden möchte (um beispielsweise zu kontrollieren, daß auch alles funktioniert hat), geht das auch:

# erst mal die Mail ins Postfach schreiben
/Pfad-zum-Maildir/
# und jetzt das Postfach durch WordPress abfragen
| /usr/bin/wget -q -O /dev/stdout http://my-domain/path-to/wp-mail.php
  | /usr/bin/mailx -s "Output from mail2blog" blogcheck@my-domain

Die Ausgabe von wget wird dazu nach stdout umgeleitet und nach mailx gepiped.

Ähnlich funktioniert das auch mit Postfix oder anderen MTA. Happy mobile blogging!