DELIVER(8)

πŸ’Œ DELIVER(8) β€” the Cyrus IMAP glow-up edition ✨

okay bestie, sit down, hydrate, because we're about to talk about deliver, one of the Cyrus IMAP girlies. This is the Cyrus IMAP docs page for it. She's an 8th-section command (so like, sysadmin territory, main character energy but for mail servers), and she is literally the one who takes a message and puts it in the right mailbox. No cap. πŸŽ€


✨ NAME ✨

deliver β€” Cyrus IMAP documentation

intro πŸ’…


🌸 SYNOPSIS 🌸

deliver [ -C config-file ] [ -d ] [ -r address ]
       [ -f address ] [ -m mailbox ] [ -a auth-id ]
       [ -q ] [ userid ]...
deliver [ -C config-file ] -l

πŸ¦‹ DESCRIPTION πŸ¦‹

So here's the vibe: deliver reads a message straight off standard input and delivers it to one or more IMAP mailboxes. That's it. That's her job. She eats from stdin and feeds mailboxes. πŸ“

And she pulls her configuration options out of the imapd.conf(5) file, unless you tell her otherwise with -C. iykyk.


πŸ‘‘ OPTIONS πŸ‘‘

  • -C config-file β€” Use the specified configuration file config-file rather than the default imapd.conf(5). Like, "not that config, this config". ✨
  • -d β€” Ignored. Yeah, she's just here for compatibility with /bin/mail, nothing more. Lowkey a legacy queen. πŸ’€
  • -r address, --return-path=address β€” Insert a Return-Path: header containing address.
  • -f address β€” Insert a Return-Path: header containing address. (same energy as -r, no long-option twin, sorry bestie)
  • -m mailbox, --mailbox=mailbox β€” Deliver to mailbox.

If any userids are specified, attempts to deliver to user.userid.mailbox for each userid. If the ACL on any such mailbox does not grant the sender the "p" right, or if -m is not specified, then delivers to the INBOX for the userid, regardless of the ACL on the INBOX. πŸ’…

If no userids are specified, attempts to deliver to mailbox. If the ACL on mailbox does not grant the sender the "p" right, the delivery fails. 😭

  • -a auth-id, --auth-id=auth-id β€” Specify the authorization id of the sender. Defaults to "anonymous". 🫢
  • -q, --ignore-quota β€” Deliver message even when receiving mailbox is over quota. She does not care about the quota, she is on a mission. πŸ”₯
  • -l, --lmtp β€” Accept messages using the LMTP protocol.

⭐ NOTES ⭐

Okay so this part matters, pay attention:

Depending on the setting of reject8bit in imapd.conf(5), deliver either rejects/accepts messages with 8-bit-set characters in the headers. And if she does accept messages with 8-bit-set characters in the headers, then depending on the setting of munge8bit, those characters are either left un-touched or changed to "X".

Why is it like this, you ask? Because those characters can't be interpreted since the character set is not known. That said, some communities that aren't well-served by US-ASCII assume those characters can represent characters that aren't present in US-ASCII. πŸ™ˆ

A method for encoding 8-bit-set characters is provided by RFC 2047. slay.


πŸ’– EXAMPLES πŸ’–

[NB: Examples needed]

(not me putting a placeholder in a manpage, iconic)


🌈 FILES 🌈

  • /etc/imapd.conf

πŸ”₯ SEE ALSO πŸ”₯


🫢 AUTHOR 🫢

The Cyrus Team, Nic Bernstein (Onlight)


1993–2026, The Cyrus Team


k that's the whole page bestie, go deliver some mail πŸ’Œ

Version 3.12.3, dated Jul 15, 2026 β€” shoutout to the Cyrus IMAP girlies, catch you on the flip side πŸŽ€βœ¨

πŸ“¦ where this page comes from