This file is indexed.

/etc/courier/authsqliterc is in courier-authlib-sqlite 0.66.4-3build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
##VERSION: $Id: authsqliterc 17 2011-04-04 02:07:37Z mrsam $
#
# Copyright 2012 Double Precision, Inc.  See COPYING for
# distribution information.
#
# Do not alter lines that begin with ##, they are used when upgrading
# this configuration.
#
# authsqliterc created from authsqliterc.dist by sysconftool
#
# Each line in this file must follow the following format:
#
# field[spaces|tabs]value
#
# That is, the name of the field, followed by spaces or tabs, followed by
# field value.  Trailing spaces are prohibited.


##NAME: LOCATION:0
#
# The SQLite database. You must create this database beforehand, and create
# the users table, as defined below.

SQLITE_DATABASE		/var/lib/courier/users.db

##NAME: SQLITE_USER_TABLE:0
#
# Suggested format of the table specified by SQLITE_USER_TABLE:
#
# CREATE TABLE passwd (
#        id                    text not null primary key,
#        crypt                 text,   # Either...
#        clear                 text,   # ... or
#        name                  text,
#        uid                   int,
#        gid                   int,
#        home                  text not null,
#        maildir               text,
#        defaultdelivery       text,
#        quota                 text,
#        options               text);
#
# Use either crypt or clear, to specify whether cleartext or crypted passwords
# get used (and define either SQLITE_CRYPT_PWFIELD or SQLITE_CLEAR_PWFIELD,
# below, accordingly).

SQLITE_USER_TABLE	passwd

##NAME: SQLITE_CRYPT_PWFIELD:0
#
# Either SQLITE_CRYPT_PWFIELD or SQLITE_CLEAR_PWFIELD must be defined.  Both
# are OK too. crypted passwords go into SQLITE_CRYPT_PWFIELD, cleartext
# passwords go into SQLITE_CLEAR_PWFIELD.  Cleartext passwords allow
# CRAM-MD5 authentication to be implemented.

SQLITE_CRYPT_PWFIELD	crypt

##NAME: SQLITE_CLEAR_PWFIELD:0
#
#
# SQLITE_CLEAR_PWFIELD	clear

##NAME: SQLITE_DEFAULT_DOMAIN:0
#
# If DEFAULT_DOMAIN is defined, and someone tries to log in as 'user',
# we will search for 'user@DEFAULT_DOMAIN' instead.
#
#
# DEFAULT_DOMAIN		example.com

##NAME: SQLITE_UID_FIELD:0
#
# Other fields in the sqlite table:
#
# SQLITE_UID_FIELD - contains the numerical userid of the account
#
SQLITE_UID_FIELD		uid

##NAME: SQLITE_GID_FIELD:0
#
# Numerical groupid of the account

SQLITE_GID_FIELD		gid

##NAME: SQLITE_LOGIN_FIELD:0
#
# The login id, default is id.  Basically the query is:
#
#  SELECT SQLITE_UID_FIELD, SQLITE_GID_FIELD, ... WHERE id='loginid'
#

SQLITE_LOGIN_FIELD	id

##NAME: SQLITE_HOME_FIELD:0
#

SQLITE_HOME_FIELD	home

##NAME: SQLITE_NAME_FIELD:0
#
# The user's name (optional)

SQLITE_NAME_FIELD	name

##NAME: SQLITE_MAILDIR_FIELD:0
#
# This is an optional field, and can be used to specify an arbitrary
# location of the maildir for the account, which normally defaults to
# $HOME/Maildir (where $HOME is read from SQLITE_HOME_FIELD).
#
# You still need to provide a SQLITE_HOME_FIELD, even if you uncomment this
# out.
#
# SQLITE_MAILDIR_FIELD	maildir

##NAME: SQLITE_DEFAULTDELIVERY:0
#
# Courier mail server only: optional field specifies custom mail delivery
# instructions for this account (if defined) -- essentially overrides
# DEFAULTDELIVERY from ${sysconfdir}/courierd
#
# SQLITE_DEFAULTDELIVERY defaultdelivery

##NAME: SQLITE_QUOTA_FIELD:0
#
# Define SQLITE_QUOTA_FIELD to be the name of the field that can optionally
# specify a maildir quota.  See README.maildirquota for more information 
#
# SQLITE_QUOTA_FIELD	quota

