• Home
  • Download
  • Contribute
  • Support

Cyrus IMAP

Cyrus IMAP

Welcome to Cyrus

  • Introduction to Cyrus IMAP
    • What is IMAP?
  • IMAP Features
    • Security and Authentication
      • Kerberos Authentication
      • LDAP Authentication
      • SQL Authentication
        • Pre-requisites
        • Database structure
        • PAM configuration for use with saslauthd
        • Testing the SASL configuration
        • Create the test mailboxes within Cyrus
        • Testing everything together
      • Access Control
        • Discretionary Access Control
      • Sealed System Design
    • Mailbox Management
      • Automatic Creation of Mailboxes
        • Autocreation of mailboxes
        • Automatic quota settings
        • Autocreation of Sieve scripts
        • Automated folder subscriptions
        • Autocreation of users
      • Mailbox Namespaces
        • Namespace Convention: netnews
        • Namespace Convention: “not netnews”
        • Alternate Namespace
        • Internal Namespace
        • Administrator Namespaces
        • Personal Namespace
        • Other Users Namespace
        • Shared Namespaces
      • Mailbox Annotations (METADATA)
      • Mailbox Distribution
        • Partition Selection Mode
        • Backend Selection Mode (Cyrus IMAP Murder)
    • Message Management
      • Delayed Delete
        • Configuring Cyrus IMAP for Delayed Delete
      • Delayed Expunge
        • Configuring Cyrus IMAP for Delayed Expunge
      • Message Annotations (METADATA)
      • Duplicate Message Delivery Suppression
      • Shared Seen State
      • Server Side Filtering (Sieve)
      • Event Notifications
        • Available Event Notifications
        • Example Event Notifications
    • Storage
      • Mail Spool Partitions
        • Storage Tiering with Partitions
        • Restricting Storage Used with Partitions
      • Mailbox Metadata Partitions
      • Quota
      • Single-Instance Store
    • Load Management
      • Cyrus IMAP Murder (Server Aggregation)
        • Use-Cases for the Cyrus IMAP Murder
        • Cyrus IMAP Murder Topologies
  • Support
    • Reporting Bugs
    • Mailing Lists
    • Online Meetings
  • About
    • What is Cyrus
      • What is Cyrus
      • What is IMAP?
      • IMAP Version 4 (IMAP4)
      • Mime
      • SMTP
    • Who Is Cyrus
      • Core Contributors
      • Individual contributors and past contributors
    • Cyrus Roadmap
      • High Level Roadmap
        • 2.6 (Future)
        • 2.5
        • 2.4.x
        • 2.2.x and 2.3.x
        • pre 2.2
    • Cyrus History
    • Cyrus Bylaws
      • I. The Cyrus Governance Board
      • II. The Cyrus Core Developers Group
      • III. The Release Engineer
      • IV. The Cyrus Roadmap
      • V. Development Process
      • VI. Changes to the Bylaws

