grosjo / fts-xapian

Dovecot FTS plugin based on Xapian
GNU Lesser General Public License v2.1
94 stars 20 forks source link

SOLVED: Permission problems after update from 1.4.13 to 1.5.0 #106

Closed lxsinfo closed 2 years ago

lxsinfo commented 2 years ago

Problem was solved by updating to dovecot-fts-xapian-1.5.1...

My fts-xapian broke after upgrading dovecot to 2.13.17_1. (see topic #99) For the time being I disabled dovecot-fts-xapian-1.4.13 and waited for an update. Today I installed dovecot-fts-xapian-1.5.0.

After the upgrade and restart of dovecot I ran "doveadm index -A -q *" and I got the output below. My question, do I need to change something in the config of dovecot or does this indicate something else? Here is the output:

doveadm(_ypldap)<49756>: Error: mkdir(/usr/local/virtual//_ypldap/xapian-indexes) failed: Permission denied (euid=160(_ypldap) egid=160(_ypldap) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(_ypldap)<49756>: Error: FTS Xapian: can not create '/usr/local/virtual//_ypldap/xapian-indexes' doveadm(_ypldap)<49756>: Error: fts: Failed to initialize backend 'xapian': doveadm(_ypldap)<49756>: Error: mkdir(/usr/local/virtual//_ypldap/xapian-indexes) failed: Permission denied (euid=160(_ypldap) egid=160(_ypldap) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(_ypldap)<49756>: Error: FTS Xapian: can not create '/usr/local/virtual//_ypldap/xapian-indexes' doveadm(_ypldap)<49756>: Error: fts: Failed to initialize backend 'xapian': doveadm(_ypldap): Error: mkdir(/usr/local/virtual//_ypldap) failed: Permission denied (euid=160(_ypldap) egid=160(_ypldap) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(_ypldap): Error: mkdir(/usr/local/virtual//_ypldap) failed: Permission denied (euid=160(_ypldap) egid=160(_ypldap) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(hast)<49756>: Error: mkdir(/usr/local/virtual//hast/xapian-indexes) failed: Permission denied (euid=845(hast) egid=845(hast) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(hast)<49756>: Error: FTS Xapian: can not create '/usr/local/virtual//hast/xapian-indexes' doveadm(hast)<49756>: Error: fts: Failed to initialize backend 'xapian': doveadm(hast)<49756>: Error: mkdir(/usr/local/virtual//hast/xapian-indexes) failed: Permission denied (euid=845(hast) egid=845(hast) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(hast)<49756>: Error: FTS Xapian: can not create '/usr/local/virtual//hast/xapian-indexes' doveadm(hast)<49756>: Error: fts: Failed to initialize backend 'xapian': doveadm(hast): Error: mkdir(/usr/local/virtual//hast) failed: Permission denied (euid=845(hast) egid=845(hast) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(hast): Error: mkdir(/usr/local/virtual//hast) failed: Permission denied (euid=845(hast) egid=845(hast) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(tests)<49756>: Error: mkdir(/usr/local/virtual//tests/xapian-indexes) failed: Permission denied (euid=977(tests) egid=977(tests) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(tests)<49756>: Error: FTS Xapian: can not create '/usr/local/virtual//tests/xapian-indexes' doveadm(tests)<49756>: Error: fts: Failed to initialize backend 'xapian': doveadm(tests)<49756>: Error: mkdir(/usr/local/virtual//tests/xapian-indexes) failed: Permission denied (euid=977(tests) egid=977(tests) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(tests)<49756>: Error: FTS Xapian: can not create '/usr/local/virtual//tests/xapian-indexes' doveadm(tests)<49756>: Error: fts: Failed to initialize backend 'xapian': doveadm(tests): Error: mkdir(/usr/local/virtual//tests) failed: Permission denied (euid=977(tests) egid=977(tests) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(tests): Error: mkdir(/usr/local/virtual//tests) failed: Permission denied (euid=977(tests) egid=977(tests) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(nobody)<49756><6H7hIEr7jGFcwgAA29Mqng>: Error: mkdir(/usr/local/virtual//nobody/xapian-indexes) failed: Permission denied (euid=65534(nobody) egid=65534(nobody) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(nobody)<49756><6H7hIEr7jGFcwgAA29Mqng>: Error: FTS Xapian: can not create '/usr/local/virtual//nobody/xapian-indexes' doveadm(nobody)<49756><6H7hIEr7jGFcwgAA29Mqng>: Error: fts: Failed to initialize backend 'xapian': doveadm(nobody)<49756><6H7hIEr7jGFcwgAA29Mqng>: Error: mkdir(/usr/local/virtual//nobody/xapian-indexes) failed: Permission denied (euid=65534(nobody) egid=65534(nobody) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(nobody)<49756><6H7hIEr7jGFcwgAA29Mqng>: Error: FTS Xapian: can not create '/usr/local/virtual//nobody/xapian-indexes' doveadm(nobody)<49756><6H7hIEr7jGFcwgAA29Mqng>: Error: fts: Failed to initialize backend 'xapian': doveadm(nobody): Error: mkdir(/usr/local/virtual//nobody) failed: Permission denied (euid=65534(nobody) egid=65534(nobody) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(nobody): Error: mkdir(/usr/local/virtual//nobody) failed: Permission denied (euid=65534(nobody) egid=65534(nobody) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(git_daemon)<49756>: Error: mkdir(/usr/local/virtual//git_daemon/xapian-indexes) failed: Permission denied (euid=964(git_daemon) egid=964(git_daemon) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(git_daemon)<49756>: Error: FTS Xapian: can not create '/usr/local/virtual//git_daemon/xapian-indexes' doveadm(git_daemon)<49756>: Error: fts: Failed to initialize backend 'xapian': doveadm(git_daemon)<49756>: Error: mkdir(/usr/local/virtual//git_daemon/xapian-indexes) failed: Permission denied (euid=964(git_daemon) egid=964(git_daemon) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(git_daemon)<49756>: Error: FTS Xapian: can not create '/usr/local/virtual//git_daemon/xapian-indexes' doveadm(git_daemon)<49756>: Error: fts: Failed to initialize backend 'xapian': doveadm(git_daemon): Error: mkdir(/usr/local/virtual//git_daemon) failed: Permission denied (euid=964(git_daemon) egid=964(git_daemon) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(git_daemon): Error: mkdir(/usr/local/virtual//git_daemon) failed: Permission denied (euid=964(git_daemon) egid=964(git_daemon) missing +w perm: /usr/local/virtual/, dir owned by 125:125 mode=0755) doveadm(postfix): Panic: file array.c: line 10 (array_idx_modifiable_i): assertion faile

grosjo commented 2 years ago

can you share your dovecot.conf ?

grosjo commented 2 years ago

in the top, I would add mail_gid = 125 mail_uid = 125

lxsinfo commented 2 years ago

I removed my last comment, it had the condig with fts disabled, making a new one.

lxsinfo commented 2 years ago

Adding those does not help. Here is the correct contents of dovecot.conf

2.3.17 (e2aa53df5b): /usr/local/etc/dovecot/dovecot.conf

Pigeonhole version 0.5.17 (054dddfa)

OS: FreeBSD 13.0-RELEASE-p4 amd64 ufs

Hostname: postbus.lxs.biz

auth_verbose = yes disable_plaintext_auth = no first_valid_gid = 125 first_valid_uid = 125 hostname = postbus.lxs.biz lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes mail_access_groups = postfix mail_home = /usr/local/virtual/home/%d/%u/ mail_location = maildir:/usr/local/virtual/%d/%u/ mail_plugins = fts fts_xapian mail_privileged_group = postfix managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mim mbox_write_locks = fcntl metric imap_command { fields = bytes_in bytes_out filter = event=imap_command_finished group_by = cmd_name tagged_reply_state } namespace { inbox = yes location = prefix = INBOX. separator = . type = private } namespace inbox { location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { args = /usr/local/etc/dovecot/dovecot-mysql.conf driver = sql } plugin { fts = xapian fts_autoindex = yes fts_autoindex_exclude = INBOX.Learn+Spam fts_autoindex_exclude2 = INBOX.Learn+Ham fts_autoindex_exclude3 = INBOX.Spam fts_enforced = yes fts_languages = en nl ru fts_xapian = partial=3 full=20 attachments=0 verbose=0 imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_name = INBOX.Spam imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_name = INBOX.Learn Ham plugin = fts fts_xapian sieve = ~/.dovecot.sieve sieve_default = file:/usr/local/etc/dovecot/sieve/default.sieve sieve_dir = /usr/local/virtual/home/%d/%u/sieve sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve sieve_plugins = sieve_imapsieve sieve_extprograms } postmaster_address = alexander@domain.tld protocols = imap pop3 lmtp sieve sendmail_path = /usr/local/sbin/sendmail service auth { executable = /usr/local/libexec/dovecot/auth unix_listener /var/spool/postfix/private/dovecot-auth { group = postfix mode = 0660 user = postfix } } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 } process_min_avail = 5 service_count = 1 vsz_limit = 64 M } service indexer-worker { vsz_limit = 2 G } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } } service managesieve-login { inet_listener sieve { port = 4190 } } service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 } process_min_avail = 5 service_count = 1 vsz_limit = 64 M } ssl_cert = </usr/local/etc/ssl/postbus.lxs.biz.cert.pem ssl_dh = # hidden, use -P to show it ssl_key = # hidden, use -P to show it userdb { args = /usr/local/etc/dovecot/dovecot-mysql.conf driver = sql } userdb { driver = passwd } verbose_proctitle = yes verbose_ssl = yes version_ignore = yes protocol imap { imap_client_workarounds = delay-newmail tb-extra-mailbox-sep mail_plugins = fts fts_xapian imap_sieve fts fts_xapian } protocol sieve { info_log_path = /var/log/dovecot-sieve.log log_path = /var/log/dovecot-sieve-errors.log managesieve_implementation_string = dovecot managesieve_max_line_length = 64 k } protocol lmtp { mail_plugins = fts fts_xapian sieve } protocol lda { mail_plugins = fts fts_xapian sieve }

