Virtuelle E-Mail Nutzer mit postfix

Aus

Virtuelle Emailnutzer mit Postfix

Per default läuft die Mailstation mit lokalen Benutzern d.h. jeder Benutzer des IMAP/POP3- oder SMTP-Servers muss über ein lokalen Account auf der Diskstation mit gültigem Homeverzeichnis verfügen. Das wird natürlich bei mehreren Benutzern etwas mühsam, da man immer einen neuen lokalen Benutzer erstellen muss. Dafür bieten sowohl der SMTP (Postfix) Server als auch der IMAP/POP3 (Dovecot) Server die Unterstützung für virtuelle Benutzer. Dabei werden alle Zugriffe auf die Mailboxen der User über denselben lokalen Benutzer abgewickelt. Die Applkationen dahinter (Postfix und Dovecot) müssen dann selber dafür sorgen, dass sich die virtuellen User nicht gegenseitig in die Mailboxen schauen können resp Mails in falsche virtuelle Mailboxen geliefert werden.

Die virtuellen Benutzer unter Postfix sind relativ einfach und unkompliziert einzurichten. Es ist für Postfix zwar nicht nötig, aber ich würde empfehlen einen neuen lokalen Benutzer als "Mailverwalter" zu erstellen inkl Homeverzeichnis. In diesem Homeverzeichnis dann pro virtuellem Benutzer ein Verzeichnis und dort drin das Mailverzeichnis (.Maildir). Spätestens wenn ihr den virtuellen User Support auch am Dovecot haben wollt braucht ihr ein solches Verzeichnis.

Der Postfix kann aber in beliebige Verzeichnisse speichern. Damit nun der Postfix weiss, dass er virtuelle Benutzer verwenden soll muss man einige Anpassungen an der Konfigurationsdatei in /usr/syno/mailstation/etc/main.cf vornehmen. Zwei Punkte sind sehr wichtig dabei:

 - eine virtuelle Domain darf __niemals__ unter mydestination aufgeführt werden
 - eine virtuelle Catch-All Adresse darf __niemals__ in der Datei virtual aufgeführt sein. Dort dürfen nur komplette Benutzer user(@domain.tld) rein

Bei Nicht-Beachtung der obigen Regeln können sehr schnell tausende von Emails entstehen (aus einer einzigen gesendeten wohlgemerkt!!). Dabei ist das Problem, dass die Fehlermeldungen auch nicht zugestellt werden können und die Email in einer Endlosschleife endet, welche bei jedem Durchlauf wieder eine Fehlermeldung erzeugt, welche nicht verschickt werden kann. Auf diesem Weg habe ich in 7 Minuten gut 70'000 Emails produziert! (zum Glück nur lokal)

Wichtig

Diese Seite behandelt nur die virtuellen Benutzer von Postfix, also am smtp Server. Das heisst, diese virtuellen Benutzer sind dem Dovecot Server (imap und pop3) NICHT bekannt. Ihr könnt Euch also bei Dovecot nicht mit diese virtuellen Usern anmelden!
Wenn ihr wollt, dass auch Dovecot diese virtuellen Nutzer kennt, dann müsst ihr Euch auch virtuelle User Unterstützung einbauen. Wenn ihr das machen wollt, dann solltet ihr zuerst die Vorarbeiten für Dovecot erledigen, weil man dann auf bestimmte auf dieser Seite beschriebene Schritte bei Postfix verzichten kann!

Konfiguration

Es müssen also verschiedene Parameter konfiguriert werden. Zuerst müsst ihr Euch für einen Domainnamen für die virtuelle Domain entscheiden (meist Euer dyndns-Domainname). Dann braucht ihr einen Hostnamen und einen lokalen Domainnamen (Host meist lokaler Hostname und Domain z.B. localnet). Ich gehe im Folgenden nur auf diejenigen Anpassungen ein, die im Zusammenhang mit virtuellen Benutzern von Belang sind. Die grundsätzliche Konfig sollte durch die Mailstation erledigt worden sein. Falls ihr mehr Infos braucht zu einzelnen Variabeln, dann könnt ihr diese bei Postfix Homepage (postconf Manual) nachschlagen.

