|     35     local   mailsys     +mailsys                          md5 |     35     local   mailsys     +mailsys                          md5 | 
|     36  |     36  | 
|     37     # reload configuration |     37     # reload configuration | 
|     38     /etc/init.d/postgresql-8.4 force-reload |     38     /etc/init.d/postgresql-8.4 force-reload | 
|     39  |     39  | 
|     40 * Create a DB user if necessary: |     40 * Create a database superuser if necessary: | 
|     41     DB Superuser: |     41     # as root run: su - postgres | 
|         |     42     # if you have sudo privileges run: sudo su - postgres | 
|         |     43     # create your superuser, which will be able to create users and databases | 
|     42     createuser -s -d -r -E -e -P $USERNAME |     44     createuser -s -d -r -E -e -P $USERNAME | 
|     43     DB User: |     45  | 
|     44     createuser -d -E -e -P $USERNAME |     46 * As superuser create the database and db users for vmm, Postfix and Dovecot | 
|     45  |         | 
|     46 * Create Database and db users for vmm, Postfix and Dovecot |         | 
|     47     connecting to PostgreSQL: |     47     connecting to PostgreSQL: | 
|     48     psql template1 |     48     psql template1 | 
|     49  |     49  | 
|     50     # create users, group and the database |     50     # create users, group and the database | 
|     51     CREATE USER vmm ENCRYPTED PASSWORD 'DB PASSWORD for vmm'; |     51     CREATE ROLE vmm LOGIN ENCRYPTED PASSWORD 'DB PASSWORD for vmm'; | 
|     52     CREATE USER dovecot ENCRYPTED password 'DB PASSWORD for Dovecot'; |     52     CREATE ROLE dovecot LOGIN ENCRYPTED password 'DB PASSWORD for Dovecot'; | 
|     53     CREATE USER postfix ENCRYPTED password 'DB PASSWORD for Postfix'; |     53     CREATE ROLE postfix LOGIN ENCRYPTED password 'DB PASSWORD for Postfix'; | 
|     54     CREATE ROLE mailsys WITH USER postfix, dovecot, vmm; |     54     CREATE ROLE mailsys WITH USER postfix, dovecot, vmm; | 
|     55     CREATE DATABASE mailsys WITH OWNER vmm ENCODING 'UTF8'; |     55     CREATE DATABASE mailsys WITH OWNER vmm ENCODING 'UTF8'; | 
|     56     \q |     56     \q | 
|     57  |     57  | 
|     58     # connect to the new database |     58     # connect to the new database | 
|     59     psql mailsys vmm -W -h 127.0.0.1 |     59     psql mailsys vmm -W -h 127.0.0.1 | 
|     60     # either import the database structure for Dovecot v1.0.x/v1.1.x |     60     # either import the database structure for Dovecot v1.0.x/v1.1.x | 
|     61     \i /path/to/create_tables.pgsql |     61     \i vmm-y.x.z/pgsql/create_tables.pgsql | 
|     62     # or import the database structure for Dovecot v1.2.x |     62     # or import the database structure for Dovecot v1.2.x/v2.x | 
|     63     \i /path/to/create_tables-dovecot-1.2.x.pgsql |     63     \i vmm-x.y.z/pgsql/create_tables-dovecot-1.2.x.pgsql | 
|     64  |         | 
|     65     # set permissions |         | 
|     66     GRANT SELECT ON dovecot_password, dovecot_user TO dovecot; |         | 
|     67     GRANT SELECT ON postfix_alias, postfix_gid, postfix_maildir, |         | 
|     68     postfix_relocated, postfix_transport, postfix_uid TO postfix; |         | 
|     69  |         | 
|     70     # leave psql |     64     # leave psql | 
|     71     \q |     65     \q | 
|         |     66  | 
|         |     67     # set permissions for your Dovecot and Postfix users | 
|         |     68     # see python set-permissions.py -h for details | 
|         |     69     python vmm-x.y.z/pgsql/set-permissions.py -a -H 127.0.0.1 -U vmm | 
|     72  |     70  | 
|     73 Create directory for your mails |     71 Create directory for your mails | 
|     74   mkdir /srv/mail |     72   mkdir /srv/mail | 
|     75   cd /srv/mail/ |     73   cd /srv/mail/ | 
|     76   mkdir 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z |     74   mkdir 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z | 
|     77   chmod 771 /srv/mail |     75   chmod 771 /srv/mail | 
|     78   chmod 751 /srv/mail/* |     76   chmod 751 /srv/mail/* | 
|     79  |     77  | 
|     80 Configuring Dovecot |     78  | 
|         |     79 For Dovecot >= 2.0 read the file Configure.Dovecot_2 | 
|         |     80 Configuring Dovecot v1.x | 
|     81  |     81  | 
|     82 * /etc/dovecot/dovecot.conf |     82 * /etc/dovecot/dovecot.conf | 
|     83     # all your other settings |     83     # all your other settings | 
|     84     #disable_plaintext_auth = no |     84     #disable_plaintext_auth = no | 
|     85     mail_location = maildir:~/Maildir |     85     mail_location = maildir:~/Maildir | 
|    101         master { |    101         master { | 
|    102           path = /var/run/dovecot/auth-master |    102           path = /var/run/dovecot/auth-master | 
|    103           mode = 0600 |    103           mode = 0600 | 
|    104         } |    104         } | 
|    105         client { |    105         client { | 
|    106           path = /var/spool/postfix/private/auth |    106           path = /var/spool/postfix/private/dovecot-auth | 
|    107           mode = 0660 |    107           mode = 0660 | 
|    108           user = postfix |    108           user = postfix | 
|    109           group = postfix |    109           group = postfix | 
|    110         } |    110         } | 
|    111       } |    111       } | 
|    112     } |    112     } | 
|    113  |    113  | 
|    114 * /etc/dovecot/dovecot-sql.conf |    114 * /etc/dovecot/dovecot-sql.conf | 
|    115     driver = pgsql |    115     driver = pgsql | 
|    116     connect = host=localhost dbname=mailsys user=dovecot password=$Dovecot_PASS |    116     connect = host=localhost dbname=mailsys user=dovecot password=$Dovecot_PASS | 
|    117     default_pass_scheme = PLAIN |    117     default_pass_scheme = CRAM-MD5 | 
|    118     password_query = SELECT "user", password FROM dovecot_password WHERE "user"='%Lu' AND %Ls |    118     password_query = SELECT userid AS "user", password FROM dovecotpassword('%Ln', '%Ld') WHERE %Ls | 
|    119     user_query = SELECT home, uid, gid, mail FROM dovecot_user WHERE userid = '%Lu' |    119     user_query = SELECT home, uid, gid, mail FROM dovecotuser('%Ln', '%Ld') | 
|    120  |    120  | 
|    121 Provide a root SETUID copy of Dovecot's deliver agent for Postfix |    121 Provide a root SETUID copy of Dovecot's deliver agent for Postfix | 
|         |    122  | 
|         |    123 /!\ Only required with Dovecot v.1.x. | 
|         |    124     With Dovecot >= v2.0 use Dovecot's lmtp! | 
|    122  |    125  | 
|    123     mkdir -p /usr/local/lib/dovecot |    126     mkdir -p /usr/local/lib/dovecot | 
|    124     chmod 700 /usr/local/lib/dovecot |    127     chmod 700 /usr/local/lib/dovecot | 
|    125     chown nobody /usr/local/lib/dovecot |    128     chown nobody /usr/local/lib/dovecot | 
|    126     cp /usr/lib/dovecot/deliver /usr/local/lib/dovecot/ |    129     cp /usr/lib/dovecot/deliver /usr/local/lib/dovecot/ | 
|    131  |    134  | 
|    132 Start or restart Dovecot |    135 Start or restart Dovecot | 
|    133  |    136  | 
|    134  |    137  | 
|    135 Configuring Postfix's master.cf |    138 Configuring Postfix's master.cf | 
|    136  |    139      | 
|         |    140 /!\ Only required with Dovecot v.1.x. | 
|    137     # Add Dovecot's deliver agent |    141     # Add Dovecot's deliver agent | 
|    138     dovecot   unix  -       n       n       -       -       pipe |    142     dovecot   unix  -       n       n       -       -       pipe | 
|    139       flags=DORhu user=nobody argv=/usr/local/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -n -m ${extension} |    143       flags=DORhu user=nobody argv=/usr/local/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -n -m ${extension} | 
|    140  |    144  | 
|    141  |    145  | 
|    142  |    146  | 
|    143 Configuring Postfix's main.cf |    147 Configuring Postfix's main.cf | 
|    144     # relocated users from the database |    148     # relocated users from the database | 
|    145     #relocated_maps = pgsql:/etc/postfix/pgsql-relocated_maps.cf |    149     #relocated_maps = pgsql:/etc/postfix/pgsql-relocated_maps.cf | 
|    146  |    150  | 
|         |    151     # transport settings from our database | 
|         |    152     transport_maps = pgsql:/etc/postfix/pgsql-transport_maps.cf | 
|         |    153  | 
|    147     # virtual domains |    154     # virtual domains | 
|    148     virtual_mailbox_domains = pgsql:/etc/postfix/pgsql-virtual_mailbox_domains.cf |    155     virtual_mailbox_domains = pgsql:/etc/postfix/pgsql-virtual_mailbox_domains.cf | 
|    149     virtual_alias_maps = pgsql:/etc/postfix/pgsql-virtual_alias_maps.cf |    156     virtual_alias_maps = pgsql:/etc/postfix/pgsql-virtual_alias_maps.cf | 
|    150     transport_maps = pgsql:/etc/postfix/pgsql-transport.cf |         | 
|    151     virtual_minimum_uid = 70000 |    157     virtual_minimum_uid = 70000 | 
|    152     virtual_uid_maps = pgsql:/etc/postfix/pgsql-virtual_uid_maps.cf |    158     virtual_uid_maps = pgsql:/etc/postfix/pgsql-virtual_uid_maps.cf | 
|    153     virtual_gid_maps = pgsql:/etc/postfix/pgsql-virtual_gid_maps.cf |    159     virtual_gid_maps = pgsql:/etc/postfix/pgsql-virtual_gid_maps.cf | 
|    154     virtual_mailbox_base = / |    160     virtual_mailbox_base = / | 
|    155     virtual_mailbox_maps = pgsql:/etc/postfix/pgsql-virtual_mailbox_maps.cf |    161     virtual_mailbox_maps = pgsql:/etc/postfix/pgsql-virtual_mailbox_maps.cf | 
|    156  |    162  | 
|    157     # dovecot LDA |    163     # dovecot LDA (only recommended with Dovecot v1.x) | 
|    158     dovecot_destination_recipient_limit = 1 |    164     #dovecot_destination_recipient_limit = 1 | 
|    159     virtual_transport = dovecot: |    165     #virtual_transport = dovecot: | 
|         |    166  | 
|         |    167     # dovecot lmtp | 
|         |    168     virtual_transport = lmtp:unix:private/dovecot-lmtp | 
|    160  |    169  | 
|    161     # dovecot SASL |    170     # dovecot SASL | 
|    162     smtpd_sasl_type = dovecot |    171     smtpd_sasl_type = dovecot | 
|    163     smtpd_sasl_path = private/auth |    172     smtpd_sasl_path = private/dovecot-auth | 
|    164     smtpd_sasl_auth_enable = yes |    173     smtpd_sasl_auth_enable = yes | 
|    165     # Keep smtpd_sasl_local_domain identical to Dovecot's auth_default_realm: |    174     # Keep smtpd_sasl_local_domain identical to Dovecot's auth_default_realm: | 
|    166     # empty. Both are empty by default. Let it commented out. |    175     # empty. Both are empty by default. Let it commented out. | 
|    167     # Read more at: http://wiki.dovecot.org/Authentication/Mechanisms/DigestMD5 |    176     # Read more at: http://wiki.dovecot.org/Authentication/Mechanisms/DigestMD5 | 
|    168     #smtpd_sasl_local_domain = |    177     #smtpd_sasl_local_domain = | 
|    176       reject_unauth_destination |    185       reject_unauth_destination | 
|    177  |    186  | 
|    178  |    187  | 
|    179 Installing the Virtual Mail Manager and configure the rest |    188 Installing the Virtual Mail Manager and configure the rest | 
|    180  |    189  | 
|    181     Installing from Mercurial or vmm-x.y.z.tar.bz2 |    190     Installing from Mercurial or vmm-x.y.z.tar.gz | 
|    182     after cloning from the hg repo or extracting the archive change into the |    191     after cloning from the hg repo or extracting the archive change into the | 
|    183     new directory and type: |    192     new directory and type: | 
|    184         ./install.sh |    193         ./install.sh | 
|    185     edit all the pgsql-*.cf files in /etc/postfix |    194     edit all the pgsql-*.cf files in /etc/postfix | 
|    186  |    195  | 
|    187     reload postfix |    196     reload postfix | 
|    188  |    197  | 
|    189     # configure the Virtual Mail Manager |    198     # configure the Virtual Mail Manager | 
|         |    199     # vmm.cfg(5) - configuration file for vmm | 
|         |    200     # | 
|         |    201     # For Dovecot v1.x use 'dovecot:' as domain.transport | 
|         |    202     # When using Dovecot v2.x use 'lmtp:unix:private/dovecot-lmtp' as | 
|         |    203     # domain.transport | 
|    190     vmm configure |    204     vmm configure | 
|    191  |    205  | 
|    192     # for help type |    206     # for help type | 
|         |    207     # vmm(1) - command line tool to manage email domains/accounts/aliases | 
|    193     vmm help |    208     vmm help | 
|    194  |    209  |