45 intptr_t value,
struct Buffer *err)
47 const int min_length = 78;
48 const int max_length = 998;
50 if ((value >= min_length) && (value <= max_length))
54 buf_printf(err,
_(
"Option %s must be between %d and %d inclusive"),
55 cdef->
name, min_length, max_length);
63 intptr_t value,
struct Buffer *err)
65 const struct Slist *smtp_auth_methods = (
const struct Slist *) value;
66 if (!smtp_auth_methods || (smtp_auth_methods->
count == 0))
89 intptr_t value,
struct Buffer *err)
92 const char *valstr = (
const char *) value;
96 const char c = valstr[strcspn(valstr,
"|&;()<>[]{}$`'~\"\\*?")];
101 buf_printf(err,
_(
"Option %s must not contain shell metacharacters: %c"), cdef->
name, c);
111 "Abort sending the email if attachments are missing"
113 {
"abort_noattach_regex",
DT_REGEX,
IP "\\<(attach|attached|attachments?)\\>", 0, NULL,
114 "Regex to match text indicating attachments are expected"
117 "Abort creating the email if subject is missing"
120 "Abort the sending if the message hasn't been edited"
122 {
"allow_8bit",
DT_BOOL,
true, 0, NULL,
123 "Allow 8-bit messages, don't use quoted-printable or base64"
125 {
"ask_bcc",
DT_BOOL,
false, 0, NULL,
126 "Ask the user for the blind-carbon-copy recipients"
128 {
"ask_cc",
DT_BOOL,
false, 0, NULL,
129 "Ask the user for the carbon-copy recipients"
132 "When attaching files, use one of these character sets"
134 {
"attribution_intro",
DT_STRING,
IP "On %d, %n wrote:", 0, NULL,
135 "Message to start a reply, 'On DATE, PERSON wrote:'"
137 {
"attribution_locale",
DT_STRING, 0, 0, NULL,
138 "Locale for dates in the attribution message"
140 {
"attribution_trailer",
DT_STRING, 0, 0, NULL,
141 "Suffix message to add after reply text"
143 {
"bounce_delivered",
DT_BOOL,
true, 0, NULL,
144 "Add 'Delivered-To' to bounced messages"
146 {
"content_type",
DT_STRING,
IP "text/plain", 0, NULL,
147 "Default 'Content-Type' for newly composed messages"
149 {
"crypt_auto_encrypt",
DT_BOOL,
false, 0, NULL,
150 "Automatically PGP encrypt all outgoing mail"
152 {
"crypt_auto_pgp",
DT_BOOL,
true, 0, NULL,
153 "Allow automatic PGP functions"
155 {
"crypt_auto_sign",
DT_BOOL,
false, 0, NULL,
156 "Automatically PGP sign all outgoing mail"
158 {
"crypt_auto_smime",
DT_BOOL,
true, 0, NULL,
159 "Allow automatic SMIME functions"
161 {
"crypt_reply_encrypt",
DT_BOOL,
true, 0, NULL,
162 "Encrypt replies to encrypted messages"
164 {
"crypt_reply_sign",
DT_BOOL,
false, 0, NULL,
165 "Sign replies to signed messages"
167 {
"crypt_reply_sign_encrypted",
DT_BOOL,
false, 0, NULL,
168 "Sign replies to encrypted messages"
171 "Request notification for message delivery or delay"
174 "What to send as a notification of message delivery or delay"
176 {
"empty_subject",
DT_STRING,
IP "Re: your mail", 0, NULL,
177 "Subject to use when replying to an email with none"
179 {
"encode_from",
DT_BOOL,
false, 0, NULL,
180 "Encode 'From ' as 'quote-printable' at the beginning of lines"
182 {
"fast_reply",
DT_BOOL,
false, 0, NULL,
183 "Don't prompt for the recipients and subject when replying/forwarding"
186 "Save sent message with all their attachments"
188 {
"fcc_before_send",
DT_BOOL,
false, 0, NULL,
189 "Save FCCs before sending the message"
191 {
"fcc_clear",
DT_BOOL,
false, 0, NULL,
192 "Save sent messages unencrypted and unsigned"
194 {
"followup_to",
DT_BOOL,
true, 0, NULL,
195 "Add the 'Mail-Followup-To' header is generated when sending mail"
198 "Forward attachments when forwarding a message"
200 {
"forward_attribution_intro",
DT_STRING,
IP "----- Forwarded message from %f -----", 0, NULL,
201 "Prefix message for forwarded messages"
203 {
"forward_attribution_trailer",
DT_STRING,
IP "----- End forwarded message -----", 0, NULL,
204 "Suffix message for forwarded messages"
206 {
"forward_decrypt",
DT_BOOL,
true, 0, NULL,
207 "Decrypt the message when forwarding it"
210 "Automatically start the editor when forwarding a message"
213 "printf-like format string to control the subject when forwarding a message"
215 {
"forward_references",
DT_BOOL,
false, 0, NULL,
216 "Set the 'In-Reply-To' and 'References' headers when forwarding a message"
219 "Greeting string added to the top of all messages"
221 {
"hdrs",
DT_BOOL,
true, 0, NULL,
222 "Add custom headers to outgoing mail"
224 {
"hidden_host",
DT_BOOL,
false, 0, NULL,
225 "Don't use the hostname, just the domain, when generating the message id"
228 "Honour the 'Mail-Followup-To' header when group replying"
230 {
"ignore_list_reply_to",
DT_BOOL,
false, 0, NULL,
231 "Ignore the 'Reply-To' header when using `<reply>` on a mailing list"
234 "Include a copy of the email that's being replied to"
236 {
"me_too",
DT_BOOL,
false, 0, NULL,
237 "Remove the user's address from the list of recipients"
239 {
"mime_forward_decode",
DT_BOOL,
false, 0, NULL,
240 "Decode the forwarded message before attaching it"
243 "External command to determine the MIME type of an attachment"
245 {
"mime_type_query_first",
DT_BOOL,
false, 0, NULL,
246 "Run the `$mime_type_query_command` before the mime.types lookup"
248 {
"nm_record",
DT_BOOL,
false, 0, NULL,
249 "(notmuch) If the 'record' mailbox (sent mail) should be indexed"
251 {
"pgp_reply_inline",
DT_BOOL,
false, 0, NULL,
252 "Reply using old-style inline PGP messages (not recommended)"
254 {
"postpone_encrypt",
DT_BOOL,
false, 0, NULL,
255 "Self-encrypt postponed messages"
257 {
"postpone_encrypt_as",
DT_STRING, 0, 0, NULL,
258 "Fallback encryption key for postponed messages"
261 "Recall postponed mesaages when asked to compose a message"
263 {
"reply_self",
DT_BOOL,
false, 0, NULL,
264 "Really reply to yourself, when replying to your own email"
267 "Address to use as a 'Reply-To' header"
269 {
"reply_with_xorig",
DT_BOOL,
false, 0, NULL,
270 "Create 'From' header from 'X-Original-To' header"
272 {
"resume_draft_files",
DT_BOOL,
false, 0, NULL,
273 "Process draft files like postponed messages"
276 "Set the 'From' from the address the email was sent to"
279 "Set the 'From' from the full 'To' address the email was sent to"
282 "External command to send email"
284 {
"sendmail_wait",
DT_NUMBER, 0, 0, NULL,
285 "Time to wait for sendmail to finish"
287 {
"sig_dashes",
DT_BOOL,
true, 0, NULL,
288 "Insert '-- ' before the signature"
290 {
"sig_on_top",
DT_BOOL,
false, 0, NULL,
291 "Insert the signature before the quoted text"
294 "File containing a signature to append to all mail"
296 {
"use_8bit_mime",
DT_BOOL,
false, 0, NULL,
297 "Use 8-bit messages and ESMTP to send messages"
299 {
"use_envelope_from",
DT_BOOL,
false, 0, NULL,
300 "Set the envelope sender of the message"
302 {
"use_from",
DT_BOOL,
true, 0, NULL,
303 "Set the 'From' header for outgoing mail"
305 {
"user_agent",
DT_BOOL,
false, 0, NULL,
306 "Add a 'User-Agent' header to outgoing mail"
309 "Width to wrap headers in outgoing messages"
311 {
"write_bcc",
DT_BOOL,
false, 0, NULL,
312 "Write out the 'Bcc' field when preparing to send a mail"
315 {
"abort_noattach_regexp",
DT_SYNONYM,
IP "abort_noattach_regex",
IP "2021-03-21" },
318 {
"attach_keyword",
DT_SYNONYM,
IP "abort_noattach_regex",
IP "2021-03-21" },
319 {
"attribution",
DT_SYNONYM,
IP "attribution_intro",
IP "2023-02-20" },
320 {
"crypt_autoencrypt",
DT_SYNONYM,
IP "crypt_auto_encrypt",
IP "2021-03-21" },
321 {
"crypt_autopgp",
DT_SYNONYM,
IP "crypt_auto_pgp",
IP "2021-03-21" },
322 {
"crypt_autosign",
DT_SYNONYM,
IP "crypt_auto_sign",
IP "2021-03-21" },
323 {
"crypt_autosmime",
DT_SYNONYM,
IP "crypt_auto_smime",
IP "2021-03-21" },
324 {
"crypt_replyencrypt",
DT_SYNONYM,
IP "crypt_reply_encrypt",
IP "2021-03-21" },
325 {
"crypt_replysign",
DT_SYNONYM,
IP "crypt_reply_sign",
IP "2021-03-21" },
326 {
"crypt_replysignencrypted",
DT_SYNONYM,
IP "crypt_reply_sign_encrypted",
IP "2021-03-21" },
327 {
"envelope_from",
DT_SYNONYM,
IP "use_envelope_from",
IP "2021-03-21" },
328 {
"forw_decrypt",
DT_SYNONYM,
IP "forward_decrypt",
IP "2021-03-21" },
329 {
"forw_format",
DT_SYNONYM,
IP "forward_format",
IP "2021-03-21" },
331 {
"pgp_auto_traditional",
DT_SYNONYM,
IP "pgp_reply_inline",
IP "2021-03-21" },
332 {
"pgp_autoencrypt",
DT_SYNONYM,
IP "crypt_auto_encrypt",
IP "2021-03-21" },
333 {
"pgp_autosign",
DT_SYNONYM,
IP "crypt_auto_sign",
IP "2021-03-21" },
334 {
"pgp_replyencrypt",
DT_SYNONYM,
IP "crypt_reply_encrypt",
IP "2021-03-21" },
335 {
"pgp_replyinline",
DT_SYNONYM,
IP "pgp_reply_inline",
IP "2021-03-21" },
336 {
"pgp_replysign",
DT_SYNONYM,
IP "crypt_reply_sign",
IP "2021-03-21" },
337 {
"pgp_replysignencrypted",
DT_SYNONYM,
IP "crypt_reply_sign_encrypted",
IP "2021-03-21" },
338 {
"post_indent_str",
DT_SYNONYM,
IP "post_indent_string",
IP "2021-03-21" },
339 {
"post_indent_string",
DT_SYNONYM,
IP "attribution_trailer",
IP "2023-02-20" },
340 {
"reverse_realname",
DT_SYNONYM,
IP "reverse_real_name",
IP "2021-03-21" },
341 {
"use_8bitmime",
DT_SYNONYM,
IP "use_8bit_mime",
IP "2021-03-21" },
353 {
"ask_followup_to",
DT_BOOL,
false, 0, NULL,
354 "(nntp) Ask the user for follow-up groups before editing"
356 {
"ask_x_comment_to",
DT_BOOL,
false, 0, NULL,
357 "(nntp) Ask the user for the 'X-Comment-To' field before editing"
360 "(nntp) External command to post news articles"
364 {
"ask_follow_up",
DT_SYNONYM,
IP "ask_followup_to",
IP "2023-01-20" },
377 "(smtp) List of allowed authentication methods (colon-separated)"
380 "(smtp) External command to generate OAUTH refresh token"
383 "(smtp) Password for the SMTP server"
386 "(smtp) Url of the SMTP server"
389 "(smtp) Username for the SMTP server"
int buf_printf(struct Buffer *buf, const char *fmt,...)
Format a string overwriting a Buffer.
Convenience wrapper for the config headers.
bool cs_register_variables(const struct ConfigSet *cs, struct ConfigDef vars[], uint32_t flags)
Register a set of config items.
#define CSR_ERR_INVALID
Value hasn't been set.
#define CSR_SUCCESS
Action completed successfully.
static int smtp_auth_validator(const struct ConfigSet *cs, const struct ConfigDef *cdef, intptr_t value, struct Buffer *err)
Validate the "smtp_authenticators" config variable - Implements ConfigDef::validator() -.
int charset_slist_validator(const struct ConfigSet *cs, const struct ConfigDef *cdef, intptr_t value, struct Buffer *err)
Validate the "charset" config variable - Implements ConfigDef::validator() - This is a version for ch...
static int wrapheaders_validator(const struct ConfigSet *cs, const struct ConfigDef *cdef, intptr_t value, struct Buffer *err)
Validate the "wrap_headers" config variable - Implements ConfigDef::validator() -.
static int simple_command_validator(const struct ConfigSet *cs, const struct ConfigDef *cdef, intptr_t value, struct Buffer *err)
Validate the "sendmail" and "inews" config variables - Implements ConfigDef::validator() -.
bool config_init_send(struct ConfigSet *cs)
Register send config variables - Implements module_init_config_t -.
Convenience wrapper for the library headers.
@ MUTT_NO
User answered 'No', or assume 'No'.
@ MUTT_ASKYES
Ask the user, defaulting to 'Yes'.
@ MUTT_YES
User answered 'Yes', or assume 'Yes'.
#define STAILQ_FOREACH(var, head, field)
bool sasl_auth_validator(const char *authenticator)
Validate an auth method against Cyrus SASL methods.
static struct ConfigDef SendVarsSmtp[]
SMTP Config definitions for the send library.
static struct ConfigDef SendVars[]
Config definitions for the send library.
static struct ConfigDef SendVarsNntp[]
NNTP Config definitions for the send library.
#define SLIST_ALLOW_EMPTY
bool smtp_auth_is_valid(const char *authenticator)
Check if string is a valid smtp authentication method.
String manipulation buffer.
const char * name
User-visible name.
Container for lots of config items.
struct ListHead head
List containing values.
size_t count
Number of values in list.
#define DT_SLIST
a list of strings
#define DT_QUAD
quad-option (no/yes/ask-no/ask-yes)
#define DT_BOOL
boolean option
#define DT_DEPRECATED
Config item shouldn't be used any more.
#define DT_PATH_FILE
Path is a file.
#define DT_PATH
a path to a file/directory
#define DT_NOT_EMPTY
Empty strings are not allowed.
#define DT_STRING
a string
#define DT_COMMAND
A command.
#define R_INDEX
Redraw the index menu (MENU_INDEX)
#define DT_SYNONYM
synonym for another variable
#define DT_NO_FLAGS
No flags are set.
#define DT_NOT_NEGATIVE
Negative numbers are not allowed.
#define DT_SENSITIVE
Contains sensitive value, e.g. password.
#define DT_REGEX
regular expressions
#define DT_NUMBER
a number