branch merge v0.6.x
authorPascal Volk <neverseen@users.sourceforge.net>
Fri, 22 Jan 2010 04:31:38 +0000
branchv0.6.x
changeset 173 c0e2c7687dd3
parent 171 6f8ac86d1611 (diff)
parent 172 6526072ec709 (current diff)
child 174 974bafa59330
branch merge
VirtualMailManager/Config.py
--- a/INSTALL	Fri Jan 22 04:22:59 2010 +0000
+++ b/INSTALL	Fri Jan 22 04:31:38 2010 +0000
@@ -9,13 +9,18 @@
 
 
 Configuring PostgreSQL
+(for more details see: http://vmm.localdomain.org/PreparingPostgreSQL)
 
-* /etc/postgresql/8.2/main/pg_hba.conf
+* /etc/postgresql/8.4/main/pg_hba.conf
+  [ if you prefer to connect via TCP/IP ]
     # IPv4 local connections:
     host    mailsys     +mailsys    127.0.0.1/32          md5
+  [ if you want to connect through a local Unix-domain socket ]
+    # "local" is for Unix domain socket connections only
+    local   mailsys     +mailsys                          md5
 
     # reload configuration
-    /etc/init.d/postgresql-8.2 force-reload
+    /etc/init.d/postgresql-8.4 force-reload
 
 * Create a DB user if necessary:
     DB Superuser:
@@ -23,24 +28,25 @@
     DB User:
     createuser -d -E -e -P $USERNAME
 
-* Create Database and db users for Postfix and Dovecot
+* Create Database and db users for vmm, Postfix and Dovecot
     connecting to PostgreSQL:
     psql template1
 
-    # create database
-    CREATE DATABASE mailsys ENCODING 'UTF8';
+    # create users, group and the database
+    CREATE USER vmm ENCRYPTED PASSWORD 'DB PASSWORD for vmm';
+    CREATE USER dovecot ENCRYPTED password 'DB PASSWORD for Dovecot';
+    CREATE USER postfix ENCRYPTED password 'DB PASSWORD for Postfix';
+    CREATE ROLE mailsys WITH USER postfix, dovecot, vmm;
+    CREATE DATABASE mailsys WITH OWNER vmm ENCODING 'UTF8';
+    \q
+
     # connect to the new database
-    \c mailsys
+    psql mailsys vmm -W -h 127.0.0.1
     # either import the database structure for Dovecot v1.0.x/v1.1.x
     \i /path/to/create_tables.pgsql
     # or import the database structure for Dovecot v1.2.x
     \i /path/to/create_tables-dovecot-1.2.x.pgsql
 
-    # create users and group
-    CREATE USER postfix ENCRYPTED password 'DB PASSWORD for Postfix';
-    CREATE USER dovecot ENCRYPTED password 'DB PASSWORD for Dovecot';
-    CREATE ROLE mailsys WITH USER postfix, dovecot;
-
     # set permissions
     GRANT SELECT ON dovecot_password, dovecot_user TO dovecot;
     GRANT SELECT ON postfix_alias, postfix_gid, postfix_maildir,
--- a/TODO	Fri Jan 22 04:22:59 2010 +0000
+++ b/TODO	Fri Jan 22 04:31:38 2010 +0000
@@ -1,3 +1,8 @@
+Config
+   cfs - configset sect.opt val
+   cfg - configget sect.opt
+
+   ds - domainservices: smtp pop imap sieve???
 
 - Aliases
     - avoid looping aliases
--- a/VirtualMailManager/Config.py	Fri Jan 22 04:22:59 2010 +0000
+++ b/VirtualMailManager/Config.py	Fri Jan 22 04:31:38 2010 +0000
@@ -26,8 +26,8 @@
         ConfigParser.__init__(self)
         self.__cfgFileName = filename
         self.__cfgFile = None
-        self.__VMMsections = ['database', 'maildir', 'services', 'domdir',
-                'bin', 'misc', 'config']
+        self.__VMMsections = ('account', 'bin', 'database', 'domain',
+                              'maildir', 'misc', 'config')
         self.__changes = False
         self.__missing = {}
         self.__dbopts = [
@@ -39,20 +39,23 @@
         self.__mdopts = [
                 ['name', 'Maildir'],
                 ['folders', 'Drafts:Sent:Templates:Trash'],
-                ['mode', 448],
-                ['diskusage', 'false'],
-                ['delete', 'false']
                 ]
-        self.__serviceopts = [
+        self.__accountopts = [
+                ['delete_directory', 'false'],
+                ['directory_mode', 448],
+                ['disk_usage', 'false'],
+                ['password_length', 8],
+                ['random_password', 'false'],
                 ['smtp', 'true'],
                 ['pop3', 'true'],
                 ['imap', 'true'],
                 ['sieve', 'true']
                 ]
         self.__domdopts = [
-                ['base', '/srv/mail'],
-                ['mode', 504],
-                ['delete', 'false']
+                ['auto_postmaster', 'true'],
+                ['delete_directory', 'false'],
+                ['directory_mode', 504],
+                ['force_deletion', 'false'],
                 ]
         self.__binopts = [
                 ['dovecotpw', '/usr/sbin/dovecotpw'],
@@ -60,11 +63,11 @@
                 ['postconf', '/usr/sbin/postconf']
                 ]
         self.__miscopts = [
-                ['passwdscheme', 'PLAIN'],
+                ['base_directory', '/srv/mail'],
+                ['dovecot_version', '11'],
                 ['gid_mail', 8],
-                ['forcedel', 'false'],
+                ['password_scheme', 'PLAIN'],
                 ['transport', 'dovecot:'],
-                ['dovecotvers', '11']
                 ]
 
     def load(self):
@@ -168,9 +171,9 @@
             opts = self.__dbopts
         elif section == 'maildir':
             opts = self.__mdopts
-        elif section == 'services':
-            opts = self.__serviceopts
-        elif section == 'domdir':
+        elif section == 'account':
+            opts = self.__accountopts
+        elif section == 'domain':
             opts = self.__domdopts
         elif section == 'bin':
             opts = self.__binopts
--- a/VirtualMailManager/VirtualMailManager.py	Fri Jan 22 04:22:59 2010 +0000
+++ b/VirtualMailManager/VirtualMailManager.py	Fri Jan 22 04:31:38 2010 +0000
@@ -51,7 +51,7 @@
             self.__Cfg.load()
             self.__Cfg.check()
             self.__cfgSections = self.__Cfg.getsections()
-            self.__scheme = self.__Cfg.get('misc', 'passwdscheme')
+            self.__scheme = self.__Cfg.get('misc', 'password_scheme')
             self._postconf = Postconf(self.__Cfg.get('bin', 'postconf'))
         if not os.sys.argv[1] in ['cf', 'configure']:
             self.__chkenv()
@@ -83,16 +83,16 @@
 
     def __chkenv(self):
         """"""
-        if not os.path.exists(self.__Cfg.get('domdir', 'base')):
+        basedir = self.__Cfg.get('misc', 'base_directory')
+        if not os.path.exists(basedir):
             old_umask = os.umask(0006)
-            os.makedirs(self.__Cfg.get('domdir', 'base'), 0771)
-            os.chown(self.__Cfg.get('domdir', 'base'), 0,
-                    self.__Cfg.getint('misc', 'gid_mail'))
+            os.makedirs(basedir, 0771)
+            os.chown(basedir, 0, self.__Cfg.getint('misc', 'gid_mail'))
             os.umask(old_umask)
-        elif not os.path.isdir(self.__Cfg.get('domdir', 'base')):
+        elif not os.path.isdir(basedir):
             raise VMMException(_(u'“%s” is not a directory.\n\
-(vmm.cfg: section "domdir", option "base")') %
-                self.__Cfg.get('domdir', 'base'), ERR.NO_SUCH_DIRECTORY)
+(vmm.cfg: section "misc", option "base_directory")') %
+                                 basedir, ERR.NO_SUCH_DIRECTORY)
         for opt, val in self.__Cfg.items('bin'):
             if not os.path.exists(val):
                 raise VMMException(_(u'“%(binary)s” doesn\'t exist.\n\
@@ -237,7 +237,7 @@
             transport = self.__Cfg.get('misc', 'transport')
         self.__dbConnect()
         return Domain(self.__dbh, domainname,
-                self.__Cfg.get('domdir', 'base'), transport)
+                self.__Cfg.get('misc', 'base_directory'), transport)
 
     def __getDiskUsage(self, directory):
         """Estimate file space usage for the given directory.
@@ -259,7 +259,7 @@
 
     def __makedir(self, directory, mode=None, uid=None, gid=None):
         if mode is None:
-            mode = self.__Cfg.getint('maildir', 'mode')
+            mode = self.__Cfg.getint('account', 'directory_mode')
         if uid is None:
             uid = 0
         if gid is None:
@@ -270,17 +270,17 @@
     def __domDirMake(self, domdir, gid):
         os.umask(0006)
         oldpwd = os.getcwd()
-        basedir = self.__Cfg.get('domdir', 'base')
+        basedir = self.__Cfg.get('misc', 'base_directory')
         domdirdirs = domdir.replace(basedir+'/', '').split('/')
 
         os.chdir(basedir)
         if not os.path.isdir(domdirdirs[0]):
             self.__makedir(domdirdirs[0], 489, 0,
-                    self.__Cfg.getint('misc', 'gid_mail'))
+                           self.__Cfg.getint('misc', 'gid_mail'))
         os.chdir(domdirdirs[0])
         os.umask(0007)
-        self.__makedir(domdirdirs[1], self.__Cfg.getint('domdir', 'mode'), 0,
-                gid)
+        self.__makedir(domdirdirs[1],
+                       self.__Cfg.getint('domain', 'directory_mode'), 0, gid)
         os.chdir(oldpwd)
 
     def __subscribeFL(self, folderlist, uid, gid):
@@ -313,7 +313,7 @@
             and re.match(RE_MBOX_NAMES, folder):
                 folders.append('%s/.%s' % (maildir, folder))
         subdirs = ['cur', 'new', 'tmp']
-        mode = self.__Cfg.getint('maildir', 'mode')
+        mode = self.__Cfg.getint('account', 'directory_mode')
 
         self.__makedir('%s' % uid, mode, uid, gid)
         os.chdir('%s' % uid)
@@ -348,7 +348,7 @@
         if gid > 0:
             if not self.__isdir(domdir):
                 return
-            basedir = self.__Cfg.get('domdir', 'base')
+            basedir = self.__Cfg.get('misc', 'base_directory')
             domdirdirs = domdir.replace(basedir+'/', '').split('/')
             domdirparent = os.path.join(basedir, domdirdirs[0])
             if basedir.count('..') or domdir.count('..'):
@@ -487,7 +487,8 @@
         dom = self.__getDomain(domainname)
         gid = dom.getID()
         domdir = dom.getDir()
-        if self.__Cfg.getboolean('misc', 'forcedel') or force == 'delall':
+        if self.__Cfg.getboolean('domain', 'force_deletion')\
+        or force == 'delall':
             dom.delete(True, True)
         elif force == 'deluser':
             dom.delete(delUser=True)
@@ -495,7 +496,7 @@
             dom.delete(delAlias=True)
         else:
             dom.delete()
-        if self.__Cfg.getboolean('domdir', 'delete'):
+        if self.__Cfg.getboolean('domain', 'delete_directory'):
             self.__domDirDelete(domdir, gid)
 
     def domainInfo(self, domainname, details=None):
@@ -589,11 +590,11 @@
             password = self._readpass()
             acc.setPassword(self.__pwhash(password))
         acc.save(self.__Cfg.get('maildir', 'name'),
-                self.__Cfg.getint('misc', 'dovecotvers'),
-                self.__Cfg.getboolean('services', 'smtp'),
-                self.__Cfg.getboolean('services', 'pop3'),
-                self.__Cfg.getboolean('services', 'imap'),
-                self.__Cfg.getboolean('services', 'sieve'))
+                self.__Cfg.getint('misc', 'dovecot_version'),
+                self.__Cfg.getboolean('account', 'smtp'),
+                self.__Cfg.getboolean('account', 'pop3'),
+                self.__Cfg.getboolean('account', 'imap'),
+                self.__Cfg.getboolean('account', 'sieve'))
         self.__mailDirMake(acc.getDir('domain'), acc.getUID(), acc.getGID())
 
     def aliasAdd(self, aliasaddress, targetaddress):
@@ -615,7 +616,7 @@
         uid = acc.getUID()
         gid = acc.getGID()
         acc.delete(force)
-        if self.__Cfg.getboolean('maildir', 'delete'):
+        if self.__Cfg.getboolean('account', 'delete_directory'):
             try:
                 self.__userDirDelete(acc.getDir('domain'), uid, gid)
             except VMMException, e:
@@ -643,8 +644,8 @@
             raise VMMException(_(u'Invalid argument: “%s”') % details,
                     ERR.INVALID_AGUMENT)
         acc = self.__getAccount(emailaddress)
-        info = acc.getInfo(self.__Cfg.getint('misc', 'dovecotvers'))
-        if self.__Cfg.getboolean('maildir', 'diskusage')\
+        info = acc.getInfo(self.__Cfg.getint('misc', 'dovecot_version'))
+        if self.__Cfg.getboolean('account', 'disk_usage')\
         or details in ['du', 'full']:
             info['disk usage'] = self.__getDiskUsage('%(maildir)s' % info)
             if details in [None, 'du']:
@@ -682,7 +683,7 @@
    in a future release.\n\
    Please use the service name “sieve” instead.'))
         acc = self.__getAccount(emailaddress)
-        acc.disable(self.__Cfg.getint('misc', 'dovecotvers'), service)
+        acc.disable(self.__Cfg.getint('misc', 'dovecot_version'), service)
 
     def userEnable(self, emailaddress, service=None):
         if service == 'managesieve':
@@ -692,7 +693,7 @@
    in a future release.\n\
    Please use the service name “sieve” instead.'))
         acc = self.__getAccount(emailaddress)
-        acc.enable(self.__Cfg.getint('misc', 'dovecotvers'), service)
+        acc.enable(self.__Cfg.getint('misc', 'dovecot_version'), service)
 
     def relocatedAdd(self, emailaddress, targetaddress):
         relocated = self.__getRelocated(emailaddress, targetaddress)
--- a/install.sh	Fri Jan 22 04:22:59 2010 +0000
+++ b/install.sh	Fri Jan 22 04:31:38 2010 +0000
@@ -26,7 +26,7 @@
     exit 1
 fi
 
-python setup.py -q install --prefix ${PREFIX}
+python setup.py -q install --force --prefix ${PREFIX}
 python setup.py clean --all >/dev/null
 
 install -b -m 0600 ${INSTALL_OPTS} vmm.cfg ${PREFIX}/etc/
@@ -50,7 +50,7 @@
 [ -d ${MANDIR}/man5 ] || mkdir -m 0755 -p ${MANDIR}/man5
 install -m 0644 ${INSTALL_OPTS} man5/vmm.cfg.5 ${MANDIR}/man5
 
-for l in $(find . -maxdepth 1 -mindepth 1 -type d \! -name man\? \! -name .svn)
+for l in $(find . -maxdepth 1 -mindepth 1 -type d \! -name man\?)
 do
     for s in man1 man5; do
         [ -d ${MANDIR}/${l}/${s} ] || mkdir -m 0755 -p ${MANDIR}/${l}/${s}
--- a/man/de/man5/vmm.cfg.5	Fri Jan 22 04:22:59 2010 +0000
+++ b/man/de/man5/vmm.cfg.5	Fri Jan 22 04:31:38 2010 +0000
@@ -1,273 +1,458 @@
-.TH vmm.cfg 5 "17 Aug 2009" "Pascal Volk"
+.\" Man page generated from reStructeredText.
+.
+.TH VMM.CFG 5 "2010-01-18" "vmm-0.6.0" "vmm Manual"
 .SH NAME
 vmm.cfg \- Konfigurationsdatei für vmm
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
 .SH SYNOPSIS
+.sp
 vmm.cfg
 .SH BESCHREIBUNG
-\fBvmm\fR(1) liest Konfigurationsparameter aus der Datei \fIvmm.cfg\fP.
-.br
+.sp
+\fBvmm\fP(1) liest seine Konfigurationsparameter aus der Datei \fIvmm.cfg\fP.
+.sp
 Die Konfigurationsdatei ist in mehrere Abschnitte unterteilt. Jeder Abschnitt
-wird mit dem, in eckigen Klammern '[' und ']' eingefassten, Namen des Abschnitts
-eingeleitet (z. B. \fB[database]\fP), gefolgt von \'Option = Wert\' Einträgen
-(Z. B. \fBhost = 127.0.0.1\fP).
-.br
-Leerräume um das Gleichheitszeichen '=' und am Ende eine Wertes werden
+wird mit dem, in eckigen Klammern \(aq\fB[\fP\(aq und \(aq\fB]\fP\(aq eingefassten, Namen des
+Abschnitts eingeleitet, gefolgt von \(aq\fIOption\fP = \fIWert\fP\(aq Einträgen:
+.sp
+.nf
+.ft C
+[database]
+host = 127.0.0.1
+.ft P
+.fi
+.sp
+Leerräume um das Gleichheitszeichen \(aq=\(aq und am Ende eines Wertes werden
 ignoriert.
-.PP
-Leerzeilen und Zeilen, die mit einer '#' oder einem ';' anfangen, werden
+.sp
+Leerzeilen und Zeilen, die mit einer \(aq#\(aq oder einem \(aq;\(aq anfangen, werden
 ignoriert.
-.PP
+.sp
 Jeder Wert ist von einem der folgenden Datentypen:
-.IP \(bu
-.I Boolean
-um zu bestimmen, ob etwas eingeschaltet/aktiviert (true) oder
+.INDENT 0.0
+.IP \(bu 2
+.
+\fIBoolean\fP um zu bestimmen, ob etwas eingeschaltet/aktiviert (true) oder
 ausgeschaltet/deaktiviert (false) ist.
-.br
-Mögliche Werte für \fBtrue\fP sind: \fB1\fP, \fByes\fP, \fBtrue\fP und \fBon\fP.
-.br
-Mögliche Werte für \fBfalse\fP sind: \fB0\fP, \fBno\fP, \fBfalse\fP und
-\fBoff\fP.
-.IP \(bu
-.I Int
-eine Integer-Zahl, geschrieben ohne eine gebrochene oder dezimale Komponente.
-.br
-Beispielsweise sind \fB1\fP, \fB50\fP oder \fB321\fP Integer-Zahlen.
-.IP \(bu
-.I String
-eine Folge von Buchstaben und Zahlen.
-.br
-Zum Beispiel: '\fBWort\fP', '\fBHallo Welt\fP', oder '\fB/usr/bin/strings\fP'
+.nf
+Mögliche Werte für \fItrue\fP sind: \fB1\fP, \fByes\fP, \fBtrue\fP und \fBon\fP.
+Mögliche Werte für \fIfalse\fP sind: \fB0\fP, \fBno\fP, \fBfalse\fP und \fBoff\fP.
+.fi
+.sp
+.IP \(bu 2
+.
+\fIInt\fP eine Integer\-Zahl, geschrieben ohne eine gebrochene oder dezimale
+Komponente.
+.nf
+Beispielsweise \fB1\fP, \fB50\fP oder \fB321\fP sind Integer\-Zahlen.
+.fi
+.sp
+.IP \(bu 2
+.
+\fIString\fP eine Folge von Buchstaben und Zahlen.
+.nf
+Zum Beispiel: \(aq\fBWort\fP\(aq, \(aq\fBHallo Welt\fP\(aq oder \(aq\fB/usr/bin/strings\fP\(aq
+.fi
+.sp
+.UNINDENT
 .SS SUCHREIHENFOLGE
-Standardmäßig sucht vmm die \fIvmm.cfg\fP in folgenden Verzeichnissen, in dieser
-Reihenfolge:
-.RS
-.PD 0
+.sp
+Standardmäßig sucht \fBvmm\fP(1) die \fIvmm.cfg\fP in folgenden Verzeichnissen,
+in der angegebenen Reihenfolge:
+.INDENT 0.0
+.INDENT 3.5
+.nf
+\fI/root\fP
+\fI/usr/local/etc\fP
+\fI/etc\fP
+.fi
+.sp
+.UNINDENT
+.UNINDENT
+.sp
+Die zuerst gefundene Datei wird verwendet.
+.SH ABSCHNITTE
+.sp
+Im Folgenden werden die Abschnitte der \fIvmm.cfg\fP und deren Optionen
+beschrieben.
+.SS ACCOUNT
+.sp
+Die Optionen des Abschnitts \fBaccount\fP legen Konto\-spezifische
+Einstellungen fest.
+.INDENT 0.0
 .TP
-.I
-/root
-.TP
-.I
-/usr/local/etc
+.B \fCdelete_directory\fP
+\fIBoolean\fP
+.sp
+Bestimmt das Verhalten von \fBvmm\fP(1) beim Löschen eines Kontos.
+Wenn der Wert dieser Option \fItrue\fP ist, wird das Home\-Verzeichnis des
+zu löschenden Anwenders rekursiv gelöscht.
 .TP
-.I
-/etc
-.PD
-.RE
-.PP
-Die zuerst gefundene Datei wird verwendet.
-.\" -----
-.SH DATABASE ABSCHNITT
-Der \fBdatabase\fP-Abschnitt wird verwendet, um die für den Datenbankzugriff
-benötigten Optionen festzulegen.
-.TP
-\fBhost\fP (\fIString\fP)
-Der Hostname oder die IP-Adresse des Datenbank-Servers.
-.TP
-\fBuser\fP (\fIString\fP)
-Der Name des Datenbank-Benutzers.
-.TP
-\fBpass\fP (\fIString\fP)
-Das Passwort des Datenbank-Benutzers
+.B \fCdirectory_mode\fP
+\fIInt\fP
+.sp
+Zugriffsbits des Home\-Verzeichnisses, sowie aller enthaltenen
+Verzeichnisse, in Dezimal\-Schreibweise (Basis 10).
+.nf
+Beispiel: \(aqdrwx\-\-\-\-\-\-\(aq \-> oktal 0700 \-> dezimal 448
+.fi
+.sp
 .TP
-\fBname\fP (\fIString\fP)
-Name der zu verwendenden Datenbank.
+.B \fCdisk_usage\fP
+\fIBoolean\fP
+.sp
+Legt fest, ob die Festplattenbelegung des Maildirs eines Benutzers jedes
+Mal mit \fBdu\fP(1) ermittelt und mit den Konto\-Informationen ausgegeben
+werden soll.
+.sp
+Bei umfangreichen Maildirs kann das langsam sein. Falls Sie Quotas
+aktiviert haben, wird der \fBvmm\fP\-Unterbefehl \fBuserinfo\fP ebenfalls
+die aktuelle Quota\-Nutzung des Kontos mit ausgegeben. Sie können auch
+eines der optionalen Argumente \fBdu\fP oder \fBfull\fP an \fBuserinfo\fP
+übergeben, um sich die aktuelle Festplattenbelegung anzeigen zu lassen.
+.TP
+.B \fCimap\fP
+\fIBoolean\fP
+.sp
+Bestimmt, ob sich neu angelegte Benutzer per IMAP anmelden können sollen.
 .TP
-\fBBeispiel\fP:
-[database]
-.br
-host = localhost
-.br
-user = vmm
-.br
-pass = T~_:L4OYyl]TU?)
-.br
-name = mailsys
-.\" -----
-.SH MAILDIR ABSCHNITT
-Im \fBmaildir\fP-Abschnitt werden die für die Maildirs erforderlichen Optionen
-festgelegt.
+.B \fCpassword_length\fP
+\fIInt\fP
+.sp
+Diese Option legt die Anzahl der Zeichen für automatisch erzeugte
+Passwörter fest. Alle Werte kleiner als 8 werden auf 8 erhöht.
+.TP
+.B \fCpop3\fP
+.sp
+Bestimmt, ob sich neu angelegte Benutzer per POP3 anmelden können sollen.
 .TP
-\fBname\fP (\fIString\fP)
-Standard-Name des Maildir-Verzeichnisses im Verzeichnis des jeweiligen
-Anwenders.
+.B \fCrandom_password\fP
+\fIBoolean\fP
+.sp
+Mit dieser Option wird bestimmt , ob \fBvmm\fP(1) ein zufälliges Passwort
+generieren soll, wenn kein Passwort an den \fBuseradd\fP Unterbefehl
+übergeben wurde. Ist der Wert dieser Option \fIfalse\fP, wird \fBvmm\fP Sie
+auffordern, ein Passwort für den neun Account einzugeben.
+.sp
+Sie können die Länge für automatisch generierte Passwörter mit der
+Option \fBpassword_length\fP konfigurieren.
 .TP
-\fBfolders\fP (\fIString\fP)
-Eine durch Doppelpunkten getrennte Liste mit Verzeichnisnamen, die innerhalb des
-Maildirs erstellt werden sollen.
-.br
-Sollen innerhalb des Maildirs keine Verzeichnisse angelegt werden, ist dieser
-Optionen ein einzelner Doppelpunkt (':') als Wert zuzuweisen.
-.TP
-\fBmode\fP (\fIInt\fP)
-Zugriffsbits des Maildirs in Dezimal-Schreibweise (Basis 10).
-.br
-Beispiel: \'drwx------' -> oktal 0700 -> dezimal 448
+.B \fCsieve\fP
+\fIBoolean\fP
+.sp
+Bestimmt, ob sich neu angelegte Benutzer per ManageSieve anmelden
+können sollen.
 .TP
-\fBdiskusage\fP (\fIBoolean\fP)
-Legt fest, ob die Festplattenbelegung des Maildirs jedes Mal, wenn
-Konto-Informationen ausgegeben werden, ermittelt und mit ausgegeben werden
-sollen.
-.TP
-\fBdelete\fP (\fIBoolean\fP)
-Bestimmt, ob das Maildir rekursiv gelöscht werden soll, wenn ein Konto gelöscht
-wird.
+.B \fCsmtp\fP
+\fIBoolean\fP
+.sp
+Bestimmt, ob sich neu angelegte Benutzer per SMTP (SMTP AUTH) anmelden
+können sollen.
+.UNINDENT
+.sp
+Beispiel:
+.sp
+.nf
+.ft C
+[account]
+delete_directory = false
+directory_mode = 448
+disk_usage = false
+random_password = true
+password_length = 10
+smtp = true
+pop3 = true
+imap = true
+sieve = true
+.ft P
+.fi
+.SS BIN
+.sp
+Im \fBbin\fP\-Abschnitt werden Pfade zu Binaries angegeben, die von
+\fBvmm\fP(1) benötigt werden.
+.INDENT 0.0
 .TP
-\fBBeispiel\fP:
-[maildir]
-.br
-name = Maildir
-.br
-folders = Drafts:Sent:Templates:Trash:INBOX.News
-.br
-mode = 448
-.br
-diskusage = false
-.br
-delete = false
-.\" -----
-.SH SERVICES ABSCHNITT
-Im \fBservices\fP-Abschnitt werden die Standard-Beschränkungen für alle Konten
-festgelegt.
+.B \fCdovecotpw\fP
+\fIString\fP
+.sp
+Der absolute Pfad zum dovecotpw Binary. Dieses Binary wird zur
+Hash\-Erzeugung verwendet, wenn \fBmisc.password_scheme\fP einen der
+nachfolgenden Werte hat: \(aqSMD5\(aq, \(aqSSHA\(aq, \(aqCRAM\-MD5\(aq, \(aqHMAC\-MD5\(aq,
+\(aqLANMAN\(aq, \(aqNTLM\(aq oder \(aqRPA\(aq.
+.TP
+.B \fCdu\fP
+\fIString\fP
+.sp
+Der absolute Pfad zu \fBdu\fP(1). Dieses Binary wird verwendet, wenn
+die Festplattenbelegung eines Kontos ermittelt wird.
 .TP
-\fBsmtp\fP (\fIBoolean\fP)
-Legt fest, ob sich ein Anwender standardmäßig per SMTP einloggen kann.
-.TP
-\fBpop3\fP (\fIBoolean\fP)
-Legt fest, ob sich ein Anwender standardmäßig per POP3 einloggen kann.
-.TP
-\fBimap\fP (\fIBoolean\fP)
-Legt fest, ob sich ein Anwender standardmäßig per IMAP einloggen kann.
+.B \fCpostconf\fP
+\fIString\fP
+.sp
+Der absolute Pfad zu Postfix\(aq \fBpostconf\fP(1). Dieses Binary wird
+verwendet, wenn \fBvmm\fP(1) diverse Postfix\-Einstellungen prüft, zum
+Beispiel das \fIvirtual_alias_expansion_limit\fP.
+.UNINDENT
+.sp
+Beispiel:
+.sp
+.nf
+.ft C
+[bin]
+dovecotpw = /usr/sbin/dovecotpw
+du = /usr/bin/du
+postconf = /usr/sbin/postconf
+.ft P
+.fi
+.SS CONFIG
+.sp
+Beim \fBconfig\fP\-Abschnitt handelt es sich um einen internen
+Steuerungs\-Abschnitt.
+.INDENT 0.0
 .TP
-\fBsieve\fP (\fIBoolean\fP)
-Legt fest, ob sich ein Anwender standardmäßig per MANAGESIEVE einloggen kann.
+.B \fCdone\fP
+\fIBoolean\fP
+.sp
+Diese Option hat den Wert \fIfalse\fP, wenn \fBvmm\fP(1) zum ersten Mal
+installiert wurde. Wenn Sie die Datei \fIvmm.cfg\fP von Hand editieren,
+weisen Sie dieser Option abschließend den Wert \fItrue\fP zu. Wird die
+Konfiguration über das Kommando \fBvmm configure\fP angepasst, wird der
+Wert dieser Option automatisch auf \fItrue\fP gesetzt.
+.sp
+Ist der Wert dieser Option  \fIfalse\fP, so startet \fBvmm\fP(1) beim
+nächsten Aufruf im interaktiven Konfigurations\-Modus.
+.UNINDENT
+.sp
+Beispiel:
+.sp
+.nf
+.ft C
+[config]
+done = true
+.ft P
+.fi
+.SS DATABASE
+.sp
+Der \fBdatabase\fP\-Abschnitt wird verwendet, um die für den Datenbankzugriff
+benötigten Optionen festzulegen.
+.INDENT 0.0
 .TP
-\fBBeispiel\fP:
-[services]
-.br
-smtp = true
-.br
-pop3 = true
-.br
-imap = false
-.br
-sieve = false
-.\" -----
-.SH DOMDIR ABSCHNITT
-Im \fBdomdir\fP-Abschnitt werden die Optionen der Domain-Verzeichnisse bestimmt.
+.B \fChost\fP
+\fIString\fP
+.sp
+Der Hostname oder die IP\-Adresse des Datenbank\-Servers.
 .TP
-\fBbase\fP (\fIString\fP)
-Alle Domain-Verzeichnisse werden unterhalb dieses Basis-Verzeichnisses angelegt.
+.B \fCname\fP
+\fIString\fP
+.sp
+Der Name der zu verwendenden Datenbank.
 .TP
-\fBmode\fP (\fIInt\fP)
-Zugriffsbits des Domain-Verzeichnisses in Dezimal-Schreibweise (Basis 10).
-.br
-Beispiel: 'drwxrwx---' -> oktal 0770 -> dezimal 504
+.B \fCpass\fP
+\fIString\fP
+.sp
+Das Passwort des Datenbank\-Benutzers.
 .TP
-\fBdelete\fP (\fIBoolean\fP)
-Bestimmt, ob beim Löschen einer Domain das Verzeichnis einer Domain, inklusive
-aller Anwender-Verzeichnisse, rekursiv gelöscht werden soll.
+.B \fCuser\fP
+\fIString\fP
+.sp
+Der Name des Datenbank\-Benutzers.
+.UNINDENT
+.sp
+Beispiel:
+.sp
+.nf
+.ft C
+[database]
+host = localhost
+user = vmm
+pass = PY_SRJ}L/0p\-oOk
+name = mailsys
+.ft P
+.fi
+.SS DOMAIN
+.sp
+Im \fBdomain\fP\-Abschnitt werden Domain\-spezifische Informationen konfiguriert.
+.INDENT 0.0
+.TP
+.B \fCauto_postmaster\fP
+\fIBoolean\fP
+.sp
+Ist der Wert dieser Option \fItrue\fP, wird \fBvmm\fP(1) beim Anlegen einer
+Domain automatisch einen postmaster\-Account erstellen.
 .TP
-\fBBeispiel\fP:
-[domdir]
-.br
-base = /srv/mail
-.br
-mode = 504
-.br
-delete = false
-.\" -----
-.SH BIN ABSCHNITT
-Der \fBbin\fP-Abschnitt wird verwendet, um Pfade zu Binaries, die von \fBvmm\fP
-benötigt werden, anzugeben.
+.B \fCdelete_directory\fP
+\fIBoolean\fP
+.sp
+Bestimmt, ob beim Löschen einer Domain das Verzeichnis einer Domain,
+inklusive aller Anwender\-Verzeichnisse, rekursiv gelöscht werden soll.
+.TP
+.B \fCdirectory_mode\fP
+\fIInt\fP
+.sp
+Zugriffsbits des Domain\-Verzeichnisses in Dezimal\-Schreibweise (Basis
+10).
+.nf
+Beispiel: \(aqdrwxrwx\-\-\-\(aq \-> oktal 0770 \-> dezimal 504
+.fi
+.sp
 .TP
-\fBdovecotpw\fP (\fIString\fP)
-Der absolute Pfad zum dovecotpw-Binary. Dieses wird verwendet, wenn als
-Passwort-Schema eines der folgenden verwendet wird: 'SMD5', 'SSHA', 'CRAM-MD5',
-\'HMAC-MD5', 'LANMAN', 'NTLM' oder 'RPA'.
-.TP
-\fBdu\fP (\fIString\fP)
-Der absolute Pfad zu \fBdu\fR(1). Dieses Binary wird verwendet, wenn die
-Festplattenbelegung eines Kontos ermittelt wird.
-.TP
-\fBpostconf\fP (\fIString\fP)
-Der absolute Pfad zu Postfix' \fBpostconf\fR(1).
-.br
-Dieses Binary wird verwendet, wenn \fBvmm\fR(1) diverse Postfix-Einstellungen
-prüft, zum Beispiel virtual_alias_expansion_limit.
+.B \fCforce_deletion\fP
+\fIBoolean\fP
+.sp
+Erzwingt das Löschen von Konten und Aliase beim Löschen einer Domain.
+.UNINDENT
+.sp
+Beispiel:
+.sp
+.nf
+.ft C
+[domain]
+auto_postmaster = true
+delete_directory = false
+directory_mode = 504
+force_deletion = false
+.ft P
+.fi
+.SS MAILDIR
+.sp
+Im \fBmaildir\fP\-Abschnitt werden die für die Maildirs erforderlichen Optionen
+festgelegt.
+.INDENT 0.0
 .TP
-\fBBeispiel\fP:
-[bin]
-.br
-dovecotpw = /usr/sbin/dovecotpw
-.br
-du = /usr/bin/du
-.br
-postconf = /usr/sbin/postconf
-.\" -----
-.SH MISC ABSCHNITT
-Im \fBmisc\fP-Abschnitt werden verschiedene Einstellungen festgelegt.
+.B \fCfolders\fP
+\fIString\fP
+.sp
+Eine durch Doppelpunkten getrennte Liste mit Verzeichnisnamen, die
+innerhalb des Maildirs erstellt werden sollen. Sollen innerhalb des
+Maildirs keine Verzeichnisse angelegt werden, ist dieser Optionen ein
+einzelner Doppelpunkt (\(aq\fB:\fP\(aq) als Wert zuzuweisen.
+.sp
+Sollen Verzeichnisse mit Unterverzeichnissen angelegt werden, ist ein
+einzelner Punkt (\(aq\fB.\fP\(aq) als Separator zu verwenden.
 .TP
-\fBpasswdscheme\fP (\fIString\fP)
-Das zu verwendende Passwort-Schema (siehe auch: dovecotpw -l)
+.B \fCname\fP
+\fIString\fP
+.sp
+Der Standard\-Name des Maildir\-Verzeichnisses im Verzeichnis des
+jeweiligen Anwenders.
+.UNINDENT
+.sp
+Beispiel:
+.sp
+.nf
+.ft C
+[maildir]
+folders = Drafts:Sent:Templates:Trash:Lists.Dovecot:Lists.Postfix
+name = Maildir
+.ft P
+.fi
+.SS MISC
+.sp
+Im \fBmisc\fP\-Abschnitt werden verschiedene Einstellungen festgelegt.
+.INDENT 0.0
 .TP
-\fBgid_mail\fP (\fIInt\fP)
-Die numerische Gruppen-ID der Gruppe mail, bzw. der Gruppe aus
-mail_privileged_group der Datei dovecot.conf.
+.B \fCbase_directory\fP
+\fIString\fP
+.sp
+Alle Domain\-Verzeichnisse werden innerhalb dieses Basis\-Verzeichnisses
+angelegt.
 .TP
-\fBforcedel\fP (\fIBoolean\fP)
-Legt fest, ob beim Löschen einer Domain alle vorhanden Konten und/oder Aliase,
-ohne Nachfrage, gelöscht werden sollen.
+.B \fCpassword_scheme\fP
+\fIString\fP
+.sp
+Das zu verwendende Passwort\-Schema (siehe auch: \fBdovecotpw \-l\fP).
+.TP
+.B \fCgid_mail\fP
+\fIInt\fP
+.sp
+Die numerische Gruppen\-ID der Gruppe mail, bzw. der Gruppe aus
+\fImail_privileged_group\fP der Datei \fIdovecot.conf\fP.
 .TP
-\fBtransport\fP (\fIString\fP)
-Der Standard-Transport aller Domains und Konten.
+.B \fCtransport\fP
+\fIString\fP
+.sp
+Der Standard\-Transport aller Domains und Konten. Siehe auch:
+\fBtransport\fP(5)
 .TP
-\fBdovecotvers\fP (\fIInt\fP)
-Die verketteten Major- und Minor-Teile der eingesetzten Dovecot-Version
-(siehe: dovecot --version).
-.br
-Diese Option beeinflusst diverse Datenbankzugriffe. Da es zwischen Dovecot
-v1.1.x und v1.2.x einige Änderungen gab. Zum Beispiel \fB11\fP, falls
-\fBdovecot --version\fP den Wert \fB1.1\fP.18 ausgibt.
-.TP
-\fBBeispiel\fP:
+.B \fCdovecot_version\fP
+\fIInt\fP
+.sp
+Die verketteten Major\- und Minor\-Teile der eingesetzten Dovecot\-Version
+(siehe: \fBdovecot \-\-version\fP).
+.sp
+Wenn das Kommando \fBdovecot \-\-version\fP zum Beispiel \fI1.1.18\fP ausgibt,
+ist dieser Option der Wert \fB11\fP zuzuweisen.
+.UNINDENT
+.sp
+Beispiel:
+.sp
+.nf
+.ft C
 [misc]
-.br
-passwdscheme = CRAM-MD5
-.br
+base_directory = /srv/mail
+password_scheme = CRAM\-MD5
 gid_mail = 8
-.br
-forcedel = false
-.br
 transport = dovecot:
-.br
-dovecotvers = 11
-.\" -----
-.SH CONFIG ABSCHNITT
-Beim \fBconfig\fP-Abschnitt handelt es sich um einen internen
-Steuerungs-Abschnitt.
+dovecot_version = 11
+.ft P
+.fi
+.SH DATEIEN
+.INDENT 0.0
+.TP
+.B \fI/root/vmm.cfg\fP
+.nf
+Wird verwendet, falls vorhanden.
+.fi
+.sp
 .TP
-\fBdone\fP (\fIBoolean\fP)
-Diese Option hat den den Wert \fIfalse\fP, wenn vmm zum ersten Mal installiert
-wurde. Wenn die Datei \fIvmm.cfg\fP von Hand editiert wird, weisen Sie dieser
-Option abschließend den Wert \fItrue\fP zu.
-.br
-Wird die Konfiguration über das Kommando \fBvmm configure\fP angepasst, wird der
-Wert dieser Option automatisch auf \fItrue\fP gesetzt.
-.br
-Sollte diese Option den Wert \fIfalse\fP zugewiesen haben, so startet \fBvmm\fP
-beim nächsten Aufruf im interaktiven Konfigurations-Modus.
+.B \fI/usr/local/etc/vmm.cfg\fP
+.nf
+Wird verwendet, sollte obige Datei nicht gefunden werden.
+.fi
+.sp
 .TP
-\fBBeispiel\fP:
-[config]
-.br
-done = true
-.\" -----
-.SH DATEIEN
-vmm.cfg
+.B \fI/etc/vmm.cfg\fP
+.nf
+Wird verwendet, falls obengenannte Dateien nicht existieren.
+.fi
+.sp
+.UNINDENT
 .SH SIEHE AUCH
-vmm(1), Programm für die Kommandozeile, um E-Mail-Domains, -Konten und -Aliase
+.sp
+vmm(1), Programm für die Kommandozeile, um E\-Mail\-Domains, \-Konten und \-Aliase
 zu verwalten.
-.SH AUTOR
-\fBvmm\fP und die dazugehörigen Manualseiten wurden von Pascal Volk
-<\fIneverseen@users.sourceforge.net\fP> geschrieben und sind unter den
-Bedingungen der BSD Lizenz lizenziert.
+.SH COPYING
+.sp
+vmm und die dazugehörigen Manualseiten wurden von Pascal Volk geschrieben
+und sind unter den Bedingungen der BSD Lizenz lizenziert.
+.SH AUTHOR
+Pascal Volk <neverseen@users.sourceforge.net>
+.\" Generated by docutils manpage writer.
+.\" 
+.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/de/man5/vmm.cfg.5.rst	Fri Jan 22 04:31:38 2010 +0000
@@ -0,0 +1,320 @@
+=========
+ vmm.cfg
+=========
+
+---------------------------
+Konfigurationsdatei für vmm
+---------------------------
+
+:Author:         Pascal Volk <neverseen@users.sourceforge.net>
+:Date:           2010-01-18
+:Version:        vmm-0.6.0
+:Manual group:   vmm Manual
+:Manual section: 5
+
+.. contents::
+    :backlinks: top
+    :class: htmlout
+
+SYNOPSIS
+========
+vmm.cfg
+
+BESCHREIBUNG
+============
+**vmm**\(1) liest seine Konfigurationsparameter aus der Datei *vmm.cfg*.
+
+Die Konfigurationsdatei ist in mehrere Abschnitte unterteilt. Jeder Abschnitt
+wird mit dem, in eckigen Klammern '**[**' und '**]**' eingefassten, Namen des
+Abschnitts eingeleitet, gefolgt von '*Option* = *Wert*' Einträgen::
+
+    [database]
+    host = 127.0.0.1
+
+Leerräume um das Gleichheitszeichen '=' und am Ende eines Wertes werden
+ignoriert.
+
+Leerzeilen und Zeilen, die mit einer '#' oder einem ';' anfangen, werden
+ignoriert.
+
+Jeder Wert ist von einem der folgenden Datentypen:
+
+* *Boolean* um zu bestimmen, ob etwas eingeschaltet/aktiviert (true) oder
+  ausgeschaltet/deaktiviert (false) ist.
+
+  | Mögliche Werte für *true* sind: **1**, **yes**, **true** und **on**.
+  | Mögliche Werte für *false* sind: **0**, **no**, **false** und **off**.
+
+* *Int* eine Integer-Zahl, geschrieben ohne eine gebrochene oder dezimale
+  Komponente.
+
+  | Beispielsweise **1**, **50** oder **321** sind Integer-Zahlen.
+
+* *String* eine Folge von Buchstaben und Zahlen.
+
+  | Zum Beispiel: '**Wort**', '**Hallo Welt**' oder '**/usr/bin/strings**'
+
+
+SUCHREIHENFOLGE
+---------------
+Standardmäßig sucht **vmm**\(1) die *vmm.cfg* in folgenden Verzeichnissen,
+in der angegebenen Reihenfolge:
+
+    | */root*
+    | */usr/local/etc*
+    | */etc*
+
+Die zuerst gefundene Datei wird verwendet.
+
+ABSCHNITTE
+==========
+Im Folgenden werden die Abschnitte der *vmm.cfg* und deren Optionen
+beschrieben.
+
+ACCOUNT
+-------
+Die Optionen des Abschnitts **account** legen Konto-spezifische
+Einstellungen fest.
+
+``delete_directory`` : *Boolean*
+    Bestimmt das Verhalten von **vmm**\(1) beim Löschen eines Kontos.
+    Wenn der Wert dieser Option *true* ist, wird das Home-Verzeichnis des
+    zu löschenden Anwenders rekursiv gelöscht.
+
+``directory_mode`` : *Int*
+    Zugriffsbits des Home-Verzeichnisses, sowie aller enthaltenen
+    Verzeichnisse, in Dezimal-Schreibweise (Basis 10).
+
+    | Beispiel: 'drwx------' -> oktal 0700 -> dezimal 448
+
+``disk_usage`` : *Boolean*
+    Legt fest, ob die Festplattenbelegung des Maildirs eines Benutzers jedes
+    Mal mit **du**\(1) ermittelt und mit den Konto-Informationen ausgegeben
+    werden soll.
+
+    Bei umfangreichen Maildirs kann das langsam sein. Falls Sie Quotas
+    aktiviert haben, wird der **vmm**-Unterbefehl **userinfo** ebenfalls
+    die aktuelle Quota-Nutzung des Kontos mit ausgegeben. Sie können auch
+    eines der optionalen Argumente **du** oder **full** an **userinfo**
+    übergeben, um sich die aktuelle Festplattenbelegung anzeigen zu lassen.
+
+``imap`` : *Boolean*
+    Bestimmt, ob sich neu angelegte Benutzer per IMAP anmelden können sollen.
+
+``password_length`` : *Int*
+    Diese Option legt die Anzahl der Zeichen für automatisch erzeugte
+    Passwörter fest. Alle Werte kleiner als 8 werden auf 8 erhöht.
+
+``pop3``
+    Bestimmt, ob sich neu angelegte Benutzer per POP3 anmelden können sollen.
+
+``random_password`` : *Boolean*
+    Mit dieser Option wird bestimmt , ob **vmm**\(1) ein zufälliges Passwort
+    generieren soll, wenn kein Passwort an den **useradd** Unterbefehl
+    übergeben wurde. Ist der Wert dieser Option *false*, wird **vmm** Sie
+    auffordern, ein Passwort für den neun Account einzugeben.
+
+    Sie können die Länge für automatisch generierte Passwörter mit der
+    Option **password_length** konfigurieren.
+
+``sieve`` : *Boolean*
+    Bestimmt, ob sich neu angelegte Benutzer per ManageSieve anmelden
+    können sollen.
+
+``smtp`` : *Boolean*
+    Bestimmt, ob sich neu angelegte Benutzer per SMTP (SMTP AUTH) anmelden
+    können sollen.
+
+Beispiel::
+
+    [account]
+    delete_directory = false
+    directory_mode = 448
+    disk_usage = false
+    random_password = true
+    password_length = 10
+    smtp = true
+    pop3 = true
+    imap = true
+    sieve = true
+
+BIN
+---
+Im **bin**-Abschnitt werden Pfade zu Binaries angegeben, die von
+**vmm**\(1) benötigt werden.
+
+``dovecotpw`` : *String*
+    Der absolute Pfad zum dovecotpw Binary. Dieses Binary wird zur
+    Hash-Erzeugung verwendet, wenn **misc.password_scheme** einen der
+    nachfolgenden Werte hat: 'SMD5', 'SSHA', 'CRAM-MD5', 'HMAC-MD5',
+    'LANMAN', 'NTLM' oder 'RPA'.
+
+``du`` : *String*
+    Der absolute Pfad zu **du**\(1). Dieses Binary wird verwendet, wenn
+    die Festplattenbelegung eines Kontos ermittelt wird.
+
+``postconf`` : *String*
+    Der absolute Pfad zu Postfix' **postconf**\(1). Dieses Binary wird
+    verwendet, wenn **vmm**\(1) diverse Postfix-Einstellungen prüft, zum
+    Beispiel das `virtual_alias_expansion_limit`.
+
+Beispiel::
+
+    [bin]
+    dovecotpw = /usr/sbin/dovecotpw
+    du = /usr/bin/du
+    postconf = /usr/sbin/postconf
+
+CONFIG
+------
+Beim **config**-Abschnitt handelt es sich um einen internen
+Steuerungs-Abschnitt.
+
+``done`` : *Boolean*
+    Diese Option hat den Wert *false*, wenn **vmm**\(1) zum ersten Mal
+    installiert wurde. Wenn Sie die Datei *vmm.cfg* von Hand editieren,
+    weisen Sie dieser Option abschließend den Wert *true* zu. Wird die
+    Konfiguration über das Kommando **vmm configure** angepasst, wird der
+    Wert dieser Option automatisch auf *true* gesetzt.
+
+    Ist der Wert dieser Option  *false*, so startet **vmm**\(1) beim
+    nächsten Aufruf im interaktiven Konfigurations-Modus.
+
+Beispiel::
+
+    [config]
+    done = true
+
+DATABASE
+--------
+Der **database**-Abschnitt wird verwendet, um die für den Datenbankzugriff
+benötigten Optionen festzulegen.
+
+``host`` : *String*
+    Der Hostname oder die IP-Adresse des Datenbank-Servers.
+
+``name`` : *String*
+    Der Name der zu verwendenden Datenbank.
+
+``pass`` : *String*
+    Das Passwort des Datenbank-Benutzers.
+
+``user`` : *String*
+    Der Name des Datenbank-Benutzers.
+
+Beispiel::
+
+    [database]
+    host = localhost
+    user = vmm
+    pass = PY_SRJ}L/0p-oOk
+    name = mailsys
+
+DOMAIN
+------
+Im **domain**-Abschnitt werden Domain-spezifische Informationen konfiguriert.
+
+``auto_postmaster`` : *Boolean*
+    Ist der Wert dieser Option *true*, wird **vmm**\(1) beim Anlegen einer
+    Domain automatisch einen postmaster-Account erstellen.
+
+``delete_directory`` : *Boolean*
+    Bestimmt, ob beim Löschen einer Domain das Verzeichnis einer Domain,
+    inklusive aller Anwender-Verzeichnisse, rekursiv gelöscht werden soll.
+
+``directory_mode`` : *Int*
+    Zugriffsbits des Domain-Verzeichnisses in Dezimal-Schreibweise (Basis
+    10).
+
+    | Beispiel: 'drwxrwx---' -> oktal 0770 -> dezimal 504
+
+``force_deletion`` : *Boolean*
+    Erzwingt das Löschen aller zugeordneten Konten und Aliase beim Löschen
+    einer Domain.
+
+Beispiel::
+
+    [domain]
+    auto_postmaster = true
+    delete_directory = false
+    directory_mode = 504
+    force_deletion = false
+
+MAILDIR
+-------
+Im **maildir**-Abschnitt werden die für die Maildirs erforderlichen Optionen
+festgelegt.
+
+``folders`` : *String*
+    Eine durch Doppelpunkten getrennte Liste mit Verzeichnisnamen, die
+    innerhalb des Maildirs erstellt werden sollen. Sollen innerhalb des
+    Maildirs keine Verzeichnisse angelegt werden, ist dieser Optionen ein
+    einzelner Doppelpunkt ('**:**') als Wert zuzuweisen.
+
+    Sollen Verzeichnisse mit Unterverzeichnissen angelegt werden, ist ein
+    einzelner Punkt ('**.**') als Separator zu verwenden.
+
+``name`` : *String*
+    Der Standard-Name des Maildir-Verzeichnisses im Verzeichnis des
+    jeweiligen Anwenders.
+
+Beispiel::
+
+    [maildir]
+    folders = Drafts:Sent:Templates:Trash:Lists.Dovecot:Lists.Postfix
+    name = Maildir
+
+MISC
+----
+Im **misc**-Abschnitt werden verschiedene Einstellungen festgelegt.
+
+``base_directory`` : *String*
+    Alle Domain-Verzeichnisse werden innerhalb dieses Basis-Verzeichnisses
+    angelegt.
+
+``password_scheme`` : *String*
+    Das zu verwendende Passwort-Schema (siehe auch: **dovecotpw -l**).
+
+``gid_mail`` : *Int*
+    Die numerische Gruppen-ID der Gruppe mail, bzw. der Gruppe aus
+    `mail_privileged_group` der Datei *dovecot.conf*.
+
+``transport`` : *String*
+    Der Standard-Transport aller Domains und Konten. Siehe auch:
+    **transport**\(5)
+
+``dovecot_version`` : *Int*
+    Die verketteten Major- und Minor-Teile der eingesetzten Dovecot-Version
+    (siehe: **dovecot --version**).
+
+    Wenn das Kommando **dovecot --version** zum Beispiel *1.1.18* ausgibt,
+    ist dieser Option der Wert **11** zuzuweisen.
+
+Beispiel::
+
+    [misc]
+    base_directory = /srv/mail
+    password_scheme = CRAM-MD5
+    gid_mail = 8
+    transport = dovecot:
+    dovecot_version = 11
+
+DATEIEN
+=======
+*/root/vmm.cfg*
+    | Wird verwendet, falls vorhanden.
+*/usr/local/etc/vmm.cfg*
+    | Wird verwendet, sollte obige Datei nicht gefunden werden.
+*/etc/vmm.cfg*
+    | Wird verwendet, falls obengenannte Dateien nicht existieren.
+
+SIEHE AUCH
+==========
+vmm(1), Programm für die Kommandozeile, um E-Mail-Domains, -Konten und -Aliase
+zu verwalten.
+
+COPYING
+=======
+vmm und die dazugehörigen Manualseiten wurden von Pascal Volk geschrieben
+und sind unter den Bedingungen der BSD Lizenz lizenziert.
+
--- a/man/man5/vmm.cfg.5	Fri Jan 22 04:22:59 2010 +0000
+++ b/man/man5/vmm.cfg.5	Fri Jan 22 04:31:38 2010 +0000
@@ -1,256 +1,444 @@
-.TH vmm.cfg 5 "17 Aug 2009" "Pascal Volk"
+.\" Man page generated from reStructeredText.
+.
+.TH VMM.CFG 5 "2010-01-18" "vmm-0.6.0" "vmm Manual"
 .SH NAME
 vmm.cfg \- configuration file for vmm
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
 .SH SYNOPSIS
+.sp
 vmm.cfg
 .SH DESCRIPTION
-\fBvmm\fR(1) reads configuration data from \fIvmm.cfg\fP.
-.br
-The configuration file is split in multiple sections. A section starts with the
-section  name, enclosed in square brackets '[' and ']' (e.g. \fB[database]\fP),
-followed by \'option=value' pairs (e.g. \fBhost = 127.0.0.1\fP).
-.br
-Whitespace around the '=' and at the end of a value is ignored.
-.PP
-Empty lines and lines starting with '#' or ';' will be ignored.
-.PP
+.sp
+\fBvmm\fP(1) reads its configuration data from \fIvmm.cfg\fP.
+.sp
+The configuration file is split into multiple sections. A section starts with
+the section name, enclosed in square brackets \(aq\fB[\fP\(aq and \(aq\fB]\fP\(aq, followed
+by \(aq\fIoption\fP = \fIvalue\fP\(aq pairs:
+.sp
+.nf
+.ft C
+[database]
+host = 127.0.0.1
+.ft P
+.fi
+.sp
+Whitespace around the \(aq=\(aq and at the end of a value is ignored.
+.sp
+Empty lines and lines starting with \(aq#\(aq or \(aq;\(aq will be ignored.
+.sp
 Each value uses one of the following data types:
-.IP \(bu
-.I Boolean
-to indicate if something is enabled/activated (true) or disabled/deactivated
-(false).
-.br
-Accepted values for \fBtrue\fP are: \fB1\fP, \fByes\fP, \fBtrue\fP and \fBon\fP.
-.br
-Accepted values for \fBfalse\fP are: \fB0\fP, \fBno\fP, \fBfalse\fP and
-\fBoff\fP.
-.IP \(bu
-.I Int
-an integer number, written without a fractional or decimal component. For
-example \fB1\fP, \fB50\fP or \fB321\fP are integers.
-.IP \(bu
-.I String
-a sequence of characters and numbers. For example '\fBword\fP', '\fBhello
-world\fP' or '\fB/usr/bin/strings\fP'
+.INDENT 0.0
+.IP \(bu 2
+.
+\fIBoolean\fP to indicate if something is enabled/activated (true) or
+disabled/deactivated (false).
+.nf
+Accepted values for \fItrue\fP are: \fB1\fP, \fByes\fP, \fBtrue\fP and \fBon\fP.
+Accepted values for \fIfalse\fP are: \fB0\fP, \fBno\fP, \fBfalse\fP and \fBoff\fP.
+.fi
+.sp
+.IP \(bu 2
+.
+\fIInt\fP an integer number, written without a fractional or decimal component.
+.nf
+For example \fB1\fP, \fB50\fP or \fB321\fP are integers.
+.fi
+.sp
+.IP \(bu 2
+.
+\fIString\fP a sequence of characters and numbers.
+.nf
+For example \(aq\fBword\fP\(aq, \(aq\fBhello world\fP\(aq or \(aq\fB/usr/bin/strings\fP\(aq
+.fi
+.sp
+.UNINDENT
 .SS SEARCH ORDER
-By default vmm looks for \fIvmm.cfg\fP in the following directories in the
+.sp
+By default \fBvmm\fP(1) looks for \fIvmm.cfg\fP in the following directories in the
 order listed:
-.RS
-.PD 0
+.INDENT 0.0
+.INDENT 3.5
+.nf
+\fI/root\fP
+\fI/usr/local/etc\fP
+\fI/etc\fP
+.fi
+.sp
+.UNINDENT
+.UNINDENT
+.sp
+The first configuration file found will be used.
+.SH SECTIONS
+.sp
+This section describes all sections and their options of the \fIvmm.cfg\fP.
+.SS ACCOUNT
+.sp
+The options in the section \fBaccount\fP are used to specify user account
+related settings.
+.INDENT 0.0
+.TP
+.B \fCdelete_directory\fP
+\fIBoolean\fP
+.sp
+Determines the behavior of \fBvmm\fP(1) when an account is deleted. If
+this option is set to \fItrue\fP the user\(aqs home directory will be deleted
+recursively.
+.TP
+.B \fCdirectory_mode\fP
+\fIInt\fP
+.sp
+Access mode for a user\(aqs home directory and all directories inside.
+The value has to be specified in decimal (base 10) notation.
+.nf
+For example: \(aqdrwx\-\-\-\-\-\-\(aq \-> octal 0700 \-> decimal 448
+.fi
+.sp
 .TP
-.I
-/root
+.B \fCdisk_usage\fP
+\fIBoolean\fP
+.sp
+Determines whether the disk usage of a user\(aqs Maildir always should be
+summarized, using \fBdu\fP(1), and displayed with account information.
+.sp
+This could be slow on large Maildirs. When you have enabled quotas,
+\fBvmm\fP\(aqs \fBuserinfo\fP subcomammand will also display the current quota
+usage of the account. You may also use \fBuserinfo\fP\(aqs optional argument
+\fBdu\fP or \fBfull\fP, in order to display the current disk usage of an
+account.
+.TP
+.B \fCimap\fP
+\fIBoolean\fP
+.sp
+Determines whether a newly created user can log in via IMAP.
+.TP
+.B \fCpassword_length\fP
+\fIInt\fP
+.sp
+Determines how many characters and/or numbers should be used for random
+generated passwords. Any value less than 8 will be increased to 8.
+.TP
+.B \fCpop3\fP
+\fIBoolean\fP
+.sp
+Determines whether a newly created user can log in via POP3.
+.TP
+.B \fCrandom_password\fP
+\fIBoolean\fP
+.sp
+Determines whether \fBvmm\fP should generate a random password when no
+password was given for the \fBuseradd\fP subcommand. If this option is
+set to \fIfalse\fP \fBvmm\fP will prompt you to enter a password for the new
+account.
+.sp
+You can specify the password length of generated passwords with the
+\fBpassword_length\fP option.
+.TP
+.B \fCsieve\fP
+\fIBoolean\fP
+.sp
+Determines whether a newly created user can log in via ManageSieve.
 .TP
-.I
-/usr/local/etc
+.B \fCsmtp\fP
+\fIBoolean\fP
+.sp
+Determines whether a newly created user can log in via SMTP (SMTP AUTH).
+.UNINDENT
+.sp
+Example:
+.sp
+.nf
+.ft C
+[account]
+delete_directory = false
+directory_mode = 448
+disk_usage = false
+random_password = true
+password_length = 10
+smtp = true
+pop3 = true
+imap = true
+sieve = true
+.ft P
+.fi
+.SS BIN
+.sp
+The \fBbin\fP section is used to specify some paths to some binaries required
+by \fBvmm\fP(1).
+.INDENT 0.0
+.TP
+.B \fCdovecotpw\fP
+\fIString\fP
+.sp
+The absolute path to the dovecotpw binary. This binary is used to
+generate a password hash, if \fBmisc.password_scheme\fP is set to one of
+\(aqSMD5\(aq, \(aqSSHA\(aq, \(aqCRAM\-MD5\(aq, \(aqHMAC\-MD5\(aq, \(aqLANMAN\(aq, \(aqNTLM\(aq or \(aqRPA\(aq.
+.TP
+.B \fCdu\fP
+\fIString\fP
+.sp
+The absolute path to \fBdu\fP(1). This binary is used to summarize the
+disk usage of a user\(aqs Maildir.
 .TP
-.I
-/etc
-.PD
-.RE
-.PP
-The first match it finds will be used.
-.\" -----
-.SH DATABASE SECTION
+.B \fCpostconf\fP
+\fIString\fP
+.sp
+The absolute path to Postfix\(aq \fBpostconf\fP(1). This binary is required
+when \fBvmm\fP(1) has to check for some Postfix settings, e.g.
+\fIvirtual_alias_expansion_limit\fP.
+.UNINDENT
+.sp
+Example:
+.sp
+.nf
+.ft C
+[bin]
+dovecotpw = /usr/sbin/dovecotpw
+du = /usr/bin/du
+postconf = /usr/sbin/postconf
+.ft P
+.fi
+.SS CONFIG
+.sp
+The \fBconfig\fP section is an internal used control section.
+.INDENT 0.0
+.TP
+.B \fCdone\fP
+\fIBoolean\fP
+.sp
+This option is set to \fIfalse\fP when \fBvmm\fP(1) is installed for the first
+time. When you edit \fIvmm.cfg\fP, set this option to \fItrue\fP. This option is
+also set to \fItrue\fP when you configure \fBvmm\fP(1) with the command \fBvmm
+configure\fP.
+.sp
+If this option is set to \fIfalse\fP, \fBvmm\fP(1) will start in the
+interactive configurations mode.
+.UNINDENT
+.sp
+Example:
+.sp
+.nf
+.ft C
+[config]
+done = true
+.ft P
+.fi
+.SS DATABASE
+.sp
 The \fBdatabase\fP section is used to specify some options required to
 connect to the database.
+.INDENT 0.0
 .TP
-\fBhost\fP (\fIString\fP)
+.B \fChost\fP
+\fIString\fP
+.sp
 Hostname or IP address of the database server.
 .TP
-\fBuser\fP (\fIString\fP)
-Name of the database user.
-.TP
-\fBpass\fP (\fIString\fP)
-Database password
-.TP
-\fBname\fP (\fIString\fP)
+.B \fCname\fP
+\fIString\fP
+.sp
 Name of the database.
 .TP
-\fBExample\fP:
+.B \fCpass\fP
+\fIString\fP
+.sp
+Database password.
+.TP
+.B \fCuser\fP
+\fIString\fP
+.sp
+Name of the database user.
+.UNINDENT
+.sp
+Example:
+.sp
+.nf
+.ft C
 [database]
-.br
 host = localhost
-.br
 user = vmm
-.br
-pass = T~_:L4OYyl]TU?)
-.br
+pass = PY_SRJ}L/0p\-oOk
 name = mailsys
-.\" -----
-.SH MAILDIR SECTION
-The \fBmaildir\fP section is used to specify some options for the Maildirs.
+.ft P
+.fi
+.SS DOMAIN
+.sp
+The \fBdomain\fP section specifies some domain related settings.
+.INDENT 0.0
 .TP
-\fBname\fP (\fIString\fP)
-Default name of the maildir folder in users home directory.
+.B \fCauto_postmaster\fP
+\fIBoolean\fP
+.sp
+Determines if \fBvmm\fP(1) should create also a postmaster account when a
+new domain is created.
+.TP
+.B \fCdelete_directory\fP
+\fIBoolean\fP
+.sp
+Specifies whether the domain directory and all user directories inside
+should be deleted when a domain is deleted.
 .TP
-\fBfolders\fP (\fIString\fP)
-A colon separated list of folder names, that should be created.
-.br
-If no folders should be created inside the Maildir, set the value of this option
-to a single colon (':').
-.TP
-\fBmode\fP (\fIInt\fP)
-Access mode for the maildir in decimal (base 10) notation. For example:
-\'drwx------' -> octal 0700 -> decimal 448
+.B \fCdirectory_mode\fP
+\fIInt\fP
+.sp
+Access mode for the domain directory in decimal (base 10) notation.
+.nf
+For example: \(aqdrwxrwx\-\-\-\(aq \-> octal 0770 \-> decimal 504
+.fi
+.sp
 .TP
-\fBdiskusage\fP (\fIBoolean\fP)
-Decides if the disk usage of users maildir always should be summarized and
-displayed with account information.
+.B \fCforce_deletion\fP
+\fIBoolean\fP
+.sp
+Force deletion of accounts and aliases when a domain is deleted.
+.UNINDENT
+.sp
+Example:
+.sp
+.nf
+.ft C
+[domain]
+auto_postmaster = true
+delete_directory = false
+directory_mode = 504
+force_deletion = false
+.ft P
+.fi
+.SS MAILDIR
+.sp
+The \fBmaildir\fP section is used to specify some default options for new
+created Maildirs and folders inside.
+.INDENT 0.0
 .TP
-\fBdelete\fP (\fIBoolean\fP)
-Decides if the maildir should be deleted recursive when the account is deleted.
+.B \fCfolders\fP
+\fIString\fP
+.sp
+A colon separated list of folder names, that should be created. If no
+folders should be created inside the Maildir, set the value of this
+option to a single colon (\(aq\fB:\fP\(aq).
+.sp
+If you want to create folders containing one or more subfolders, separate
+them with a single dot (\(aq\fB.\fP\(aq).
 .TP
-\fBExample\fP:
+.B \fCname\fP
+\fIString\fP
+.sp
+Default name of the Maildir folder in users home directories.
+.UNINDENT
+.sp
+Example:
+.sp
+.nf
+.ft C
 [maildir]
-.br
+folders = Drafts:Sent:Templates:Trash:Lists.Dovecot:Lists.Postfix
 name = Maildir
-.br
-folders = Drafts:Sent:Templates:Trash:INBOX.News
-.br
-mode = 448
-.br
-diskusage = false
-.br
-delete = false
-.\" -----
-.SH SERVICES SECTION
-The \fBservices\fP section is used to specify the default restrictions for
-all accounts.
-.TP
-\fBsmtp\fP (\fIBoolean\fP)
-Decides if users can login via smtp by default. 
-.TP
-\fBpop3\fP (\fIBoolean\fP)
-Decides if users can login via pop3 by default. 
+.ft P
+.fi
+.SS MISC
+.sp
+The \fBmisc\fP section is used to define miscellaneous settings.
+.INDENT 0.0
 .TP
-\fBimap\fP (\fIBoolean\fP)
-Decides if users can login via imap by default. 
-.TP
-\fBsieve\fP (\fIBoolean\fP)
-Decides if users can login via managesieve by default. 
-.TP
-\fBExample\fP:
-[services]
-.br
-smtp = true
-.br
-pop3 = true
-.br
-imap = false
-.br
-sieve = false
-.\" -----
-.SH DOMDIR SECTION
-The \fBdomdir\fP section is used to specify options for the directories of the
-domains.
-.TP
-\fBbase\fP (\fIString\fP)
+.B \fCbase_directory\fP
+\fIString\fP
+.sp
 All domain directories will be created inside this directory.
 .TP
-\fBmode\fP (\fIInt\fP)
-Access mode for the domain directory in decimal (base 10) notation. For
-example: 'drwxrwx---' -> octal 0770 -> decimal 504
-.TP
-\fBdelete\fP (\fIBoolean\fP)
-Decides if the domain directory and all user directories inside should be
-deleted when a domain is deleted.
-.TP
-\fBExample\fP:
-[domdir]
-.br
-base = /srv/mail
-.br
-mode = 504
-.br
-delete = false
-.\" -----
-.SH BIN SECTION
-The \fBbin\fP section is used to specify some paths to some binaries required
-by \fBvmm\fP.
+.B \fCpassword_scheme\fP
+\fIString\fP
+.sp
+Password scheme to use (see also: \fBdovecotpw \-l\fP).
 .TP
-\fBdovecotpw\fP (\fIString\fP)
-The absolute path to the dovecotpw binary. This binary is used to generate a
-password hash, if the \fIpasswdscheme\fP is one of 'SMD5', 'SSHA', 'CRAM-MD5',
-\'HMAC-MD5', 'LANMAN', 'NTLM' or 'RPA'.
-.TP
-\fBdu\fP (\fIString\fP)
-The absolute path to \fBdu\fR(1). This binary is used to summarize the disk
-usage of a maildir.
-.TP
-\fBpostconf\fP (\fIString\fP)
-The absolute path to Postfix' \fBpostconf\fR(1).
-.br
-This binary is required if \fBvmm\fR(1) has to check for some Postfix settings,
-e.g. virtual_alias_expansion_limit.
+.B \fCgid_mail\fP
+\fIInt\fP
+.sp
+Numeric group ID of group mail (\fImail_privileged_group\fP from
+\fIdovecot.conf\fP)
 .TP
-\fBExample\fP:
-[bin]
-.br
-dovecotpw = /usr/sbin/dovecotpw
-.br
-du = /usr/bin/du
-.br
-postconf = /usr/sbin/postconf
-.\" -----
-.SH MISC SECTION
-The \fBmisc\fP section is used to define miscellaneous settings.
-.TP
-\fBpasswdscheme\fP (\fIString\fP)
-Password scheme to use (see also: dovecotpw -l)
+.B \fCtransport\fP
+\fIString\fP
+.sp
+Default transport for domains and accounts. For details see
+\fBtransport\fP(5).
 .TP
-\fBgid_mail\fP (\fIInt\fP)
-Numeric group ID of group mail (mail_privileged_group from dovecot.conf)
-.TP
-\fBforcedel\fP (\fIBoolean\fP)
-Force deletion of accounts and aliases when a domain is deleted.
-.TP
-\fBtransport\fP (\fIString\fP)
-Default transport for domains and accounts.
-.TP
-\fBdovecotvers\fP (\fIInt\fP)
-The concatenated major and minor version number of the currently used Dovecot
-version. (see: dovecot --version).
-.br
-This option affects various database operations. There are some differences
-between Dovecot v1.1.x and v1.2.x. For example, when the command \fBdovecot
---version\fP shows \fB1.1\fP.18, set the value of this option to \fB11\fP.
-.TP
-\fBExample\fP:
+.B \fCdovecot_version\fP
+\fIInt\fP
+.sp
+The concatenated major and minor version number of the currently used
+Dovecot version. (see: \fBdovecot \-\-version\fP).
+.sp
+When, for example, the command \fBdovecot \-\-version\fP prints \fI1.1.18\fP, set
+the value of this option to \fB11\fP.
+.UNINDENT
+.sp
+Example:
+.sp
+.nf
+.ft C
 [misc]
-.br
-passwdscheme = CRAM-MD5
-.br
+base_directory = /srv/mail
+password_scheme = CRAM\-MD5
 gid_mail = 8
-.br
-forcedel = false
-.br
 transport = dovecot:
-.br
-dovecotvers = 11
-.\" -----
-.SH CONFIG SECTION
-The \fBconfig\fP section is a internal used control section.
+dovecot_version = 11
+.ft P
+.fi
+.SH FILES
+.INDENT 0.0
+.TP
+.B \fI/root/vmm.cfg\fP
+.nf
+will be used when found.
+.fi
+.sp
+.TP
+.B \fI/usr/local/etc/vmm.cfg\fP
+.nf
+will be used when the above file doesn\(aqt exist.
+.fi
+.sp
 .TP
-\fBdone\fP (\fIBoolean\fP)
-This option is set to \fIfalse\fP when \fBvmm\fP is installed for the first
-time. When you edit \fIvmm.cfg\fP, set this option to \fItrue\fP. This option is
-also set to \fItrue\fP when you configure vmm with the command \fBvmm
-configure\fP.
-.br
-If this option is set to \fIfalse\fP, \fBvmm\fP will start in the interactive
-configurations mode.
-.TP
-\fBExample\fP:
-[config]
-.br
-done = true
-.\" -----
-.SH FILES
-vmm.cfg
+.B \fI/etc/vmm.cfg\fP
+.nf
+will be used when none of the both above mentioned files exists.
+.fi
+.sp
+.UNINDENT
 .SH SEE ALSO
+.sp
 vmm(1), command line tool to manage email domains/accounts/aliases
+.SH COPYING
+.sp
+vmm and its manual pages were written by Pascal Volk and are licensed under
+the terms of the BSD License.
 .SH AUTHOR
-\fBvmm\fP and its man pages were written by Pascal Volk
-<\fIneverseen@users.sourceforge.net\fP> and are licensed under the terms of the
-BSD License.
+Pascal Volk <neverseen@users.sourceforge.net>
+.\" Generated by docutils manpage writer.
+.\" 
+.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/man5/vmm.cfg.5.rst	Fri Jan 22 04:31:38 2010 +0000
@@ -0,0 +1,303 @@
+=========
+ vmm.cfg
+=========
+
+--------------------------
+configuration file for vmm
+--------------------------
+
+:Author:         Pascal Volk <neverseen@users.sourceforge.net>
+:Date:           2010-01-18
+:Version:        vmm-0.6.0
+:Manual group:   vmm Manual
+:Manual section: 5
+
+.. contents::
+    :backlinks: top
+    :class: htmlout
+
+SYNOPSIS
+========
+vmm.cfg
+
+DESCRIPTION
+===========
+**vmm**\(1) reads its configuration data from *vmm.cfg*.
+
+The configuration file is split into multiple sections. A section starts with
+the section name, enclosed in square brackets '**[**' and '**]**', followed
+by '*option* = *value*' pairs::
+
+    [database]
+    host = 127.0.0.1
+
+Whitespace around the '=' and at the end of a value is ignored.
+
+Empty lines and lines starting with '#' or ';' will be ignored.
+
+Each value uses one of the following data types:
+
+* *Boolean* to indicate if something is enabled/activated (true) or
+  disabled/deactivated (false).
+
+  | Accepted values for *true* are: **1**, **yes**, **true** and **on**.
+  | Accepted values for *false* are: **0**, **no**, **false** and **off**.
+
+* *Int* an integer number, written without a fractional or decimal component.
+
+  | For example **1**, **50** or **321** are integers.
+
+* *String* a sequence of characters and numbers.
+
+  | For example '**word**', '**hello world**' or '**/usr/bin/strings**'
+
+SEARCH ORDER
+-------------
+By default **vmm**\(1) looks for *vmm.cfg* in the following directories in the
+order listed:
+
+     | */root*
+     | */usr/local/etc*
+     | */etc*
+
+The first configuration file found will be used.
+
+SECTIONS
+========
+This section describes all sections and their options of the *vmm.cfg*.
+
+ACCOUNT
+-------
+The options in the section **account** are used to specify user account
+related settings.
+
+``delete_directory`` : *Boolean*
+    Determines the behavior of **vmm**\(1) when an account is deleted. If
+    this option is set to *true* the user's home directory will be deleted
+    recursively.
+
+``directory_mode`` : *Int*
+    Access mode for a user's home directory and all directories inside.
+    The value has to be specified in decimal (base 10) notation.
+
+    | For example: 'drwx------' -> octal 0700 -> decimal 448
+
+``disk_usage`` : *Boolean*
+    Determines whether the disk usage of a user's Maildir always should be
+    summarized, using **du**\(1), and displayed with account information.
+
+    This could be slow on large Maildirs. When you have enabled quotas,
+    **vmm**'s **userinfo** subcomammand will also display the current quota
+    usage of the account. You may also use **userinfo**'s optional argument
+    **du** or **full**, in order to display the current disk usage of an
+    account.
+
+``imap`` : *Boolean*
+    Determines whether a newly created user can log in via IMAP.
+
+``password_length`` : *Int*
+    Determines how many characters and/or numbers should be used for random
+    generated passwords. Any value less than 8 will be increased to 8.
+
+``pop3`` : *Boolean*
+    Determines whether a newly created user can log in via POP3.
+
+``random_password`` : *Boolean*
+    Determines whether **vmm** should generate a random password when no
+    password was given for the **useradd** subcommand. If this option is
+    set to *false* **vmm** will prompt you to enter a password for the new
+    account.
+
+    You can specify the password length of generated passwords with the
+    **password_length** option.
+
+``sieve`` : *Boolean*
+    Determines whether a newly created user can log in via ManageSieve.
+
+``smtp`` : *Boolean*
+     Determines whether a newly created user can log in via SMTP (SMTP AUTH).
+
+Example::
+
+    [account]
+    delete_directory = false
+    directory_mode = 448
+    disk_usage = false
+    random_password = true
+    password_length = 10
+    smtp = true
+    pop3 = true
+    imap = true
+    sieve = true
+
+BIN
+---
+The **bin** section is used to specify some paths to some binaries required
+by **vmm**\(1).
+
+``dovecotpw`` : *String*
+    The absolute path to the dovecotpw binary. This binary is used to
+    generate a password hash, if **misc.password_scheme** is set to one of
+    'SMD5', 'SSHA', 'CRAM-MD5', 'HMAC-MD5', 'LANMAN', 'NTLM' or 'RPA'.
+
+``du`` : *String*
+    The absolute path to **du**\(1). This binary is used to summarize the
+    disk usage of a user's Maildir.
+
+``postconf`` : *String*
+    The absolute path to Postfix' **postconf**\(1). This binary is required
+    when **vmm**\(1) has to check for some Postfix settings, e.g.
+    `virtual_alias_expansion_limit`.
+
+Example::
+
+    [bin]
+    dovecotpw = /usr/sbin/dovecotpw
+    du = /usr/bin/du
+    postconf = /usr/sbin/postconf
+
+CONFIG
+------
+The **config** section is an internal used control section.
+
+``done`` : *Boolean*
+    This option is set to *false* when **vmm**\(1) is installed for the first
+    time. When you edit *vmm.cfg*, set this option to *true*. This option is
+    also set to *true* when you configure **vmm**\(1) with the command **vmm
+    configure**.
+
+    If this option is set to *false*, **vmm**\(1) will start in the
+    interactive configurations mode.
+
+Example::
+
+    [config]
+    done = true
+
+DATABASE
+--------
+The **database** section is used to specify some options required to
+connect to the database.
+
+``host`` : *String*
+    Hostname or IP address of the database server.
+
+``name`` : *String*
+    Name of the database.
+
+``pass`` : *String*
+    Database password.
+
+``user`` : *String*
+    Name of the database user.
+
+Example::
+
+    [database]
+    host = localhost
+    user = vmm
+    pass = PY_SRJ}L/0p-oOk
+    name = mailsys
+
+DOMAIN
+------
+The **domain** section specifies some domain related settings.
+
+``auto_postmaster`` : *Boolean*
+    Determines if **vmm**\(1) should create also a postmaster account when a
+    new domain is created.
+
+``delete_directory`` : *Boolean*
+    Specifies whether the domain directory and all user directories inside
+    should be deleted when a domain is deleted.
+
+``directory_mode`` : *Int*
+    Access mode for the domain directory in decimal (base 10) notation.
+
+    | For example: 'drwxrwx---' -> octal 0770 -> decimal 504
+
+``force_deletion`` : *Boolean*
+    Force deletion of accounts and aliases when a domain is deleted.
+
+Example::
+
+    [domain]
+    auto_postmaster = true
+    delete_directory = false
+    directory_mode = 504
+    force_deletion = false
+
+MAILDIR
+-------
+The **maildir** section is used to specify some default options for new
+created Maildirs and folders inside.
+
+``folders`` : *String*
+    A colon separated list of folder names, that should be created. If no
+    folders should be created inside the Maildir, set the value of this
+    option to a single colon ('**:**').
+
+    If you want to create folders containing one or more subfolders, separate
+    them with a single dot ('**.**').
+
+``name`` : *String*
+    Default name of the Maildir folder in users home directories.
+
+Example::
+
+    [maildir]
+    folders = Drafts:Sent:Templates:Trash:Lists.Dovecot:Lists.Postfix
+    name = Maildir
+
+MISC
+----
+The **misc** section is used to define miscellaneous settings.
+
+``base_directory`` : *String*
+    All domain directories will be created inside this directory.
+
+``password_scheme`` : *String*
+    Password scheme to use (see also: **dovecotpw -l**).
+
+``gid_mail`` : *Int*
+    Numeric group ID of group mail (`mail_privileged_group` from
+    *dovecot.conf*)
+
+``transport`` : *String*
+    Default transport for domains and accounts. For details see
+    **transport**\(5).
+
+``dovecot_version`` : *Int*
+    The concatenated major and minor version number of the currently used
+    Dovecot version. (see: **dovecot --version**).
+
+    When, for example, the command **dovecot --version** prints *1.1.18*, set
+    the value of this option to **11**.
+
+Example::
+
+    [misc]
+    base_directory = /srv/mail
+    password_scheme = CRAM-MD5
+    gid_mail = 8
+    transport = dovecot:
+    dovecot_version = 11
+
+FILES
+=====
+*/root/vmm.cfg*
+    | will be used when found.
+*/usr/local/etc/vmm.cfg*
+    | will be used when the above file doesn't exist.
+*/etc/vmm.cfg*
+    | will be used when none of the both above mentioned files exists.
+
+SEE ALSO
+========
+vmm(1), command line tool to manage email domains/accounts/aliases
+
+COPYING
+=======
+vmm and its manual pages were written by Pascal Volk and are licensed under
+the terms of the BSD License.
+
--- a/setup.py	Fri Jan 22 04:22:59 2010 +0000
+++ b/setup.py	Fri Jan 22 04:31:38 2010 +0000
@@ -5,51 +5,57 @@
 
 import os
 from distutils.core import setup
+from distutils.dist import DistributionMetadata
 
 VERSION = '0.5.2'
 
+descr = 'Tool to manage mail domains/accounts/aliases for Dovecot and Postfix'
 long_description = """
 vmm, a virtual mail manager, is a command line tool for
 administrators/postmasters to manage (alias-)domains, accounts,
 aliases and relocated users.
 It is designed for Dovecot and Postfix with a PostgreSQL backend.
 """
+packages = ['VirtualMailManager', 'VirtualMailManager.ext',
+            'VirtualMailManager.constants']
+classifiers = ['Development Status :: 5 - Production/Stable',
+               'Environment :: Console',
+               'Intended Audience :: System Administrators',
+               'License :: OSI Approved :: BSD License',
+               'Natural Language :: Dutch',
+               'Natural Language :: English',
+               'Natural Language :: French',
+               'Natural Language :: German',
+               'Operating System :: POSIX',
+               'Operating System :: POSIX :: BSD',
+               'Operating System :: POSIX :: Linux',
+               'Operating System :: POSIX :: Other',
+               'Programming Language :: Python',
+               'Topic :: Communications :: Email',
+               'Topic :: System :: Systems Administration',
+               'Topic :: Utilities']
+
+# sucessfuly tested on:
+platforms = ['freebsd7', 'linux2', 'openbsd4']
 
 # remove existing MANIFEST
 if os.path.exists('MANIFEST'):
     os.remove('MANIFEST')
 
+setup_args = {'name': 'VirtualMailManager',
+              'version': VERSION,
+              'description': descr,
+              'long_description': long_description,
+              'packages': packages,
+              'author': 'Pascal Volk',
+              'author_email': 'neverseen@users.sourceforge.net',
+              'license': 'BSD License',
+              'url': 'http://vmm.localdomain.org/',
+              'download_url':'http://sf.net/projects/vmm/files/',
+              'platforms': platforms,
+              'classifiers': classifiers}
 
-setup(name='VirtualMailManager',
-      version=VERSION,
-      description='Tool to manage mail domains/accounts/aliases for Dovecot and Postfix',
-      long_description=long_description,
-      packages=['VirtualMailManager', 'VirtualMailManager.ext',
-          'VirtualMailManager.constants'],
-      author='Pascal Volk',
-      author_email='neverseen@users.sourceforge.net',
-      license='BSD License',
-      url='http://vmm.localdomain.org/',
-      download_url='http://sf.net/projects/vmm/files/',
-      platforms=['freebsd7', 'linux2', 'openbsd4'],
-      classifiers=[
-          'Development Status :: 4 - Beta',
-          'Development Status :: 5 - Production/Stable',
-          'Environment :: Console',
-          'Intended Audience :: System Administrators',
-          'License :: OSI Approved :: BSD License',
-          'Natural Language :: Dutch',
-          'Natural Language :: English',
-          'Natural Language :: French',
-          'Natural Language :: German',
-          'Operating System :: POSIX',
-          'Operating System :: POSIX :: BSD',
-          'Operating System :: POSIX :: Linux',
-          'Operating System :: POSIX :: Other',
-          'Programming Language :: Python',
-          'Topic :: Communications :: Email',
-          'Topic :: System :: Systems Administration',
-          'Topic :: Utilities'
-      ],
-      requires=['pyPgSQL']
-      )
+if 'requires' in DistributionMetadata._METHOD_BASENAMES:
+    setup_args['requires'] = ['pyPgSQL']
+
+setup(**setup_args)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/update_config.py	Fri Jan 22 04:31:38 2010 +0000
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+# Copyright (c) 2008 - 2010, Pascal Volk
+# See COPYING for distribution information.
+
+import os
+os.sys.path.remove(os.sys.path[0])
+from time import time
+from ConfigParser import ConfigParser
+from shutil import copy2
+from VirtualMailManager.constants.VERSION import VERSION
+
+
+def get_config_file():
+    f = None
+    for d in ('/root', '/usr/local/etc', '/etc'):
+        tmp = os.path.join(d, 'vmm.cfg')
+        if os.path.isfile(tmp):
+            f = tmp
+            break
+    if f:
+        return f
+    else:
+        os.sys.stderr.write('error: vmm.cfg not found\n')
+        raise SystemExit(2)
+
+def update(cp):
+    if VERSION == '0.5.2':
+        upd_052(cp)
+    elif VERSION == '0.6.0':
+        os.sys.stdout.write('info: nothing to do for version %s\n' % VERSION)
+        return
+    else:
+        os.sys.stderr.write(
+            'error: the version %s is not supported by this script\n' % VERSION)
+        raise SystemExit(3)
+
+def get_cfg_parser(cf):
+    fh = file(cf, 'r')
+    cp = ConfigParser()
+    cp.readfp(fh)
+    fh.close()
+    return cp
+
+def update_cfg_file(cp, cf):
+    copy2(cf, cf+'.bak.'+str(time()))
+    fh = file(cf, 'w')
+    cp.write(fh)
+    fh.close()
+
+def add_sections(cp, sections):
+    for section in sections:
+        if not cp.has_section(section):
+            cp.add_section(section)
+
+def move_option(cp, src, dst):
+    ds, do = dst.split('.')
+    if not cp.has_option(ds, do):
+        ss, so = src.split('.')
+        cp.set(ds, do, cp.get(ss, so))
+        cp.remove_option(ss, so)
+        sect_opt.append((dst, 'R'))
+
+def add_option(cp, dst, val):
+    ds, do = dst.split('.')
+    if not cp.has_option(ds, do):
+        cp.set(ds, do, val)
+        sect_opt.append((dst, 'N'))
+
+def get_option(cp, src):
+    ss, so = src.split('.')
+    return cp.get(ss, so)
+
+def upd_052(cp):
+    add_sections(cp, ('domain', 'account'))
+    if cp.has_section('domdir'):
+        for src, dst in (('domdir.mode',   'domain.directory_mode'),
+                         ('domdir.delete', 'domain.delete_directory'),
+                         ('domdir.base',   'misc.base_directory')):
+            move_option(cp, src, dst)
+        cp.remove_section('domdir')
+    if cp.has_section('services'):
+        for service in cp.options('services'):
+            move_option(cp, 'services.%s'%service, 'account.%s'%service)
+        cp.remove_section('services')
+    for src, dst in (('maildir.mode',      'account.directory_mode'),
+                     ('maildir.diskusage', 'account.disk_usage'),
+                     ('maildir.delete',    'account.delete_directory'),
+                     ('misc.forcedel',     'domain.force_deletion'),
+                     ('misc.passwdscheme', 'misc.password_scheme'),
+                     ('misc.dovecotvers',  'misc.dovecot_version')):
+        move_option(cp, src, dst)
+    for dst, val in (('account.random_password', 'false'),
+                     ('account.password_length', '8'),
+                     ('domain.auto_postmaster',  'true')):
+        add_option(cp, dst, val)
+
+# def main():
+if __name__ == '__main__':
+    sect_opt = []
+    cf = get_config_file()
+    cp = get_cfg_parser(cf)
+    update(cp)
+    if len(sect_opt):
+        update_cfg_file(cp, cf)
+        sect_opt.sort()
+        print 'Please have a look at your configuration: %s' %cf
+        print 'This are your Renamed/New settings:'
+        for s_o, st in sect_opt:
+            print '%s   %s = %s' % (st, s_o, get_option(cp, s_o))
+        print
+
--- a/update_config_0.4.x-0.5.py	Fri Jan 22 04:22:59 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-# Copyright (c) 2008 - 2010, Pascal Volk
-# See COPYING for distribution information.
-
-import os
-os.sys.path.remove(os.sys.path[0])
-from time import time
-from ConfigParser import ConfigParser
-from shutil import copy2
-from VirtualMailManager.constants.VERSION import VERSION
-
-
-def get_config_file():
-    f = None
-    for d in ('/root', '/usr/local/etc', '/etc'):
-        tmp = os.path.join(d, 'vmm.cfg')
-        if os.path.isfile(tmp):
-            f = tmp
-            break
-    if f:
-        return f
-    else:
-        os.sys.stderr.write('error: vmm.cfg not found\n')
-        os.sys.exit(2)
-
-def update(cp):
-    if VERSION == '0.4':
-        upd_040(cp)
-    elif VERSION == '0.5':
-        upd_050(cp)
-    elif VERSION == '0.5.1':
-        upd_051(cp)
-    elif VERSION == '0.5.2':
-        os.sys.stdout.write('info: nothing to do for version %s\n' % VERSION)
-        os.sys.exit(0)
-    else:
-        os.sys.stderr.write(
-            'error: the version %s is not supported by this script\n' % VERSION)
-        os.sys.exit(3)
-
-def get_cfg_parser(cf):
-    fh = file(cf, 'r')
-    cp = ConfigParser()
-    cp.readfp(fh)
-    fh.close()
-    return cp
-
-def update_cfg_file(cp, cf):
-    copy2(cf, cf+'.bak.'+str(time()))
-    fh = file(cf, 'w')
-    cp.write(fh)
-    fh.close()
-
-def upd_040(cp):
-    if not cp.has_option('maildir', 'name') or not cp.has_option('maildir',
-        'folders') or cp.has_option('maildir', 'folder'):
-        if not cp.has_option('maildir', 'name'):
-            if cp.has_option('maildir', 'folder'):
-                cp.set('maildir', 'name', cp.get('maildir', 'folder'))
-                cp.remove_option('maildir', 'folder')
-                sect_opt.append(('maildir', 'name'))
-            else:
-                cp.set('maildir', 'name', 'Maildir')
-                sect_opt.append(('maildir', 'name'))
-        if not cp.has_option('maildir', 'folders'):
-            cp.set('maildir', 'folders', 'Drafts:Sent:Templates:Trash')
-            sect_opt.append(('maildir', 'folders'))
-        if cp.has_option('maildir', 'folder'):
-            cp.remove_option('maildir', 'folder')
-    upd_050(cp)
-
-def upd_050(cp):
-    if not cp.has_option('bin', 'postconf'):
-        try:
-            postconf = os.sys.argv[1].strip()
-            if len(postconf):
-                cp.set('bin', 'postconf', postconf)
-                sect_opt.append(('bin', 'postconf'))
-            else: # possible?
-                cp.set('bin', 'postconf', '/usr/sbin/postconf')
-                sect_opt.append(('bin', 'postconf'))
-        except IndexError:
-            cp.set('bin', 'postconf', '/usr/sbin/postconf')
-            sect_opt.append(('bin', 'postconf'))
-    upd_051(cp)
-
-def upd_051(cp):
-    if not cp.has_option('misc', 'dovecotvers') or cp.has_option('services',
-            'managesieve'):
-        if not cp.has_option('misc', 'dovecotvers'):
-            cp.set('misc', 'dovecotvers', os.sys.argv[2].strip())
-            sect_opt.append(('misc', 'dovecotvers'))
-        if cp.has_option('services', 'managesieve'):
-            cp.set('services','sieve',cp.getboolean('services', 'managesieve'))
-            cp.remove_option('services', 'managesieve')
-            sect_opt.append(('services', 'sieve'))
-
-# def main():
-if __name__ == '__main__':
-    sect_opt = []
-    cf = get_config_file()
-    cp = get_cfg_parser(cf)
-    update(cp)
-    if len(sect_opt): 
-        update_cfg_file(cp, cf)
-        print 'Please have a look at your configuration: %s' %cf
-        print 'and verify the value from:'
-        for s_o in sect_opt:
-            print '  [%s] %s' % s_o
-        print
-
-
--- a/upgrade.sh	Fri Jan 22 04:22:59 2010 +0000
+++ b/upgrade.sh	Fri Jan 22 04:31:38 2010 +0000
@@ -29,7 +29,7 @@
 fi
 
 # update config file before installing the new files.
-./update_config_0.4.x-0.5.py ${POSTCONF} ${DOVECOT_VERS:-10}
+./update_config.py
 rv=$?
 if [ $rv -eq 2 ]; then
 	echo "please run the install.sh script"
@@ -43,7 +43,7 @@
     exit 1
 fi
 
-python setup.py -q install --prefix ${PREFIX}
+python setup.py -q install --force --prefix ${PREFIX}
 python setup.py clean --all >/dev/null
 
 install -m 0700 ${INSTALL_OPTS} vmm ${PREFIX}/sbin
@@ -58,14 +58,6 @@
 done
 cd - >/dev/null
 
-# remove misplaced manual pages
-if [ -f /usr/local/share/man/man1/vmm.1 ]; then
-    rm -f /usr/local/share/man/man1/vmm.1
-fi
-if [ -f /usr/local/share/man/man5/vmm.cfg.5 ]; then
-    rm -f /usr/local/share/man/man5/vmm.cfg.5
-fi
-
 # install manual pages
 cd man
 [ -d ${MANDIR}/man1 ] || mkdir -m 0755 -p ${MANDIR}/man1
@@ -74,7 +66,7 @@
 [ -d ${MANDIR}/man5 ] || mkdir -m 0755 -p ${MANDIR}/man5
 install -m 0644 ${INSTALL_OPTS} man5/vmm.cfg.5 ${MANDIR}/man5
 
-for l in $(find . -maxdepth 1 -mindepth 1 -type d \! -name man\? \! -name .svn)
+for l in $(find . -maxdepth 1 -mindepth 1 -type d \! -name man\?)
 do
     for s in man1 man5; do
         [ -d ${MANDIR}/${l}/${s} ] || mkdir -m 0755 -p ${MANDIR}/${l}/${s}
--- a/vmm	Fri Jan 22 04:22:59 2010 +0000
+++ b/vmm	Fri Jan 22 04:31:38 2010 +0000
@@ -77,7 +77,7 @@
 
 def _getOrder():
     order = ()
-    if vmm.cfgGetInt('misc', 'dovecotvers') > 11:
+    if vmm.cfgGetInt('misc', 'dovecot_version') > 11:
         sieve_name = u'sieve'
     else:
         sieve_name = u'managesieve'
@@ -87,7 +87,7 @@
                 (u'aliases', 0), (u'relocated', 0))
     elif argv[1] in (u'ui', u'userinfo'):
         if argc == 4 and argv[3] != u'aliases'\
-        or vmm.cfgGetBoolean('maildir', 'diskusage'):
+        or vmm.cfgGetBoolean('account', 'disk_usage'):
             order = ((u'address', 0), (u'name', 0), (u'uid', 1), (u'gid', 1),
                     (u'transport', 0), (u'maildir', 0), (u'disk usage', 0),
                     (u'smtp', 1), (u'pop3', 1), (u'imap', 1), (sieve_name, 1))
--- a/vmm.cfg	Fri Jan 22 04:22:59 2010 +0000
+++ b/vmm.cfg	Fri Jan 22 04:31:38 2010 +0000
@@ -12,52 +12,60 @@
 user = dbuser
 ; Database password (String)
 pass = dbpassword
-; database name (String)
+; Database name (String)
 name = mailsys
 
 #
-# Mail directories
+# Maildir folder
 #
 [maildir]
 ; Default name of the Maildir folder (String)
 name = Maildir
 ; A colon separated list of folder names, that should be created (String)
-; e.g.: folders = Drafts:Sent:Templates:Trash
+; e.g.: folders = Drafts:Sent:Templates:Trash:Lists.Dovecot:Lists.Postfix
 folders = Drafts:Sent:Templates:Trash
-; Permissions for maildirs (Int)
-; octal 0700 -> decimal 448
-mode = 448
-; Display disk usage in account info by default? (Boolean)
-diskusage = false
-; Delete maildir recursive when deleting an account? (Boolean)
-delete = false
+
+#
+# Domain settings
+#
+[domain]
+; Should vmm create the postmaster account when a new domain is created?
+; (Boolean)
+auto_postmaster = true
+; Delete domain directory recursive when deleting a domain? (Boolean)
+delete_directory = false
+; Permissions for domain directories (Int)
+; octal 0770 -> decimal 504
+directory_mode = 504
+; Force deletion of accounts and aliases when deleting a domain (Boolean)
+force_deletion = false
 
 #
-# Services per user
+# Account settings
 #
-[services]
-; allow smtp by default? (Boolean)
+[account]
+; Delete the user's home directory recursive when deleting an account? (Boolean)
+delete_directory = false
+; Permissions for the user's home directory and mail directories (Int)
+; octal 0700 -> decimal 448
+directory_mode = 448
+; Display disk usage in account info by default? (Boolean)
+disk_usage = false
+; Should vmm generate a random password when no password was given for the
+; useradd subcommand? (Boolean)
+random_password = false
+; How many characters to include in the generated passwords? (Int)
+password_length = 8
+; Allow smtp by default? (Boolean)
 smtp = true
-; allow pop3 by default? (Boolean)
+; Allow pop3 by default? (Boolean)
 pop3 = true
-; allow imap by default? (Boolean)
+; Allow imap by default? (Boolean)
 imap = true
-; allow managesieve by default? (Boolean)
+; Allow managesieve by default? (Boolean)
 sieve = true
 
 #
-# domain directory settings
-#
-[domdir]
-; The base directory for all domains/accounts (String)
-base = /srv/mail
-; Permissions for domain directories (Int)
-; octal 0770 -> decimal 504
-mode = 504
-; Delete domain directory recursive when deleting a domain? (Boolean)
-delete = false
-
-#
 # external binaries
 #
 [bin]
@@ -72,17 +80,17 @@
 # misc settings
 #
 [misc]
+; The base directory for all domains/accounts (String)
+base_directory = /srv/mail
 ; Password scheme to use (see also: dovecotpw -l) (String)
-passwdscheme = PLAIN
+password_scheme = PLAIN
 ; numeric group ID of group mail (mail_privileged_group from dovecot.conf) (Int)
 gid_mail = 8
-; force deletion of accounts and aliases (Boolean)
-forcedel = false
-; default transport for domains and accounts
+; default transport for domains and accounts (String)
 transport = dovecot:
 ; the concatenated major and minor version number from `dovecot --version` (Int)
 ; e.g. 1.0.15 -> 10; 1.1.18 -> 11; 1.2.3 -> 12
-dovecotvers = 11
+dovecot_version = 11
 
 #
 # Configuration state