Drupal: Fake-Accounts mit @drupaler.org Adressen

Es gibt Leute, die das CMS Drupal für ihre Websites und/oder Blogs einsetzen. Vor ein paar Jahren gehörte auch ich zu dieser Gruppe.
Leute, die Drupal einsetzen, kennen wahrscheinlich auch das Phänomen, das es zahlreiche Registrierungen mit verschiedenen @drupaler.org E-Mailadresse gibt; zum Beispiel: Spammers from domain drupaler.org. Diese Fake-Accounts werden dann früher oder später zum Spammen missbraucht.

Wenn ich mich richtig erinnere, gab es in früheren Versionen von Drupal (so circa um die Versionen 4 bis 5 herum) die Möglichkeit, Registrierungsrichtlinien zu konfigurieren. Eine der Richtlinien sah vor, dass sich Benutzer mit einer E-Mailadresse in den aufgelisteten Domains nicht registrieren durfte. Also würde man heute, sofern es dieses Feature noch geben würde, einfach die Domain drupaler.org in diese Liste aufnehmen und wäre das Problem der Fake-Accounts los.
Ein Kollege versicherte mir jedoch glaubhaft, dass es dieses Feature in Drupal 7 nicht mehr gibt. Oha, und was jetzt?

Für alle, die ihr Drupal selber, auf eigener oder gemieteter Hardware oder auf einem virtualisierten System, hosten gibt es eine einfache Lösung. Eine Postfix Installation sei dabei vorausgesetzt.

Was passiert wenn sich ein neuer (Fake-)Benutzer mit Benutzername, E-Mailadresse und Passwort auf example.com/user/register anmeldet? Drupal sendet eine E-Mail, mit der Bitte die Registrierung des Accounts zu bestätigen. So lange der Account nicht bestätigt wurde, kann der Account nicht genutzt werden.

Bisher fand man also Einträge der folgenden Art im mail.log:

Jan 29 02:33:43 host postfix/smtp[21744]: 3kXkjL0H2kz392pH: to=<joinernumberlessbke@drupaler.org>, relay=drupaler.org[5.39.37.60]:25, delay=1.1, delays=0.21/0.01/0.46/0.42, dsn=2.0.0, status=sent (250 Queued (0.109 seconds))
Jan 29 12:27:37 host postfix/smtp[23740]: 3kXztc5nKlz392nW: to=<woodenhoefinchxz@drupaler.org>, relay=drupaler.org[5.39.37.60]:25, delay=1.1, delays=0.18/0.01/0.46/0.43, dsn=2.0.0, status=sent (250 Queued (0.141 seconds))
Jan 29 22:57:55 host postfix/smtp[25173]: 3kYFst3sHwz392nW: to=<campersnowoc@drupaler.org>, relay=drupaler.org[5.39.37.60]:25, delay=1.1, delays=0.18/0.01/0.47/0.43, dsn=2.0.0, status=sent (250 Queued (0.140 seconds))

Es wurden bisher also lustig Bestätigungsmails an drupaler.org Adressen gesendet.

Jetzt ist es an der Zeit, Postfix beizubringen, E-Mails, die an die Domain drupaler.org adressiert sind, einfach auszusondern.
Dazu baut man sich eine simple transport_map:

# /etc/postfix/transport
# Override the transport (next-hop) for some domains.
# see transport(5) for details.
#
drupaler.org    discard:

Danach wird die transport_map in Postfix’ main.cf eingetragen:
transport_maps = hash:/etc/postfix/transport

Wenn die Änderungen an der Konfigurationsdatei gespeichert wurden, wird aus der Datei /etc/postfix/transport die passende Datenbank erzeugt:
# postmap /etc/postfix/transport

Zum Abschluss wird Postfix noch über die vorgenommene Änderung informiert:
# postfix reload

Im mail.log findet man fortan derartige Einträge:

Jan 30 08:21:30 host postfix/discard[2092]: 3kYVNB5xf2z392XJ: to=<pebblyvictorioushql@drupaler.org>, relay=none, delay=0.22, delays=0.2/0.02/0/0, dsn=2.0.0, status=sent (drupaler.org)

Nach der Pflicht folgt die Kür: Wer will darf jetzt noch, mit dem Passenden SQL-Query, die Passwörter bestehender — und möglicherweise aktivierter — Fake-Accounts ändern. Viel Spaß.