IMTEST(1)

πŸ“¦
version 3.12.4 Β· 4 versions
, in fedora 44

πŸ’– IMTEST(1) πŸ’–

okay so bestie, welcome to the Cyrus IMAP manual page for imtest. Yes, that's the manual name, yes it's iconic, no we're not skipping it. Sit down, grab a boba, and let's get into it. πŸ§‹βœ¨


🌸 NAME 🌸

imtest β€” Cyrus IMAP documentation

Interactive IMAP test program. That's literally it. 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

Look at all those flags. It's giving main character energy. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

So imtest is this little utility that lets you authenticate to an IMAP server and then interactively issue commands to it. Like, you just type an IMAP command in and it goes. Fr fr. ✨

Once you're authenticated you may issue any IMAP command by simply typing it in. It's capable of multiple SASL authentication mechanisms and it handles encryption layers transparently β€” no cap, you don't gotta think about it. 🫢

This utility is often used for testing the operation of an IMAP server. Also, people developing IMAP clients find it useful. So basically it's the people's tool. We love that for us. πŸ‘‘


πŸŽ€ OPTIONS πŸŽ€

  • -t keyfile, --keyfile=keyfile β€” Enable TLS. keyfile contains the TLS public and private keys. If you specify "" it will negotiate a TLS encryption layer but not use TLS authentication. (Yes, empty string. Yes, that's a whole mood. πŸ’€)
  • -p port, --port=port β€” Port to connect to. If you leave it off, it defaults to imap as defined in /etc/services. Periodt.
  • -m mechanism, --mechanism=mechanism β€” Force imtest to use mechanism for authentication. If you don't specify one, the strongest authentication mechanism supported by the server gets chosen for you. (It's picking your outfit for you, and honestly? Slay.) Specify login to use the LOGIN command instead of AUTHENTICATE. 🌈
  • -a userid, --authname=userid β€” Userid to use for authentication; defaults to the current user. This is the userid whose password or credentials will be presented to the server for verification. iykyk
  • -u userid, --username=userid β€” Userid to use for authorization; defaults to the current user. This is the userid whose identity will be assumed after authentication.
NOTE: This is only used with SASL mechanisms that allow proxying (e.g. PLAIN). Not all of them do, so don't come for me if it doesn't work. πŸ™ˆ
  • -k num, --minssf=num β€” Minimum protection layer required. That's it, that's the description, we keep it short and sweet. πŸ“
  • -l num, --maxssf=num β€” Maximum protection layer to use (0=none; 1=integrity; etc). So like, for example, if you're using the GSSAPI authentication mechanism, specifying 0 will force imtest to not use any layer, and specifying 1 will force it to use the integrity layer. By default the maximum supported protection layer will be used. ✨
  • -r realm, --realm=realm β€” Specify the realm to use. Certain authentication mechanisms may require you to specify the realm. So if yours is being dramatic about it, this is the one. πŸ’…
  • -f file, --input-filename=file β€” Pipe file into the connection after authentication. 🫢
  • -n num, --reauth-attempts=num β€” Number of authentication attempts; default = 1. The client will attempt to do SSL/TLS session reuse and/or fast reauth if possible.
  • -s, --require-tls β€” Enable SSL over chosen protocol. 🌸
  • -q, --require-compression β€” Enable IMAP COMPRESSion (after authentication). Compress era. πŸŽ€
  • -c, --do-challenge β€” Enable challenge prompt callbacks. This will cause the OTP mechanism to ask for the one-time password instead of the secret pass-phrase (the library generates the correct response for you, so you don't have to do math at 3am). πŸ”₯
  • -i, --no-initial-response β€” Don't send an initial client response for SASL mechanisms, even if the protocol supports it. Respectfully declining. πŸ™…
  • -I file, --pidfile=file β€” Echo the PID of the running process into file. (This can be useful with -X. πŸ‘€)
  • -v, --verbose β€” Verbose. Print out more information than usual. It's a yapper and we love it. πŸ—£οΈ
  • -z, --run-stress-test β€” Timing test. ⏱️
  • -x file, --output-socket=file β€” Open the named socket for the interactive portion.
  • -X file β€” Like -x, only it closes all file descriptors & daemonizes the process. Going full ghost mode. πŸ‘»
  • -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 will be sent. If the address is "local", a v2 header with LOCAL command will be sent. Three whole behaviours in one flag, she contains multitudes. πŸ’œ

⭐ EXAMPLES ⭐

…there's nothing here bestie. The section exists, the examples do not. It's giving mystery. We move. πŸ¦‹


πŸ”₯ SEE ALSO πŸ”₯


πŸ‘‘ AUTHOR πŸ‘‘

The Cyrus Team, Nic Bernstein (Onlight)


1993–2026, The Cyrus Team


and that's the whole page, bestie!! tysm for reading, you ate that. πŸ’–βœ¨

Version 3.12.4, dated Sep 09, 2026 β€” Cyrus IMAP, signing off. πŸŽ€πŸ«Ά

πŸ“¦ where this page comes from