LMTPD(8)

πŸ’Œ LMTPD(8) β€” Cyrus IMAP, bestie edition

okay so this is the lmtpd page from the Cyrus IMAP docs, section 8 (that's the "admin commands" section, iykyk). It's the LMTP server process. Sit down, grab a strawberry ✨, we're gonna get you fully caught up. πŸ“


✨ NAME ✨

lmtpd β€” Cyrus IMAP documentation, and also: the LMTP server process. That's the whole vibe. πŸ‘‘


🌸 SYNOPSIS 🌸

lmtpd [ -C config-file ]  [ -U uses ] [ -T timeout ] [ -D ]
    [ -H ] [ -a ]

πŸ¦‹ DESCRIPTION πŸ¦‹

so lmtpd is an LMTP server and its whole job β€” its main character moment β€” is delivering mail into the IMAP mailstore. πŸ’–

It reads commands on its standard input and it replies on its standard output. That's the whole conversation.

⚠️ okay real talk for a sec: it MUST be invoked by master(8), with those descriptors attached to a remote client connection. Not optional. Not a suggestion. MUST. That's the rule, periodt. πŸ’…

And like every good little daemon, lmtpd reads its configuration options out of the imapd.conf(5) file β€” unless you tell it otherwise with -C. πŸ™ˆ


πŸ’… OPTIONS πŸ’…

  • -C config-file β€” use the config file config-file you specify instead of the default imapd.conf(5). Not like other girls (files). ✨
  • -U uses β€” the max number of times this process should be reused for new connections before it shuts down. Default is 250. She has a limit, and honestly? valid. 🫢
  • -T timeout β€” how many seconds the process will wait for a new connection before shutting down. Lowkey important: a value of 0 (zero) disables the timeout entirely. Default is 60.
  • -D β€” run the external debugger specified in debug_command. πŸ”
  • -H β€” tells lmtpd to expect a HAProxy protocol header from the sender. ✨
  • -a β€” preauthorize connections initiated on an internet socket instead of requiring LMTP AUTH.
🚨 bestie, listen: this should only be used for connections coming from trusted hosts. That's not me being dramatic, that's the manpage. Do not be reckless with this one. 😭

🌈 EXAMPLES 🌈

sooooo lmtpd 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
}

ate that whole config block, no crumbs. πŸ”₯


πŸŽ€ FILES πŸŽ€

  • /etc/imapd.conf

πŸ’œ SEE ALSO πŸ’œ

go read those next, bestie, they're the lore. 🧚


⭐ AUTHOR ⭐

The Cyrus Team, Nic Bernstein (Onlight). iconic. πŸ‘‘


1993–2026, The Cyrus Team


πŸ’– and that's the whole page!! this was version 3.12.3, dated Jul 15, 2026, from the Cyrus IMAP manual. slay, go deliver some mail, ily 🫢✨

πŸ“¦ where this page comes from