# HG changeset patch # User Pascal Volk # Date 1264134698 0 # Node ID c0e2c7687dd374e4eea2fe17640f0c0d1ed9fd87 # Parent 6f8ac86d1611f3508bccca1a15d6d76acd2d237c# Parent 6526072ec709d5cf4bd4a9fd03d498051d639ed0 branch merge diff -r 6526072ec709 -r c0e2c7687dd3 INSTALL --- 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, diff -r 6526072ec709 -r c0e2c7687dd3 TODO --- 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 diff -r 6526072ec709 -r c0e2c7687dd3 VirtualMailManager/Config.py --- 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 diff -r 6526072ec709 -r c0e2c7687dd3 VirtualMailManager/VirtualMailManager.py --- 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) diff -r 6526072ec709 -r c0e2c7687dd3 install.sh --- 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} diff -r 6526072ec709 -r c0e2c7687dd3 man/de/man5/vmm.cfg.5 --- 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 +.\" Generated by docutils manpage writer. +.\" +. diff -r 6526072ec709 -r c0e2c7687dd3 man/de/man5/vmm.cfg.5.rst --- /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 +: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. + diff -r 6526072ec709 -r c0e2c7687dd3 man/man5/vmm.cfg.5 --- 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 +.\" Generated by docutils manpage writer. +.\" +. diff -r 6526072ec709 -r c0e2c7687dd3 man/man5/vmm.cfg.5.rst --- /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 +: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. + diff -r 6526072ec709 -r c0e2c7687dd3 setup.py --- 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) diff -r 6526072ec709 -r c0e2c7687dd3 update_config.py --- /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 + diff -r 6526072ec709 -r c0e2c7687dd3 update_config_0.4.x-0.5.py --- 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 - - diff -r 6526072ec709 -r c0e2c7687dd3 upgrade.sh --- 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} diff -r 6526072ec709 -r c0e2c7687dd3 vmm --- 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)) diff -r 6526072ec709 -r c0e2c7687dd3 vmm.cfg --- 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