MASTER(8)

✨ NAME ✨

okay bestie, buckle up πŸ’– this page is master β€” it's Cyrus IMAP documentation, and lowkey it's about the Cyrus IMAP master process. That's the whole vibe. She's the momager of the whole operation πŸ‘‘


🌸 SYNOPSIS 🌸

master [ -C config-file ] [ -M alternate cyrus.conf ]
    [ -l listen queue ] [ -p pidfile ] [ -r ready_file ]
    [ -j janitor period ] [ -d | -D ] [ -L logfile ]

πŸ¦‹ DESCRIPTION πŸ¦‹

So like. master is the process. The one that controls all of the Cyrus processes 🫢 It's out here creating every single imapd, pop3d, lmtpd and timsieved child process. She's literally giving birth every day, no cap.

And on top of that? She also does the scheduled cleanup/maintenance. Main character energy who also does her own chores πŸ’…

bestie listen: if this process dies, then no new sessions will be started. That's it. That's the whole thing. She's the lynchpin 😭

When she receives a SIGTERM, she kills herself and all her child processes. Dramatic? Maybe. Necessary? Absolutely.

And she reads her configuration options out of the imapd.conf(5) file β€” unless you specify otherwise with -C. iykyk ✨


πŸ’… OPTIONS πŸ’…

  • -C alternate imapd.conf β€” Use the specified configuration file config-file rather than the default imapd.conf(5). Your config, your rules, periodt.
  • -M alternate cyrus.conf β€” Specifies an alternate cyrus.conf for use by master. Swapping the whole vibe out πŸŽ€
  • -l listen queue backlog β€” Increase the listen queue backlog. By default, the listen queue is set to 32. On systems with a high connection rate, it may be desirable to increase this value. refer to listen(2) for details. Bestie if you've got a lot of incoming, this is your girl πŸ”₯
  • -j janitor full-sweeps per second β€” Sets the number of times per second the janitor should sweep the entire child table. Leave it at the default of 1 unless you have a really high fork rate (and you have not increased the child hash table size when you compiled Cyrus from its default of 10000 entries). Like… don't touch this unless you know, fr fr πŸ™ˆ
  • -p pidfile β€” Use pidfile as the pidfile. If not specified, defaults to master_pid_file from imapd.conf(5), which defaults to {configdirectory}/master.pid πŸ“
  • -r ready_file β€” Use ready_file as the ready file. If not specified, uses master_ready_file from imapd.conf(5), which defaults to {configdirectory}/master.ready 🌟
  • -d β€” Start in daemon mode (run in background and disconnect from controlling terminal). She's going ✈️ ghost mode.
  • -D β€” Don't close stdin/stdout/stderr. Primarily useful for debugging. Note that -d and -D cannot be used together; consider using -L instead. Not me picking two options that literally fight πŸ’€
  • -L logfile β€” Redirect stdout and stderr to the given logfile. Catching all the receipts 🧾

🌈 CONFIGURATION 🌈

Upon execution, master reads her configuration information out of the cyrus.conf(5) file β€” or an alternative if -M is used. Options, bestie. Options πŸ’–

master reseads her configuration file when she receives a hangup signal, SIGHUP. Services and events may be added, deleted or modified when the configuration file is reread. Any active services removed from the configuration file will be allowed to run until completion. Services added or modified to listen on a privileged port may not be able to bind the port, depending on your system configuration. In this case a full restart is needed. Ma'am. Ma'am, please 😭

master propagates the hangup signal, SIGHUP, to all her child service processes, so that they stop waiting for incoming connections and exit, allowing them to be recycled. This is useful to make services take into account a new version of the imapd.conf(5) file. Children that are servicing a client connection when SIGHUP is received are allowed to run until the client logouts before being recycled. It may take a long time until the client logouts, so a log message is generated for processes that have not been recycled within 30s. So you'll know. The logs will tell you 🫢


⭐ NOTES ⭐

The environment variable CYRUS_VERBOSE can be set to log additional debugging information. Setting the value to 1 results in base level logging. Setting it higher results in more log messages being generated. Turn it up and she'll tell you everything 🌸

The cyr_info(8) utility's proc subcommand can be used to list the active processes that master is managing. Peek at the whole squad πŸ‘‘


πŸŽ€ FILES πŸŽ€

  • /etc/cyrus.conf
  • /etc/imapd.conf
  • /var/run/master.pid

πŸ”₯ SEE ALSO πŸ”₯

cyrus.conf(5), imapd.conf(5), imapd(8), pop3d(8), lmtpd(8), timsieved(8), idled(8), cyr_info(8)

Go read the family, bestie, they're all connected πŸ’œ


πŸ’– AUTHOR πŸ’–

The Cyrus Team, Nic Bernstein (Onlight)

1993–2026, The Cyrus Team


and that's a wrap on MASTER(8) πŸ¦‹ version 3.12.3, dated Jul 15, 2026, shipped from Cyrus IMAP β€” love that for us, slay, go start your daemon bestie πŸ’…βœ¨

πŸ“¦ where this page comes from