`imap.folder`::
	The folder to drop the mails into, which is typically the Drafts
	folder. For example: `INBOX.Drafts`, `INBOX/Drafts` or
	`[Gmail]/Drafts`. The IMAP folder to interact with MUST be specified;
	the value of this configuration variable is used as the fallback
	default value when the `--folder` option is not given.

`imap.tunnel`::
	Command used to set up a tunnel to the IMAP server through which
	commands will be piped instead of using a direct network connection
	to the server. Required when `imap.host` is not set.

`imap.host`::
	A URL identifying the server. Use an `imap://` prefix for non-secure
	connections and an `imaps://` prefix for secure connections.
	Ignored when `imap.tunnel` is set, but required otherwise.

`imap.user`::
	The username to use when logging in to the server.

`imap.pass`::
	The password to use when logging in to the server.

`imap.port`::
	An integer port number to connect to on the server.
	Defaults to 143 for `imap://` hosts and 993 for `imaps://` hosts.
	Ignored when `imap.tunnel` is set.

`imap.sslverify`::
	A boolean to enable/disable verification of the server certificate
	used by the SSL/TLS connection. Default is `true`. Ignored when
	`imap.tunnel` is set.

`imap.preformattedHTML`::
	A boolean to enable/disable the use of html encoding when sending
	a patch.  An html encoded patch will be bracketed with `<pre>`
	and have a content type of text/html.  Ironically, enabling this
	option causes Thunderbird to send the patch as a plain/text,
	format=fixed email.  Default is `false`.

`imap.authMethod`::
	Specify the authentication method for authenticating with the IMAP server.
	If Git was built with the NO_CURL option, or if your curl version is older
	than 7.34.0, or if you're running git-imap-send with the `--no-curl`
	option, the only supported methods are `PLAIN`, `CRAM-MD5`, `OAUTHBEARER`
	and `XOAUTH2`. If this is not set then `git imap-send` uses the basic IMAP
	plaintext `LOGIN` command.
