mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-05-13 10:30:16 +00:00
email: Add full text search capability
Add Full Text Search capability to Dovecot. - Add 'dovecot-fts-xapian' to the list of packages for the email app. - Add relevant configs for both dovecot 2.3 and 2.4 - Add a systemd timer to periodically clean search indexes Configurations taken from plugin's upstream documentation: https://github.com/grosjo/fts-xapian Sunil: - Tweak the dovecot 2.4 configuration. Remove explicit configuration same as or close to default values. - Drop the timer service for cleaning up the index. Dovecot documentation that FTS plugins do it themselves. - Drop the re-indexing command on setup. This could not be properly tested. On first search, indexes will be created for mailboxes that don't have them. Tests done: - Perform a fresh install, on both Bookworm and Trixie, confirm the install is successful, confirm the systemd service runs with exit 0. - On Bookworm, apply the patches on an existing setup, confirm the patches apply as expected. - On a production like setup, set dovecot 2.4 to debug mode and check the journal logs while receiving an email: The logs confirm that the fts module is loaded and that it automatically creates a db for the indexes. I also opened the newly created db file with less and confirmed that the human readable parts contain my recent email. - Using Sogo, perform a full search (including headers and body). Search works and indexes are freshly created on all the folders. Signed-off-by: Benedek Nagy <contact@nbenedek.me> Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
parent
7424564074
commit
bd656386b9
@ -52,7 +52,7 @@ class EmailApp(plinth.app.App):
|
|||||||
|
|
||||||
app_id = 'email'
|
app_id = 'email'
|
||||||
|
|
||||||
_version = 7
|
_version = 8
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
"""Initialize the email app."""
|
"""Initialize the email app."""
|
||||||
@ -93,7 +93,7 @@ class EmailApp(plinth.app.App):
|
|||||||
'packages-email', [
|
'packages-email', [
|
||||||
'postfix', 'postfix-sqlite', 'dovecot-pop3d', 'dovecot-imapd',
|
'postfix', 'postfix-sqlite', 'dovecot-pop3d', 'dovecot-imapd',
|
||||||
'dovecot-lmtpd', 'dovecot-managesieved', 'dovecot-ldap',
|
'dovecot-lmtpd', 'dovecot-managesieved', 'dovecot-ldap',
|
||||||
'rspamd', 'redis-server', 'openssl'
|
'dovecot-fts-xapian', 'rspamd', 'redis-server', 'openssl'
|
||||||
], conflicts=['exim4-base', 'exim4-config', 'exim4-daemon-light'],
|
], conflicts=['exim4-base', 'exim4-config', 'exim4-daemon-light'],
|
||||||
conflicts_action=Packages.ConflictsAction.REMOVE,
|
conflicts_action=Packages.ConflictsAction.REMOVE,
|
||||||
rerun_setup_on_upgrade=True)
|
rerun_setup_on_upgrade=True)
|
||||||
@ -127,6 +127,7 @@ class EmailApp(plinth.app.App):
|
|||||||
'/etc/dovecot/conf.d/90-freedombox-master.conf',
|
'/etc/dovecot/conf.d/90-freedombox-master.conf',
|
||||||
'/etc/dovecot/conf.d/90-freedombox-tls.conf',
|
'/etc/dovecot/conf.d/90-freedombox-tls.conf',
|
||||||
'/etc/dovecot/conf.d/95-freedombox-sieve.conf',
|
'/etc/dovecot/conf.d/95-freedombox-sieve.conf',
|
||||||
|
'/etc/dovecot/conf.d/95-freedombox-fts.conf',
|
||||||
'/etc/dovecot/conf.d/freedombox-ldap.conf.ext'
|
'/etc/dovecot/conf.d/freedombox-ldap.conf.ext'
|
||||||
])
|
])
|
||||||
self.add(dropin_configs_dovecot)
|
self.add(dropin_configs_dovecot)
|
||||||
|
|||||||
@ -0,0 +1,18 @@
|
|||||||
|
# Do not edit this file. Manage your settings on FreedomBox.
|
||||||
|
|
||||||
|
# Configure full-text search (FTS) for Dovecot.
|
||||||
|
# https://doc.dovecot.org/2.3/configuration_manual/fts/
|
||||||
|
# https://github.com/grosjo/fts-xapian
|
||||||
|
|
||||||
|
mail_plugins = $mail_plugins fts fts_xapian
|
||||||
|
|
||||||
|
plugin {
|
||||||
|
fts = xapian
|
||||||
|
fts_autoindex = yes
|
||||||
|
fts_enforced = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
service indexer-worker {
|
||||||
|
vsz_limit = 2G
|
||||||
|
process_limit = 0
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
# Do not edit this file. Manage your settings on FreedomBox.
|
||||||
|
|
||||||
|
# Configure full-text search (FTS) for Dovecot.
|
||||||
|
# https://doc.dovecot.org/2.4.1/core/plugins/fts.html
|
||||||
|
# https://github.com/grosjo/fts-xapian
|
||||||
|
|
||||||
|
mail_plugins {
|
||||||
|
fts = yes
|
||||||
|
fts_xapian = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
fts freedombox-xapian {
|
||||||
|
driver = xapian
|
||||||
|
autoindex = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
# For dovecot, at least one language must be specified and one single language
|
||||||
|
# must be flagged as default language. However, this has no impact on FTS Xapian
|
||||||
|
# module.
|
||||||
|
language en {
|
||||||
|
default = yes
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user