fts_solr not working

Aki Tuomi aki.tuomi at dovecot.fi
Mon Jun 27 06:32:11 UTC 2016



On 26.06.2016 21:56, Jeff Gamsby wrote:
> On 2016-06-23 11:24, aki.tuomi at dovecot.fi wrote:
>>> On June 23, 2016 at 9:06 PM Jeff Gamsby <jeffgamsby at merlock.com> wrote:
>>>
>>>
>>> I am running ISPConfig 3 on Debian and have managed to install the
>>> dovecot-solr and dovecot-fts plugins.
>>>
>>> I have solr running undet tomcat at http://localhost:8880 but the
>>> indexing is not working.
>>>
>>> I am using Dovecot 2.17
>>>
>>> I do not understand namespaces and why fts_solr needs them, I just want
>>> to index the entire users Maildir.
>>>
>>> I am trying to index a users mailbox but am getting the following
>>> error:
>>>
>>> (changed user name)
>>> doveadm fts rescan -u user at user.com inbox
>>> doveadm(user at user.com): Error: Namespace prefix not found: inbox
>>>
>>> running that in debig mode gives:
>>>
>>> doveadm(root): Debug: Loading modules from directory:
>>> /usr/lib/dovecot/modules
>>> doveadm(root): Debug: Module loaded:
>>> /usr/lib/dovecot/modules/lib20_fts_plugin.so
>>> doveadm(root): Debug: Module loaded:
>>> /usr/lib/dovecot/modules/lib21_fts_solr_plugin.so
>>> doveadm(root): Debug: Loading modules from directory:
>>> /usr/lib/dovecot/modules/doveadm
>>> doveadm(root): Debug: Skipping module doveadm_acl_plugin, because
>>> dlopen() failed:
>>> /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined
>>> symbol: acl_user_module (this is usually intentional, so just ignore
>>> this message)
>>> doveadm(root): Debug: Skipping module doveadm_expire_plugin, because
>>> dlopen() failed:
>>> /usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so:
>>> undefined symbol: expire_set_deinit (this is usually intentional, so
>>> just ignore this message)
>>> doveadm(root): Debug: Skipping module doveadm_quota_plugin, because
>>> dlopen() failed:
>>> /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so:
>>> undefined symbol: quota_user_module (this is usually intentional, so
>>> just ignore this message)
>>> doveadm(root): Debug: Skipping module doveadm_zlib_plugin, because
>>> dlopen() failed:
>>> /usr/lib/dovecot/modules/doveadm/lib10_doveadm_zlib_plugin.so:
>>> undefined
>>> symbol: i_stream_create_deflate (this is usually intentional, so just
>>> ignore this message)
>>> doveadm(root): Debug: Module loaded:
>>> /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so
>>> doveadm(user at user.com): Debug: Added userdb setting:
>>> mail=maildir:/var/vmail/user.com/user/Maildir
>>> doveadm(user at user.com): Debug: Added userdb setting:
>>> plugin/quota_rule=*:storage=0B
>>> doveadm(user at user.com): Debug: Added userdb setting:
>>> plugin/sieve=/var/vmail/user.com/user/.sieve
>>> doveadm(user at user.com): Debug: Effective uid=5000, gid=5000,
>>> home=/var/vmail/user.com/user
>>> doveadm(user at user.com): Debug: Namespace inbox: type=private, prefix=,
>>> sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes
>>> location=maildir:/var/vmail/user.com/user/Maildir
>>> doveadm(user at user.com): Debug: maildir++:
>>> root=/var/vmail/user.com/user/Maildir, index=, control=,
>>> inbox=/var/vmail/user.com/user/Maildir, alt=
>>> doveadm(user at user.com): Debug: fts: No fts setting - plugin disabled
>>> doveadm(user at user.com): Error: Namespace prefix not found: inbox
>>>
>>> in conf.d/10-mail.conf I have this namespace defined:
>>>
>>> namespace inbox {
>>>    # Namespace type: private, shared or public
>>>    #type = private
>>>
>>>    # Hierarchy separator to use. You should use the same separator for
>>> all
>>>    # namespaces or some clients get confused. '/' is usually a good
>>> one.
>>>    # The default however depends on the underlying mail storage format.
>>>    #separator =
>>>
>>>    # Prefix required to access this namespace. This needs to be
>>> different
>>> for
>>>    # all namespaces. For example "Public/".
>>>    #prefix =
>>>
>>>    # Physical location of the mailbox. This is in same format as
>>>    # mail_location, which is also the default for it.
>>>    #location =
>>>
>>>    # There can be only one INBOX, and this setting defines which
>>> namespace
>>>    # has it.
>>>    inbox = yes
>>>
>>>    # If namespace is hidden, it's not advertised to clients via
>>> NAMESPACE
>>>    # extension. You'll most likely also want to set list=no. This is
>>> mostly
>>>    # useful when converting from another server with different
>>> namespaces
>>> which
>>>    # you want to deprecate but still keep working. For example you can
>>> create
>>>    # hidden namespaces with prefixes "~/mail/", "~%u/mail/" and
>>> "mail/".
>>>    #hidden = no
>>> protocol imap {
>>>    plugin {
>>>      fts = solr
>>>      fts_solr = break-imap-search url=http://localhost:8880/solr/
>>>    }
>>> }
>>> protocol pop3 {
>>>    plugin {
>>>      fts = solr
>>>      fts_solr = break-imap-search url=http://localhost:8880/solr/
>>>    }
>>>
>>>    # Show the mailboxes under this namespace with LIST command. This
>>> makes the
>>>    # namespace visible for clients that don't support NAMESPACE
>>> extension.
>>>    # "children" value lists child mailboxes, but hides the namespace
>>> prefix.
>>>    #list = yes
>>>
>>>    # Namespace handles its own subscriptions. If set to "no", the
>>> parent
>>>    # namespace handles them (empty prefix should always have this as
>>> "yes")
>>>    #subscriptions = yes
>>> }
>>>
>>>
>>> I had to put this in dovecot.conf in order for the plugin to be
>>> enabled:
>>>
>>> mail_plugins = fts fts_solr
>>>
>>> solr is reachable at localhost:8880/solr and appears to be working.
>>>
>>> Please help, any suggestions are welcome
>>>
>>> Thanks
>>
>> Can you please send doveconf -n?
>> ---
>> Aki Tuomi
>
>
> I managed to get fts_slor working and now I can index mailboxes, but I
> am getting a solr error and cannot use the indexes that were created
>
> I get:
>
> Error: fts_solr: Lookup failed: Internal Server Error
>
You have checked SOLR logs right? That error I think is coming from the
solr server, not dovecot.

Aki


More information about the dovecot mailing list