configure.acr

package: acr

title: configure.acr(5)

summary: configuration script for ACR

text:
# configure.acr(5)

## NAME
configure.acr — configuration script for ACR

## DESCRIPTION
configure.acr is the target file to be parsed by ACR to generate the final "configure" script for end-users.

Inside this file you must set some directives to indicate ACR what kind of languages are planning to be used in the package, libraries to be checked, variables to be exported, name for the package, version, vendor information, and other stuff.

The recommended order of checks and commands is:

- check operating system

- check paths

- check required languages

- libraries/includes/modules checks, dies

- pkg-config checks: version/assignations

- final conditionals and dies

- generation of .acr files with SUBDIRS and SUBST_FILES

## SYNTAX
The configure.acr file is a word-based configuration file for ACR.

This means that each word must be separated with space, tab or new-lines. The ';' separator to terminate strings must be also a separated word.

Each word is called "keyword", there are these types:

Miscelaneous-Keys:

{ } ;

Command:

( Any active keyword )

Conditionals

[ IF IFEQ IFEQVAL IFAND IFOR ] [IFNOT-[EQ|EQVAL|AND|OR]

Argument:

( keywords after commands or conditionals )

Comment:

Block comments: /* */ (( )) Line commentsr: // Note that one-word comments has been deprecated. But you can use line comments //

Definitions:

( Global or local variable assignations. '=' '+=' '?=' ) From the version 0.4, acr supports the normal variable assignation syntax format. Now you can use things like that: VAR = VALUE ;

- "=" resets the value of the target variable.

- "+=" appends the value to the target variable.

- "?=" checks if the target variable is yet defined, and does not overwrites its content.

- "<-" the target value gets the content of the variable defined in the text content.

Substitutions:

You can use SUBDIRS to define a list of directories to find Makefile.acr files to generate Makefile peers. You can also use this for files instead of directories by giving a name, it'll parse the 'filename.acr' to generate the 'filename' file. You can use ##MARK## to define a range of code to show or hide depending on the value of the MARK variable (0 or 1). (This is available from acr 0.5)

Comments:

You can add comments to your configure.acr files by using:

// comment \\ or ## comment ##

Note that you can create multi-line comments using these tags, because everything in this file is word-based.

You are allowed to use one-word-comments, it's simple. Just prefix the desired word with a hash '#' sign. for example: #FOO PKGNAME FOO

Some keyword commands can be suffixed by '!'. This tells ACR to stop execution of the configure script when the condition fails, instead of adding one DIE for each check at the end of script.

For more information read acr(1) about the use of the '-d' flag.

## PACKAGE INFORMATION
PKGNAME <pkgname>

Sets the target package name to be used.

VERSION <version>

Sets the version number for the target package.

CONTACT <name> ; <email>

Sets the name of the developer and the contact mail to be used. This will export CONTANT_NAME and CONTACT_MAIL variables.

## ACR DIRECTIVES
This directives are used internally by ACR to work in a different way.

USE_BACKUP

This command has been deprecated for design purposes (good programmers doesn't need to use this command) in acr 0.5, and will no longer exist in 0.6. The backup command allows you to ensure that no files will be lost by calling the ./configure script or make clean. This option interacts with SUBST_FILES and Makefile generation with -m. Read doc/backup for more info.

EXPORT_DEFINED|ED

Tells ACR to only export defined variables. This causes OUTPUT_H to export only the variables with value != "" and != "0". And OUTPUT_SH to export the != "" variables.

INCLUDE <module-name>

Includes an external acr file from ${datadir}/acr/modules/ or in the current directory. called 'module-name.acr'. No nested includes allowed.

NOP

No Operation Keyword. This keyword is only for debugging purposes and it's used internally by ACR. This command does nothing.

## LANGUAGES
All language keywords exports a HAVE_LANG_xxx variable with value 0 or 1. You can append '!' to the language keyword to specify that the target language is required, and script must die when the desired language is not supported on the target machine.

LANG_C[!]

ACR will look for a C compiler and sets CC, depends for implicit LANG_CPP.

LANG_V[!]

ACR will look for the V compiler and sets V and VFLAGS.

LANG_CC[!] LANG_CXX[!]

Adds C++ support and sets CXX environ.

LANG_BASH[!]

Tell acr to look for a bash on the target system.

LANG_TCL[!]

Looks for tcl version and libraries. Exports TCL_VERSION, TCL_CFLAGS and TCL_LDFLAGS to the environment. This will also adds the --with-tcl-basedir to allow end-user to set the basedir for the TCL installation.

LANG_PERL[!]

Looks for perl installed on current system

LANG_JAVA[!]

Looks for javac in the current system. Exports JAVAC environ and adds --with-jikes and --with-kjc flags.

LANG_VALA[!]

Looks for valac in PATH. Exports VALAC environ and adds --with-valac

LANG_PYTHON[!]

Finds a python executable on the current system. Exports PYTHON and HAVE_LANG_PYTHON.

LANG_RUBY[!]

Finds a ruby executable on the current system. Exports RUBY, HAVE_LANG_RUBY and RUBY_VERSION.

## EXTERNAL SOFTWARE
USE_DL

Sets LIBS_DL to -ldl or "" depending on the target system.

USE_LIBTOOL

Checks for the libtool command and exports LIBTOOL_CC, LIBTOOL_CXX and some useful commands for your makefiles: LIBTOOL_SHARED, LIBTOOL_STATIC and LIBTOOL_INSTALL.

USE_ICONV

Sets LIBS_ICONV to -liconv or "" depending if iconv functions are implemented into the LibC or not.

USE_PTHREAD

Checks for pthread on the current system and sets PTHREAD_LIBS to the proper value.

USE_PERL_THREADS

Checks if the target system have perl build with threads support.

USE_X11

Adds --with-x11base and --without-x flags and sets X11BASE to the proper value.

USE_TK

Add --with-tk-libdir flag and sets TK_CFLAGS, TK_VERSION

USE_GMAKE

Looks for a GNU make tool installed on the target system and sets MAKE properly.

USE_JNI

Uses JAVA_HOME to check and define the JCFLAGS for building java native interface programs.

## CHECKS
REQUIRE_ACR_VERSION version

Checks if acr version is greater or equal than the given version.

CHECK varname <<EOF <..src..> <<EOF

Executes the <..code..> delimited by the <eof> keyword and marks varname as the target variable to be defined by the script. (see examples/check.acr fmi)

CHKEXE,CHECK_EXEC[!] varname program ;

Execute program and set varname = !!!$?

CHKPRG, CHECK_PROGRAM[!] varname program

Finds the program in ${PATH} and sets variable environment to the properly path. Since 0.5 CHKPRG exports HAVE_varname variable and checks first if VARNAME is a valid executable file.

CHKINC, CHECK_INCLUDE[!] include.h[+include2.h[+include3.h]]

Checks if 'include.h' is found in the current system. Requires LANG_C and sets HAVE_include_H environment to 0 or 1 (for example: HAVE_STDIO_H)

CHKFLG, CHECK_CFLAGS[!] varname cflags ;

Checks if the selected C compiler supports the given CFLAGS (Useful for -std=c99 and such)

CHKFNC, CHECK_FUNCTION[!] libname function

Checks if the desired function exists in libname and sets HAVE_FUNCTION to 0 or 1 (for example: HAVE_PRINTF)

CHKSYM, CHECK_SYMBOL[!] libname symbol

Checks if the given symbol exists in libname and sets HAVE_SYMBOL to 0 or 1 (for example: HAVE_ENVIRON)

CHKDECL, CHECK_DECLARATION[!] include constant

Checks if the given constant is defined in the specified include file

CHKLIB, CHECK_LIBRARY[!] libname

Checks if the desired library exists on the system and sets HAVE_LIB_libname to 0 or 1 (for example: HAVE_LIB_SDL)

ENDIAN|CHECK_ENDIAN

Checks for the host endianness to be big or little. It'll export BYTEORDER=1234 on little endian hosts or 4321 for big endian ones. Also exports LIL_ENDIAN and BIG_ENDIAN with 0 xor 1 values.

SIZEOF var ;

Checks for the size of the desired variable and saves it into the variable SIZEOF_VARNAME. Requires LANG_C.

CHECK_PERL_MODULE[!],CHK_PM[!] perl_module

Checks if the target system have installed the selected perl module. and sets HAVE_PM_xxx to 0 or 1 (for example: HAVE_PM_NETDNS)

CHECK_PYTHON_MODULE[!],CHK_PY[!] python_module

Checks if the system have installed the desired python module and sets HAVE_PY_xxx to 0 or 1.

CHECK_RUBY_EXTENSION[!],CHK_RU[] ruby_extension

Checks if the system have installed the desired ruby extension and sets HAVE_RU_xxx to 0 or 1.

CHECK_CLASSPATH[!],CHK_CP[!] java_package_name

Checks if CLASSPATH contains the desired package (for example org.gnu.gtk). Exports the HAVE_CLASSPATH_(java-pkg-name) to 0 or 1.

CHKUSR[!] username

CHKGRP[!] group

Checks the existence of the target user or group on the system.

## DEFINITIONS
Sets are processed at the beginning of the configure script.

= varname value ;

Sets the value of varname to value.

+= varname value ;

Appends the content of varname with value.

?= varname value ;

If the content of varname is empty then assign the value to it.

EXEC variable command to execute ;

Sets variable to the output (stdout) of the desired command to be executed.

CHECK_VERSION,CHKVER[!] pkgname version

Checks if pkgname (software package registered into pkg-config database) is <= version. And crashes execution if it fails. It exports the HAVE_(pkgname)_VERSION_(version) variable to 0 or 1.

PKGCFG,PKGCONFIG[+] cflags_var ldflags_var pkg-config-name

Use pkg-config to get the CFLAGS and LDFLAGS. If the '+' character is at the end of the command then ACR will concatenate the value of cflags_var and ldflags_var instead of overwrite the old value. This keyword exports also a variable called HAVE_PKGFG_{pkg-config-name|filtered} with 0 or 1 values.

VALAPKG[!] pkgname

Checks if a Vala package is available for VALAC

## CONDITIONALS
All conditionals require an 'op'(operation) argument that defines how to set the setvarname. Valid operations are: '=' '+=' '?='.

You can also nest conditionals inside other conditionals using the '{' '}' keywords. That allows you to concatenate a group of conditionals and definitions inside it. The nested conditionals support is available from acr 0.4.

IF|IFNOT varname { ..code.. }

If the value of varname is equal to '1'(IF) or '0'(IFNOT) then ACR will set the 'setvarname' to the 'value'.

IFNULL|IFNOTNULL varname { ..code.. }

If the value of varname is equal to null (IFNULL) or not (IFNOTNULL)' then ACR will set the 'setvarname' to the 'value'.

IFEQ|IFNOTEQ varname value; { ..code.. }

If the content of varname is equal(IFEQ) or different(IFNOTEQ) to value then setvarname to the value setvalue.

IFEQVAL|IFNOTEQVAL varname varname2 { ..code.. }

DEPRECATED: This keyword has been deprecated in 0.5 and will disappear in 0.6. Use IFEQ FOO $FOO ; instead. If the content of varname is equal(IFEQ) or different(IFNOTEQ) to the content of varname2 and finally sets setvarname to the value setvalue.

IFAND|IFNOTAND var1 var2 { ..code.. }

If var1 and var2 are equal to 1(IFAND) or 0(IFNOTAND) then setvar to setvalue.

IFAND|IFNOTAND var1 var2 { ..code.. }

If var1 and var2 are equal to 1(IFAND) or 0(IFNOTAND) then setvar to setvalue.

IFOR|IFNOTOR var1 var2 { ..code.. }

If var1 and var2 are equal to 1(IFAND) or 0(IFNOTAND) then setvar to setvalue.

ECHO string ;

Prints a string to stderr.

DIEIF|DIE variable die_message ;

DIEIFNOT|DIENOT variable die_message ;

DIENOW die_message ;

If the value of variable is equal to 1(DIE) or 0(DIENOT) then stop processing the ./configure script and shows the die message. Short keyword names (DIE, DIENOT) are going to be deprecated.

## FLAGS
ARG_IGNORE flagname

Ignore specific configure arg (do nothing)

ARG_[WITH|WITHOUT|ENABLE|DISABLE] varname[=value] flagname description ;

Adds a with/without/enable/disable flag to the final configure script. For example: ARG_WITH MPLAYER=/usr/bin/mplayer mplayer Sets path for the mplayer ;

If no =value given, ARG_* will act as a boolean variable (0 for WITH and ENABLE, and 1 for WITHOUT and DISABLE). If the =value is given ACR will allow the user to construct flags like --with-foo=bar.

The 'value' argument must be:

- "" (empty) : if you want to create a true/false flag (ex: --without-x, --enable-ssl)

- "=" : if you want that the user adds his own value. (ex: --with-x11base=/usr/pkg/XFree86/ )

- "something" : if you want to set the value to "something" when the flag is passed. (ex: --with-kjc -> sets JAVAC to kjc)

## OUTPUT GENERATION
OUTPUT_H file1 file2 ;

Generates the file1 file2 with C-like syntax defining all exported variables with #defines.

OUTPUT_SH file1 file2 ;

Generates the selected files like OUTPUT_H does but using a shellscript syntax.

SUBST|SUBST_FILES file1 file2 ;

Replaces all @ENVWORDS@ with the exported variable proper value. Before doing the changes ACR copies the original file to file.orig. Remember to mv file.orig file on make clean target. This option is not recommended to use, because the problem you may experience by using acr+vcs systems. I recommend you to use SUBDIRS instead. (acr>=0.4)

SUBDIRS dir1 dir2 file1 file2 ;

Finds Makefile.acr files in requested directories to generate the proper Makefile. acr>=0.4 allows to use SUBDIRS against files or directories, without difference. It's backward compatible. If the target name is a directory then acr will look for 'Makefile.acr', if not, it will get the filename.acr and will generate a new file keeping the name, but chopping the end '.acr'. You can also use the '%' keyword to match all Makefile.acr files under the current directory. This could be useful in case of changes on the directory structure of your project.

SUBCONF dir1 dir2 ;

Calls recursively other ./configure scripts found in dir1, dir2 passing the root ./configure flag arguments.

REPORT var1 var2 ;

Shows the varname and varvalue of the desired variables at the end of the final ./configure script. (useful for debugging)

## EXAMPLES
Simple example:

```
PKGNAME helloworld

CONTACT my real name ; my@email.com

VERSION 1.0

LANG_C!

SUBDIRS . src ;
```

Some more checks

```
PKGNAME gtkapp

VERSION 1.0

LANG_C!

PKGCFG+ CFLAGS LDFLAGS gtk+-2.0

SUBDIRS . src ;

REPORT HAVE_PKGCFG_GTK_2_0 CFLAGS LDFLAGS ;
```

## SEE ALSO
acr(1) amr(1) acr-cat(1) configure.amr(5)

## AUTHOR
pancake <pancake@nopcode.org>

http://nopcode.org/wk.php/Acr


configure.amr

title: configure.amr(5)

summary: configuration file for AMR

text:
# configure.amr(5)

## NAME
configure.amr — configuration file for AMR

## DESCRIPTION
This file is used by amr(1) to autogenerate the Makefile.acr files and/or configure.acr files.

## SYNTAX
CDIR path1 path2 ;

CSOURCES foo.c bar.c ;

CINCLUDES include1 include2 ;

Include files used by the src files.

CDEPS file1 file2;

## SEE ALSO
acr(1) amr(1) acr-cat(1) configure.acr(5)

## AUTHOR
Written by pancake <pancake@nopcode.org>

http://nopcode.org/wk.php/Acr


aerc-accounts

package: aerc

title: aerc-accounts(5)

text:
# aerc-accounts(5)

## NAME
aerc-accounts - account configuration file format for aerc(1)

## SYNOPSIS
The accounts.conf file is used for configuring each mail account used for aerc. It is expected to be in your XDG config home plus aerc, which defaults to ~/.config/aerc/accounts.conf. This file must be kept secret, as it may include your account credentials. An alternate file can be specified via the --accounts-conf command line argument, see aerc(1).

If accounts.conf does not exist, the :new-account configuration wizard will be executed automatically on first startup.

This file is written in the ini format where each [section] is the name of an account you want to configure, and the keys & values in that section specify details of that account's configuration. In addition to the options documented here, specific transports for incoming and outgoing emails may have additional configuration parameters, documented on their respective man pages.

## CONFIGURATION
Note that many of these configuration options are written for you, such as source and outgoing, when you run the account configuration wizard (:new-account).

archive = <folder>

Specifies a folder to use as the destination of the :archive command. Default: Archive

check-mail = <duration>

Specifies an interval to check for new mail. Mail will be checked at startup, and every interval. IMAP accounts will check for mail in all unselected folders, and the selected folder will continue to receive PUSH mail notifications. Maildir/Notmuch folders must use check-mail-cmd in conjunction with this option. See aerc-maildir(5) and aerc-notmuch(5) for more information. Setting this option to 0 will disable check-mail

Example:

check-mail = 5m

Default: 0

copy-to = <folder>

Specifies a folder to copy sent mails to, usually Sent.

default = <folder>

Specifies the default folder to open in the message list when aerc configures this account. Default: INBOX

folders = <folder1,folder2,folder3...>

Specifies the comma separated list of folders to display in the sidebar. Names prefixed with ~ are interpreted as regular expressions. By default, all folders are displayed.

folders-exclude = <folder1,folder2,folder3...>

Specifies the comma separated list of folders to exclude from the sidebar. Names prefixed with ~ are interpreted as regular expressions. Note that this overrides anything from folders. By default, no folders are excluded.

enable-folders-sort = true|false

If true, folders are sorted, first by specified folders (see folders-sort), then alphabetically. Default: true

folders-sort = <folder1,folder2,folder3...>

Specifies a comma separated list of folders to be shown at the top of the list in the provided order. Remaining folders will be sorted alphabetically.

folder-map = <file>

The folder map contains a one-to-one mapping of server folders to displayed folder names. The folder-map file expects a <display-folder-name>=<server-folder-name>[*] mapping per line (similar key=value syntax as for the query-map in notmuch). The mappings are applied as they appear in the folder-map. Supported backends: imap, maildir. Note that other account options such as archive, default, copy-to, postpone, folders, folders-exclude, folders-sort need to be adjusted if one of those folders is affected by a folder mapping.

To apply the mapping to subfolders or folders with a similar prefix, append '*' to the server folder name.

Examples:

Remap a single folder:

```
Spam = [Gmail]/Spam
```

Remap the folder and all of its subfolders:

```
G = [Gmail]*
```

Remove a prefix for all subfolders:

```
* = [Gmail]/*
```

Remap all subfolders and avoid a folder collision:

```
Archive/existing = Archive*
Archive = OldArchive*
```

from = <address>

The default value to use for the From header in new emails. This should be an RFC 5322-compatible string, such as Your Name <you@example.org>.

aliases = <address1,address2,address3...>

All aliases of the current account. These will be used to fill in the From: field. Make sure that your email server accepts this value, or for example use aerc-sendmail(5) in combination with msmtp(1) and --read-envelope-from. An alias can also use fnmatch-style wildcards in the address portion. These wildcards can be useful for catch-all addresses. For example, the alias "Your Name" <*@you.com> would ensure that when replying to emails addressed to hi@you.com and contact@you.com, the From: field is set to hi@you.com and contact@you.com, respectively. The name from the alias, not from the matching address, is used.

headers = <header1,header2,header3...>

Specifies the comma separated list of headers to fetch with the message. By default, all headers are fetched. If any headers are specified in this list, aerc will append it to the following list of required headers:

•date

•subject

•from

•sender

•reply-to

•to

•cc

•bcc

•in-reply-to

•message-id

•references

headers-exclude = <header1,header2,header3...>

Specifies the comma separated list of headers to exclude from fetching. Note that this overrides anything from headers. By default, no headers are excluded.

outgoing = <uri>

Specifies the transport for sending outgoing emails on this account. It should be a connection string, and the specific meaning of each component varies depending on the protocol in use. See each protocol's man page for more details:

•aerc-sendmail(5)

•aerc-smtp(5)

outgoing-cred-cmd = <command>

Specifies an optional command that is run to get the outgoing account's password. See each protocol's man page for more details.

outgoing-cred-cmd-cache = true|false

By default, the credentials returned by the command will be cached until aerc is shut down. If set to false, outgoing-cred-cmd will be executed every time an email is to be sent. Default: true

pgp-auto-sign = true|false

If true, all outgoing emails from this account will be signed (if a signing key is available). Default: false

pgp-attach-key = true|false

If true, attach the public signing key to signed outgoing emails. Default: false

pgp-error-level = none|warn|error

The level of error to display when opportunistic encryption cannot be performed. See pgp-opportunistic-encryption. Default: warn

pgp-key-id = <key-id>

Specify the key id to use when signing a message. Can be either short or long key id. If unset, aerc will look up the key by email.

pgp-opportunistic-encrypt = true|false

If true, any outgoing email from this account will be encrypted when all recipients (including Cc and Bcc field) have a public key available in the keyring. The level of error to display when a message can't be encrypted can be configured with pgp-error-level. Default: false

postpone = <folder>

Specifies the folder to save postponed messages to. Default: Drafts

send-as-utc = true|false

Converts the timestamp of the Date header to UTC. Default: false

send-with-hostname = true|false

Uses the local hostname in outgoing Message-Id headers instead of your email address domain name. Default: false

source = <uri>

Specifies the source for reading incoming emails on this account. This key is required for all accounts. It should be a connection string, and the specific meaning of each component varies depending on the protocol in use. See each protocol's man page for more details:

•aerc-imap(5)

•aerc-jmap(5)

•aerc-maildir(5)

•aerc-notmuch(5)

source-cred-cmd = <command>

Specifies an optional command that is run to get the source account's password. See each protocol's man page for more details.

signature-file = <path>

Specifies the file to read in order to obtain the signature to be added to emails sent from this account. Please note that by convention the Usenet signature style of two dashes, followed by a space ("-- ") should be placed at the top of the signature to separate content and signature. Aerc will add that delimiter if it is not already present.

signature-cmd = <command>

Specifies the command to execute with sh -c in order to obtain the signature to be added to emails sent from this account. If the command fails then signature-file is used instead.

trusted-authres = <host1,host2,host3...>

Comma-separated list of trustworthy hostnames from which the Authentication Results header will be displayed. Entries can be regular expressions. If you want to trust any host (e.g. for debugging), use the wildcard *.

subject-re-pattern = <regexp>

When replying to a message, this is the regular expression that will be used to match the prefix of the original message's subject that has to be removed, to create the subject line of the new message. Typically, this will be used to avoid a repetition of the Re: prefix in the subject header. The default will match known translations for the common Re:. Default: (?i)^((AW|RE|SV|VS|ODP|R): ?)+

## SEE ALSO
aerc(1) aerc-config(5) aerc-imap(5) aerc-jmap(5) aerc-maildir(5) aerc-notmuch(5) aerc-sendmail(5) aerc-smtp(5)

## AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted by other open source contributors. For more information about aerc development, see https://sr.ht/~rjarry/aerc/.


aerc-binds

title: aerc-binds(5)

text:
# aerc-binds(5)

## NAME
aerc-binds - key bindings configuration file format for aerc(1)

## SYNOPSIS
The binds.conf file is used for configuring keybindings used in the aerc interactive client. It is expected to be in your XDG config home plus aerc, which defaults to ~/.config/aerc/binds.conf. If the file does not exist, the built-in default will be installed. An alternate file can be specified via the --binds-conf command line argument, see aerc(1).

This file is written in the ini format with key bindings defined as:

<key sequence> = <command>

Where <key sequence> is the keystrokes pressed (in order) to invoke this keybinding, and <command> specifies keystrokes that aerc will simulate when the keybinding is invoked. Generally this is used to execute commands, for example:

rq = :reply -q<Enter>

Pressing r, then q, will simulate typing in :reply -q<Enter>, and execute :reply -q accordingly. It is also possible to invoke keybindings recursively in a similar fashion.

You may configure different keybindings for different contexts by writing them into different [sections] of the ini file.

## CONTEXTS
The available contexts are:

[messages]

keybindings for the message list

[view]

keybindings for the message viewer

[view::passthrough]

keybindings for the viewer, when in key passthrough mode (toggled with :toggle-key-passthrough)

[compose]

keybindings for the message composer

[compose::editor]

keybindings for the composer, when the editor is focused

[compose::review]

keybindings for the composer, when reviewing the email before it's sent

[terminal]

keybindings for terminal tabs

You may also configure account specific key bindings for each context:

[context:account=AccountName]

keybindings for this context and account, where AccountName is a regular expression that matches the account name you provided in accounts.conf.

Folder and context-specific bindings can be configured for message lists:

[messages:folder=FolderName]

[compose:folder=FolderName]

[compose::editor:folder=FolderName]

[compose::review:folder=FolderName]

keybindings under this section will be specific to the folder that matches the regular expression FolderName. Keybindings from a folder specifier will take precedence over account specifiers

Examples:

```
[messages:account=Mailbox]
c = :cf path:mailbox/** and<space>
[compose::editor:account=Mailbox2]
[compose::editor:folder=aerc]
y = :send -t aerc
[messages:folder=Drafts]
<Enter> = :recall<Enter>
[messages:folder=Archive/d+/.*]
gi = :cf Inbox<Enter>
...
```

You may also configure global keybindings by placing them at the beginning of the file, before specifying any context-specific sections.

Parent keybindings can be erased in the context ones by specifying an "empty" binding:

```
[compose::review]
a = :attach<space>
d = :deatch<space>
[compose::review:account=no-attachments]
a =
d =
```

## SPECIAL OPTIONS
In addition of user defined key sequences, the following special options are available in each binding context:

$noinherit = true|false

If set to true, global keybindings will not be effective in this context. Default: false

$ex = <key-stroke>

This can be set to a keystroke which will bring up the command input in this context. Default: :

$complete = <key-stroke>

This can be set to a keystroke which will trigger command completion in this context for text inputs that support it. Default: <tab>

Note: automatic command completion is disabled when simulating keystrokes and re-enabled at the end. When [ui].completion-min-chars is set to manual (see aerc-config(5)), it is possible to end a keybinding with the completion key to explicitly display the completion menu. E.g.:

o = :cf<space><tab>

## SUPPORTED KEYS
In addition to letters and some characters (e.g. a, RR, gu, ?, !, etc.), special keys may be specified in <angle brackets>. The following special keys are supported:

Name

Description

<space>

" "

<semicolon>

;

<tab>

Tab

<enter>

Enter

<up>

Up arrow

<c-up>

Ctrl+Up

<a-up>

Alt+Up

<down>

Down arrow

<c-down>

Ctrl+Down

<a-down>

Alt+Down

<right>

Right arrow

<c-right>

Ctrl+Right

<a-right>

Alt+Right

<left>

Left arrow

<c-left>

Ctrl+Left

<a-left>

Alt+Left

<pgup>

Page Up

<c-pgup>

Ctrl+PageUp

<a-pgup>

Alt+PageUp

<pgdn>

Page Down

<c-pgdn>

Ctrl+PageDn

<a-pgdn>

Alt+PageDn

<home>

Home

<end>

End

<insert>

Insert

<delete>

Delete

<c-delete>

Ctrl+Delete

<a-delete>

Alt+Delete

<backspace>

Backspace

<exit>

Exit

<cancel>

Cancel

<print>

Print screen

<pause>

Pause

<backtab>

Shift+Tab

<esc>

Escape

<c-space>

Ctrl+Space

<a-space>

Alt+Space

<a-0>

Alt+0

<a-1>

Alt+1

<a-2>

Alt+2

<a-3>

Alt+3

<a-4>

Alt+4

<a-5>

Alt+5

<a-6>

Alt+6

<a-7>

Alt+7

<a-8>

Alt+8

<a-9>

Alt+9

<c-a>

Ctrl+a

<a-a>

Alt+a

<c-b>

Ctrl+b

<a-b>

Alt+b

<c-c>

Ctrl+c

<a-c>

Alt+c

<c-d>

Ctrl+d

<a-d>

Alt+d

<c-e>

Ctrl+e

<a-e>

Alt+e

<c-f>

Ctrl+f

<a-f>

Alt+f

<c-g>

Ctrl+g

<a-g>

Alt+g

<c-h>

Ctrl+h

<a-h>

Alt+h

<c-i>

Ctrl+i

<a-i>

Alt+i

<c-j>

Ctrl+j

<a-j>

Alt+j

<c-k>

Ctrl+k

<a-k>

Alt+k

<c-l>

Ctrl+l

<a-l>

Alt+l

<c-m>

Ctrl+m

<a-m>

Alt+m

<c-n>

Ctrl+n

<a-n>

Alt+n

<c-o>

Ctrl+o

<a-o>

Alt+o

<c-p>

Ctrl+p

<a-p>

Alt+p

<c-q>

Ctrl+q

<a-q>

Alt+q

<c-r>

Ctrl+r

<a-r>

Alt+r

<c-s>

Ctrl+s

<a-s>

Alt+s

<c-t>

Ctrl+t

<a-t>

Alt+t

<c-u>

Ctrl+u

<a-u>

Alt+u

<c-v>

Ctrl+v

<a-v>

Alt+v

<c-w>

Ctrl+w

<a-w>

Alt+w

<c-x>

Ctrl+x

<a-x>

Alt+x

<c-y>

Ctrl+y

<a-y>

Alt+y

<c-z>

Ctrl+z

<a-z>

Alt+z

<c-]>

Ctrl+]

