Administration vereinfachen mit Dovecot Master User und Postfixadmin

Abstract

Postfixadmin wird häufig verwendet, um Mailserver zu administrieren. Kombiniert mit dem Master User von Dovecot erleichtert das Supportarbeiten ungemein. In meinem Artikel zeige ich, wie man das SQL-Schema dafür geschickt erweitert.

Postfixadmin wird häufig verwendet, um Mailserver zu administrieren. Ein wesentliches Ziel von Postfixadmin ist, die Administration von Maildomainen an den jeweiligen Postmaster einer Maildomain zu delegieren.

Mit Dovecot wiederum kann ein master-User konfiguriert werden, der alle Mailboxen aller Maildomains via IMAP öffnen kann. Dies erleichtert Supportarbeiten ungemein.

In einem ISP-Setup nach dem Postfixadmin-Layout gibt es also 3 Stufen der Maildomain bzw. Mailbox-Administration:

Superadmin
Dies ist für gewöhnlich der Admin des Mailserverhosters, dieser kann alle Maildomains administrieren.
Domainadmin
Dies ist normalerweise der Postmaster einer Maildomain.
User
Dies ist der Hauptbenutzer einer Mailbox (können wir in diesem Zusammenhang ignorieren)

Mit einem Standard-Master-User-Setup von Dovecot lässt sich eine Abstufung von Superadmin und Domainadmin nicht vornehmen. Der Dovecot-Standard geht davon aus, dass es nur einen Superadmin – den Dovecot Master User – gibt. Der kann sich z.B. an alle Mailboxen per IMAP anbinden.

Master User in Dovecot können in Mysql konfiguriert werden. Um diese auf die in Postfixadmin konfigurierten Domainadmins abzubilden verwende ich folgende SQL-Abfrage in /etc/dovecot/dovecot-sql-master.conf.ext:

driver = mysql
default_pass_scheme = PLAIN
connect = host=1.2.3.4 dbname=postfix user=postfixadmin password=pass
password_query = SELECT password FROM admin WHERE username = '%u' AND '%d'='%{login_domain}'

Important

Postfixadmin gestattet einem Domainadmin, die Verwaltung mehrerer Domains zuzuordnen. Diese an sich sehr sinnvolle Möglichkeit wird in diesem Setup aus anderen (hier nicht dargestellten) Gründen nicht genutzt. Ich verwende immer den Postmaster einer Maildomain zur Verwaltung nur genau einer Maildomain.

Um nun dem Superadmin ebenfalls das Anbinden aller Mailboxen aller Maildomains zu ermöglichen, verwende ich eine weitere, statische Datei (/etc/dovecot/passwd.masterusers), die per Hand erzeugt wird. Der verwendete Account ist im Hinblick auf Username und Password identisch mit dem, mit dem Postfixadmin als Superadmin angelegt ist:

postmaster@mail.mailserver.com:{SHA}....

Damit Dovecot diesen Account nutzt, muss er in /etc/dovecot/conf.d/auth-master.conf.ext konfiguriert werden.

auth_master_user_separator = *
passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql-master.conf.ext
  pass = yes
  master = yes
}
passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
passdb {
  driver = passwd-file
  args = /etc/dovecot/passwd.masterusers
  master = yes
  pass = yes
}

Note

Mehr Informationen über Master User finden sich im Dovecot Wiki in MasterUsers. Die dargestellte Methode ist durch die Verwendung einer statischen Datei nicht besonders elegant, für gewöhnlich reicht diese aber in einem ISP-Setup aus, da es normalerweise nur einen Superadmin gibt und dieser als Rolle zu verstehen ist, die von mehreren Mitarbeitern des ISP mit denselben Logindaten bei Bedarf ausgefüllt wird. Das heißt, normalerweise wird die statische Datei nicht häufig verändert.

Die Praxis zeigt, dass es kaum Notwendigkeiten gibt, dass sich der Superadmin Mailboxen per IMAP einbindet, da solche Support-Aufgaben mit dieser Lösung von den jeweiligen Domainadmins erledigt werden können.

Important

In jedem Fall sollte ein Master-User-Setup aber datenschutzrechtlich abgeklärt sein!

Ich empfehle ein Monitoring/Logging mit Augenmerk auf Brute-Force-Angriffe auf den oder die Master-User-Accounts.

Robert Schetterer, 11. February 2013