mydestinaton

Hier werden die Namen eingetragen für die sich Postfix als Zielserver zuständig fühlen soll. Alles was hier eingetragen wird, wird der Postfix Server niemals an andere Server schicken (Relay). Jedoch gilt das hier nur für lokale Domains resp lokale Konten. Virtuelle Domains dürfen hier keinesfalls eingetragen werden!! Ihr könnt hier sehr einfach auch auf Variabeln zugreifen, um die Namen zu erstellen z.B.

mydestination = $myhostname, $mydomain, $mydomain.$mydomain, $myhostname.$mydomain, localhost

$mydomain.$mydomain ist wichtig für Bounce und Double-Bounce Emails. Prüft unbedingt, dass sowohl in myhostname als auch in mydomain NICHT Eure virtuelle Domain eingetragen ist!!

virtual_mailbox_domains

Hier wird nun der Name Eurer virtuellen Domain eingetragen

virtual_mailbox_domains = domain.dyndns.org

virtual_mailbox_base

Hier kommt der Basis-Pfad zu den virtuellen Mailboxen rein d.h. unterhalb dieses Verzeichnisses sind die Mailboxen der virtuellen User zu finden. Am besten legt man dazu einen neuen lokalen Benutzer auf der DS an und benutzt dessen Homeverzeichnis als Basis alles Mailboxen.

virtual_mailbox_base = /volume1/homes/vmail

virtual_mailbox_maps

Diese Datei legt die Zuordnungen der virtuellen Benutzer zu den lokalen Mailboxen fest. Ihr könnt auch virtuelle Benutzer auf die Mailboxen Eurer lokalen Benutzer abbilden. In diesem Fall bei virtual_mailbox_base einfach /volume1/homes eintragen (dan braucht ihr keinen neuen lokalen Benutzer).

virtual_mailbox_maps = hash:/path/to/file

Der Aufbau des Files ist ziemlich einfach:

foo@domain.dyndns.org  foo/.Maildir/
postmaster@domain.dyndns.org  foo/.Maildir/
root@domain.dyndns.org  foo/.Maildir/
bar@domain.dyndns.org    bar/.Maildir/
@domain.dyndns.org spam/.Maildir

Dabei werden die ersten drei Adressen auf dieselbe Mailbox abgebildet. Dann kommt ein weiterer User (bar) mit eigener Mailbox hinzu. Am Schluss eine [[wpde>CatchAll|Catch All-]] Emailadresse. \\ Die Pfadeangaben basieren auf $virtual_mailbox_base.
Also ist der komplette Pfad der ersten Mailbox in diesem Beispiel /volume1/homes/vmail/foo/.Maildir/

virtual_transport

Damit wird festgelegt welcher Transport-Agent für virtuelle User verwendet werden soll

virtual_transport = virtual

Sicherheitseinstellungen

Ich habe nicht ganz genau verstanden, was diese drei Variablen ganz genau machen, sie werden jedoch auf der Postfix Beschreibung so angegeben. Wer es genauer wissen will, der kann sich die postconf Parameter auf der Postfix-Homepage zu Gemüte führen. Letztendlich geht es darum, dass der Zustellprozess (virtual) nicht mit zu viel lokalen Rechten laufen kann

virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

virtual_alias_maps

Hier werden die Aliase der virtuellen Benutzer festgelegt.

virtual_alias_maps = hash:/path/to/file

Dabei steht dort drin eine einfache Links-Rechts-Zuordnung von Alias auf virtuelle Benutzer.

fooo@domain.dyndns.org foo@domain.dyndns.org

Tragt hier niemals eine Catch-All Adresse ein (also niemals @domain.org)!!