April 7, 2013

Postfix und LDAP - Part 2: Struktur erstellen

openLDAP Struktur

Einleitung

Die Struktur der Daten im LDAP System ist Thema im zweiten Teil unseres Mail Setups. Wir werden im Laufe des Artikels diese Struktur auf den openLDAP Server laden und so bestimmen, wie künftig unser Postfix Mails routen wird. Grundlage ist die Konfiguration eines LDAP Systems wie im Vorgänger Postfix und LDAP – Part 1: OpenLDAP konfigurieren beschrieben wurde.

Erläuterung der LDAP Struktur

Der LDAP Server beinhaltet die beiden OUs Domains und forwardDomains. Unterhalb Domains wird für jede Domäne, für die Postfix Mails entgegen nehmen soll, ein eigenes Objekt erstellt. Darunter befinden sich alle Identitäten dieser Domäne. Die OU forwardDomains beinhaltet alle Domains, die durch MX Routing zunächst auf unserem Server aufschlagen, dann aber von einem komplett anderen Server abgewickelt werden sollen.

Zur Verdeutlichung dient auch diese schematische Darstellung

dc=testlab,dc=local
    ----> ou=Domains,dc=testlab,dc=local
        ----> ou=Domains,dc=testlab,dc=local
            ----> ou=example.com,ou=Domains,dc=testlab,dc=local
                ----> uid=user1,ou=example.com,ou=Domains,dc=testlab,dc=local
                ----> uid=user2,ou=example.com,ou=Domains,dc=testlab,dc=local
                ----> ....
                ----> uid=userN,ou=example.com,ou=Domains,dc=testlab,dc=local
    ----> ou=forwardDomains,dc=testlab,dc=local

Einrichtung einer Domain für lokale Zustellung

Nachfolgend beschreibe ich die Objekte, welche zur Zustellung von Mails an eine Mailadresse benötigt werden.

Neue Domain

Für jede Domain, die Postfix künftig bedienen soll, muss ein neues Objekt erstellt werden. Das folgende Template aktiviert die Zustellung für die Domain example.com

Domain.ldif
dn: ou=example.com,ou=Domains,dc=testlab,dc=local
objectClass: domainRelatedObject
objectClass: top
objectClass: organizationalUnit
associatedDomain: example.com
ou: example.com
Erläuterung der Attribute
Attribut Beschreibung Beispielwert
associatedDomain Beinhaltet als Wert den FQDN der Domain, die von Postfix akzeptiert werden soll example.com

Neue Identität

Für jede Person, die Postfix künftig bedienen soll, muss ein neues Objekt erstellt werden. Das folgende Template erstellt den Benutzer Max Mustermann mit dem Passwort Test1234!

User.ldif
dn: uid=user1,ou=example.com,ou=Domains,dc=testlab,dc=local
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
objectClass: qmailUser
cn: Max Mustermann
mail: max.mustermann@example.com
sn: Mustermann
mailAlternateAddress: mmustermann@example.com
mailAlternateAddress: postmaster@example.com
mailForwardingAddress: eine.adresse@gmail.com
mailMessageStore: /vmail/example.com/user1/
qmailGID: 5000
qmailUID: 5000
uid: user1
userPassword:: e1NTSEF9RDViZFFBMlVIUWwvVG8xNG85ZmtoQk1YWTEvb1Y5bGFOa0ZkYmc9P
Q==
Erläuterung der Attribute
Attribut Beschreibung Beispielwert
mail Beinhaltet als Wert die Mailadresse des Benutzers, die akzeptiert werden soll. max.mustermann@example.com
mailAlternateAddress Zusätzliche Mailadresse, die für diesen Benutzer akzeptiert werden soll. Dieses Attribut kann mehrmals verwendet werden. mmustermann@example.com
mailMessageStore Beinhaltet als Wert den vollständigen Pfad zum Maildir des Benutzers. Muss mit einem ‚/‘ abgeschlossen werden. /vmail/example.com/user1/
qmailUID Beinhaltet als Wert die qmailUID, wird für die virtuelle Zustellung benötigt und ist IMMER 5000 5000
qmailGID Beinhaltet als Wert die qmailGID, wird für die virtuelle Zustellung benötigt und ist IMMER 5000 5000
 Weiterleitung an eine externe Mailadresse
Attribut Beschreibung Beispielwert
mailForwardingAddress Definiert die Weiterleitungsadresse eines Benutzers. Alle Mails werden an diese Adresse weitergeleitet. Es findet keine lokale Speicherung statt externe.adresse@mailprovider.ocm

Catchall User

Der Catchall User ähnelt dem eines normalen Benutzers, hat als Wert des Attributs mail aber eine Wildcard-Adresse gesetzt.

Catchall.ldif
dn: uid=catchall,ou=example.com,ou=Domains,dc=testlab,dc=local
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
objectClass: qmailUser
cn: Catchall User
mail: *@example.com
sn: Catchall
mailMessageStore: /vmail/example.com/catchall/
qmailGID: 5000
qmailUID: 5000
uid: user1
userPassword:: e1NTSEF9RDViZFFBMlVIUWwvVG8xNG85ZmtoQk1YWTEvb1Y5bGFOa0ZkYmc9P
Q==

Weiterleitung einer Domain an weiteren Server

Im Falle eines sehr großen Setups mit vielen Domains und sehr viel Traffic kann es sinnvoll sein Postfix als Router zu verwenden und Mails für Domains gezielt an Mailserver weiterzuleiten, welche sich ausschließlich um diese Domain kümmern. Dies kann durch die forwardDomains erreicht werden.

Neue ForwardingDomain

Für jede Domain, die Postfix künftig weiterleiten soll, muss ein neues Objekt erstellt werden. Das folgende Template erstellt die Domain target.com und leitet alle Mails an den Server mail.target.com Port 25 weiter.

Forward.ldif
dn: ou=target.com,ou=forwardDomains,dc=testlab,dc=local
objectClass: organizationalUnit
objectClass: top
objectClass: domainRelatedObject
associatedDomain: target.com
ou: target.com
destinationIndicator: smtp:mail.target.com:25
Erläuterung der Attribute
Attribut Beschreibung Beispielwert
associatedDomain Beinhaltet als Wert den FQDN der Domain, die von Postfix akzeptiert werden soll target.com
destinationIndicator Beinhaltet als Wert die Konfiguration des transports in der form smtp:zielrechner:port smtp:mail.target.com:25

Ausblick

Wurde der LDAP Server mit allen Daten versehen wird es nun Zeit den Postfix Server zu konfigurieren und mit LDAP zu verbinden. Dies können Sie im Artikel Postfix und LDAP – Part 3: Postfix konfigurieren nachlesen.