CNAME-Rewriting eines Envelope Recipient

English readers: You might want to head over to a qmail-users thread which explains why rewriting envelope addresses to a CNAME target is "okay". German readers: Achtung, Fachchinesisch.

DNS-CNAMEs sind eine schöne Sache: Man kann damit ein Alias im DNS anlegen und muss komplexere Konfigurationen nicht immer wieder redundant neu erstellen. (Ja, es gibt in BIND sowas wie $INCLUDE, aber nicht jeder hat nen BIND.) Bis heute hatte ich das für folgendes Szenario im Einsatz:

Ich betreibe mehrere Mailinglisten und habe dafür einen Mailman installiert. Diese Listen laufen unter verschiedenen Domains, unter anderem lists.c3ma.de und lists.spilledwine.com. Damit ich nicht sowohl einen A-Record für das Webinterface als auch einen MX für den SMTP-Verkehr anlegen muss (die beiden IPs sind zwar gleich, könnten aber potenziell verschieden sein), sind die Listendomains als CNAME auf lists.scytale.name realisiert. lists.scytale.name selbst hostet wohlgemerkt (noch) keine Listen! Jetzt habe ich in meinen Mail-Logs folgendes gesehen:

2007-11-28 10:40:46 lowest numbered MX record points to local host: lists.scytale.name (while verifying <talk@lists.scytale.name> from host relay2.uni-heidelberg.de [129.206.210.211])
2007-11-28 10:40:46 H=relay2.uni-heidelberg.de [129.206.210.211] F=<joachim.grabte@urz.uni-heidelberg.de> temporarily rejected RCPT <talk@lists.scytale.name>: lowest numbered MX record points to local host

Hier kommt also eine Mail an die Liste talk an. Diese Liste gehört aber eigentlich zu lists.c3ma.de, und nicht lists.scytale.name. Der versendende MTA schreibt also den Envelope Recipient auf das Ziel des CNAME-Records um. Diese Zieldomain ist allerdings gar nicht zum Empfang von Mails eingerichtet, weshalb sich mein Exim auch wundert, dass der MX-Record der Meinung ist, er wäre für die Mail zuständig ist, seine Konfigurationsdatei das aber ganz anders sieht.

Bislang dachte ich immer, dass der Absender-MTA nicht alle Tassen im Schrank hat: Nen FQDN in ner Envelope-Adresse umschreiben, geht's noch? DNS und SMTP sind zwei verschiedene Paar Stiefel, oder? Tja, denkste. In der Tat erzählt ein Thread auf qmail-users vom Dezember 2005 die Geschichte von RFC 821, RFC 2821 und den CNAMEs, und die lautet:

In dem auf August 1982 datierten Ur-RFC 821 für SMTP steht in Abschnitt 3.7 (außer dem unterhaltsamen Domains are a recently introduced concept in the ARPA Internet mail system) der Satz Whenever domain names are used in SMTP only the official names are used, the use of nicknames or aliases is not allowed. Das besagt relativ eindeutig, dass CNAMEs, die ja nun wirklich unmissverständlich Aliase sind, bei SMTP-Kommunikationen nicht verwendet werden dürfen. Das Umschreiben der CNAMEs, selbst im Envelope, ist also nicht nur erlaubt, sondern sogar erforderlich. Trotzdem machen es einige Mailserver nicht. Warum?

Nun, das steht in dem anderen RFC, dem mit der Nummer 2821, das das ältere 821 auch überholt (Obsoletes: 821, [...]), und zwar in Abschnitt 3.6 (Hervorhebung von mir): [N]ames that can be resolved to MX RRs or A RRs [...] are permitted, as are CNAME RRs whose targets can be resolved, in turn, to MX or A RRs. Local nicknames or unqualified names MUST NOT be used. Somit ist also die Verwendung von CNAMEs durchaus zulässig, ein Umschreiben aber weiterhin nicht verboten. Es kommt erschwerend hinzu, dass es sich bei RFC 821 momentan um einen Standard handelt, bei RFC 2821 hingegen nur einen proposed standard. Man kann sich als Programmierer also quasi aussuchen, wonach man handelt.

Und aus dem Grund wird jetzt lists.scytale.name zum Empfang von Mail konfiguriert. Da bei Mailman sowieso nur der Local Part zählt, muss ich an den CNAMEs vorerst mal nichts umbiegen. Ham'wer wieder was gelernt, hoffentlich erleuchtet dieser zugegebenermaßen nur für eine bestimmte Zielgruppe interessante Artikel den einen oder anderen.

Erstellt: 28. 11. 2007, 12:32:43 (CET)
Tags: German CNAME E-Mail MX DNS
scytale.name