[Dovecot-de] Mailverzeichnisse auflisten

Lars Täuber taeuber at bbaw.de
Mo Jul 14 10:45:47 CEST 2014


Hallo Christian!

Fri, 11 Jul 2014 23:12:45 +0200
Christian Boltz <dovecot-jpb at cboltz.de> ==> dovecot at listen.jpberlin.de :
> 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)

Achtung!
Es kann auch Konfigurationen geben, die einen alternativen Speicherort nutzen.
Wir z.B. haben solche Mailboxen:

# doveadm user mustermann
[...]
home	/srv/mail/fast/vmail/mustermann
mail	mdbox:~/mdbox:ALT=/srv/mail/slow/vmail/mustermann/mdbox

Hier wären also 2 Verzeichnisse zu berücksichtigen:

/srv/mail/fast/vmail/mustermann/
/srv/mail/slow/vmail/mustermann/


Das Homeverzeichnis wird bei uns in der Konfig der LDAP-Abfrage definiert:
user_attrs		= uid=user,uid=home=/srv/mail/fast/vmail/%$


Grüße
Lars


> 
> 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


Mehr Informationen über die Mailingliste Dovecot