HTTPTEST(1)

πŸ’– HTTPTEST(1) β€” the Cyrus IMAP glow-up edition πŸ’–

okay bestie, gather round, because we're talking about httptest, and it's part of the Cyrus IMAP documentation ✨

so like, httptest is the Interactive HTTP test program πŸ¦‹ and the tea is: it's actually installed as a hard linked copy of imtest(1) πŸ‘‘

which means it lets you authenticate and then send HTTP commands to the server. that's the whole vibe. πŸ’…


✨ SYNOPSIS ✨

imtest [ -t keyfile ] [ -p port ] [ -m mechanism ]
    [ -a userid ] [ -u userid ] [ -k num ] [ -l num ]
    [ -r realm ] [ -f file ] [ -n num ] [ -s ] [ -q ]
    [ -c ] [ -i ] [ -z ] [ -v ] [ -I file ] [ -x file ]
    [ -X file ] [ -w passwd ] [ -o option=value ]
    [ -H client-ip ] hostname

🌸 DESCRIPTION 🌸

so imtest is a lil utility that lets you authenticate to an IMAP server and then interactively throw commands at it. once you're authenticated you can literally just type any IMAP command in and off it goes πŸŽ€

it's got multiple SASL authentication mechanisms and it handles encryption layers transparently, which is lowkey iconic of it.

people use this thing for testing how an IMAP server is operating, and honestly? if you're out here developing IMAP clients, you're gonna find it useful too. iykyk 🫢


πŸŽ€ OPTIONS πŸŽ€

  • -t keyfile, --keyfile=keyfile β€” turns on TLS πŸ’– keyfile holds the TLS public and private keys. if you pass "" it'll negotiate a TLS encryption layer but not use TLS authentication. sneaky but valid.
  • -p port, --port=port β€” which port to connect to. leave it off and it defaults to imap as defined in /etc/services. classic.
  • -m mechanism, --mechanism=mechanism β€” forces imtest to use mechanism for authentication. if you don't specify one, it picks the strongest authentication mechanism the server supports πŸ‘‘. and if you say login, it uses the LOGIN command instead of AUTHENTICATE.
  • -a userid, --authname=userid β€” the userid used for authentication; defaults to the current user. this is the userid whose password or credentials get presented to the server for verification. it's giving "who am i claiming to be" πŸ’œ
  • -u userid, --username=userid β€” the userid used for authorization; defaults to the current user. this is the userid whose identity gets assumed after authentication.
NOTE: this is only used with SASL mechanisms that allow proxying (e.g. PLAIN). don't come for me, that's just the rules 🫠
  • -k num, --minssf=num β€” minimum protection layer required. no more, no less.
  • -l num, --maxssf=num β€” maximum protection layer to use (0=none; 1=integrity; etc). for example, if you're using the GSSAPI authentication mechanism, specifying 0 forces imtest to not use any layer at all, and specifying 1 forces it to use the integrity layer πŸ”. by default the maximum supported protection layer gets used.
  • -r realm, --realm=realm β€” specify the realm to use. some authentication mechanisms are needy and require you to specify one 😭
  • -f file, --input-filename=file β€” pipes file into the connection after authentication.
  • -n num, --reauth-attempts=num β€” number of authentication attempts; default = 1. the client will try to do SSL/TLS session reuse and/or fast reauth if possible. efficient queen ⭐
  • -s, --require-tls β€” enable SSL over the chosen protocol πŸ”₯
  • -q, --require-compression β€” enable IMAP COMPRESSion (after authentication). squeeze it ✨
  • -c, --do-challenge β€” enable challenge prompt callbacks. this makes the OTP mechanism ask for the one-time password instead of the secret pass-phrase (the library generates the correct response for you, bestie, you don't gotta do it yourself πŸ’…).
  • -i, --no-initial-response β€” don't send an initial client response for SASL mechanisms, even if the protocol supports it. we're being mysterious today πŸ™ˆ
  • -I file, --pidfile=file β€” echoes the PID of the running process into file. (this can be useful with -X.)
  • -v, --verbose β€” verbose. prints out more information than usual. the way that it just tells you everything πŸ—£οΈ
  • -z, --run-stress-test β€” timing test. let's see how she performs ⏱️
  • -x file, --output-socket=file β€” opens the named socket for the interactive portion.
  • -X file β€” like -x, only it closes all file descriptors & daemonizes the process. main character energy, she leaves the room and never looks back πŸ‘‘
  • -w password, --password=password β€” password to use (if not supplied, we will prompt).
  • -o option=value, --sasl-option=option=value β€” set the SASL option to value.
  • -H client-ip β€” enable the HAProxy protocol and send the specified client IP address in a v1 header. if the address is "unknown", a v1 header with UNKNOWN protocol gets sent. if the address is "local", a v2 header with LOCAL command gets sent. three whole modes, we love versatility 🌈

🌟 EXAMPLES 🌟

...yeah bestie, this section is empty. the examples are the friends we made along the way 😭


πŸ‘€ SEE ALSO πŸ‘€


πŸ’œ AUTHOR πŸ’œ

The Cyrus Team. absolute icons, no cap 🫢


1993–2026, The Cyrus Team


and that's the whole page, bestie!! this was version 3.12.4, dated Sep 09, 2026, straight out of the Cyrus IMAP corner of the universe. go authenticate something and slay πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from