TIMSIEVED(8)

πŸ’Œ TIMSIEVED(8) β€” the Cyrus IMAP girlies' guide

okay so bestie, we're in the timsieved page from Cyrus IMAP documentation, and it's literally the CMU hack for getting sieve scripts onto the server. yes, a hack. iconic behavior from the 90s fr fr. πŸ’…


✨ SYNOPSIS ✨

timsieved [ -C config-file ] [ -H ]

that's it. that's the whole vibe. two flags. low maintenance queen. πŸŽ€


πŸ¦‹ DESCRIPTION πŸ¦‹

so timsieved is a server that lets users remotely manage their sieve scripts that live on the server. she takes commands on her standard input and answers back on her standard output β€” very much a "you talk, I talk" communication style, no cap. 🫢

⚠️ and listen, this part is not optional: she MUST be invoked by master(8) with those descriptors attached to a remote client connection. not "should", not "ideally", MUST. she does not do solo debuts. πŸ‘‘

and the tea for the admins: Cyrus admins who authenticate and authorize as themselves (like, e.g. they don't proxy) get to manage global scripts. main character admin energy, honestly.

timsieved reads her configuration options out of the imapd.conf(5) file, unless you say otherwise with -C. ✨


🌸 OPTIONS 🌸

  • -C config-file β€” use the specified configuration file config-file rather than the default imapd.conf(5). your config, your rules, we love a customizable queen. πŸ’–
  • -H β€” tell timsievedd to expect a HAProxy protocol header from the sender. (yes the manpage says timsievedd with two d's, we're not fixing it, we're honoring it, it's part of the lore πŸ’€)

πŸ“ EXAMPLES πŸ“

timsieved is commonly included in the SERVICES section of cyrus.conf(5) like so β€” and honestly, look at this whole services roster, it's giving full ensemble cast:

SERVICES {
    imap        cmd="imapd -U 30" listen="imap" prefork=0
    imaps       cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
    pop3        cmd="pop3d -U 30" listen="pop3" prefork=0
    pop3s       cmd="pop3d -s -U 30" listen="pop3s" 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
}

see that sieve line? that's her. that's the moment. prefork=0 because she's not about that pre-forking life. πŸ’…


πŸ“ FILES πŸ“

  • /etc/imapd.conf
  • /etc/cyrus.conf

the two homes she actually lives in. 🏑


πŸ‘€ SEE ALSO πŸ‘€

the friend group. iykyk. 🌈


πŸ’œ AUTHOR πŸ’œ

The Cyrus Team, David Carter (dpc22@cam.ac.uk), Ken Murchison (ken@oceana.com), Nic Bernstein (Onlight) β€” legends, all of them, the way they built this whole thing. πŸ‘‘


1993–2026, The Cyrus Team


so yeah bestie, that's timsieved πŸ’– version 3.12.3, dated Jul 15, 2026 β€” and yes she's still going strong, from 1993 to 2026, that's a longevity slay if i've ever seen one. go manage those sieve scripts, you absolute icon. periodt. βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from