dovecot: make maildir not the same as homedir
[ansible.git] / roles / email / templates / dovecot / dovecot-sql.conf.ext
1 # This file is commonly accessed via passdb {} or userdb {} section in
2 # conf.d/auth-sql.conf.ext
3
4 # This file is opened as root, so it should be owned by root and mode 0600.
5 #
6 # http://wiki2.dovecot.org/AuthDatabase/SQL
7 #
8 # For the sql passdb module, you'll need a database with a table that
9 # contains fields for at least the username and password. If you want to
10 # use the user@domain syntax, you might want to have a separate domain
11 # field as well.
12 #
13 # If your users all have the same uig/gid, and have predictable home
14 # directories, you can use the static userdb module to generate the home
15 # dir based on the username and domain. In this case, you won't need fields
16 # for home, uid, or gid in the database.
17 #
18 # If you prefer to use the sql userdb module, you'll want to add fields
19 # for home, uid, and gid. Here is an example table:
20 #
21 # CREATE TABLE users (
22 #     username VARCHAR(128) NOT NULL,
23 #     domain VARCHAR(128) NOT NULL,
24 #     password VARCHAR(64) NOT NULL,
25 #     home VARCHAR(255) NOT NULL,
26 #     uid INTEGER NOT NULL,
27 #     gid INTEGER NOT NULL,
28 #     active CHAR(1) DEFAULT 'Y' NOT NULL
29 # );
30
31 # Database driver: mysql, pgsql, sqlite
32 driver = mysql
33
34 # Database connection string. This is driver-specific setting.
35 #
36 # HA / round-robin load-balancing is supported by giving multiple host
37 # settings, like: host=sql1.host.org host=sql2.host.org
38 #
39 # pgsql:
40 #   For available options, see the PostgreSQL documention for the
41 #   PQconnectdb function of libpq.
42 #   Use maxconns=n (default 5) to change how many connections Dovecot can
43 #   create to pgsql.
44 #
45 # mysql:
46 #   Basic options emulate PostgreSQL option names:
47 #     host, port, user, password, dbname
48 #
49 #   But also adds some new settings:
50 #     client_flags           - See MySQL manual
51 #     ssl_ca, ssl_ca_path    - Set either one or both to enable SSL
52 #     ssl_cert, ssl_key      - For sending client-side certificates to server
53 #     ssl_cipher             - Set minimum allowed cipher security (default: HIGH)
54 #     ssl_verify_server_cert - Verify that the name in the server SSL certificate
55 #                              matches the host (default: no)
56 #     option_file            - Read options from the given file instead of
57 #                              the default my.cnf location
58 #     option_group           - Read options from the given group (default: client)
59 #
60 #   You can connect to UNIX sockets by using host: host=/var/run/mysql.sock
61 #   Note that currently you can't use spaces in parameters.
62 #
63 # sqlite:
64 #   The path to the database file.
65 #
66 # Examples:
67 #   connect = host=192.168.1.1 dbname=users
68 #   connect = host=sql.example.com dbname=virtual user=virtual password=blarg
69 #   connect = /etc/dovecot/authdb.sqlite
70 #
71 connect = host=localhost dbname=vmail user=vmail password={{postfix.dovecot.mysql_password}}
72
73 # Default password scheme.
74 #
75 # List of supported schemes is in
76 # http://wiki2.dovecot.org/Authentication/PasswordSchemes
77 #
78 default_pass_scheme = SSHA
79
80 # passdb query to retrieve the password. It can return fields:
81 #   password - The user's password. This field must be returned.
82 #   user - user@domain from the database. Needed with case-insensitive lookups.
83 #   username and domain - An alternative way to represent the "user" field.
84 #
85 # The "user" field is often necessary with case-insensitive lookups to avoid
86 # e.g. "name" and "nAme" logins creating two different mail directories. If
87 # your user and domain names are in separate fields, you can return "username"
88 # and "domain" fields instead of "user".
89 #
90 # The query can also return other fields which have a special meaning, see
91 # http://wiki2.dovecot.org/PasswordDatabase/ExtraFields
92 #
93 # Commonly used available substitutions (see http://wiki2.dovecot.org/Variables
94 # for full list):
95 #   %u = entire user@domain
96 #   %n = user part of user@domain
97 #   %d = domain part of user@domain
98 #
99 # Note that these can be used only as input to SQL query. If the query outputs
100 # any of these substitutions, they're not touched. Otherwise it would be
101 # difficult to have eg. usernames containing '%' characters.
102 #
103 # Example:
104 #   password_query = SELECT userid AS user, pw AS password \
105 #     FROM users WHERE userid = '%u' AND active = 'Y'
106 #
107 #password_query = \
108 #  SELECT username, domain, password \
109 #  FROM users WHERE username = '%n' AND domain = '%d'
110
111 # userdb query to retrieve the user information. It can return fields:
112 #   uid - System UID (overrides mail_uid setting)
113 #   gid - System GID (overrides mail_gid setting)
114 #   home - Home directory
115 #   mail - Mail location (overrides mail_location setting)
116 #
117 # None of these are strictly required. If you use a single UID and GID, and
118 # home or mail directory fits to a template string, you could use userdb static
119 # instead. For a list of all fields that can be returned, see
120 # http://wiki2.dovecot.org/UserDatabase/ExtraFields
121 #
122 # Examples:
123 #   user_query = SELECT home, uid, gid FROM users WHERE userid = '%u'
124 #   user_query = SELECT dir AS home, user AS uid, group AS gid FROM users where userid = '%u'
125 #   user_query = SELECT home, 501 AS uid, 501 AS gid FROM users WHERE userid = '%u'
126 #
127 #user_query = \
128 #  SELECT home, uid, gid \
129 #  FROM users WHERE username = '%n' AND domain = '%d'
130 user_query = SELECT '/var/vmail/%u' as home, 'maildir:~/mail' as mail, {{postfix.dovecot.vmail_uid}} AS uid, {{postfix.dovecot.mail_gid}} AS gid FROM users WHERE username = '%u' AND active = '1'
131
132 # If you wish to avoid two SQL lookups (passdb + userdb), you can use
133 # userdb prefetch instead of userdb sql in dovecot.conf. In that case you'll
134 # also have to return userdb fields in password_query prefixed with "userdb_"
135 # string. For example:
136 #password_query = \
137 #  SELECT userid AS user, password, \
138 #    home AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \
139 #  FROM users WHERE userid = '%u'
140 password_query = SELECT username as user, password, '/var/vmail/%u' as userdb_home, 'maildir:~/mail' as userdb_mail, {{postfix.dovecot.vmail_uid}} as userdb_uid, {{postfix.dovecot.mail_gid}} as userdb_gid \
141     FROM users WHERE username = '%u' AND active = '1'
142
143 # Query to get a list of all usernames.
144 iterate_query = SELECT username AS user FROM users WHERE active = '1'