[Dovecot-de] Mailverzeichnisse auflisten

Christian Boltz dovecot-jpb at cboltz.de
Fr Jul 11 23:12:45 CEST 2014


Hallo Alex, hallo Leute,

Am Dienstag, 8. Juli 2014 schrieb Alex JOST:
> Am 06.07.2014 23:41, schrieb Christian Boltz:
> > gibt es einen Weg, alle Verzeichnisse aufzulisten, in denen Dovecot
> > Postfächer pflegt?
> > 
> > Hintergrund meiner Frage: Ich bin Maintainer des AppArmor-Pakets auf
> > openSUSE und habe eine Anfrage bekommen, doch bitte
> > $noch_ein_verzeichnis im Dovecot-Profil zu erlauben. 

> > Ideal wäre, wenn ich anhand der Dovecot-Config automagisch ein
> > Schnipsel fürs AppArmor-Profil generieren könnte - nur weiß ich
> > noch nicht genau wie ;-)

> Vorausgesetzt Du kannst eine Liste aller Benutzer erzeugen, kannst Du
> folgende Befehle benutzen, um die Dir mail- und home-Verzeichnis
> auszugeben: doveadm user -f home user1 at example.com
> doveadm user -f mail user1 at example.com

Ich sehe gerade in der Manpage (dovecot-user), dass auch Wildcards 
erlaubt sind. Mal sehen...

# doveadm user -f home '*'
doveadm(cb): Error: User listing returned failure
doveadm(cb): Fatal: user listing failed

Die Erklärung steht im Log:
Jul 11 22:33:48 server dovecot: auth-worker(32686): Error: sql: Iterate 
query failed: Table 'mail.users' doesn't exist (using built-in default 
iterate_query: SELECT username, domain FROM users)

Nachdem ich die iterate_query konfiguriert habe, funktioniert es und 
liefert mir eine Liste der Usernamen.
# doveadm user -f home '*'
foo at example.com
bar at example.com

Das "-f home" wird also bei Wildcards nicht berücksichtigt. Schade[tm], 
dann eben:

# doveadm user '*' | xargs doveadm user -f home
/home/mailbox/example.com/foo

/home/mailbox/example.com/foo


(ja, inclusive der Leerzeilen)

Sieht schon mal nicht schlecht aus - aber bei 10000 Postfächern wird 
diese Liste sehr lang und zu einem Performance-Problem. An 100000 will 
ich gar nicht denken...

Außerdem müsste beim Anlegen eines Postfachs das AppArmor-Profil 
aktualisiert werden - das ist nicht wirklich sinnvoll ;-)  (genau 
deswegen hatte ich nach dem Basisverzeichnis, in dem alle Mailboxen 
liegen, gefragt ;-)

So langsam habe ich das Gefühl, dass ein Kommentar in der Dovecot-Config 
"If you use AppArmor, please change /etc/apparmor.d/tunables/dovecot 
according to the path you enter here" die einzig brauchbare Lösung 
ist...

Falls jemand einen Weg, der mir nur das Basisverzeichnis (z. B. 
/var/vmail/) liefert, kennt, bin ich weiterhin für Hinweise dankbar.  
Ich befürchte aber, dass das spätestens bei Beteiligung von SQL 
interessant[tm] wird...


Gruß

Christian Boltz
-- 
>Programmieren in C++ hält die grauen Zellen am Leben.
Es schaerft alle fuenf Sinne: den Schwachsinn, den Bloedsinn,
den Wahnsinn, den Unsinn und den Stumpfsinn.
[Felix von Leitner und Holger Veit in doc]



Mehr Informationen über die Mailingliste Dovecot