Move indexDir option to the mailserver scope
This option has been initially in the mailserver.fullTextSearch scope. However, this option modifies the location of all index files of dovecot and not only those used by the full text search feature. It is then more relevant to have this option in the mailserver top level scope. Moreover, the default option has been changed to null in order to keep existing index files where they are: changing the index location means recreating all index files. The fts documentation however recommend to change this default location when enabling the fts feature.
This commit is contained in:
parent
66e8baa6f2
commit
93330c5453
28
default.nix
28
default.nix
|
@ -187,17 +187,29 @@ in
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
indexDir = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Folder to store search indices. If null, indices are stored
|
||||||
|
along with email, which could not necessarily be desirable,
|
||||||
|
especially when the fullTextSearch option is enable since
|
||||||
|
indices it creates are voluminous and do not need to be backed
|
||||||
|
up.
|
||||||
|
|
||||||
|
Be careful when changing this option value since all indices
|
||||||
|
would be recreated at the new location (and clients would need
|
||||||
|
to resynchronize).
|
||||||
|
|
||||||
|
Note the some variables can be used in the file path. See
|
||||||
|
https://doc.dovecot.org/configuration_manual/mail_location/#variables
|
||||||
|
for details.
|
||||||
|
'';
|
||||||
|
example = "/var/lib/docecot/indices/%d/%n";
|
||||||
|
};
|
||||||
|
|
||||||
fullTextSearch = {
|
fullTextSearch = {
|
||||||
enable = mkEnableOption "Full text search indexing with xapian. This has significant performance and disk space cost.";
|
enable = mkEnableOption "Full text search indexing with xapian. This has significant performance and disk space cost.";
|
||||||
indexDir = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = "/var/lib/dovecot/fts_xapian";
|
|
||||||
description = ''
|
|
||||||
Folder to store search indices. If null, indices are stored along with email, which
|
|
||||||
is not necessarily desirable as indices are voluminous and do not need to be backed up.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
autoIndex = mkOption {
|
autoIndex = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
|
|
14
docs/fts.rst
14
docs/fts.rst
|
@ -38,9 +38,17 @@ issues a search query, so latency will be high.
|
||||||
Resource requirements
|
Resource requirements
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Indices can take more disk space than the emails themselves. By default, they
|
Indices created by the full text search feature can take more disk
|
||||||
are kept in a different location (``/var/lib/dovecot/fts_xapian``) than emails
|
space than the emails themselves. By default, they are kept in the
|
||||||
so that you can backup emails without indices.
|
emails location. When enabling the full text search feature, it is
|
||||||
|
recommended to move indices in a different location, such as
|
||||||
|
(``/var/lib/docecot/indices/%d/%n``) by using the option
|
||||||
|
``mailserver.indexDir``.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
When the value of the ``indexDir`` option is changed, all dovecot
|
||||||
|
indices needs to be recreated: clients would need to resynchronize.
|
||||||
|
|
||||||
Indexation itself is rather resouces intensive, in CPU, and for emails with
|
Indexation itself is rather resouces intensive, in CPU, and for emails with
|
||||||
large headers, in memory as well. Initial indexation of existing emails can take
|
large headers, in memory as well. Initial indexation of existing emails can take
|
||||||
|
|
|
@ -31,9 +31,8 @@ let
|
||||||
# maildir in format "/${domain}/${user}"
|
# maildir in format "/${domain}/${user}"
|
||||||
dovecotMaildir =
|
dovecotMaildir =
|
||||||
"maildir:${cfg.mailDirectory}/%d/%n${maildirLayoutAppendix}"
|
"maildir:${cfg.mailDirectory}/%d/%n${maildirLayoutAppendix}"
|
||||||
+ (lib.optionalString
|
+ (lib.optionalString (cfg.indexDir != null)
|
||||||
(cfg.fullTextSearch.enable && (cfg.fullTextSearch.indexDir != null))
|
":INDEX=${cfg.indexDir}/%d/%n"
|
||||||
":INDEX=${cfg.fullTextSearch.indexDir}/%d/%n"
|
|
||||||
);
|
);
|
||||||
|
|
||||||
postfixCfg = config.services.postfix;
|
postfixCfg = config.services.postfix;
|
||||||
|
|
|
@ -59,9 +59,7 @@ in
|
||||||
preStart = let
|
preStart = let
|
||||||
directories = lib.strings.escapeShellArgs (
|
directories = lib.strings.escapeShellArgs (
|
||||||
[ mailDirectory ]
|
[ mailDirectory ]
|
||||||
++ lib.optional
|
++ lib.optional (cfg.indexDir != null) cfg.indexDir
|
||||||
(cfg.fullTextSearch.enable && (cfg.fullTextSearch.indexDir != null))
|
|
||||||
cfg.fullTextSearch.indexDir
|
|
||||||
);
|
);
|
||||||
in ''
|
in ''
|
||||||
# Create mail directory and set permissions. See
|
# Create mail directory and set permissions. See
|
||||||
|
|
Loading…
Reference in New Issue