lxsinfo commented 2 years ago

I also still have this problem that I got after the dovecot upgrade, so I am disabling fts for now again:

Nov 11 12:57:45 postbus dovecot[52247]: lmtp(52315): Connect from local Nov 11 12:57:45 postbus dovecot[52247]: lmtp(chel@domain.tld)<52315>: Panic: file array.c: line 10 (array_idx_modifiable_i): assertion failed: (idx < array->buffer->used / array->element_size) Nov 11 12:57:45 postbus dovecot[52247]: lmtp(chel@domain.tld)<52315>: Fatal: master: service(lmtp): child 52315 killed with signal 6 (core not dumped - https://dovecot.org/bugreport.html#coredumps - set service lmtp { drop_priv_before_exec=yes })

grosjo commented 2 years ago

as mentioned alread,y in the top, I would really add mail_gid = 125 mail_uid = 125

lxsinfo commented 2 years ago

I added these as well now, but it has no effect. (I made a mistake and thought first_valid_gid = 125 and first_valid_uid = 125 were those. But now they are really all there. But I tested again, and it does not change anything.

grosjo commented 2 years ago

ls -al /usr/local/virtual/ ?

lxsinfo commented 2 years ago

total 52 4 drwxr-xr-x 13 postfix postfix 512 Nov 11 11:14 . 4 drwxr-xr-x 17 root wheel 512 Oct 30 14:17 .. 4 drwx------ 10 postfix postfix 512 Nov 2 13:39 antares.bz 4 drwx------ 3 postfix postfix 512 Oct 30 21:54 aromaspa.ru 4 drwx------ 8 postfix postfix 512 Oct 31 23:20 beauty-online.ru 4 drwxr-xr-x 6 postfix postfix 512 Nov 6 23:20 home 4 drwx------ 4 postfix postfix 512 Oct 29 21:55 lemongrass-house.ru 4 drwx------ 25 postfix postfix 1024 Nov 1 13:49 lemongrasshouse.ru 4 drwx------ 3 postfix postfix 512 Nov 2 15:37 lxs.info 4 drwx------ 3 postfix postfix 512 Nov 11 15:58 postfix 4 drwx------ 3 postfix postfix 512 Nov 2 14:18 spa-delight.com 4 drwx------ 7 postfix postfix 512 Nov 2 13:41 stienstra.bz 4 drwx------ 6 postfix postfix 512 Oct 31 23:27 stienstra.ru

grosjo commented 2 years ago

replace "125" by postfix

lxsinfo commented 2 years ago

I have this now: first_valid_gid = 125 first_valid_uid = 125 mail_gid = postfix mail_uid = postfix

For the first two I was not allowed to put a non-numerical. (dovecot gave this message: line 6: Invalid number postfix: Not a valid number)

But with this change the error staid the same.

lxsinfo commented 2 years ago

The problem is solved after the update to dovecot-fts-xapian-1.5.1.