Administrators

  • IMAP Installation Guide
    • Installation Using Packages
      • CentOS
        • Other Versions of Cyrus IMAP
      • Debian
      • Fedora
        • Other Versions of Cyrus IMAP
      • openSUSE
      • Red Hat Enterprise Linux
        • Other Versions of Cyrus IMAP
      • Ubuntu
      • Open Build System Packages
        • 2.5 Series
        • 2.4 Series
    • Build and Install Yourself
      • Do It Yourself
        • From GIT
        • From Tarball
        • Build Dependencies
        • Configure the Build
    • External Tools
    • Licensing
  • IMAP Configuration Guide
    • A Guide to Planning a Cyrus IMAP Deployment
    • Contents
      • Overview and Concepts
        • Cyrus IMAP
        • Cyrus IMAP Features
        • Initial ACLs for Newly Created Mailboxes
        • Login Authentication
        • Quota
      • HTML Block that was commented out in XML
        • Partitions
      • Deployment Scenarios
        • Single Server Deployments
        • Multi Server Deployments
      • Cyrus IMAP Murder
        • The Discrete Murder
        • The Unified Murder
        • The Shared Murder
      • Cyrus Replication
      • Hosted Environments
      • Mailbox Creation Distribution
      • Mailbox Creation Distribution
        • Selection Mode
      • Usage convergence
      • Computed weight
      • Special cases
        • What happens when two partitions are equal as most fitting?
        • What happens when two partitions point to the same device?
        • Partitions Exclusion
        • Partitions Usage Data Reset
      • Mailbox Creation Distribution Through murder frontend
        • Selection Mode
        • Available Selection Modes on Frontend
      • Backends Exclusion
      • Backends Usage Data Reset
      • Known Protocol Limitations
        • POP3 and Mailbox Locking
        • Cyrus IMAP POP3 Implementation
      • Authentication and Authorization
        • Client Authentication
        • Users and Mailboxes
      • Performance Recommendations
        • Databases on Temporary Filesystems
      • Storage Considerations
        • General Notes on Storage
        • Redundancy
        • Availability
        • Performance
        • Scalability
        • Capacity
        • Cost
      • Supported Platforms and System Requirements
        • Building Cyrus IMAP
        • Required Software Components
        • Recommended Software Components
        • Recommended Software Components Enabled by Default
  • IMAP Administrator Guide
    • Overview
      • System Architecture
        • High Level Architecture
        • Cyrus Murder
        • Replication
        • Invoking Cyrus
    • Management
      • Cyrus Murder
        • Cyrus Murder: Concepts
        • Cyrus Murder: Installation and Administration
        • Cyrus Murder Mupdate Details
        • Cyrus Murder Failure Modes
        • Cyrus Murder Mail Delivery
      • Access Control
        • Combining Access Rights
        • Access Control Defaults
        • Access Control Lists Rights Reference
        • Discretionary Access Control
      • Cyrus NNTP
        • Overview
        • NNTP Setup
        • Defining Newsgroups
        • Configuration
        • Further information
      • Cyrus Prot Layer
        • Events
      • Cyrus Sieve
        • Introduction
        • Installing Sieve
        • Managing Sieve Scripts
        • Testing the sieve server
        • Cyrus Sieve Support
        • Writing Sieve
      • Standard Operating Procedures
        • Replication: Installation and Administration
        • Mailbox Operations
        • Reloading Cyrus IMAP Services
        • Alternative Namespace
        • Database Conversion, Export and Import
        • Deleting and Undeleting Messages and Folders
        • Cyrus Virtual Domains
        • Running Cyrus IMAP Services on Non-Standard Ports
        • Reconstructing Mailboxes
        • Using Squatter for Faster IMAP SEARCH
        • Splitting Metadata from Partitions
        • Managing user_deny.db
      • Cyrus Event Source
        • Overview
        • Compile options
        • Configuration options
        • Event Types
        • Accessing events
        • Apple Push Service
      • Mailbox Distribution
        • Selection Modes
        • Special cases
        • Application
      • HOWTO: Using an NGINX IMAP Proxy
      • Tweaking Cyrus IMAP
        • Storage Tiering
        • Synchronous File Operations
    • References
      • Administrative Commands & Utilities
        • List of Configuration Files, Formats and Settings
        • List of System Command-line Utilities
        • List of User Command-line Utilities
        • Work-in-Progress
      • PyCyrus Commands & Utilities
        • undelete-mailbox
      • Tools & Utilities
        • arbitron
        • arbitronsort.pl
        • chk_cyrus
        • convert-sieve.pl
        • ctl_cyrusdb
        • ctl_deliver
        • ctl_mboxlist
        • cvt_cyrusdb
        • cvt_cyrusdb_all
        • cyr_dbtool
        • cyr_df
        • cyrdump
        • cyr_expire
        • fetchnews
        • cyr_sequence
        • cyr_synclog
        • cyr_userseen
        • masssievec
        • mbexamine
        • mbpath
        • migrate-metadata
        • mkimap
        • mknewsgroups
        • rehash
        • translatesieve
        • undohash
        • upgradesieve
      • Access Control Lists Rights Reference
    • Other
      • Notes for Packagers
        • Services in /etc/services
  • IMAP Frequently Asked Questions
    • Features
      • Which database backend should I use for which databases?
      • Duplicate Delivery Suppression
    • Installation Problems
      • Compilation errors about kssl.h and krb5.h on Red Hat Linux/Fedora
      • Problems detecting Berkley DB on Red Hat Linux
      • Help! There must be an easier way to get all this going…
    • Common Feature Requests
      • Does the Cyrus Murder support High Availability configurations?
      • Can I configure pop3d to log amount and size of messages fetched by user?
      • How can I make CyrusSieve work with public shared folders?
      • Can I have subfolders not appear under INBOX?
    • Common Operational Questions
      • How do I view ACLs on a mailbox?
      • What annotations are available?
      • Why does ctl_cyrusdb -r take so long with Berkeley DB?
      • Is it safe to put configdir/proc and configdir/lock on a tmpfs filesystem?
      • Is the “db3: x Lockers” log message harmful?
      • Why can I not delete a mailbox as an admin user?
      • When is What … Deleted, Expired, Expunged or Purged?
        • Users and IMAP Clients Deleting Messages
        • Deleting Folders
        • Where are the Messages?
      • Why is deliver.db so large?
      • I have multiple imapd-SERVICES configured and experience occasional freezes when I try to log in!
      • Cyrus delivers claims that the mailbox does not exist
      • Why is mail being rejected with No Mailbox found due to MiXed CaSe incoming e-mail?
      • Can I use MySQL (or another SQL database) as the primary mail store?
      • Why do POP3 connections take so long, but once the connection is established all is well?
      • Why does reconstruct -m not work?
      • Shared File Systems GPFS for high availability
      • How to enable telemetry
      • The process count keeps growing!
        • 1. Reuse count
        • 2. Maximum child count
        • 3. Clean up connections that are no longer in use
      • “unable to join environment” error
      • Why does Cyrus set the MAIL FROM address of the sender of vacation responses to ‘<>’?
    • Common Interoperability Problems
      • Why does Cyrus reject 8-bit characters in the headers of my messages?
      • Why does Cyrus reject messages with “bare newlines”?
      • How do I get Cyrus Sieve to play nice with Exim?
      • Why does mail delivery go slow or hang sometimes?
  • IMAP Release Notes
    • Currently Stable Version
    • Current Development Version
    • Currently Supported Product Series
      • Series 2.5
        • Cyrus IMAP 2.5 Releases
      • Series 2.4
        • Cyrus IMAP 2.4 Releases
        • Cyrus IMAP 2.4-caldav Releases
    • All Versions Going Back Way Back When
      • Series 1
        • Cyrus IMAP 1.x Release Notes
      • Series 2: 2.0 - 2.3
        • Cyrus IMAP 2.0.x Release Notes
        • Cyrus IMAP 2.1.x Release Notes
        • Cyrus IMAP 2.2.x Release Notes
        • Cyrus IMAP 2.3 Releases

