MUPDATE(8)

πŸ’– MUPDATE(8) πŸ’–

okay bestie, welcome to the mupdate page β€” this is part of the Cyrus IMAP documentation, and it's all about the MUPDATE server process. yes she's the main character of the whole mailboxdb aggregation situation. let's get into it 🫢


✨ NAME ✨

mupdate β€” Cyrus IMAP documentation

MUPDATE server process πŸ‘‘


🌸 SYNOPSIS 🌸

mupdate [ -C config-file ] [ -m ] [ -a ]

πŸ¦‹ DESCRIPTION πŸ¦‹

so mupdate is the mailboxdb aggregation server. it takes commands on its standard input and it answers back on its standard output. periodt. πŸ’…

it MUST be invoked by master(8) with those descriptors attached to a remote client connection. like, that's not a suggestion, that's the vibe check and you have to pass it. 🚨

mupdate reads its configuration options out of the imapd.conf(5) file, unless you tell it otherwise with -C.

and okay this part is kind of iconic: if the directory log/user exists under the directory specified in the configdirectory configuration option, then mupdate will create protocol telemetry logs for sessions authenticating as user. ✨

those telemetry logs get stored in the log/user directory with a filename of the mupdate process-id. so cute, so organized. πŸŽ€


πŸ’… OPTIONS πŸ’…

  • -C config-file β€” use the specified configuration file config-file instead of the default imapd.conf(5). you're basically telling her "no bestie, read this one." πŸ“„
  • -m β€” run as the MUPDATE master. the default is to act as slave, so this is the glow-up flag. πŸ‘‘
  • -a β€” [autoselect] check the mupdate_server setting in imapd.conf(5) to see if this is the designated master server, and act as master if that's the case. otherwise act as slave. she'll figure out her own role, she's self-aware like that. 🌈

πŸ”₯ EXAMPLES πŸ”₯

mupdate is commonly included in the SERVICES section of cyrus.conf(5), like so:

SERVICES {
    imap        cmd="imapd -U 30" listen="imap" prefork=0
    imaps       cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
    lmtpunix    cmd="lmtpd" listen="/var/run/cyrus/socket/lmtp" prefork=0 maxchild=20
    sieve       cmd="timsieved" listen="sieve" prefork=0
    notify      cmd="notifyd" listen="/var/run/cyrus/socket/notify" proto="udp" prefork=1
    httpd       cmd="httpd" listen=8080 prefork=1 maxchild=20
    # (mupdate master, only one in the entire cluster)
    mupdate     cmd="mupdate -m" listen="mupdate" prefork=1
    #
    # (mupdate slave, run on each frontend host in the cluster)
    # mupdate     cmd="mupdate" listen="mupdate" prefork=1
}
ngl the comments in there are doing the most helpful heavy lifting β€” mupdate master, only one in the entire cluster and mupdate slave, run on each frontend host in the cluster. read them twice. iykyk. πŸ™ˆ

πŸ“ FILES πŸ“

  • /etc/imapd.conf

⭐ SEE ALSO ⭐


πŸ’œ AUTHOR πŸ’œ

The Cyrus Team, Nic Bernstein (Onlight)


1993–2026, The Cyrus Team


and that's the whole page bestie, you ate it up fr fr 🫢✨ this was Cyrus IMAP version 3.12.4, dated Sep 09, 2026 β€” mwah, go forth and aggregate those mailboxes πŸ’–πŸŽ€

πŸ“¦ where this page comes from