[Postfixbuch-users] Ist Abschalten von virtual_alias_maps für smtpd problematisch?

Mathias Jeschke postfixbuch-users at gmj.cjb.net
Mo Jun 21 20:19:25 CEST 2010


Hallo Postmaster,

ich habe hier einen Postfix-Mailserver mit folgender Konstellation:

- ca. 200 "virtuelle" Benutzer abgelegt in einem LDAP-Verzeichnis
  mit "Default-E-Mail-Adressen" in der Form user at firma.de und
  vorname.nachname at firma.de

- eine Reihe zusätzlicher "Alias-Domains", d.h. alle User-Anteile sollen
  unter allen Domains (firma.com, firma.info, ...) erreichbar sein.
  Diese Domains sind ebenfalls im LDAP abgelegt.

- Ich möchte auf jeden Fall verhindern, alle Kombinationen von User-Teil
  und Domains als Alias den Nutzern-Objekten im LDAP zuzuordnen.
  (Vor allem da die Anzahl der Domains auch von Zeit zu Zeit zunimmt.)


Beim Einliefern einer Mail passiert also folgendes:

1. per $mydestination wird geprüft, ob Postfix für die Domain zuständig ist.
   ($mydestination beinhaltet eine LDAP-Table, zur Domain-Abfrage)
   (Es ist nur "smtpd_recipient_restrictions" gesetzt, um Relaying nach SMTP-Auth
    zu erlauben: smtpd_recipient_restrictions =
                   permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination)

2. Es werden die "local_recipient_maps" ausgewertet, in denen u.a. so etwas steht:
   ---------------------------------------------------------------------------
   # Prüfe, ob der User-Teil als Alias oder als Account bekannt ist.
   # (Prüfung der Domain-Gültigkeit erfolgt über $mydestination)
   query_filter = (&(mail=*)(|(uid=%u)(gosaMailAlternateAddress=%u@*)))
   result_attribute = uid
   ---------------------------------------------------------------------------

3. In den "virtual_alias_maps" werden zum einen alle Domains im LDAP durch
   die Standard-Domain ersetzt (so dass die andere Map s.u. in "virtual_alias_maps"
   zutreffen kann: alias_key at firma.com -> alias_key at firma.de -> user at firma.de)
   Die Map sieht in etwa so aus:
   ---------------------------------------------------------------------------
   query_filter = cn=%d
   result_attribute = description
   result_format = @firma.de
   ---------------------------------------------------------------------------

   Weiterhin werden die E-Mail-Adressen auf Aliases geprüft:
   ---------------------------------------------------------------------------
   query_filter = (|(gosaMailAlternateAddress=%s)(mail=%s))
   result_attribute = uid
   ---------------------------------------------------------------------------
   (Der Teil mit "mail=%s" ist ein "Hack", um die Mail mit Cyrus zustellen
    zu können: weil "vorname.nachname" keine gültige Mailbox ist.)


Nun zum Problem:

Durch das Hinzufügen der virtual_alias_maps zur "Domain-Ersetzung" werden durch die
"Catchall-Adresse" @%d -> @firma.de leider die local_recipient_maps ausgehebelt,
weil (in meinem Fall blöderweise) der smtpd bei der Annahme auf Port 25 auch in
dieser Map nach gültigen Empfängern sucht.

Daher habe ich in der master.cf für smtpd "virtual_alias_maps=" gesetzt,
was anscheinend das Problem löst.

Besser wäre eine Möglichkeit - die ich bisher noch nicht gefunden habe -
um den Domain-Teil im Envelop zu ersetzen.

Ich bin mir aber unsicher, ob das noch andere Probleme nach sich zieht,
habt Ihr eine Idee?

Gruß,
Mathias Jeschke




Mehr Informationen über die Mailingliste Postfixbuch-users