pg_hba.conf anpassen
Die Verbindung zu einem PostgreSQL-Server kann entweder über ein lokales Unix-Domain Socket oder eine TCP/IP-Verbindung erfolgen. Welche Gruppen/Benutzer sich wie verbinden und authentifizieren dürfen, wird in der pg_hba.conf hinterlegt.
Die Datei pg_hba.conf wird in der Regel im data-Verzeichnis des jeweiligen Clusters gespeichert. Häufig wird das Verzeichnis /usr/local/pgsql/data oder /var/lib/pgsql/data verwendet. Bei Debian GNU/Linux befindet sich die pg_hba.conf im Verzeichnis /etc/postgresql/$VERSION/$CLUSTER (zum Beispiel: /etc/postgresql/8.4/main).
Wie die pg_hba.conf strukturiert ist, wird unter anderem in Client Authentication beschrieben, und etwas detailierter in pg_hba.conf.
Für TCP/IP-Verbindungen
Wenn Sie über eine TCP/IP-Verbindung mit dem PostgreSQL-Server kommunizieren wollen, fügen Sie eine Zeile wie die folgende In Ihre pg_hba.conf ein. Das Beispiel zeigt die Konfiguration für eine lokale Verbindung. Sollte der PostgreSQL-Server auf einem anderen Server laufen, muss natürlich eine andere CIDR-Adresse angegeben werden.
# IPv4 local connections: host mailsys +mailsys 127.0.0.1/32 md5
Für Unix-Socket Verbindungen
Wenn Sie PostgreSQLs lokales Unix Domain Socket für Datenbankverbindungen verwenden wollen, erweitern sie Ihre pg_hba.conf-Datei um eine Zeile wie die zweite im folgenden Beispiel.
# "local" is for Unix domain socket connections only local mailsys +mailsys md5 local all all ident sameuser
Dieses ist erforderlich, da dovecot-auth vom unprivilegierten User nobody ausgeführt wird, nobody sich aber mit den Zugangsdaten aus der Datei dovecot-sql.conf bei PostgreSQL authentifiziert.
Sollte der PostgreSQL-Server bereits gestartet sein, senden Sie dem postmaster-Prozess das SIGHUP-Signal, damit die Änderung wirksam wird. Alternativ können Sie dazu auch das Kommando pg_ctl reload verwenden. Viele Linux Distributionen stellen auch ein init-Skript, das für diese Aufgabe geeignet ist, zur Verfügung:
/etc/init.d/postgresql [reload | force-reload]
Datenbank-Nutzer/DB anlegen
Sie sollten ein paar neue Datenbank-Nutzer für vmm, Dovecot und Postfix sowie deren Gruppe anlegen, diese bekommen individuelle Berechtigungen zugewiesen. Abschließend wird noch eine neue Datenbank erstellt.
Nur pgsql-Superuser und pgsql-Benutzer mit der CREATEROLE-Berechtigung können Benutzer anlegen.
Starten Sie psql und verbinden Sie sich mit der Datenbank template1:
psql template1
Legen Sie dann die Benutzer, deren Gruppe sowie die leere Datenbank an:
1 CREATE USER vmm ENCRYPTED PASSWORD 'Passwort für vmm';
2 CREATE USER dovecot ENCRYPTED PASSWORD 'Passwort für dovecot';
3 CREATE USER postfix ENCRYPTED PASSWORD 'Passwort für postfix';
4 CREATE ROLE mailsys WITH USER vmm, dovecot, postfix;
5 CREATE DATABASE mailsys WITH OWNER vmm ENCODING 'UTF8';
6 \q
Tabellen erzeugen und Dovecot und Postfix berechtigen
Starten Sie jetzt psql und verbinden Sie sich als Ihr vmm-Benutzer zur Datenbank mailsys:
psql mailsys vmm -W -h 127.0.0.1
Im interaktiven PostgreSQL-Terminal führen Sie folgende Kommandos/interne Kommandos aus:
- importieren der Datenbank-Struktur
- die eingerichteten Benutzer berechtigen
1 -- Für Dovecot v1.0.x/v1.1.x
2 \i /pfad/zu/vmm-0.5.2/create_tables.pgsql
3 -- Für Dovecot v1.2.x
4 \i /pfad/zu/vmm-0.5.2/create_tables-dovecot-1.2.x.pgsql
5 -- Für Dovecot v1.0.x/v1.1.x/v1.2.x
6 GRANT SELECT ON dovecot_password, dovecot_user TO dovecot;
7 GRANT SELECT ON postfix_alias, postfix_gid, postfix_maildir, postfix_relocated, postfix_transport, postfix_uid TO postfix;
8 \q
