SYNCTEST(1)

SYNCTEST πŸ’– (section 1 of the Cyrus IMAP manuals)

okay bestie, so this is the synctest page from the Cyrus IMAP docs β€” yes, the whole manual name is literally "Cyrus IMAP", that's the vibe ✨


✨ NAME ✨

synctest β€” Cyrus IMAP documentation, and also: an interactive IMAP test program that tests the replication protocol. This is installed as a hard link to imtest(1). πŸ¦‹


✨ 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 ✨

imtest is a little utility that lets you authenticate to an IMAP server and then interactively throw commands at it. Once you're authenticated, you can just type in any IMAP command and off it goes, no cap. πŸ’…

It's got multiple SASL authentication mechanisms and it handles encryption layers transparently, which is honestly iconic of it. People use this thing a lot for testing how an IMAP server behaves, and the devs building IMAP clients find it super useful too. 🌸


✨ OPTIONS ✨

  • -t keyfile, --keyfile=keyfile β€” turns on TLS. The keyfile holds the TLS public and private keys. Pass "" if you want to negotiate a TLS encryption layer but not use TLS authentication. πŸ”₯
  • -p port, --port=port β€” which port to connect to. Leave it off and it defaults to imap as defined in /etc/services.
  • -m mechanism, --mechanism=mechanism β€” force imtest to use mechanism for auth. If you don't say anything, it picks the strongest authentication mechanism the server supports. Say login to use 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 handed to the server to be verified. 🫢
  • -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 one is only used with SASL mechanisms that allow proxying (e.g. PLAIN).
  • -k num, --minssf=num β€” minimum protection layer required.
  • -l num, --maxssf=num β€” maximum protection layer to use (0=none; 1=integrity; etc). Like, 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 is what you get. 🌈
  • -r realm, --realm=realm β€” specify the realm to use. Some authentication mechanisms are picky and require you to name 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 try to do SSL/TLS session reuse and/or fast reauth if it can. ✨
  • -s, --require-tls β€” enable SSL over the chosen protocol.
  • -q, --require-compression β€” enable IMAP COMPRESSion (after authentication).
  • -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 itself).
  • -i, --no-initial-response β€” don't send an initial client response for SASL mechanisms, even if the protocol supports it.
  • -I file, --pidfile=file β€” echo the PID of the running process into file (this can be useful together with -X). 🧚
  • -v, --verbose β€” verbose. Prints out more information than usual.
  • -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. πŸ’€
  • -w password, --password=password β€” password to use (if you don't supply one, 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.

✨ EXAMPLES ✨

…okay so this section is literally empty in the original, bestie. nothing here. the void. the silence. πŸ™ˆ (but it's still a whole section and we respect it.)


✨ SEE ALSO ✨


✨ AUTHOR ✨

The Cyrus Team πŸ’œ


1993–2026, The Cyrus Team


and that's the whole page, fr fr πŸŽ€ β€” this was SYNCTEST(1) from Cyrus IMAP, version 3.12.4, dated Sep 09, 2026. slay, go test your replication protocol bestie πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from