OK...I have made some progress with this. Looking through the SOLR logs, the query that IMAP is sending has “user:FULL-EMAIL-ADDRESS” whereas the doveadm search has “user:USERNAME”. The indexing was done using just the username.

 

Is there a way to change the IMAP search command username to match the username used to login?

 

This is further complicated by the fts automatic update setting: it seems to use the domain-less username when updating SOLR.

 

Something to ensure a consistent username for indexing would be great.

 

-

 

From: Philip Warner
Sent: Monday, 19 September 2022 10:30 PM
To: dovecot@dovecot.org
Subject: doveadm-search finds emails, but IMAP search fails to find any

 

Using dovecot 2.3.7.2 with solr 8.11.2 when I do:

doveadm search -u user mailbox INBOX subject "something"

I get multiple mail ID's.

When I start a manual IMAP session and login as that user, select INBOX, and try the command:

. search subject "something"

It returns zero mail ID's; this is consistent across all searches using IMAP - no results returned, no matter what I search for in IMAP.

The dovecot -n command returns:

# 2.3.7.2 (3c910f64b): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.7.2 ()
# OS: Linux 5.4.0-125-generic x86_64 Ubuntu 20.04.5 LTS
# Hostname: WITHELD
mail_location = maildir:~/Mail
mail_plugins = " fts fts_solr virtual"
mail_privileged_group = mail
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 mime foreverypart extracttext
namespace {
  location = virtual:~/Mail/virtual
  prefix = virtual.
  separator = .
}
namespace inbox {
  inbox = yes
  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
  }
  mailbox virtual.All {
    comment = All my messages
    special_use = \All
  }
  prefix =
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
passdb {
  driver = pam
}
plugin {
  fts = solr
  fts_autoindex = yes
  fts_enforced = yes
  fts_solr = url=http://localhost:8983/solr/dovecot/
  sieve = file:~/sieve;active=~/.dovecot.sieve
}
protocols = " imap lmtp sieve pop3 sieve"
service imap {
  vsz_limit = 4 G
}
service index-worker {
  vsz_limit = 2 G
}
service indexer-worker {
  vsz_limit = 2 G
}
service lmtp {
  inet_listener lmtp {
    address = 127.0.0.1
    port = 24
  }
}
ssl_cert = </etc/letsencrypt/live/WITHELD/fullchain.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
userdb {
  driver = passwd
}
protocol lmtp {
  mail_plugins = " fts fts_solr virtual sieve"
  postmaster_address = WITHELD
}
protocol lda {
  mail_plugins = " fts fts_solr virtual sieve"
}
protocol imap {
  mail_max_userip_connections = 40
}

 

 

-