<a-]>

Alt+]

<c-[>

Ctrl+[

<a-[>

Alt+[

<c-^>

Ctrl+^

<a-^>

Alt+^

<c-_>

Ctrl+_

<a-_>

Alt+_

## SEE ALSO
aerc(1) aerc-config(5)

## AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted by other open source contributors. For more information about aerc development, see https://sr.ht/~rjarry/aerc/.


aerc-config

title: aerc-config(5)

text:
# aerc-config(5)

## NAME
aerc-config - configuration file format for aerc(1)

## SYNOPSIS
There are three aerc config files: aerc.conf, binds.conf, and accounts.conf. The last one must be kept secret, as it may include your account credentials. We look for these files in your XDG config home plus aerc, which defaults to ~/.config/aerc. Alternate files can be specified via command line arguments, see aerc(1).

Examples of these config files are typically included with your installation of aerc and are usually installed in /usr/share/aerc.

Each file uses the ini format, and consists of sections with keys and values. A line beginning with # is considered a comment and ignored, as are empty lines. New sections begin with [section-name] on a single line, and keys and values are separated with =.

This manual page focuses on aerc.conf. binds.conf is detailed in aerc-binds(5) and accounts.conf in aerc-accounts(5).

aerc.conf is used for configuring the general appearance and behavior of aerc.

## GENERAL OPTIONS
These options are configured in the [general] section of aerc.conf.

default-save-path = <path>

Used as a default path for save operations if no other path is specified.

pgp-provider = auto|gpg|internal

If set to gpg, aerc will use system gpg binary and keystore for all crypto operations. If set to internal, the internal openpgp keyring will be used. If set to auto, the system gpg will be preferred unless the internal keyring already exists, in which case the latter will be used. Default: auto

unsafe-accounts-conf = true|false

By default, the file permissions of accounts.conf must be restrictive and only allow reading by the file owner (0600). Set this option to true to ignore this permission check. Use this with care as it may expose your credentials. Default: false

log-file = <path>

Output log messages to specified file. A path starting with ~/ is expanded to the user home dir. When redirecting aerc's output to a file using > shell redirection, this setting is ignored and log messages are printed to stdout.

log-level = trace|debug|info|warn|error

Only log messages above the specified level to log-file. Supported levels are: trace, debug, info, warn and error. When redirecting aerc's output to a file using > shell redirection, this setting is ignored and the log level is forced to trace. Default: info

disable-ipc = true|false

Disable the execution of commands over IPC. Default: false

term = <TERM>

Set the $TERM environment variable used for the embedded terminal. Default: xterm-256color

enable-osc8 = true|false

Enable the embedded terminal to output OSC 8 (hyperlinks) escape sequences. Not all terminal emulators handle OSC 8 sequences properly and can produce confusing results, disable this setting if that occurs. Default: false

default-menu-cmd = <cmd>

Default shell command to use for :menu. This will be executed with sh -c and will run in an popover dialog. Any occurrence of %f will be replaced by a temporary file path where the command is expected to write output lines to be consumed by :menu. Otherwise, the lines will be read from the command's standard output.

Example:

default-menu-cmd = fzf

## UI OPTIONS
These options are configured in the [ui] section of aerc.conf.

index-columns = <column1,column2,column3...>

Describes the format for each row in a mailbox view. This is a comma separated list of column names with an optional align and width suffix. After the column name, one of the < (left), : (center) or > (right) alignment characters can be added (by default, left) followed by an optional width specifier. The width is either an integer representing a fixed number of characters, or a percentage between 1% and 99% representing a fraction of the terminal width. It can also be one of the * (auto) or = (fit) special width specifiers. Auto width columns will be equally attributed the remaining terminal width. Fit width columns take the width of their contents. If no width specifier is set, * is used by default. Default: date<20,name<17,flags>4,subject<*

column-separator = "<separator>"

String separator inserted between columns. When a column width specifier is an exact number of characters, the separator is added to it (i.e. the exact width will be fully available for that column contents). Default: " "

column-<name> = <go template>

Each name in index-columns must have a corresponding column-<name> setting. All column-<name> settings accept golang text/template syntax. By default, these columns are defined:

```
column-date = {{.DateAutoFormat .Date.Local}}
column-name = {{index (.From | names) 0}}
column-flags = {{.Flags | join ""}}
column-subject = {{.ThreadPrefix}}{{if .ThreadFolded}}{{printf "{%d}" .ThreadCount}}{{end}}{{.Subject}}
```

See aerc-templates(7) for all available symbols and functions.

timestamp-format = <timeformat>

See time.Time#Format at https://godoc.org/time#Time.Format Default: 2006-01-02 03:04 PM (ISO 8601 + 12 hour time)

this-day-time-format = <timeformat>

Index-only time format for messages that were received/sent today. If this is not specified, timestamp-format is used instead.

this-week-time-format = <timeformat>

Index-only time format for messages that were received/sent within the last 7 days. If this is not specified, timestamp-format is used instead.

this-year-time-format = <timeformat>

Index-only time format for messages that were received/sent this year. If this is not specified, timestamp-format is used instead.

message-view-timestamp-format = <timeformat>

If set, overrides timestamp-format for the message view.

message-view-this-day-time-format = <timeformat>

If set, overrides timestamp-format in the message view for messages that were received/sent today.

message-view-this-week-time-format = <timeformat>

If set, overrides timestamp-format in the message view for messages that were recieved/sent within the last 7 days.

message-view-this-year-time-format = <timeformat>

If set, overrides timestamp-format in the message view for messages that were received/sent this year.

sidebar-width = <int>

Width of the sidebar, including the border. Set to zero to disable the sidebar. Default: 20

empty-message = <string>

Message to display when viewing an empty folder. Default: (no messages)

empty-dirlist = <string>

Message to display when no folders exists or are all filtered. Default: (no folders)

empty-subject = <string>

Text to display in message list, when the subject is empty. Default: (no subject)

mouse-enabled = true|false

Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel Default: false

new-message-bell = true|false

Ring the bell when a new message is received. Default: true

tab-title-account = <go_template>

The template to use for account tab titles. See aerc-templates(7) for available field names. To conditionally show the unread count next to the account name, set to:

tab-title-account = {{.Account}} {{if .Unread}}({{.Unread}}){{end}}

Default: {{.Account}}

tab-title-composer = <go_template>

The template to use for composer tab titles. See aerc-templates(7) for available field names. Default: {{.Subject}}

tab-title-viewer = <go_template>

The template to use for viewer tab titles. See aerc-templates(7) for available field names. Default: {{if .Subject}}{{.Subject}}{{else}}(no subject){{end}}

pinned-tab-marker = "<string>"

Marker to show before a pinned tab's name. Default: `

spinner = "<string>"

Animation shown while loading, split by spinner-delimiter (below) Examples:

•spinner = "-_-,_-_"

•spinner = '. , .'

•spinner = ",|,/,-"

Default: "[..] , [..] , [..] , [..] , [..], [..] , [..] , [..] "

spinner-delimiter = <string>

Spinner delimiter to split string into an animation Default: ,

spinner-interval = <duration>

The delay between each spinner frame Default: 200ms

sort = <criteria>

List of space-separated criteria to sort the messages by, see :sort command in aerc(1) for reference. Prefixing a criterion with -r reverses that criterion. Example:

sort = from -r date

dirlist-left = <go template>

Template for the left side of the directory list. See aerc-templates(7) for all available fields and functions. Default: {{.Folder}}

dirlist-right = <go template>

Template for the right side of the directory list. See aerc-templates(7) for all available fields and functions. Default: {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}

dirlist-delay = <duration>

Delay after which the messages are actually listed when entering a directory. This avoids loading messages when skipping over folders and makes the UI more responsive. If you do not want that, set it to 0s. Default: 200ms

dirlist-tree = true|false

Display the directory list as a foldable tree. Default: false

dirlist-collapse = <int>

If dirlist-tree is enabled, set level at which folders are collapsed by default. Set to 0 to disable. Default: 0

next-message-on-delete = true|false

Moves to next message when the current message is deleted, archived, or moved. Default: true

auto-mark-read = true|false

Set the seen flag when a message is opened in the message viewer. Default: true

completion-popovers = true|false

Shows potential auto-completions for text inputs in popovers. Default: true

completion-delay = <duration>

How long to wait after the last input before auto-completion is triggered. Default: 250ms

completion-min-chars = <int>

The minimum required characters to allow auto-completion to be triggered after completion-delay. Setting this to manual disables automatic completion, leaving only the manually triggered completion with the $complete key (see aerc-binds(5) for more details).

Default: 1

border-char-vertical = "<char>"

border-char-horizontal = "<char>"

Set stylable characters (via the border element) for vertical and horizontal borders. Default: " "

stylesets-dirs = <path1:path2:path3...>

The directories where the stylesets are stored. The config takes a colon-separated list of dirs. If this is unset or if a styleset cannot be found, the following paths will be used as a fallback in that order:

```
${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets
${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets
/usr/local/share/aerc/stylesets
/usr/share/aerc/stylesets
```

styleset-name = <string>

The name of the styleset to be used to style the ui elements. The stylesets are stored in the stylesets directory in the config directory. Default: default

Have a look at aerc-stylesets(7) as to how a styleset looks like.

icon-unencrypted = <string>

The icon to display for unencrypted mails. The status indicator is only displayed if an icon is set.

icon-encrypted = <string>

The icon to display for encrypted mails. Default: [e]

icon-signed = <string>

The icon to display for signed mails where the signature was successfully validated. Default: [s]

icon-signed-encrypted = <string>

The icon to display for signed and encrypted mails where the signature was successfully verified. The combined icon is only used if set, otherwise the signed and encrypted icons are displayed separately.

icon-unknown = <string>

The icon to display for signed mails which could not be verified due to the key being unknown. Default: [s?]

icon-invalid = <string>

The icon to display for signed mails where verification failed. Default: [s!]

icon-attachment = <string>

The icon to display in column-flags when the message has an attachment. Default: a

icon-new = <string>

The icon to display in column-flags when the message is unread and new. Default: N

icon-old = <string>

The icon to display in column-flags when the message is unread and old. Default: O

icon-replied = <string>

The icon to display in column-flags when the message has been replied to. Default: r

icon-flagged = <string>

The icon to display in column-flags when the message is flagged. Default: !

icon-marked = <string>

The icon to display in column-flags when the message is marked. Default: *

icon-draft = <string>

The icon to display in column-flags when the message is a draft. Default: d

icon-deleted = <string>

The icon to display in column-flags when the message has been deleted. Default: X

fuzzy-complete = true|false

When typing a command or option, the popover will now show not only the items /starting/ with the string input by the user, but it will also show instances of items /containing/ the string, starting at any position and need not be consecutive characters in the command or option.

reverse-msglist-order = true|false

Reverses the order of the message list. By default, the message list is ordered with the newest (highest UID) message on top. Reversing the order will put the oldest (lowest UID) message on top. This can be useful in cases where the backend does not support sorting. Default: false

reverse-thread-order = true|false

Reverse display of the message threads. By default, the thread root is displayed at the top of the tree with all replies below. The reverse option will put the thread root at the bottom with replies on top. Default: false

sort-thread-siblings = true|false

Sort the thread siblings according to the sort criteria for the messages. If sort-thread-siblings is false, the thread siblings will be sorted based on the message UID. This option is only applicable for client-side threading with a backend that enables sorting. Default: false

threading-enabled = true|false

Enable a threaded view of messages. If this is not supported by the backend (IMAP server or notmuch), threads will be built by the client. Default: false

force-client-threads = true|false

Force threads to be built client-side. Backends that don't support threading will always build threads client side. Default: false

client-threads-delay = <duration>

Delay of inactivity after which the client threads are rebuilt. Setting this to 0s may introduce a noticeable lag when scrolling through the message list. Default: 50ms

show-thread-context = true|false

Enable showing of thread context. Note: this is not supported by all backends. Default: false

### THREAD PREFIX CUSTOMIZATION
You can fully customize the thread arrows appearance, which is defined by the following configurable prefix parts:

thread-prefix-tip = <string>

Define the arrow head. Default: ">"

thread-prefix-indent = <string>

Define the arrow indentation. Default: " "

thread-prefix-stem = <string>

Define the vertical extension of the arrow. Default: "│"

thread-prefix-limb = <string>

Define the horizontal extension of the arrow. Default: ""

thread-prefix-folded = <string>

Define the folded thread indicator. Default: ""

thread-prefix-unfolded = <string>

Define the unfolded thread indicator. Default: ""

thread-prefix-first-child = <string>

Define the first child connector. Default: ""

thread-prefix-has-siblings = <string>

Define the connector used if the message has siblings. Default: ├─

thread-prefix-lone = <string>

Define the connector used if the message has no parents and no children. Default: ""

thread-prefix-orphan = <string>

Define the connector used if the message has no parents and has children. Default: ""

thread-prefix-last-sibling = <string>

Define the connector for the last sibling. Default: └─

thread-prefix-last-sibling-reverse = <string>

Define the connector for the last sibling in reversed threads. Default: ┌─

thread-prefix-first-child-reverse = <string>

Define the arrow appearance by selecting the first child connector in reversed threads. Default: ""

thread-prefix-orphan-reverse = <string>

Customize the reversed threads arrow appearance by selecting the connector used if the message has no parents and has children. Default: ""

Default settings (mutt-style):

```
[PATCH aerc v5] ui: allow thread arrow customisation
├─>[aerc/patches] build success
├─>Re: [PATCH aerc v5] ui: allow thread arrow customisation
├─
└─>

  ├─>

  │ ├─>

  │ └─>

  │   └─>

  └─>
```

More compact, rounded threads that are also fold-aware:

```
┌[PATCH aerc v5] ui: allow thread arrow customisation
├─[aerc/patches] build success
├─Re: [PATCH aerc v5] ui: allow thread arrow customisation
├+
╰┬

 ├┬

 │├─

 │╰┬

 │ ╰─

 ╰─
```

```
thread-prefix-tip = ""
thread-prefix-indent = ""
thread-prefix-stem = "│"
thread-prefix-limb = "─"
thread-prefix-folded = "+"
thread-prefix-unfolded = ""
thread-prefix-first-child = "┬"
thread-prefix-has-siblings = "├"
thread-prefix-orphan = "┌"
thread-prefix-lone = " "
thread-prefix-last-sibling = "╰"
```

### CONTEXTUAL UI CONFIGURATION
The UI configuration can be specialized for accounts, specific mail directories and message subjects. The specializations are added using contextual config sections based on the context.

The contextual UI configuration is merged to the base UiConfig in the following order: Base UIConfig > Account Context > Folder Context.

[ui:account=AccountName]

Adds account specific configuration with the account name.

[ui:folder=FolderName]

Add folder specific configuration with the folder name.

[ui:folder~Regex]

Add folder specific configuration for folders whose names match the regular expression.

Example:

```
[ui:account=Work]
sidebar-width=...
[ui:folder=Sent]
index-format=...
[ui:folder~Archive/d+/.*]
index-format=...
```

## STATUSLINE
These options are configured in the [statusline] section of aerc.conf.

status-columns = <column1,column2,column3...>

Describes the format for the statusline. This is a comma separated list of column names with an optional align and width suffix. See [ui].index-columns for more details. To completely mute the statusline (except for push notifications), explicitly set status-columns to an empty string:

status-columns=

Default: left<*,center>=,right>*

column-separator = "<separator>"

String separator inserted between columns. See [ui].column-separator for more details. Default: " "

column-<name> = <go template>

Each name in status-columns must have a corresponding column-<name> setting. All column-<name> settings accept golang text/template syntax. By default, these columns are defined:

```
column-left = [{{.Account}}] {{.StatusInfo}}
column-center = {{.PendingKeys}}
column-right = {{.TrayInfo}}
```

See aerc-templates(7) for all available symbols and functions.

separator = "<string>"

Specifies the separator between grouped statusline elements (e.g. for the {{.ContentInfo}}, {{.TrayInfo}} and {{.StatusInfo}} in column-<name>). Default: " | "

display-mode = text|icon

Defines the mode for displaying the status elements. Default: text

## VIEWER
These options are configured in the [viewer] section of aerc.conf.

pager = <command>

Specifies the pager to use when displaying emails. Note that some filters may add ANSI escape sequences to add color to rendered emails, so you may want to use a pager which supports ANSI. Default: less -Rc

alternatives = <mime,types>

If an email offers several versions (multipart), you can configure which mimetype to prefer. For example, this can be used to prefer plaintext over HTML emails. Default: text/plain,text/html

header-layout = <header|layout,list...>

Defines the default headers to display when viewing a message. To display multiple headers in the same row, separate them with a pipe, e.g. From|To. Rows will be hidden if none of their specified headers are present in the message. Notmuch tags can be displayed by adding Labels.

Authentication information from the Authentication-Results header can be displayed by adding DKIM, SPF or DMARC. To show more information than just the authentication result, append a plus sign (+) to the header name (e.g. DKIM+).

Default: From|To,Cc|Bcc,Date,Subject

show-headers = true|false

Default setting to determine whether to show full headers or only parsed ones in message viewer. Default: false

always-show-mime = true|false

Whether to always show the mimetype of an email, even when it is just a single part. Default: false

max-mime-height = height

Define the maximum height of the mimetype switcher before a scrollbar is used. The height of the mimetype switcher is restricted to half of the display height. If the provided value for the height is zero, the number of parts will be used as the height of the type switcher. Default: 0

parse-http-links = true|false

Parses and extracts http links when viewing a message. Links can then be accessed with the open-link command. Default: true

## COMPOSE
These options are configured in the [compose] section of aerc.conf.

editor = <command>

Specifies the command to run the editor with. It will be shown in an embedded terminal, though it may also launch a graphical window if the environment supports it. The following variables are defined in the editor's environment:

AERC_ACCOUNT

the name of the current account

AERC_ADDRESS_BOOK_CMD the address-book-cmd specified for the current account in accounts.conf

Defaults to $EDITOR, or vi(1).

header-layout = <header|layout,list...>

Defines the default headers to display when composing a message. To display multiple headers in the same row, separate them with a pipe, e.g. To|From. Default: To|From,Subject

edit-headers = true|false

Edit headers directly into the text editor instead of having separate UI text inputs. When this is set to true, the :cc, :bcc and :header commands do not work, editing email headers are left to the text editor. address-book-cmd is not supported and address completion is left to the editor itself. header-layout is ignored.

Default: false

address-book-cmd = <command>

Specifies the command to be used to tab-complete email addresses. Any occurrence of %s in the address-book-cmd will be replaced with anything the user has typed after the last comma. The command must output the completions to standard output, one completion per line. Each line must be tab-delimited, with an email address occurring as the first field. Only the email address field is required. The second field, if present, will be treated as the contact name. Additional fields are ignored.

This parameter can also be set per account in accounts.conf.

Example with carddav-query(1):

address-book-cmd = carddav-query %s

Example with khard(1):

address-book-cmd = khard email --remove-first-line --parsable %s

file-picker-cmd = <command>

Specifies the command to be used to select attachments. Any occurrence of %s in the file-picker-cmd will be replaced with the argument <arg> to :attach -m <arg>. Any occurence of %f will be replaced by the location of a temporary file, from which aerc will read the selected files. If %f is not present, the command must output the selected files to standard output, one file per line. If it is present, then aerc does not capture the standard output and instead reads the files from the temporary file which should have the same format.

Examples:

file-picker-cmd = fzf --multi --query=%s file-picker-cmd = ranger --choose-files=%f

reply-to-self = true|false

If set to false, do not mail yourself when replying (e.g., if replying to emails previously sent by yourself, address your replies to the original To and Cc). Default: true

empty-subject-warning = true|false

Warn before sending an email with an empty subject. Default: false

no-attachment-warning = <regexp>

Specifies a regular expression against which an email's body should be tested before sending an email with no attachment. If the regexp matches, aerc will warn you before sending the message. Leave empty to disable this feature. Uses Go's regexp syntax, documented at https://golang.org/s/re2syntax. The (?im) flags are set by default (case-insensitive and multi-line).

Example:

no-attachment-warning = ^[^>]*attach(ed|ment)

format-flowed = true|false

When set, aerc will generate Format=Flowed bodies with a content type of "text/plain; Format=Flowed" as described in RFC3676. This format is easier to handle for some mailing software, and generally just looks like ordinary text. To actually make use of this format's features, you'll need support in your editor. Default: false

lf-editor = true|false

By default, aerc will use RFC2822 standard \r\n (CRLF) line breaks when composing messages. Use this option for text editors that only support non-standard \n (LF) line breaks. Default: false

## MULTIPART CONVERTERS
Converters allow generating multipart/alternative messages by converting the main text/plain body into any other text MIME type with the :multipart command. Only exact MIME types are accepted. The commands are invoked with sh -c and are expected to output valid UTF-8 text.

Only text/<subtype> MIME parts can be generated. The text/plain MIME type is reserved and cannot be generated. You still need to write your emails by hand in your favorite text editor.

Converters are configured in the [multipart-converters] section of aerc.conf.

Example:

```
[multipart-converters]
text/html=pandoc -f markdown -t html --standalone
```

Obviously, this requires that you write your main text/plain body using the markdown syntax. Also, mind that some mailing lists reject emails that contain text/html alternative parts. Use this feature carefully and when possible, avoid using it at all.

## FILTERS
Filters are a flexible and powerful way of handling viewing parts of an opened message. When viewing messages aerc will show the list of available message parts and their MIME type at the bottom, but unless a filter is defined for a specific MIME type, it will only show a menu with a few options (allowing you to open the part in an external program, save it to disk or pipe it to a shell command). Configuring a filter will allow viewing the output of the filter in the configured pager in aerc's built-in terminal.

Filters are configured in the [filters] section of aerc.conf. The first filter which matches the part's MIME type will be used, so order them from most to least specific. You can also match on non-MIME types, by prefixing with the header to match against (non-case-sensitive) and a comma, e.g. subject,text will match a subject which contains text. Use header,~regex to match against a regex.

Note that aerc will pipe the content into the configured filter program, so filters need to be able to read from standard input. Many programs support reading from stdin by putting - instead of a path to a file. You can also chain together multiple filters by piping with |.

aerc ships with some default filters installed in the libexec directory (usually /usr/libexec/aerc/filters). Note that these may have additional dependencies that aerc does not have alone.

The filter commands are invoked with sh -c command. The following folders are prepended to the system $PATH to allow referencing filters from their name only.

```
${XDG_CONFIG_HOME:-~/.config}/aerc/filters
~/.local/libexec/aerc/filters
${XDG_DATA_HOME:-~/.local/share}/aerc/filters
$PREFIX/libexec/aerc/filters
$PREFIX/share/aerc/filters
/usr/libexec/aerc/filters
/usr/share/aerc/filters
```

If you want to run a program in your default $PATH which has the same name as a builtin filter (e.g. /usr/bin/colorize), use its absolute path.

The following variables are defined in the filter command environment:

AERC_MIME_TYPE

the part MIME type/subtype

AERC_FORMAT the part content type format= parameter (e.g. format=flowed)

AERC_FILENAME the attachment filename (if any)

AERC_SUBJECT the message Subject header value

AERC_FROM the message From header value

Note that said email body is converted into UTF-8 before being passed to filters.

If show-headers is enabled, only the currently viewed part body is piped into the filter command. A special .headers filter command can be defined to post process the full headers.

### EXAMPLES
text/plain

Color some things, e.g. quotes, git diffs, links, etc.:

```
text/plain=colorize
```

The built-in colorize filter can be configured in the [viewer] section of styleset files. See aerc-stylesets(7).

Wrap long lines at 100 characters, while not messing up nested quotes. Handles format=flowed emails properly:

```
text/plain=wrap -w 100 | colorize
```

from,<sender>

Another example of hard wrapping lines of emails sent by a specific person. Explicitly reflow all paragraphs instead of only wrapping long lines. This may break manual formatting in some messages:

```
from,thatguywhoneverhardwrapshismessages=wrap -r -w 72 | colorize
```

subject,~<regexp>

Use rainbow coloring with lolcat(1) for emails sent by software forges:

```
subject,~Git(hub|lab)=lolcat -f
```

text/html

Render html to a more human readable version and colorize:

```
text/html=html | colorize
```

Use pandoc to output plain text:

```
text/html=pandoc -f html -t plain
```

text/calendar

Parse calendar invites:

```
text/calendar=calendar
```

text/*

Catch any other type of text that did not have a specific filter and use bat(1) to color these:

```
text/*=bat -fP --file-name="$AERC_FILENAME" --style=plain
```

.headers

Colorize email headers when show-headers is true.

```
.headers=colorize
```

message/delivery-status

When not being able to deliver the provider might send such emails:

```
message/delivery-status=colorize
```

message/rfc822

When getting emails as attachments, e.g. on some mailing lists digest format is sending an email with all the digest emails as attachments. Requires caeml(1) to be on PATH:

```
message/rfc822=caeml | colorize
```

https://github.com/ferdinandyb/caeml

application/mbox

Emails as attachments in the mbox format. For example aerc can also create an mbox from messages with the :pipe command. Requires catbox(1) and caeml(1) to be on PATH:

```
application/mbox=catbox -c caeml | colorize
```

https://github.com/konimarti/catbox

application/pdf

Render pdf to text and rewrap at 100 character width. Requires pdftotext(1) to be on PATH:

```
application/pdf=pdftotext - -l 10 -nopgbrk -q  - | fmt -w 100
```

https://www.xpdfreader.com/pdftotext-man.html

image/*

This is a tricky topic. It's possible to display images in a terminal, but for high resolution images the terminal you are using either needs to support sixels or the kitty terminal graphics protocol. Unfortunately, aerc's built-in terminal supports neither, so only highly pixelated images can be shown natively. A workaround is possible by asking the terminal to draw on top of aerc and then remove the image when done viewing. The built-in terminal can show pixelated images with catimg(1):

```
image/*=catimg -w$(tput cols) -
```

See the wiki at https://man.sr.ht/~rjarry/aerc/ for more examples and possible customizations of the built-in filters.

## OPENERS
Openers allow you to specify the command to use for the :open and :open-link actions on a per-MIME-type basis. The :open-link URL scheme is used to determine the MIME type as follows: x-scheme-handler/<scheme>. They are configured in the [openers] section of aerc.conf.

{} is expanded as the temporary filename or URL to be opened with proper shell quoting. If it is not encountered in the command, the filename/URL will be appended to the end of the command. The command will then be executed with sh -c.

Like [filters], openers support basic shell globbing. The first opener which matches the part's MIME type (or URL scheme handler MIME type) will be used, so order them from most to least specific.

Example:

```
[openers]
x-scheme-handler/irc=hexchat
x-scheme-handler/http*=printf '%s' {} | wl-copy
text/html=surf -dfgms
text/plain=gvim {} +125
message/rfc822=thunderbird
```

## HOOKS
Hooks are triggered whenever the associated event occurs. The commands are run in a shell environment with information added to environment variables.

They are configured in the [hooks] section of aerc.conf.

aerc-startup = <command>

Executed when aerc is started is received in the selected folder. If it is used to run certain commands at startup. The hook is executed as soon as the UI is initialized and does not wait for all accounts to be fully loaded. Variables:

•AERC_VERSION

•AERC_BINARY

Example:

aerc-startup = aerc :terminal calcurse && aerc :next-tab

mail-received = <command>

Executed when new mail is received in the selected folder. This will only work reliably with maildir and some imap servers. Variables:

•AERC_ACCOUNT

•AERC_FOLDER

•AERC_FROM_NAME

•AERC_FROM_ADDRESS

•AERC_SUBJECT

Example:

mail-received = notify-send "[$AERC_ACCOUNT/$AERC_FOLDER] New mail from $AERC_FROM_NAME" "$AERC_SUBJECT"

mail-deleted = <command>

Executed when a message is deleted from a folder. Note that this hook is triggered when moving a message from one folder to another. Variables:

•AERC_ACCOUNT

•AERC_FOLDER

Example:

mail-deleted = mbsync "$AERC_ACCOUNT:$AERC_FOLDER"

mail-added = <command>

Executed when a message is added to a folder. Note that this hook is not triggered when a new message is received (use mail-received for that) but rather is only triggered when aerc itself adds a message to a folder, e.g. when moving or copying a message. Variables:

•AERC_ACCOUNT

•AERC_FOLDER

Example:

mail-added = mbsync "$AERC_ACCOUNT:$AERC_FOLDER"

mail-sent = <command>

Executed when a message is sent. This does not necessarily signify successful posting, if a queueing system like msmtpq is used. Variables:

•AERC_ACCOUNT

•AERC_FROM_NAME

•AERC_FROM_ADDRESS

•AERC_SUBJECT

•AERC_TO

•AERC_CC

Example:

mail-sent = if [ "$AERC_ACCOUNT" = "gmail" ]; then mbsync gmail; fi

aerc-shutdown = <command>

Executed when aerc shuts down. Aerc will wait for the command to finish before exiting. Variables:

•AERC_LIFETIME

## TEMPLATES
Template files are used to populate the body of an email. The :compose, :reply and :forward commands can be called with the -T flag with the name of the template name. The available symbols and functions are described in aerc-templates(7).

aerc ships with some default templates installed in the share directory (usually /usr/share/aerc/templates).

These options are configured in the [templates] section of aerc.conf.

template-dirs = <path1:path2:path3...>

The directory where the templates are stored. The config takes a colon-separated list of dirs. If this is unset or if a template cannot be found, the following paths will be used as a fallback in that order:

```
${XDG_CONFIG_HOME:-~/.config}/aerc/templates
${XDG_DATA_HOME:-~/.local/share}/aerc/templates
/usr/local/share/aerc/templates
/usr/share/aerc/templates
```

new-message = <template_name>

The default template to be used for new messages. Default: new_message

quoted-reply = <template_name>

The default template to be used for quoted replies. Default: quoted_reply

forwards = <template_name>

The default template to be used for forward as body. Default: forward_as_body

## SEE ALSO
aerc(1) aerc-accounts(5) aerc-binds(5) aerc-imap(5) aerc-jmap(5) aerc-maildir(5) aerc-notmuch(5) aerc-templates(7) aerc-sendmail(5) aerc-smtp(5) aerc-stylesets(7) carddav-query(1)

## AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted by other open source contributors. For more information about aerc development, see https://sr.ht/~rjarry/aerc/.


aerc-imap

title: aerc-imap(5)

text:
# aerc-imap(5)

## NAME
aerc-imap - IMAP configuration for aerc(1)

## SYNOPSIS
aerc implements the IMAP protocol as specified by RFC 3501, with the following IMAP extensions:

•IDLE (RFC 2177)

•LIST-STATUS (RFC 5819)

•X-GM-EXT-1 (Gmail)

## CONFIGURATION
IMAP configuration may be done interactively with the :new-account command.

In accounts.conf (see aerc-accounts(5)), the following IMAP-specific options are available:

source = <scheme>://<username>[:<password>]@<hostname>[:<port>]?[<oauth2_params>]

Remember that all fields must be URL encoded. The @ symbol, when URL encoded, is %40. Possible values of <scheme> are:

imap

IMAP with STARTTLS

imap+insecure

IMAP without STARTTLS

imaps

IMAP with TLS/SSL

imaps+oauthbearer

IMAP with TLS/SSL using OAUTHBEARER Authentication <oauth2_params>:

If specified and a token_endpoint is provided, the configured password is used as a refresh token to obtain an access token. If token_endpoint is omitted, refresh token exchange is skipped, and the password acts like an access token instead.

•token_endpoint (optional)

•client_id (optional)

•client_secret (optional)

•scope (optional)

Example:

imaps+oauthbearer://...?token_endpoint=https://...&client_id=

imaps+xoauth2

IMAP with TLS/SSL using XOAUTH2 Authentication. Parameters are the same as OAUTHBEARER.

source-cred-cmd = <command>

Specifies the command to run to get the password for the IMAP account. This command will be run using sh -c command. If a password is specified in the source option, the password will take precedence over this command. Example:

source-cred-cmd = pass hostname/username

connection-timeout = <duration>

Maximum delay to establish a connection to the IMAP server. See https://pkg.go.dev/time#ParseDuration. Default: 30s

keepalive-period = <duration>

The interval between the last data packet sent (simple ACKs are not considered data) and the first keepalive probe. After the connection is marked to need keepalive, this counter is not used any further. See https://pkg.go.dev/time#ParseDuration. By default, the system tcp socket settings are used.

keepalive-probes = <int>

The number of unacknowledged probes to send before considering the connection dead and notifying the application layer. By default, the system tcp socket settings are used. If keepalive-period is specified, this option defaults to 3 probes.

This option is only supported on linux. On other platforms, it will be ignored.

keepalive-interval = <duration>

The interval between subsequential keepalive probes, regardless of what the connection has exchanged in the meantime. Fractional seconds are truncated. By default, the system tcp socket settings are used. If keepalive-period is specified, this option defaults to 3s.

This option is only supported on linux. On other platforms, it will be ignored.

check-mail-include = <folder1,folder2,folder3...>

Specifies the comma separated list of folders to include when checking for new mail with :check-mail. Names prefixed with ~ are interpreted as regular expressions. This setting is ignored if your IMAP server supports the LIST-STATUS command, in which case all folders will be checked. By default, all folders are included.

check-mail-exclude = <folder1,folder2,folder3...>

Specifies the comma separated list of folders to exclude when checking for new mail with :check-mail. Names prefixed with ~ are interpreted as regular expressions. This setting is ignored if your IMAP server supports the LIST-STATUS command, in which case all folders will be checked. Note that this overrides anything from check-mail-include. By default, no folders are excluded.

cache-headers = true|false

If set to true, headers will be cached. The cached headers will be stored in $XDG_CACHE_HOME/aerc, which defaults to ~/.cache/aerc. Default: false

cache-max-age = <duration>

Defines the maximum age of cached files. Note: the longest unit of time cache-max-age can be specified in is hours. Set to 0 to disable cleaning the cache Default: 720h (30 days)

idle-timeout = <duration>

The length of time the client will wait for the server to send any final update before the IDLE is closed. Default: 10ms

idle-debounce = <duration>

Specifies the length of time from the last client command until the idler starts. Default: 10ms

use-gmail-ext = true|false

If set to true, the X-GM-EXT-1 extension will be used if supported. This only works for Gmail accounts. Default: false

## SEE ALSO
aerc(1) aerc-accounts(5)

## AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted by other open source contributors. For more information about aerc development, see https://sr.ht/~rjarry/aerc/.


aerc-jmap

title: aerc-jmap(5)

text:
# aerc-jmap(5)

## NAME
aerc-jmap - JMAP configuration for aerc(1)

## SYNOPSIS
aerc implements the JMAP protocol as specified by RFCs 8620 and 8621.

## CONFIGURATION
JMAP accounts currently are not supported with the :new-account command and must be added manually.

In accounts.conf (see aerc-accounts(5)), the following JMAP-specific options are available:

source = <scheme>://[<username>][:<password>@]<hostname>[:<port>]/<path>

Remember that all fields must be URL encoded. The @ symbol, when URL encoded, is %40. <hostname>[:<port>]/<path> is the HTTPS JMAP session resource as specified in RFC 8620 section 2 without the leading https:// scheme.

Possible values of <scheme> are:

jmap

JMAP over HTTPS using Basic authentication.

jmap+oauthbearer

JMAP over HTTPS using OAUTHBEARER authentication The username is ignored any may be left empty. If specifying the password, make sure to prefix it with : to make it explicit that the username is empty. Or set the username to any random value. E.g.:

```
source = jmap+oauthbearer://:s3cr3t@example.com/jmap/session
source = jmap+oauthbearer://me:s3cr3t@example.com/jmap/session
```

Your source credentials must have the urn:ietf:params:jmap:mail capability.

source-cred-cmd = <command>

Specifies the command to run to get the password for the JMAP account. This command will be run using sh -c command. If a password is specified in the source option, the password will take precedence over this command. Example:

source-cred-cmd = pass hostname/username

outgoing = jmap://

The JMAP connection can also be used to send emails. No need to repeat the URL nor any credentials. Just the URL scheme will be enough. Your source credentials must have the urn:ietf:params:jmap:submission capability.

cache-state = true|false

Cache all email state (mailboxes, email headers, mailbox contents, email flags, etc.) on disk in a levelDB database located in folder ~/.cache/aerc/<account>/state. The cached data should remain small, in the order of a few megabytes, even for very large email stores. Aerc will make its best to purge deleted/outdated information. It is safe to delete that folder when aerc is not running and it will be recreated from scratch on next startup.

Default: false

cache-blobs = true|false

Cache all downloaded email bodies and attachments on disk as individual files in ~/.cache/aerc/<account>/blobs/<xx>/<blob_id> (where <xx> is a subfolder named after the last two characters of <blob_id>). Aerc will not purge the cached blobs automatically. Even when their related emails are destroyed permanently from the server. If required, you may want to run some periodic cleanup based on file creation date in a crontab, e.g.:

@daily find ~/.cache/aerc/foo/blobs -type f -mtime +30 -delete

Default: false

use-labels = true|false

If set to true, mailboxes with the archive role (usually Archive) will be hidden from the directory list and replaced by an all-mail virtual folder. The name of that folder can be configured via the all-mail setting. :archive flat may still be used to effectively "tag" messages with the hidden Archive mailbox so that they appear in the all-mail virtual folder. When the all-mail virtual folder is selected, :archive flat should not be used and will have no effect. The messages will be grayed out but will never be refreshed until aerc is restarted.

Also, this enables support for the :modify-labels (alias :tag) command.

Default: false

all-mail = <name>

Name of the virtual folder that replaces the role=archive mailbox when use-labels = true. Default: All mail

server-ping = <duration>

Interval the server should ping the client at when monitoring for email changes. The server may choose to ignore this value. By default, no ping will be requested from the server. See https://pkg.go.dev/time#ParseDuration.

## NOTES
JMAP messages can be seen as "labels" or "tags". Every message must belong to one or more mailboxes (folders in aerc). Each mailbox has a "role" as described in https://www.iana.org/assignments/imap-mailbox-name-attributes/.

When deleting messages that belong only to the selected mailbox, aerc will attempt to "move" these messages to a mailbox with the trash role. If it cannot find such mailbox or if the selected mailbox is the trash mailbox, it will effectively destroy the messages from the server.

:delete removes messages from the selected mailbox and effectively does the same thing than :tag -<selected_folder>.

:cp <foo> is an alias for :tag <foo> or :tag +<foo>.

:mv <foo> is a compound of :delete and :mv and can be seen as an alias of :tag -<selected_folder> +<foo>.

:archive flat is an alias for :tag -<selected_folder> +<archive>.

## SEE ALSO
aerc(1) aerc-accounts(5)

## AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted by other open source contributors. For more information about aerc development, see https://sr.ht/~rjarry/aerc/.


aerc-maildir

title: aerc-maildir(5)

text:
# aerc-maildir(5)

## NAME
aerc-maildir - maildir configuration for aerc(1)

## SYNOPSIS
aerc implements the maildir format.

## CONFIGURATION
Maildir accounts currently are not supported with the :new-account command and must be added manually to the accounts.conf file (see aerc-accounts(5)).

The following maildir-specific options are available:

check-mail-cmd = <command>

Command to run in conjunction with check-mail option. Example:

check-mail-cmd = mbsync -a

check-mail-timeout = <duration>

Timeout for the check-mail-cmd. The command will be stopped if it does not complete in this interval and an error will be displayed. Increase from the default if repeated errors occur Default: 10s

source = maildir|maildirpp://<path>

The source indicates the path to the directory containing your maildirs rather than one maildir specifically. The path portion of the URL following maildir:// must be either an absolute path prefixed by / or a path relative to your home directory prefixed with ~. For example:

source = maildir:///home/me/mail source = maildir://~/mail

If your maildir is using the Maildir++ directory layout, you can use the maildirpp:// scheme instead:

source = maildirpp:///home/me/mail source = maildirpp://~/mail

## SEE ALSO
aerc(1) aerc-accounts(5) aerc-smtp(5) aerc-notmuch(5)

## AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted by other open source contributors. For more information about aerc development, see https://sr.ht/~rjarry/aerc/.


aerc-notmuch

title: aerc-notmuch(5)

text:
# aerc-notmuch(5)

## NAME
aerc-notmuch - notmuch configuration for aerc(1)

## SYNOPSIS
aerc supports using the notmuch email system as a backend, for fast indexing and searching.

For this to be enabled, aerc needs to be build with notmuch support. Refer to the installation instructions for details.

## CONFIGURATION
Notmuch accounts currently are not supported with the :new-account command and must be added manually.

In accounts.conf (see aerc-accounts(5)), the following notmuch-specific options are available:

check-mail-cmd = <command>

Command to run in conjunction with check-mail option. Example:

check-mail-cmd = mbsync -a

check-mail-timeout = <duration>

Timeout for the check-mail-cmd. The command will be stopped if it does not complete in this interval and an error will be displayed. Increase from the default if repeated errors occur Default: 10s

source = notmuch://<path>

The source indicates the path to the directory containing your notmuch database (usually a .notmuch/ folder). The path portion of the URL following notmuch:// must be either an absolute path prefixed by / or a path relative to your home directory prefixed with ~. For example:

source = notmuch:///home/me/mail source = notmuch://~/mail

query-map = <file>

Path to a file containing a mapping from display name to notmuch query in the form of <NAME>=<QUERY>. Multiple entries can be specified, one per line. Lines starting with # are ignored and serve as comments.

e.g. inbox=tag:inbox and not tag:archived

exclude-tags = <tag1,tag2,tag3...>

Comma separated list of tags which will be excluded from query results, unless explicitly mentioned in the query. This can for example be useful if you use an archive or spam tag.

maildir-store = <path>

Path to the maildir store containing the message files backing the notmuch database. This is often the same as the notmuch database path. If specified, this option will be used by aerc to list available folders and enable commands such as :delete and :archive. N.B.: aerc will still always show messages and not files (under notmuch, a single message can be represented by several files), which makes the semantics of certain commands as move ambiguous: for example, if you try to move a message represented by several files, aerc will not know what to do and thus refuse.

maildir-account-path = <path>

Path to the maildir account relative to the maildir-store. This could be used to achieve traditional maildir one tab per account behavior. The note on maildir-store also applies to this option.

## USAGE
Notmuch shows slightly different behavior than for example imap. Some commands are slightly different in semantics and mentioned below:

cf <notmuch query>

The change folder command allows for arbitrary notmuch queries. Performing a :cf command will perform a new top-level notmuch query.

filter <notmuch query>

The filter command for notmuch backends takes in arbitrary notmuch queries. It applies the query on the set of messages shown in the message list. This can be used to perform successive filters/queries. It is equivalent to performing a set of queries concatenated with "and".

## SEE ALSO
aerc(1) aerc-accounts(5) aerc-smtp(5) aerc-maildir(5)

## AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted by other open source contributors. For more information about aerc development, see https://sr.ht/~rjarry/aerc/.


aerc-sendmail

title: aerc-sendmail(5)

text:
# aerc-sendmail(5)

## NAME
aerc-sendmail - sendmail configuration for aerc(1)

## SYNOPSIS
aerc can defer to sendmail for the delivery of outgoing messages.

## CONFIGURATION
In accounts.conf (see aerc-accounts(5)), the following sendmail-specific options are available:

outgoing = </path/to/sendmail>

This should be set to the path to the sendmail binary you wish to use, which is generally /usr/sbin/sendmail. aerc will execute it with a list of recipients on the command line and pipe the message to deliver to stdin.

## SEE ALSO
aerc(1) aerc-accounts(5)

## AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted by other open source contributors. For more information about aerc development, see https://sr.ht/~rjarry/aerc/.


aerc-smtp

title: aerc-smtp(5)

text:
# aerc-smtp(5)

## NAME
aerc-smtp - SMTP configuration for aerc(1)

## SYNOPSIS
aerc implements the SMTP protocol as specified by RFC 5321.

## CONFIGURATION
SMTP configuration may be done interactively with the :new-account command.

In accounts.conf (see aerc-accounts(5)), the following SMTP-specific options are available:

outgoing = <scheme>[+<auth>]://<username>[:<password>]@<hostname>[:<port>]?[<oauth2_params>]

Remember that all fields must be URL encoded. The @ symbol, when URL encoded, is %40. The value of <scheme> can be:

smtp

SMTP with STARTTLS

smtp+insecure

SMTP without STARTTLS

smtps

SMTP with TLS/SSL

Additionally, you can specify an authentication mechanism like so:

none

No authentication is required to use this SMTP server. You may omit the username and password in this case.

plain

Authenticate with a username and password using AUTH PLAIN. This is the default behavior.

login

Authenticate with a username and password using AUTH LOGIN. This is an obsolete protocol, but is required for some common webmail providers.

oauthbearer

SMTP with TLS/SSL using OAUTHBEARER Authentication. See documentation in aerc-imap(5) for usage.

xoauth2

SMTP with TLS/SSL using XOAUTH2 Authentication. See documentation in aerc-imap(5) for usage.

outgoing-cred-cmd = <command>

Specifies the command to run to get the password for the SMTP account. This command will be run using sh -c [command]. If a password is specified in the outgoing option, the password will take precedence over this command. Example:

outgoing-cred-cmd = pass hostname/username

smtp-domain = <domain>

Local domain name to use in the HELO/EHLO SMTP command. Set this to a fully qualified domain name if the server requires it as an antispam measure. Default: localhost

## SEE ALSO
aerc(1) aerc-accounts(5)

## AUTHORS
Originally created by Drew DeVault and maintained by Robin Jarry who is assisted by other open source contributors. For more information about aerc development, see https://sr.ht/~rjarry/aerc/.