##NAME: SQLITE_AUXOPTIONS:0
#
# Auxiliary options.  The SQLITE_AUXOPTIONS field should be a char field that
# contains a single string consisting of comma-separated "ATTRIBUTE=NAME"
# pairs.  These names are additional attributes that define various per-account
# "options", as given in INSTALL's description of the "Account OPTIONS"
# setting.
#
# SQLITE_AUXOPTIONS_FIELD	options
#
# You might want to try something like this, if you'd like to use a bunch
# of individual fields, instead of a single text blob:
#
# SQLITE_AUXOPTIONS_FIELD	"disableimap=" || disableimap || ",disablepop3=" || disablepop3 || ",disablewebmail=" || disablewebmail || ",sharedgroup=" || sharedgroup
#
# This will let you define fields called "disableimap", etc, with the end result
# being something that the OPTIONS parser understands.


##NAME: SQLITE_WHERE_CLAUSE:0
#
# This is optional, SQLITE_WHERE_CLAUSE can be basically set to an arbitrary
# fixed string that is appended to the WHERE clause of our query
#
# SQLITE_WHERE_CLAUSE	server='mailhost.example.com'

##NAME: SQLITE_SELECT_CLAUSE:0
#
# This is optional, SQLITE_SELECT_CLAUSE can be set when you have a database,
# which is structuraly different from the proposed layout. The fixed string will
# be used to do a SELECT operation on database, which should return fields
# in order specified bellow:
#
# username, cryptpw, clearpw, uid, gid, home, maildir, quota, fullname, options
#
# The username field should include the domain (see example below).
#
# Enabling this option causes ignorance of any other field-related
# options, excluding default domain.
#
# There are two variables, which you can use. Substitution will be made
# for them, so you can put entered username (local part) and domain name
# in the right place of your query. These variables are:
#	 	$(local_part), $(domain), $(service)
#
# If a $(domain) is empty (not given by the remote user) the default domain
# name is used in its place.
#
# $(service) will expand out to the service being authenticated: imap, imaps,
# pop3 or pop3s.  Courier mail server only: service will also expand out to
# "courier", when searching for local mail account's location.  In this case,
# if the "maildir" field is not empty it will be used in place of
# DEFAULTDELIVERY.  Courier mail server will also use esmtp when doing
# authenticated ESMTP.
#
# For example:
#
# SQLITE_SELECT_CLAUSE	SELECT popbox.local_part || '@' || popbox.domain_name,\
#			'{MD5}' || popbox.password_hash),		\
#			popbox.clearpw,					\
#			domain.uid,					\
#			domain.gid,					\
#			domain.path || '/' || popbox.mbox_name, 	\
#			'',						\
#			domain.quota,					\
#			'',						\
#			"disableimap=" || disableimap || ",disablepop3=" || \
#                       disablepop3 || ",disablewebmail=" || disablewebmail || \
#                              ",sharedgroup=" || sharedgroup           \
#			FROM popbox, domain				\
#			WHERE popbox.local_part = '$(local_part)'	\
#			AND popbox.domain_name = '$(domain)'		\
#			AND popbox.domain_name = domain.domain_name


##NAME: SQLITE_ENUMERATE_CLAUSE:1
#
# Optional custom SQL query used to enumerate accounts for authenumerate,
# in order to compile a list of accounts for shared folders.  The query
# should return the following fields: name, uid, gid, homedir, maildir, options
#
# Example:
# SQLITE_ENUMERATE_CLAUSE SELECT popbox.local_part || '@' || popbox.domain_name, \
#			domain.uid,					\
#			domain.gid,					\
#			domain.path || '/' || popbox.mbox_name, 	\
#			'',						\
#			'sharedgroup=' || sharedgroup 			\
#			FROM popbox, domain				\
#			WHERE popbox.local_part = '$(local_part)'	\
#			AND popbox.domain_name = '$(domain)'		\
#			AND popbox.domain_name = domain.domain_name


##NAME: SQLITE_CHPASS_CLAUSE:0
#
# This is optional, SQLITE_CHPASS_CLAUSE can be set when you have a database,
# which is structuraly different from proposed. The fixed string will
# be used to do an UPDATE operation on database. In other words, it is
# used, when changing passwords. This is used by sqwebmail/Courier webmail.
#
# There are four variables, which you can use. Substitution will be made
# for them, so you can put entered username (local part) and domain name
# in the right place of your query. There variables are:
# 	$(local_part) , $(domain) , $(newpass) , $(newpass_crypt)
#
# If a $(domain) is empty (not given by the remote user) the default domain
# name is used in its place.
# $(newpass) contains plain password
# $(newpass_crypt) contains its crypted form
#
# SQLITE_CHPASS_CLAUSE	UPDATE	popbox					\
#			SET	clearpw='$(newpass)',			\
#				password_hash='$(newpass_crypt)'	\
#			WHERE	local_part='$(local_part)'		\
#			AND	domain_name='$(domain)'
#