Developers

  • Contribute
    • Contribute Financially
    • Website Content Contributions
    • Contribute Code
  • IMAP Developer Guide
    • Getting Started
      • Overview of Cyrus development environment
        • The pre-requisites
        • The components
      • Developer Environment Installation
        • Cyrus
        • Arcanist
        • Setting up syslog
      • Running a basic server
        • 1. Update your system
        • 2. Install Cyrus 3rd party dependencies
        • 3. The cyrus:mail user
        • 4. Setting up authentication with SASL
        • 5. Enabling mail delivery with LMTP
        • 6. Protocol ports
        • 7. Configuring Cyrus
        • 8. Launch Cyrus
        • Optional: Setting up SSL certificates
        • Sending a test email
        • Checking carddav
        • Checking caldav
        • Troubleshooting
      • Developer Test Environment
        • Installing Cassandane
        • Rebuild Cyrus for Testing
        • Running the tests
        • Tips and Tricks
      • Development Process
        • Coding Style
        • Making changes
        • Useful Developer Information
        • Community Participation
      • System Architecture
        • High Level Architecture
        • Cyrus Murder
        • Replication
        • Invoking Cyrus
      • JMAP support
        • Cyrus administration
        • JMAP client
        • JMAP implementation in Cyrus
      • Contributing to documentation
        • Overview
        • Documentation Tools
        • Checking the files
        • Submitting updates
        • Special Tags
        • Conventions: Man Pages
    • Resources
      • Developer Libraries
        • List of Libraries
      • Docker Images
        • Quick Notes
        • Environment Variables
        • Running the Tests Yourself
        • Getting an Interactive Shell
        • Functions for Your Convenience
        • Build Process Steps
    • Continuous Integration
      • Error Message: Step pre-configure fails on (…)
      • Error Message: Step configure fails on (…)
      • Error Message: Step make fails on (…)
      • Error Message: Step make-check fails on (…)

Cyrus SASL

  • SASL Getting Started
    • SASL
    • SASL Authentication Mechanisms
    • Security Layers
    • Channel Binding
    • Realms
    • Protocols
    • Cyrus SASL
    • The Glue Library
    • Auxiliary Properties
    • Plugins
  • SASL Auxiliary Properties
    • Auxiliary Properties and the Glue Layer
    • Passwords and other Data
    • sasldb
    • ldapdb
    • sql
    • User Canonicalization
  • SASL Authentication Mechanisms
    • EXTERNAL
    • ANONYMOUS
    • PLAIN
    • LOGIN
    • CRAM-MD5
    • DIGEST-MD5
    • SCRAM-SHA-1
    • GSSAPI
    • GS2-KRB5
    • GS2-IAKERB
    • NTLM
    • SRP
    • PSSDSS
    • OTP
    • Non-SASL Authentication
  • SASL Pwcheck
    • Auxprop
    • Auxprop-hashed
    • Saslauthd
    • Authdaemon
    • Alwaystrue
    • Auto Transition
  • SASL Frequently Asked Questions
    • What is the difference between an Authorization ID and a Authentication ID?
    • Why do CRAM-MD5 and DIGEST-MD5 not work with CyrusSaslauthd?
    • How do I configure OpenLDAP +SASL+GSSAPI?
    • Why does CyrusSasl store plaintext passwords in its databases?
    • Why am I having a problem running dbconverter-2 to upgrade from SASLv1 to SASLv2?
 
Cyrus IMAP
  • Docs v2.5.17 »
  • IMAP Administrator Guide »
  • Standard Operating Procedures »
  • Using Squatter for Faster IMAP SEARCH
  • Edit on GitHub

Using Squatter for Faster IMAP SEARCH¶

IMAP SEARCH, as described in RFC 3501, is a IMAP4 (Rev1) command issued by the client, but executed on the server. The Cyrus IMAP server will search the mailbox for the content matching the search command issued. This may be an intensive operation if executed on large mailboxes, and may therefor delay the response to the client.

To significantly speed up the searching, Cyrus IMAP can create a cache of message contents and meta-data using cyrus-squatter(8). This chapter explains how to generate and maintain these caches.

Squatter Invocation¶

Consider the following implications of running cyrus-squatter;

  • Squatter creates the search index from all messages in the mailbox

Generating the Search Indexes¶

To generate the search index for all mailboxes, issue the following command:

$ squatter -v

While the Cyrus IMAP server now has the search index available for the mailbox contents, it does not automatically update the search index with new messages coming in.

Next Previous

© Copyright 1993-2017, The Cyrus Team.

Built with Sphinx 5.3.0 using a modified Read the Docs theme.