tool script to extract items from spec.xfpt
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Wed, 19 Nov 2014 21:41:17 +0100
changeset 2 65780c394ae8
parent 1 a7e0086fc464
child 3 c12f0d93a45d
tool script to extract items from spec.xfpt
abstract
tools/extract
--- a/abstract	Wed Nov 19 09:03:29 2014 +0100
+++ b/abstract	Wed Nov 19 21:41:17 2014 +0100
@@ -30,7 +30,7 @@
 
 ## Options
     - statische Namen
-    - benamst Listen
+    - benamste Listen
     - Instanzen von Routern, Transports, ..
 
 ## Values
@@ -74,7 +74,7 @@
     +---------+---------+----------+-----------+
     |auto_thaw|Use: main|Type: time|Default: 0s|
     +---------+---------+----------+-----------+
-    > exim -C <(echo auto_thaw = 0s) -bP auto_thaw
+    > exim -C <(echo auto_thaw = 1w7s) -bP auto_thaw
 
 ### strings
     Fromat: <string>           eg: localhost
@@ -105,7 +105,7 @@
       - leeres Feld in der Mitte: a: :b
       - leeres Felder am Anfang bleibt
 
-    > exim -be '-be '${map{<, ,a,b,,, ,c,}{<$item>}}'
+    > exim -be '${map{<, ,a,b,,, ,c,}{<$item>}}'
 
 ### Regexp
     Format ^…
@@ -135,8 +135,8 @@
 
 
     <type>;<file>                   eg: domains = dsearch;/etc/exim4/domains
-    <type>;<query>                  eg: sqlite;/etc/db.sqlite SELECT … WHERE ${quote_sqlite:$local_part} …
-                                        ldap;ldap:///o=roka?mail?sub?…
+    <type>;<query>                  eg: domains = sqlite;/etc/db.sqlite SELECT … WHERE ${quote_sqlite:$local_part} …
+                                        domains = ldap;ldap:///o=roka?mail?sub?…
 
     - Auffindes des "impliziten" Keys
     - Query: Success der Query ist entscheidend, nicht der Resultat-Wert
@@ -194,9 +194,9 @@
 
     - von links nach rechts: $ und \ wirken als Trigger
 
-    > exim -be <string>
-    > exim -bem <message-file> <string>
-    > exim -be -Mset <spool-id> <string>
+    > exim -be [<string>]
+    > exim -bem <message-file> [<string>]
+    > exim -be -Mset <spool-id> [<string>]
 
     eg: exim -be '$primary_hostname'
         exim -be '$tod_full'
@@ -209,7 +209,8 @@
 
 ### Variablen
     Format: $<variable>           eg: $localhost_number
-              ${<variable>}     
+            ${<variable>}     
+
 ### Operatoren
     Format: ${<op>:<string>}
     Für einfache Expansionen, lc, uc, hash, …
@@ -226,15 +227,17 @@
 ## Routing / Transport
 
     > exim -bt  <address>
+    > exim -bts <address>
 
-    > exim -bt  <address>
-    > exim -bts <address>
+    > exim -bv  <address>
+    > exim -bvs <address>
 
     Routing, Fake-Delivery
     > exim -N < <message-file>
 
     Fake-SMTP-Session
     > exim -bh <sender-ip>
+    > swaks --pipe 'exim -bh <sender-ip>' -f <sender> -t <rcpt>
     
    - debug_print Option für Router und Transports
 
@@ -293,640 +296,280 @@
     - Condition:    /^<condition> \{    eg: eq {<string1>}{<string2>} …
     - Functions:    /^\$\{              eg: ${map{<string1>}{<string2>}} …
 
-## List of Options {{{
+## Liste globaler Optionen {{{
 
-    |accept_8bitmime|Use: main|Type: boolean|Default: true|
-    |acl_not_smtp|Use: main|Type: string*|Default: unset|
-    |acl_not_smtp_mime|Use: main|Type: string*|Default: unset|
-    |acl_not_smtp_start|Use: main|Type: string*|Default: unset|
-    |acl_smtp_auth|Use: main|Type: string*|Default: unset|
-    |acl_smtp_connect|Use: main|Type: string*|Default: unset|
-    |acl_smtp_data|Use: main|Type: string*|Default: unset|
-    |acl_smtp_data_prdr|Use: main|Type: string*|Default: unset|
-    |acl_smtp_etrn|Use: main|Type: string*|Default: unset|
-    |acl_smtp_expn|Use: main|Type: string*|Default: unset|
-    |acl_smtp_helo|Use: main|Type: string*|Default: unset|
-    |acl_smtp_mail|Use: main|Type: string*|Default: unset|
-    |acl_smtp_mailauth|Use: main|Type: string*|Default: unset|
-    |acl_smtp_mime|Use: main|Type: string*|Default: unset|
-    |acl_smtp_predata|Use: main|Type: string*|Default: unset|
-    |acl_smtp_quit|Use: main|Type: string*|Default: unset|
-    |acl_smtp_rcpt|Use: main|Type: string*|Default: unset|
-    |acl_smtp_starttls|Use: main|Type: string*|Default: unset|
-    |acl_smtp_vrfy|Use: main|Type: string*|Default: unset|
-    |admin_groups|Use: main|Type: string list*|Default: unset|
-    |allow_domain_literals|Use: main|Type: boolean|Default: false|
-    |allow_mx_to_ip|Use: main|Type: boolean|Default: false|
-    |allow_utf8_domains|Use: main|Type: boolean|Default: false|
-    |auth_advertise_hosts|Use: main|Type: host list*|Default: *|
-    |auto_thaw|Use: main|Type: time|Default: 0s|
-    |av_scanner|Use: main|Type: string|Default: see below|
-    |bi_command|Use: main|Type: string|Default: unset|
-    |bounce_message_file|Use: main|Type: string|Default: unset|
-    |bounce_message_text|Use: main|Type: string|Default: unset|
-    |bounce_return_body|Use: main|Type: boolean|Default: true|
-    |bounce_return_message|Use: main|Type: boolean|Default: true|
-    |bounce_return_size_limit|Use: main|Type: integer|Default: 100K|
-    |bounce_sender_authentication|Use: main|Type: string|Default: unset|
-    |callout_domain_negative_expire|Use: main|Type: time|Default: 3h|
-    |callout_domain_positive_expire|Use: main|Type: time|Default: 7d|
-    |callout_negative_expire|Use: main|Type: time|Default: 2h|
-    |callout_positive_expire|Use: main|Type: time|Default: 24h|
-    |callout_random_local_part|Use: main|Type: string*|Default: see below|
-    |check_log_inodes|Use: main|Type: integer|Default: 0|
-    |check_log_space|Use: main|Type: integer|Default: 0|
-    |check_rfc2047_length|Use: main|Type: boolean|Default: true|
-    |check_spool_inodes|Use: main|Type: integer|Default: 0|
-    |check_spool_space|Use: main|Type: integer|Default: 0|
-    |daemon_smtp_ports|Use: main|Type: string|Default: "smtp"|
-    |daemon_startup_retries|Use: main|Type: integer|Default: 9|
-    |daemon_startup_sleep|Use: main|Type: time|Default: 30s|
-    |delay_warning|Use: main|Type: time list|Default: 24h|
-    |delay_warning_condition|Use: main|Type: string*|Default: see below|
-    |deliver_drop_privilege|Use: main|Type: boolean|Default: false|
-    |deliver_queue_load_max|Use: main|Type: fixed-point|Default: unset|
-    |delivery_date_remove|Use: main|Type: boolean|Default: true|
-    |disable_fsync|Use: main|Type: boolean|Default: false|
-    |disable_ipv6|Use: main|Type: boolean|Default: false|
-    |dns_again_means_nonexist|Use: main|Type: domain list*|Default: unset|
-    |dns_check_names_pattern|Use: main|Type: string|Default: see below|
-    |dns_csa_search_limit|Use: main|Type: integer|Default: 5|
-    |dns_csa_use_reverse|Use: main|Type: boolean|Default: true|
-    |dns_dnssec_ok|Use: main|Type: integer|Default: -1|
-    |dns_ipv4_lookup|Use: main|Type: domain list*|Default: unset|
-    |dns_retrans|Use: main|Type: time|Default: 0s|
-    |dns_retry|Use: main|Type: integer|Default: 0|
-    |dns_use_edns0|Use: main|Type: integer|Default: -1|
-    |drop_cr|Use: main|Type: boolean|Default: false|
-    |dsn_from|Use: main|Type: string*|Default: see below|
-    |envelope_to_remove|Use: main|Type: boolean|Default: true|
-    |errors_copy|Use: main|Type: string list*|Default: unset|
-    |errors_reply_to|Use: main|Type: string|Default: unset|
-    |exim_group|Use: main|Type: string|Default: compile-time configured|
-    |exim_path|Use: main|Type: string|Default: see below|
-    |exim_user|Use: main|Type: string|Default: compile-time configured|
-    |extra_local_interfaces|Use: main|Type: string list|Default: unset|
-    |extract_addresses_remove_   arguments|Use: main|Type: boolean|Default: true|
-    |finduser_retries|Use: main|Type: integer|Default: 0|
-    |freeze_tell|Use: main|Type: string list, comma separated|Default: unset|
-    |gecos_name|Use: main|Type: string*|Default: unset|
-    |gecos_pattern|Use: main|Type: string|Default: unset|
-    |gnutls_compat_mode|Use: main|Type: boolean|Default: unset|
-    |headers_charset|Use: main|Type: string|Default: see below|
-    |header_maxsize|Use: main|Type: integer|Default: see below|
-    |header_line_maxsize|Use: main|Type: integer|Default: 0|
-    |helo_accept_junk_hosts|Use: main|Type: host list*|Default: unset|
-    |helo_allow_chars|Use: main|Type: string|Default: unset|
-    |helo_lookup_domains|Use: main|Type: domain list*|Default: "@:@[]"|
-    |helo_try_verify_hosts|Use: main|Type: host list*|Default: unset|
-    |helo_verify_hosts|Use: main|Type: host list*|Default: unset|
-    |hold_domains|Use: main|Type: domain list*|Default: unset|
-    |host_lookup|Use: main|Type: host list*|Default: unset|
-    |host_lookup_order|Use: main|Type: string list|Default: "bydns:byaddr"|
-    |host_reject_connection|Use: main|Type: host list*|Default: unset|
-    |hosts_connection_nolog|Use: main|Type: host list*|Default: unset|
-    |hosts_treat_as_local|Use: main|Type: domain list*|Default: unset|
-    |ibase_servers|Use: main|Type: string list|Default: unset|
-    |ignore_bounce_errors_after|Use: main|Type: time|Default: 10w|
-    |ignore_fromline_hosts|Use: main|Type: host list*|Default: unset|
-    |ignore_fromline_local|Use: main|Type: boolean|Default: false|
-    |keep_malformed|Use: main|Type: time|Default: 4d|
-    |ldap_ca_cert_dir|Use: main|Type: string|Default: unset|
-    |ldap_ca_cert_file|Use: main|Type: string|Default: unset|
-    |ldap_cert_file|Use: main|Type: string|Default: unset|
-    |ldap_cert_key|Use: main|Type: string|Default: unset|
-    |ldap_cipher_suite|Use: main|Type: string|Default: unset|
-    |ldap_default_servers|Use: main|Type: string list|Default: unset|
-    |ldap_require_cert|Use: main|Type: string|Default: unset.|
-    |ldap_start_tls|Use: main|Type: boolean|Default: false|
-    |ldap_version|Use: main|Type: integer|Default: unset|
-    |local_from_check|Use: main|Type: boolean|Default: true|
-    |local_from_prefix|Use: main|Type: string|Default: unset|
-    |local_from_suffix|Use: main|Type: string|Default: unset|
-    |local_interfaces|Use: main|Type: string list|Default: see below|
-    |local_scan_timeout|Use: main|Type: time|Default: 5m|
-    |local_sender_retain|Use: main|Type: boolean|Default: false|
-    |localhost_number|Use: main|Type: string*|Default: unset|
-    |log_file_path|Use: main|Type: string list*|Default: set at compile time|
-    |log_selector|Use: main|Type: string|Default: unset|
-    |log_timezone|Use: main|Type: boolean|Default: false|
-    |lookup_open_max|Use: main|Type: integer|Default: 25|
-    |max_username_length|Use: main|Type: integer|Default: 0|
-    |message_body_newlines|Use: main|Type: bool|Default: false|
-    |message_body_visible|Use: main|Type: integer|Default: 500|
-    |message_id_header_domain|Use: main|Type: string*|Default: unset|
-    |message_id_header_text|Use: main|Type: string*|Default: unset|
-    |message_logs|Use: main|Type: boolean|Default: true|
-    |message_size_limit|Use: main|Type: string*|Default: 50M|
-    |move_frozen_messages|Use: main|Type: boolean|Default: false|
-    |mua_wrapper|Use: main|Type: boolean|Default: false|
-    |mysql_servers|Use: main|Type: string list|Default: unset|
-    |never_users|Use: main|Type: string list*|Default: unset|
-    |openssl_options|Use: main|Type: string list|Default: +no_sslv2|
-    |oracle_servers|Use: main|Type: string list|Default: unset|
-    |percent_hack_domains|Use: main|Type: domain list*|Default: unset|
-    |perl_at_start|Use: main|Type: boolean|Default: false|
-    |perl_startup|Use: main|Type: string|Default: unset|
-    |pgsql_servers|Use: main|Type: string list|Default: unset|
-    |pid_file_path|Use: main|Type: string*|Default: set at compile time|
-    |pipelining_advertise_hosts|Use: main|Type: host list*|Default: *|
-    |prdr_enable|Use: main|Type: boolean|Default: false|
-    |preserve_message_logs|Use: main|Type: boolean|Default: false|
-    |primary_hostname|Use: main|Type: string|Default: see below|
-    |print_topbitchars|Use: main|Type: boolean|Default: false|
-    |process_log_path|Use: main|Type: string|Default: unset|
-    |prod_requires_admin|Use: main|Type: boolean|Default: true|
-    |qualify_domain|Use: main|Type: string|Default: see below|
-    |qualify_recipient|Use: main|Type: string|Default: see below|
-    |queue_domains|Use: main|Type: domain list*|Default: unset|
-    |queue_list_requires_admin|Use: main|Type: boolean|Default: true|
-    |queue_only|Use: main|Type: boolean|Default: false|
-    |queue_only_file|Use: main|Type: string|Default: unset|
-    |queue_only_load|Use: main|Type: fixed-point|Default: unset|
-    |queue_only_load_latch|Use: main|Type: boolean|Default: true|
-    |queue_only_override|Use: main|Type: boolean|Default: true|
-    |queue_run_in_order|Use: main|Type: boolean|Default: false|
-    |queue_run_max|Use: main|Type: integer|Default: 5|
-    |queue_smtp_domains|Use: main|Type: domain list*|Default: unset|
-    |receive_timeout|Use: main|Type: time|Default: 0s|
-    |received_header_text|Use: main|Type: string*|Default: see below|
-    |received_headers_max|Use: main|Type: integer|Default: 30|
-    |recipient_unqualified_hosts|Use: main|Type: host list*|Default: unset|
-    |recipients_max|Use: main|Type: integer|Default: 0|
-    |recipients_max_reject|Use: main|Type: boolean|Default: false|
-    |remote_max_parallel|Use: main|Type: integer|Default: 2|
-    |remote_sort_domains|Use: main|Type: domain list*|Default: unset|
-    |retry_data_expire|Use: main|Type: time|Default: 7d|
-    |retry_interval_max|Use: main|Type: time|Default: 24h|
-    |return_path_remove|Use: main|Type: boolean|Default: true|
-    |return_size_limit|Use: main|Type: integer|Default: 100K|
-    |rfc1413_hosts|Use: main|Type: host list*|Default: *|
-    |rfc1413_query_timeout|Use: main|Type: time|Default: 5s|
-    |sender_unqualified_hosts|Use: main|Type: host list*|Default: unset|
-    |smtp_accept_keepalive|Use: main|Type: boolean|Default: true|
-    |smtp_accept_max|Use: main|Type: integer|Default: 20|
-    |smtp_accept_max_nonmail|Use: main|Type: integer|Default: 10|
-    |smtp_accept_max_nonmail_hosts|Use: main|Type: host list*|Default: *|
-    |smtp_accept_max_per_connection|Use: main|Type: integer|Default: 1000|
-    |smtp_accept_max_per_host|Use: main|Type: string*|Default: unset|
-    |smtp_accept_queue|Use: main|Type: integer|Default: 0|
-    |smtp_accept_queue_per_connection|Use: main|Type: integer|Default: 10|
-    |smtp_accept_reserve|Use: main|Type: integer|Default: 0|
-    |smtp_active_hostname|Use: main|Type: string*|Default: unset|
-    |smtp_banner|Use: main|Type: string*|Default: see below|
-    |smtp_check_spool_space|Use: main|Type: boolean|Default: true|
-    |smtp_connect_backlog|Use: main|Type: integer|Default: 20|
-    |smtp_enforce_sync|Use: main|Type: boolean|Default: true|
-    |smtp_etrn_command|Use: main|Type: string*|Default: unset|
-    |smtp_etrn_serialize|Use: main|Type: boolean|Default: true|
-    |smtp_load_reserve|Use: main|Type: fixed-point|Default: unset|
-    |smtp_max_synprot_errors|Use: main|Type: integer|Default: 3|
-    |smtp_max_unknown_commands|Use: main|Type: integer|Default: 3|
-    |smtp_ratelimit_hosts|Use: main|Type: host list*|Default: unset|
-    |smtp_ratelimit_mail|Use: main|Type: string|Default: unset|
-    |smtp_ratelimit_rcpt|Use: main|Type: string|Default: unset|
-    |smtp_receive_timeout|Use: main|Type: time|Default: 5m|
-    |smtp_reserve_hosts|Use: main|Type: host list*|Default: unset|
-    |smtp_return_error_details|Use: main|Type: boolean|Default: false|
-    |spamd_address|Use: main|Type: string|Default: see below|
-    |split_spool_directory|Use: main|Type: boolean|Default: false|
-    |spool_directory|Use: main|Type: string*|Default: set at compile time|
-    |sqlite_lock_timeout|Use: main|Type: time|Default: 5s|
-    |strict_acl_vars|Use: main|Type: boolean|Default: false|
-    |strip_excess_angle_brackets|Use: main|Type: boolean|Default: false|
-    |strip_trailing_dot|Use: main|Type: boolean|Default: false|
-    |syslog_duplication|Use: main|Type: boolean|Default: true|
-    |syslog_facility|Use: main|Type: string|Default: unset|
-    |syslog_processname|Use: main|Type: string|Default: "exim"|
-    |syslog_timestamp|Use: main|Type: boolean|Default: true|
-    |system_filter|Use: main|Type: string*|Default: unset|
-    |system_filter_directory_transport|Use: main|Type: string*|Default: unset|
-    |system_filter_file_transport|Use: main|Type: string*|Default: unset|
-    |system_filter_group|Use: main|Type: string|Default: unset|
-    |system_filter_pipe_transport|Use: main|Type: string*|Default: unset|
-    |system_filter_reply_transport|Use: main|Type: string*|Default: unset|
-    |system_filter_user|Use: main|Type: string|Default: unset|
-    |tcp_nodelay|Use: main|Type: boolean|Default: true|
-    |timeout_frozen_after|Use: main|Type: time|Default: 0s|
-    |timezone|Use: main|Type: string|Default: unset|
-    |tls_advertise_hosts|Use: main|Type: host list*|Default: unset|
-    |tls_certificate|Use: main|Type: string*|Default: unset|
-    |tls_crl|Use: main|Type: string*|Default: unset|
-    |tls_dh_max_bits|Use: main|Type: integer|Default: 2236|
-    |tls_dhparam|Use: main|Type: string*|Default: unset|
-    |tls_ocsp_file|Use: main|Type: string*|Default: unset|
-    |tls_on_connect_ports|Use: main|Type: string list|Default: unset|
-    |tls_privatekey|Use: main|Type: string*|Default: unset|
-    |tls_remember_esmtp|Use: main|Type: boolean|Default: false|
-    |tls_require_ciphers|Use: main|Type: string*|Default: unset|
-    |tls_try_verify_hosts|Use: main|Type: host list*|Default: unset|
-    |tls_verify_certificates|Use: main|Type: string*|Default: unset|
-    |tls_verify_hosts|Use: main|Type: host list*|Default: unset|
-    |trusted_groups|Use: main|Type: string list*|Default: unset|
-    |trusted_users|Use: main|Type: string list*|Default: unset|
-    |unknown_login|Use: main|Type: string*|Default: unset|
-    |unknown_username|Use: main|Type: string|Default: unset|
-    |untrusted_set_sender|Use: main|Type: address list*|Default: unset|
-    |uucp_from_pattern|Use: main|Type: string|Default: see below|
-    |uucp_from_sender|Use: main|Type: string*|Default: "$1"|
-    |warn_message_file|Use: main|Type: string|Default: unset|
-    |write_rejectlog|Use: main|Type: boolean|Default: true|
-    |address_data|Use: routers|Type: string*|Default: unset|
-    |address_test|Use: routers**|Type: boolean|Default: true|
-    |cannot_route_message|Use: routers|Type: string*|Default: unset|
-    |caseful_local_part|Use: routers|Type: boolean|Default: false|
-    |check_local_user|Use: routers**|Type: boolean|Default: false|
-    |condition|Use: routers**|Type: string*|Default: unset|
-    |debug_print|Use: routers|Type: string*|Default: unset|
-    |disable_logging|Use: routers|Type: boolean|Default: false|
-    |domains|Use: routers**|Type: domain list*|Default: unset|
-    |driver|Use: routers|Type: string|Default: unset|
-    |errors_to|Use: routers|Type: string*|Default: unset|
-    |expn|Use: routers**|Type: boolean|Default: true|
-    |fail_verify|Use: routers|Type: boolean|Default: false|
-    |fail_verify_recipient|Use: routers|Type: boolean|Default: false|
-    |fail_verify_sender|Use: routers|Type: boolean|Default: false|
-    |fallback_hosts|Use: routers|Type: string list|Default: unset|
-    |group|Use: routers|Type: string*|Default: see below|
-    |headers_add|Use: routers|Type: list*|Default: unset|
-    |headers_remove|Use: routers|Type: list*|Default: unset|
-    |ignore_target_hosts|Use: routers|Type: host list*|Default: unset|
-    |initgroups|Use: routers|Type: boolean|Default: false|
-    |local_part_prefix|Use: routers**|Type: string list|Default: unset|
-    |local_part_prefix_optional|Use: routers|Type: boolean|Default: false|
-    |local_part_suffix|Use: routers**|Type: string list|Default: unset|
-    |local_part_suffix_optional|Use: routers|Type: boolean|Default: false|
-    |local_parts|Use: routers**|Type: local part list*|Default: unset|
-    |log_as_local|Use: routers|Type: boolean|Default: see below|
-    |more|Use: routers|Type: boolean*|Default: true|
-    |pass_on_timeout|Use: routers|Type: boolean|Default: false|
-    |pass_router|Use: routers|Type: string|Default: unset|
-    |redirect_router|Use: routers|Type: string|Default: unset|
-    |require_files|Use: routers**|Type: string list*|Default: unset|
-    |retry_use_local_part|Use: routers|Type: boolean|Default: see below|
-    |router_home_directory|Use: routers|Type: string*|Default: unset|
-    |self|Use: routers|Type: string|Default: freeze|
-    |senders|Use: routers**|Type: address list*|Default: unset|
-    |translate_ip_address|Use: routers|Type: string*|Default: unset|
-    |transport|Use: routers|Type: string*|Default: unset|
-    |transport_current_directory|Use: routers|Type: string*|Default: unset|
-    |transport_home_directory|Use: routers|Type: string*|Default: see below|
-    |unseen|Use: routers|Type: boolean*|Default: false|
-    |user|Use: routers|Type: string*|Default: see below|
-    |verify|Use: routers**|Type: boolean|Default: true|
-    |verify_only|Use: routers**|Type: boolean|Default: false|
-    |verify_recipient|Use: routers**|Type: boolean|Default: true|
-    |verify_sender|Use: routers**|Type: boolean|Default: true|
-    |check_secondary_mx|Use: dnslookup|Type: boolean|Default: false|
-    |check_srv|Use: dnslookup|Type: string*|Default: unset|
-    |dnssec_request_domains|Use: dnslookup|Type: domain list*|Default: unset|
-    |dnssec_require_domains|Use: dnslookup|Type: domain list*|Default: unset|
-    |mx_domains|Use: dnslookup|Type: domain list*|Default: unset|
-    |mx_fail_domains|Use: dnslookup|Type: domain list*|Default: unset|
-    |qualify_single|Use: dnslookup|Type: boolean|Default: true|
-    |rewrite_headers|Use: dnslookup|Type: boolean|Default: true|
-    |same_domain_copy_routing|Use: dnslookup|Type: boolean|Default: false|
-    |search_parents|Use: dnslookup|Type: boolean|Default: false|
-    |srv_fail_domains|Use: dnslookup|Type: domain list*|Default: unset|
-    |widen_domains|Use: dnslookup|Type: string list|Default: unset|
-    |hosts|Use: iplookup|Type: string|Default: unset|
-    |optional|Use: iplookup|Type: boolean|Default: false|
-    |port|Use: iplookup|Type: integer|Default: 0|
-    |protocol|Use: iplookup|Type: string|Default: udp|
-    |query|Use: iplookup|Type: string*|Default: see below|
-    |reroute|Use: iplookup|Type: string*|Default: unset|
-    |response_pattern|Use: iplookup|Type: string|Default: unset|
-    |timeout|Use: iplookup|Type: time|Default: 5s|
-    |host_all_ignored|Use: manualroute|Type: string|Default: defer|
-    |host_find_failed|Use: manualroute|Type: string|Default: freeze|
-    |hosts_randomize|Use: manualroute|Type: boolean|Default: false|
-    |route_data|Use: manualroute|Type: string*|Default: unset|
-    |route_list|Use: manualroute|Type: string list|Default: unset|
-    |same_domain_copy_routing|Use: manualroute|Type: boolean|Default: false|
-    |command|Use: queryprogram|Type: string*|Default: unset|
-    |command_group|Use: queryprogram|Type: string|Default: unset|
-    |command_user|Use: queryprogram|Type: string|Default: unset|
-    |current_directory|Use: queryprogram|Type: string|Default: /|
-    |timeout|Use: queryprogram|Type: time|Default: 1h|
-    |allow_defer|Use: redirect|Type: boolean|Default: false|
-    |allow_fail|Use: redirect|Type: boolean|Default: false|
-    |allow_filter|Use: redirect|Type: boolean|Default: false|
-    |allow_freeze|Use: redirect|Type: boolean|Default: false|
-    |check_ancestor|Use: redirect|Type: boolean|Default: false|
-    |check_group|Use: redirect|Type: boolean|Default: see below|
-    |check_owner|Use: redirect|Type: boolean|Default: see below|
-    |data|Use: redirect|Type: string*|Default: unset|
-    |directory_transport|Use: redirect|Type: string*|Default: unset|
-    |file|Use: redirect|Type: string*|Default: unset|
-    |file_transport|Use: redirect|Type: string*|Default: unset|
-    |filter_prepend_home|Use: redirect|Type: boolean|Default: true|
-    |forbid_blackhole|Use: redirect|Type: boolean|Default: false|
-    |forbid_exim_filter|Use: redirect|Type: boolean|Default: false|
-    |forbid_file|Use: redirect|Type: boolean|Default: false|
-    |forbid_filter_dlfunc|Use: redirect|Type: boolean|Default: false|
-    |forbid_filter_existstest|Use: redirect|Type: boolean|Default: false|
-    |forbid_filter_logwrite|Use: redirect|Type: boolean|Default: false|
-    |forbid_filter_lookup|Use: redirect|Type: boolean|Default: false|
-    |forbid_filter_perl|Use: redirect|Type: boolean|Default: false|
-    |forbid_filter_readfile|Use: redirect|Type: boolean|Default: false|
-    |forbid_filter_readsocket|Use: redirect|Type: boolean|Default: false|
-    |forbid_filter_reply|Use: redirect|Type: boolean|Default: false|
-    |forbid_filter_run|Use: redirect|Type: boolean|Default: false|
-    |forbid_include|Use: redirect|Type: boolean|Default: false|
-    |forbid_pipe|Use: redirect|Type: boolean|Default: false|
-    |forbid_sieve_filter|Use: redirect|Type: boolean|Default: false|
-    |forbid_smtp_code|Use: redirect|Type: boolean|Default: false|
-    |hide_child_in_errmsg|Use: redirect|Type: boolean|Default: false|
-    |ignore_eacces|Use: redirect|Type: boolean|Default: false|
-    |ignore_enotdir|Use: redirect|Type: boolean|Default: false|
-    |include_directory|Use: redirect|Type: string|Default: unset|
-    |modemask|Use: redirect|Type: octal integer|Default: 022|
-    |one_time|Use: redirect|Type: boolean|Default: false|
-    |owners|Use: redirect|Type: string list|Default: unset|
-    |owngroups|Use: redirect|Type: string list|Default: unset|
-    |pipe_transport|Use: redirect|Type: string*|Default: unset|
-    |qualify_domain|Use: redirect|Type: string*|Default: unset|
-    |qualify_preserve_domain|Use: redirect|Type: boolean|Default: false|
-    |repeat_use|Use: redirect|Type: boolean|Default: true|
-    |reply_transport|Use: redirect|Type: string*|Default: unset|
-    |rewrite|Use: redirect|Type: boolean|Default: true|
-    |sieve_subaddress|Use: redirect|Type: string*|Default: unset|
-    |sieve_useraddress|Use: redirect|Type: string*|Default: unset|
-    |sieve_vacation_directory|Use: redirect|Type: string*|Default: unset|
-    |skip_syntax_errors|Use: redirect|Type: boolean|Default: false|
-    |syntax_errors_text|Use: redirect|Type: string*|Default: unset|
-    |syntax_errors_to|Use: redirect|Type: string|Default: unset|
-    |body_only|Use: transports|Type: boolean|Default: false|
-    |current_directory|Use: transports|Type: string*|Default: unset|
-    |disable_logging|Use: transports|Type: boolean|Default: false|
-    |debug_print|Use: transports|Type: string*|Default: unset|
-    |delivery_date_add|Use: transports|Type: boolean|Default: false|
-    |driver|Use: transports|Type: string|Default: unset|
-    |envelope_to_add|Use: transports|Type: boolean|Default: false|
-    |group|Use: transports|Type: string*|Default: Exim group|
-    |headers_add|Use: transports|Type: list*|Default: unset|
-    |headers_only|Use: transports|Type: boolean|Default: false|
-    |headers_remove|Use: transports|Type: list*|Default: unset|
-    |headers_rewrite|Use: transports|Type: string|Default: unset|
-    |home_directory|Use: transports|Type: string*|Default: unset|
-    |initgroups|Use: transports|Type: boolean|Default: false|
-    |message_size_limit|Use: transports|Type: string*|Default: 0|
-    |rcpt_include_affixes|Use: transports|Type: boolean|Default: false|
-    |retry_use_local_part|Use: transports|Type: boolean|Default: see below|
-    |return_path|Use: transports|Type: string*|Default: unset|
-    |return_path_add|Use: transports|Type: boolean|Default: false|
-    |shadow_condition|Use: transports|Type: string*|Default: unset|
-    |shadow_transport|Use: transports|Type: string|Default: unset|
-    |transport_filter|Use: transports|Type: string*|Default: unset|
-    |transport_filter_timeout|Use: transports|Type: time|Default: 5m|
-    |user|Use: transports|Type: string*|Default: Exim user|
-    |allow_fifo|Use: appendfile|Type: boolean|Default: false|
-    |allow_symlink|Use: appendfile|Type: boolean|Default: false|
-    |batch_id|Use: appendfile|Type: string*|Default: unset|
-    |batch_max|Use: appendfile|Type: integer|Default: 1|
-    |check_group|Use: appendfile|Type: boolean|Default: false|
-    |check_owner|Use: appendfile|Type: boolean|Default: true|
-    |check_string|Use: appendfile|Type: string|Default: see below|
-    |create_directory|Use: appendfile|Type: boolean|Default: true|
-    |create_file|Use: appendfile|Type: string|Default: anywhere|
-    |directory|Use: appendfile|Type: string*|Default: unset|
-    |directory_file|Use: appendfile|Type: string*|Default: see below|
-    |directory_mode|Use: appendfile|Type: octal integer|Default: 0700|
-    |escape_string|Use: appendfile|Type: string|Default: see description|
-    |file|Use: appendfile|Type: string*|Default: unset|
-    |file_format|Use: appendfile|Type: string|Default: unset|
-    |file_must_exist|Use: appendfile|Type: boolean|Default: false|
-    |lock_fcntl_timeout|Use: appendfile|Type: time|Default: 0s|
-    |lock_flock_timeout|Use: appendfile|Type: time|Default: 0s|
-    |lock_interval|Use: appendfile|Type: time|Default: 3s|
-    |lock_retries|Use: appendfile|Type: integer|Default: 10|
-    |lockfile_mode|Use: appendfile|Type: octal integer|Default: 0600|
-    |lockfile_timeout|Use: appendfile|Type: time|Default: 30m|
-    |mailbox_filecount|Use: appendfile|Type: string*|Default: unset|
-    |mailbox_size|Use: appendfile|Type: string*|Default: unset|
-    |maildir_format|Use: appendfile|Type: boolean|Default: false|
-    |maildir_quota_directory_regex|Use: appendfile|Type: string|Default: See below|
-    |maildir_retries|Use: appendfile|Type: integer|Default: 10|
-    |maildir_tag|Use: appendfile|Type: string*|Default: unset|
-    |maildir_use_size_file|Use: appendfile*|Type: boolean|Default: false|
-    |maildirfolder_create_regex|Use: appendfile|Type: string|Default: unset|
-    |mailstore_format|Use: appendfile|Type: boolean|Default: false|
-    |mailstore_prefix|Use: appendfile|Type: string*|Default: unset|
-    |mailstore_suffix|Use: appendfile|Type: string*|Default: unset|
-    |mbx_format|Use: appendfile|Type: boolean|Default: false|
-    |message_prefix|Use: appendfile|Type: string*|Default: see below|
-    |message_suffix|Use: appendfile|Type: string*|Default: see below|
-    |mode|Use: appendfile|Type: octal integer|Default: 0600|
-    |mode_fail_narrower|Use: appendfile|Type: boolean|Default: true|
-    |notify_comsat|Use: appendfile|Type: boolean|Default: false|
-    |quota|Use: appendfile|Type: string*|Default: unset|
-    |quota_directory|Use: appendfile|Type: string*|Default: unset|
-    |quota_filecount|Use: appendfile|Type: string*|Default: 0|
-    |quota_is_inclusive|Use: appendfile|Type: boolean|Default: true|
-    |quota_size_regex|Use: appendfile|Type: string|Default: unset|
-    |quota_warn_message|Use: appendfile|Type: string*|Default: see below|
-    |quota_warn_threshold|Use: appendfile|Type: string*|Default: 0|
-    |use_bsmtp|Use: appendfile|Type: boolean|Default: false|
-    |use_crlf|Use: appendfile|Type: boolean|Default: false|
-    |use_fcntl_lock|Use: appendfile|Type: boolean|Default: see below|
-    |use_flock_lock|Use: appendfile|Type: boolean|Default: false|
-    |use_lockfile|Use: appendfile|Type: boolean|Default: see below|
-    |use_mbx_lock|Use: appendfile|Type: boolean|Default: see below|
-    |bcc|Use: autoreply|Type: string*|Default: unset|
-    |cc|Use: autoreply|Type: string*|Default: unset|
-    |file|Use: autoreply|Type: string*|Default: unset|
-    |file_expand|Use: autoreply|Type: boolean|Default: false|
-    |file_optional|Use: autoreply|Type: boolean|Default: false|
-    |from|Use: autoreply|Type: string*|Default: unset|
-    |headers|Use: autoreply|Type: string*|Default: unset|
-    |log|Use: autoreply|Type: string*|Default: unset|
-    |mode|Use: autoreply|Type: octal integer|Default: 0600|
-    |never_mail|Use: autoreply|Type: address list*|Default: unset|
-    |once|Use: autoreply|Type: string*|Default: unset|
-    |once_file_size|Use: autoreply|Type: integer|Default: 0|
-    |once_repeat|Use: autoreply|Type: time*|Default: 0s|
-    |reply_to|Use: autoreply|Type: string*|Default: unset|
-    |return_message|Use: autoreply|Type: boolean|Default: false|
-    |subject|Use: autoreply|Type: string*|Default: unset|
-    |text|Use: autoreply|Type: string*|Default: unset|
-    |to|Use: autoreply|Type: string*|Default: unset|
-    |batch_id|Use: lmtp|Type: string*|Default: unset|
-    |batch_max|Use: lmtp|Type: integer|Default: 1|
-    |command|Use: lmtp|Type: string*|Default: unset|
-    |ignore_quota|Use: lmtp|Type: boolean|Default: false|
-    |socket|Use: lmtp|Type: string*|Default: unset|
-    |timeout|Use: lmtp|Type: time|Default: 5m|
-    |allow_commands|Use: pipe|Type: string list*|Default: unset|
-    |batch_id|Use: pipe|Type: string*|Default: unset|
-    |batch_max|Use: pipe|Type: integer|Default: 1|
-    |check_string|Use: pipe|Type: string|Default: unset|
-    |command|Use: pipe|Type: string*|Default: unset|
-    |environment|Use: pipe|Type: string*|Default: unset|
-    |escape_string|Use: pipe|Type: string|Default: unset|
-    |freeze_exec_fail|Use: pipe|Type: boolean|Default: false|
-    |freeze_signal|Use: pipe|Type: boolean|Default: false|
-    |force_command|Use: pipe|Type: boolean|Default: false|
-    |ignore_status|Use: pipe|Type: boolean|Default: false|
-    |log_defer_output|Use: pipe|Type: boolean|Default: false|
-    |log_fail_output|Use: pipe|Type: boolean|Default: false|
-    |log_output|Use: pipe|Type: boolean|Default: false|
-    |max_output|Use: pipe|Type: integer|Default: 20K|
-    |message_prefix|Use: pipe|Type: string*|Default: see below|
-    |message_suffix|Use: pipe|Type: string*|Default: see below|
-    |path|Use: pipe|Type: string|Default: see below|
-    |permit_coredump|Use: pipe|Type: boolean|Default: false|
-    |pipe_as_creator|Use: pipe|Type: boolean|Default: false|
-    |restrict_to_path|Use: pipe|Type: boolean|Default: false|
-    |return_fail_output|Use: pipe|Type: boolean|Default: false|
-    |return_output|Use: pipe|Type: boolean|Default: false|
-    |temp_errors|Use: pipe|Type: string list|Default: see below|
-    |timeout|Use: pipe|Type: time|Default: 1h|
-    |timeout_defer|Use: pipe|Type: boolean|Default: false|
-    |umask|Use: pipe|Type: octal integer|Default: 022|
-    |use_bsmtp|Use: pipe|Type: boolean|Default: false|
-    |use_classresources|Use: pipe|Type: boolean|Default: false|
-    |use_crlf|Use: pipe|Type: boolean|Default: false|
-    |use_shell|Use: pipe|Type: boolean|Default: false|
-    |address_retry_include_sender|Use: smtp|Type: boolean|Default: true|
-    |allow_localhost|Use: smtp|Type: boolean|Default: false|
-    |authenticated_sender|Use: smtp|Type: string*|Default: unset|
-    |authenticated_sender_force|Use: smtp|Type: boolean|Default: false|
-    |command_timeout|Use: smtp|Type: time|Default: 5m|
-    |connect_timeout|Use: smtp|Type: time|Default: 5m|
-    |connection_max_messages|Use: smtp|Type: integer|Default: 500|
-    |data_timeout|Use: smtp|Type: time|Default: 5m|
-    |delay_after_cutoff|Use: smtp|Type: boolean|Default: true|
-    |dns_qualify_single|Use: smtp|Type: boolean|Default: true|
-    |dns_search_parents|Use: smtp|Type: boolean|Default: false|
-    |dnssec_request_domains|Use: smtp|Type: domain list*|Default: unset|
-    |dnssec_require_domains|Use: smtp|Type: domain list*|Default: unset|
-    |dscp|Use: smtp|Type: string*|Default: unset|
-    |fallback_hosts|Use: smtp|Type: string list|Default: unset|
-    |final_timeout|Use: smtp|Type: time|Default: 10m|
-    |gethostbyname|Use: smtp|Type: boolean|Default: false|
-    |gnutls_compat_mode|Use: smtp|Type: boolean|Default: unset|
-    |helo_data|Use: smtp|Type: string*|Default: see below|
-    |hosts|Use: smtp|Type: string list*|Default: unset|
-    |hosts_avoid_esmtp|Use: smtp|Type: host list*|Default: unset|
-    |hosts_avoid_pipelining|Use: smtp|Type: host list*|Default: unset|
-    |hosts_avoid_tls|Use: smtp|Type: host list*|Default: unset|
-    |hosts_verify_avoid_tls|Use: smtp|Type: host list*|Default: *|
-    |hosts_max_try|Use: smtp|Type: integer|Default: 5|
-    |hosts_max_try_hardlimit|Use: smtp|Type: integer|Default: 50|
-    |hosts_nopass_tls|Use: smtp|Type: host list*|Default: unset|
-    |hosts_override|Use: smtp|Type: boolean|Default: false|
-    |hosts_randomize|Use: smtp|Type: boolean|Default: false|
-    |hosts_require_auth|Use: smtp|Type: host list*|Default: unset|
-    |hosts_request_ocsp|Use: smtp|Type: host list*|Default: *|
-    |hosts_require_ocsp|Use: smtp|Type: host list*|Default: unset|
-    |hosts_require_tls|Use: smtp|Type: host list*|Default: unset|
-    |hosts_try_auth|Use: smtp|Type: host list*|Default: unset|
-    |hosts_try_prdr|Use: smtp|Type: host list*|Default: unset|
-    |interface|Use: smtp|Type: string list*|Default: unset|
-    |keepalive|Use: smtp|Type: boolean|Default: true|
-    |lmtp_ignore_quota|Use: smtp|Type: boolean|Default: false|
-    |max_rcpt|Use: smtp|Type: integer|Default: 100|
-    |multi_domain|Use: smtp|Type: boolean|Default: true|
-    |port|Use: smtp|Type: string*|Default: see below|
-    |protocol|Use: smtp|Type: string|Default: smtp|
-    |retry_include_ip_address|Use: smtp|Type: boolean|Default: true|
-    |serialize_hosts|Use: smtp|Type: host list*|Default: unset|
-    |size_addition|Use: smtp|Type: integer|Default: 1024|
-    |tls_certificate|Use: smtp|Type: string*|Default: unset|
-    |tls_crl|Use: smtp|Type: string*|Default: unset|
-    |tls_dh_min_bits|Use: smtp|Type: integer|Default: 1024|
-    |tls_privatekey|Use: smtp|Type: string*|Default: unset|
-    |tls_require_ciphers|Use: smtp|Type: string*|Default: unset|
-    |tls_sni|Use: smtp|Type: string*|Default: unset|
-    |tls_tempfail_tryclear|Use: smtp|Type: boolean|Default: true|
-    |tls_try_verify_hosts|Use: smtp|Type: host list* unset|Default:|
-    |tls_verify_certificates|Use: smtp|Type: string*|Default: unset|
-    |tls_verify_hosts|Use: smtp|Type: host list* unset|Default:|
-    |client_condition|Use: authenticators|Type: string*|Default: unset|
-    |client_set_id|Use: authenticators|Type: string*|Default: unset|
-    |driver|Use: authenticators|Type: string|Default: unset|
-    |public_name|Use: authenticators|Type: string|Default: unset|
-    |server_advertise_condition|Use: authenticators|Type: string*|Default: unset|
-    |server_condition|Use: authenticators|Type: string*|Default: unset|
-    |server_debug_print|Use: authenticators|Type: string*|Default: unset|
-    |server_set_id|Use: authenticators|Type: string*|Default: unset|
-    |server_mail_auth_condition|Use: authenticators|Type: string*|Default: unset|
-    |server_condition|Use: authenticators|Type: string*|Default: unset|
-    |server_prompts|Use: plaintext|Type: string*|Default: unset|
-    |client_ignore_invalid_base64|Use: plaintext|Type: boolean|Default: false|
-    |client_send|Use: plaintext|Type: string*|Default: unset|
-    |server_secret|Use: cram_md5|Type: string*|Default: unset|
-    |client_name|Use: cram_md5|Type: string*|Default: the primary host name|
-    |client_secret|Use: cram_md5|Type: string*|Default: unset|
-    |server_hostname|Use: cyrus_sasl|Type: string*|Default: see below|
-    |server_mech|Use: cyrus_sasl|Type: string|Default: see below|
-    |server_realm|Use: cyrus_sasl|Type: string*|Default: unset|
-    |server_service|Use: cyrus_sasl|Type: string|Default: "smtp"|
-    |server_socket|Use: dovecot|Type: string|Default: unset|
-    |server_channelbinding|Use: gsasl|Type: boolean|Default: false|
-    |server_hostname|Use: gsasl|Type: string*|Default: see below|
-    |server_mech|Use: gsasl|Type: string|Default: see below|
-    |server_password|Use: gsasl|Type: string*|Default: unset|
-    |server_realm|Use: gsasl|Type: string*|Default: unset|
-    |server_scram_iter|Use: gsasl|Type: string*|Default: unset|
-    |server_scram_salt|Use: gsasl|Type: string*|Default: unset|
-    |server_service|Use: gsasl|Type: string|Default: "smtp"|
-    |server_hostname|Use: heimdal_gssapi|Type: string*|Default: see below|
-    |server_keytab|Use: heimdal_gssapi|Type: string*|Default: unset|
-    |server_service|Use: heimdal_gssapi|Type: string*|Default: smtp|
-    |server_password|Use: spa|Type: string*|Default: unset|
-    |client_domain|Use: spa|Type: string*|Default: unset|
-    |client_password|Use: spa|Type: string*|Default: unset|
-    |client_username|Use: spa|Type: string*|Default: unset|
-    |dkim_domain|Use: smtp|Type: string*|Default: unset|
-    |dkim_selector|Use: smtp|Type: string*|Default: unset|
-    |dkim_private_key|Use: smtp|Type: string*|Default: unset|
-    |dkim_canon|Use: smtp|Type: string*|Default: unset|
-    |dkim_strict|Use: smtp|Type: string*|Default: unset|
-    |dkim_sign_headers|Use: smtp|Type: string*|Default: unset|
+    accept_8bitmime
+    acl_not_smtp
+    acl_not_smtp_mime
+    acl_not_smtp_start
+    acl_smtp_auth
+    acl_smtp_connect
+    acl_smtp_data
+    acl_smtp_data_prdr
+    acl_smtp_etrn
+    acl_smtp_expn
+    acl_smtp_helo
+    acl_smtp_mail
+    acl_smtp_mailauth
+    acl_smtp_mime
+    acl_smtp_predata
+    acl_smtp_quit
+    acl_smtp_rcpt
+    acl_smtp_starttls
+    acl_smtp_vrfy
+    admin_groups
+    allow_domain_literals
+    allow_mx_to_ip
+    allow_utf8_domains
+    auth_advertise_hosts
+    auto_thaw
+    av_scanner
+    bi_command
+    bounce_message_file
+    bounce_message_text
+    bounce_return_body
+    bounce_return_message
+    bounce_return_size_limit
+    bounce_sender_authentication
+    callout_domain_negative_expire
+    callout_domain_positive_expire
+    callout_negative_expire
+    callout_positive_expire
+    callout_random_local_part
+    check_log_inodes
+    check_log_space
+    check_rfc2047_length
+    check_spool_inodes
+    check_spool_space
+    daemon_smtp_ports
+    daemon_startup_retries
+    daemon_startup_sleep
+    delay_warning
+    delay_warning_condition
+    deliver_drop_privilege
+    deliver_queue_load_max
+    delivery_date_remove
+    disable_fsync
+    disable_ipv6
+    dns_again_means_nonexist
+    dns_check_names_pattern
+    dns_csa_search_limit
+    dns_csa_use_reverse
+    dns_dnssec_ok
+    dns_ipv4_lookup
+    dns_retrans
+    dns_retry
+    dns_use_edns0
+    drop_cr
+    dsn_from
+    envelope_to_remove
+    errors_copy
+    errors_reply_to
+    exim_group
+    exim_path
+    exim_user
+    extra_local_interfaces
+    finduser_retries
+    freeze_tell
+    gecos_name
+    gecos_pattern
+    gnutls_compat_mode
+    header_line_maxsize
+    header_maxsize
+    headers_charset
+    helo_accept_junk_hosts
+    helo_allow_chars
+    helo_lookup_domains
+    helo_try_verify_hosts
+    helo_verify_hosts
+    hold_domains
+    host_lookup
+    host_lookup_order
+    host_reject_connection
+    hosts_connection_nolog
+    hosts_treat_as_local
+    ibase_servers
+    ignore_bounce_errors_after
+    ignore_fromline_hosts
+    ignore_fromline_local
+    keep_malformed
+    ldap_ca_cert_dir
+    ldap_ca_cert_file
+    ldap_cert_file
+    ldap_cert_key
+    ldap_cipher_suite
+    ldap_default_servers
+    ldap_require_cert
+    ldap_start_tls
+    ldap_version
+    local_from_check
+    local_from_prefix
+    local_from_suffix
+    local_interfaces
+    local_scan_timeout
+    local_sender_retain
+    localhost_number
+    log_file_path
+    log_selector
+    log_timezone
+    lookup_open_max
+    max_username_length
+    message_body_newlines
+    message_body_visible
+    message_id_header_domain
+    message_id_header_text
+    message_logs
+    message_size_limit
+    move_frozen_messages
+    mua_wrapper
+    mysql_servers
+    never_users
+    openssl_options
+    oracle_servers
+    percent_hack_domains
+    perl_at_start
+    perl_startup
+    pgsql_servers
+    pid_file_path
+    pipelining_advertise_hosts
+    prdr_enable
+    preserve_message_logs
+    primary_hostname
+    print_topbitchars
+    process_log_path
+    prod_requires_admin
+    qualify_domain
+    qualify_recipient
+    queue_domains
+    queue_list_requires_admin
+    queue_only
+    queue_only_file
+    queue_only_load
+    queue_only_load_latch
+    queue_only_override
+    queue_run_in_order
+    queue_run_max
+    queue_smtp_domains
+    receive_timeout
+    received_header_text
+    received_headers_max
+    recipient_unqualified_hosts
+    recipients_max
+    recipients_max_reject
+    remote_max_parallel
+    remote_sort_domains
+    retry_data_expire
+    retry_interval_max
+    return_path_remove
+    return_size_limit
+    rfc1413_hosts
+    rfc1413_query_timeout
+    sender_unqualified_hosts
+    smtp_accept_keepalive
+    smtp_accept_max
+    smtp_accept_max_nonmail
+    smtp_accept_max_nonmail_hosts
+    smtp_accept_max_per_connection
+    smtp_accept_max_per_host
+    smtp_accept_queue
+    smtp_accept_queue_per_connection
+    smtp_accept_reserve
+    smtp_active_hostname
+    smtp_banner
+    smtp_check_spool_space
+    smtp_connect_backlog
+    smtp_enforce_sync
+    smtp_etrn_command
+    smtp_etrn_serialize
+    smtp_load_reserve
+    smtp_max_synprot_errors
+    smtp_max_unknown_commands
+    smtp_ratelimit_hosts
+    smtp_ratelimit_mail
+    smtp_ratelimit_rcpt
+    smtp_receive_timeout
+    smtp_reserve_hosts
+    smtp_return_error_details
+    spamd_address
+    split_spool_directory
+    spool_directory
+    sqlite_lock_timeout
+    strict_acl_vars
+    strip_excess_angle_brackets
+    strip_trailing_dot
+    syslog_duplication
+    syslog_facility
+    syslog_processname
+    syslog_timestamp
+    system_filter
+    system_filter_directory_transport
+    system_filter_file_transport
+    system_filter_group
+    system_filter_pipe_transport
+    system_filter_reply_transport
+    system_filter_user
+    tcp_nodelay
+    timeout_frozen_after
+    timezone
+    tls_advertise_hosts
+    tls_certificate
+    tls_crl
+    tls_dh_max_bits
+    tls_dhparam
+    tls_ocsp_file
+    tls_on_connect_ports
+    tls_privatekey
+    tls_remember_esmtp
+    tls_require_ciphers
+    tls_try_verify_hosts
+    tls_verify_certificates
+    tls_verify_hosts
+    trusted_groups
+    trusted_users
+    unknown_login
+    unknown_username
+    untrusted_set_sender
+    uucp_from_pattern
+    uucp_from_sender
+    warn_message_file
+    write_rejectlog
+
+
     }}}
 
-## List of Variables {{{
+## Liste von Expansionsvariablen {{{
 
-    $0, $1, etc
-    $acl_arg1, $acl_arg2, etc
-    $acl_c...
-    $acl_m...
     $acl_narg
     $acl_verify_message
     $address_data
     $address_file
     $address_pipe
-    $auth1 - $auth3
+    $authenticated_fail_id
     $authenticated_id
-    $authenticated_fail_id
     $authenticated_sender
     $authentication_failed
     $av_failed
-
     $body_linecount
     $body_zerocount
     $bounce_recipient
     $bounce_return_size_limit
-
     $caller_gid
     $caller_uid
     $compile_date
     $compile_number
-
+    $demime_errorlevel
     $demime_errorlevel
     $demime_reason
-    $dnslist_domain, $dnslist_matched, $dnslist_text, $dnslist_value
+    $demime_reason
+    $dnslist_domain
     $domain
     $domain_data
-
     $exim_gid
     $exim_path
     $exim_uid
-
+    $found_extension
     $found_extension
-    $header_<name>
-
+    $header_
     $headers_added
     $home
     $host
@@ -935,12 +578,10 @@
     $host_lookup_deferred
     $host_lookup_failed
     $host_port
-
     $inode
     $interface_address
     $interface_port
     $item
-
     $ldap_dn
     $load_average
     $local_part
@@ -954,7 +595,6 @@
     $log_inodes
     $log_space
     $lookup_dnssec_authenticated
-
     $mailstore_basename
     $malware_name
     $max_received_linelength
@@ -968,15 +608,25 @@
     $message_id
     $message_linecount
     $message_size
-    $mime_xxx
-
-    $n0 - $n9
-
+    $mime_
+    $mime_boundary
+    $mime_charset
+    $mime_content_description
+    $mime_content_disposition
+    $mime_content_id
+    $mime_content_size
+    $mime_content_transfer_encoding
+    $mime_content_type
+    $mime_decoded_filename
+    $mime_filename
+    $mime_is_coverletter
+    $mime_is_multipart
+    $mime_is_rfc822
+    $mime_part_count
     $original_domain
     $original_local_part
     $originator_gid
     $originator_uid
-
     $parent_domain
     $parent_local_part
     $pid
@@ -987,7 +637,6 @@
     $prvscheck_result
     $qualify_domain
     $qualify_recipient
-
     $rcpt_count
     $rcpt_defer_count
     $rcpt_fail_count
@@ -1007,7 +656,6 @@
     $return_size_limit
     $router_name
     $runrc
-
     $self_hostname
     $sender_address
     $sender_address_data
@@ -1022,7 +670,7 @@
     $sender_host_name
     $sender_host_port
     $sender_ident
-    $sender_rate_xxx
+    $sender_rate_
     $sender_rcvhost
     $sender_verify_failure
     $sending_ip_address
@@ -1031,30 +679,31 @@
     $smtp_command
     $smtp_command_argument
     $smtp_count_at_connection_start
-    $sn0 - $sn9
-    $spam_xxx
+    $spam_
+    $spam_bar
+    $spam_report
+    $spam_score
+    $spam_score_int
     $spool_directory
     $spool_inodes
     $spool_space
-
     $thisaddress
     $tls_in_bits
-    $tls_out_bits
+    $tls_in_certificate_verified
+    $tls_in_cipher
+    $tls_in_ocsp
     $tls_in_ourcert
     $tls_in_peercert
+    $tls_in_peerdn
+    $tls_in_sni
+    $tls_out_bits
+    $tls_out_certificate_verified
+    $tls_out_cipher
+    $tls_out_ocsp
     $tls_out_ourcert
     $tls_out_peercert
-    $tls_in_certificate_verified
-    $tls_out_certificate_verified
-    $tls_in_cipher
-    $tls_out_cipher
-    $tls_in_ocsp
-    $tls_out_ocsp
-    $tls_in_peerdn
     $tls_out_peerdn
-    $tls_in_sni
     $tls_out_sni
-
     $tod_bsdinbox
     $tod_epoch
     $tod_epoch_l
@@ -1064,147 +713,108 @@
     $tod_zone
     $tod_zulu
     $transport_name
-
     $value
     $verify_mode
     $version_number
-
     $warn_message_delay
     $warn_message_recipients
+
     }}}
 
-## List of Operators {{{
+## Liste von Operatoren {{{
 
-    ${quote_<lookup-type>:<string>}
-    ${quote_ldap: a(bc)*, a<yz>; }
-    ${quote_ldap_dn: a(bc)*, a<yz>; }
-    ${<op>:<string>}
-    ${address:<string>}
-    ${addresses:<string>}
-    ${base62:<digits>}
-    ${base62d:<base-62 digits>}
-    ${domain:<string>}
-    ${escape:<string>}
-    ${eval:<string>} and ${eval10:<string>}
-    ${expand:<string>}
-    ${from_utf8:<string>}
-    ${hash_<n>_<m>:<string>}
-    ${hex2b64:<hexstring>}
-    ${hexquote:<string>}
-    ${lc:<string>}
-    ${length_<number>:<string>}
-    ${listcount:<string>}
-    ${listnamed:<name>} and ${listnamed_<type>:<name>}
-    ${local_part:<string>}
-    ${mask:<IP address>/<bit count>}
-    ${md5:<string>}
-    ${nhash_<n>_<m>:<string>}
-    ${quote:<string>}
-    ${quote_local_part:<string>}
-    ${quote_<lookup-type>:<string>}
-    ${randint:<n>}
-    ${reverse_ip:<ipaddr>}
-    ${rfc2047:<string>}
-    ${rfc2047d:<string>}
-    ${rxquote:<string>}
-    ${sha1:<string>}
-    ${sha256:<certificate>}
-    ${stat:<string>}
-    ${str2b64:<string>}
-    ${strlen:<string>}
-    ${substr_<start>_<length>:<string>}
-    ${time_eval:<string>}
-    ${time_interval:<string>}
-    ${uc:<string>}
-    ${utf8clean:<string>}
+    ${address:
+    ${addresses:
+    ${base62:
+    ${base62d:
+    ${domain:
+    ${escape:
+    ${eval:
+    ${expand:
+    ${from_utf8:
+    ${hex2b64:
+    ${hexquote:
+    ${lc:
+    ${listcount:
+    ${listnamed:
+    ${local_part:
+    ${mask:
+    ${md5:
+    ${quote:
+    ${quote_local_part:
+    ${randint:
+    ${reverse_ip:
+    ${rfc2047:
+    ${rfc2047d:
+    ${rxquote:
+    ${sha1:
+    ${sha256:
+    ${stat:
+    ${str2b64:
+    ${strlen:
+    ${time_eval:
+    ${time_interval:
+    ${uc:
+    ${utf8clean:
+
     }}}
 
 ## List of Conditions {{{
 
-    acl {{<name>}{<arg1>}{<arg2>}...}
-    bool {<string>}
-    bool_lax {<string>}
-    crypteq {<string1>}{<string2>}
-    eq {<string1>}{<string2>}, eqi {<string1>}{<string2>}
-    exists {<file name>}
-    ge {<string1>}{<string2>}, gei {<string1>}{<string2>}
-    gt {<string1>}{<string2>}, gti {<string1>}{<string2>}
-    inlist {<string1>}{<string2>}, inlisti {<string1>}{<string2>}
-    isip {<string>}, isip4 {<string>}, isip6 {<string>}
-    ldapauth {<ldap query>}
-    le {<string1>}{<string2>}, lei {<string1>}{<string2>}
-    lt {<string1>}{<string2>}, lti {<string1>}{<string2>}
-    match {<string1>}{<string2>}
-    match_address {<string1>}{<string2>}
-    match_domain {<string1>}{<string2>}
-    match_ip {<string1>}{<string2>}
-    match_local_part {<string1>}{<string2>}
-    pam {<string1>:<string2>:...}
-    pwcheck {<string1>:<string2>}
-    radius {<authentication string>}
-    saslauthd {{<user>}{<password>}{<service>}{<realm>}}
-    or {{<cond1>}{<cond2>}...}
-    and {{<cond1>}{<cond2>}...}
+    acl
+    and
+    bool
+    bool_lax
+    crypteq
+    eq
+    exists
+    ge
+    gt
+    inlist
+    isip
+    ldapauth
+    le
+    lt
+    match
+    match_address
+    match_domain
+    match_ip
+    match_local_part
+    or
+    pam
+    pwcheck
+    radius
+
     }}}
 
 ## List of Functions {{{
 
-    ${lookup dnsdb{mx=a.b.example}{$value}fail}
-    ${lookup dnsdb{ptr=192.168.4.5}{$value}fail}
-    ${lookup dnsdb{>: a=host1.example}}
-    ${lookup dnsdb{>\n,: txt=a.b.example}}
-    ${lookup dnsdb{>\n; txt=a.b.example}}
-    ${lookup dnsdb{spf=example.org}}
-    ${lookup dnsdb{mxh=a.b.example}}
-    ${lookup dnsdb{zns=xxx.quercite.com}}
-    ${lookup dnsdb{zns=xxx.edu}}
-    ${lookup dnsdb {csa=$sender_helo_name}}
-    ${lookup dnsdb {>; a+=$sender_helo_name}}
-    ${lookup dnsdb{one.domain.com:two.domain.com}}
-    ${lookup dnsdb{a=one.host.com:two.host.com}}
-    ${lookup dnsdb{ptr = <; 1.2.3.4 ; 4.5.6.8}}
-    ${lookup dnsdb{defer_lax,a=one.host.com:two.host.com}}
-    ${lookup dnsdb{a=one.host.com:two.host.com}}
-    ${quote_ldap: a(bc)*, a<yz>; }
-    ${quote_ldap_dn: a(bc)*, a<yz>; }
-    ${lookup ldap {ldapi://%2Ftmp%2Fldap.sock/o=...
-    ${lookup ldap
-    ${lookup mysql{select mailbox from users where id='userx'}\
-    ${lookup pgsql{select home,name from users where id='userx'}\
-    ${lookup mysql{servers=master; UPDATE ...} }
-    ${lookup pgsql{servers=master/db/name/pw; UPDATE ...} }
-    ${lookup sqlite {/some/thing/sqlitedb \
-    ${acl{<name>}{<arg>}...}
-    ${certextract{<field>}{<certificate>}{<string2>}{<string3>}}
-    ${dlfunc{<file>}{<function>}{<arg>}{<arg>}...}
-    ${extract{<key>}{<string1>}{<string2>}{<string3>}}
-    ${extract{<number>}{<separators>}{<string1>}{<string2>}{<string3>}}
-    ${filter{<string>}{<condition>}}
-    ${hash{<string1>}{<string2>}{<string3>}}
-    ${hmac{<hashname>}{<secret>}{<string>}}
-    ${if <condition> {<string1>}{<string2>}}
-    ${length{<string1>}{<string2>}}
-    ${listextract{<number>}{<string1>}{<string2>}{<string3>}}
-    ${lookup{<key>} <search type> {<file>} {<string1>} {<string2>}}
-    ${lookup <search type> {<query>} {<string1>} {<string2>}}
-    ${map{<string1>}{<string2>}}
-    ${nhash{<string1>}{<string2>}{<string3>}}
-    ${perl{<subroutine>}{<arg>}{<arg>}...}
-    ${prvs{<address>}{<secret>}{<keynumber>}}
-    ${prvscheck{<address>}{<secret>}{<string>}}
-    ${readfile{<file name>}{<eol string>}}
-    ${readsocket{<name>}{<request>}{<timeout>}{<eol string>}{<fail string>}}
-    ${reduce{<string1>}{<string2>}{<string3>}}
-    ${run{<command> <args>}{<string1>}{<string2>}}
-    ${sg{<subject>}{<regex>}{<replacement>}}
-    ${sort{<string>}{<comparator>}{<extractor>}}
-    ${substr{<string1>}{<string2>}{<string3>}}
-    ${tr{<subject>}{<characters>}{<replacements>}}
-    ${perl{foo}}
-    ${perl{foo}{argument}}
-    ${perl{foo}{argument1}{argument2} ... }
-    ${lookup dnsdb {csa=$sender_helo_name}}
-    }}}
+    ${acl
+    ${certextract
+    ${dlfunc
+    ${extract
+    ${extract
+    ${filter
+    ${hash
+    ${hmac
+    ${length
+    ${listextract
+    ${lookup
+    ${map
+    ${nhash
+    ${perl
+    ${prvs
+    ${prvscheck
+    ${readfile
+    ${readsocket
+    ${reduce
+    ${run
+    ${sg
+    ${sort
+    ${substr
+    ${tr
+
+        }}}
 
 ## Routing Pre-Conditions {{{
 
@@ -1222,10 +832,10 @@
     verify_only
     verify_recipient
     verify_sender
+
     }}}
 
 
-
 Cheat sheet: http://www.datadisk.co.uk/html_docs/exim/exim_cs.htm
 
 # vim:tw=0:et:ts=4:sw=4:fdm=marker:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/extract	Wed Nov 19 21:41:17 2014 +0100
@@ -0,0 +1,23 @@
+#! /usr/bin/perl
+use 5.014;
+use strict;
+use warnings;
+use List::MoreUtils qw(uniq);
+
+my $what = shift // die "$0: Usage {main} [spec.xfpt]\n";
+
+@ARGV = "$ENV{HOME}/src/exim/doc/doc-docbook/spec.xfpt"
+  if not @ARGV;
+
+my $pattern = do {
+    given ($what) {
+        when ('main')  { qr/^\.option\s(")?(?<item>\S+)(?(1)\1)\smain/ }
+        when ('vars')  { qr/^\.vitem\s&(?<item>\$\w+)/ }
+        when ('ops')   { qr/^\.vitem\s&\*(?<item>\$\{\w+:)/ }
+        when ('conds') { qr/^\.vitem\s&\*(?<item>\w+)\&~\{/ }
+        when ('funcs') { qr/^\.vitem\s(")?&\*(?<item>\$\{\w+)\{/ }
+        default        { die "$0: unknown search pattern\n" }
+    }
+};
+
+say join "\n", sort uniq map { /$pattern/ ? $+{item} : () } <>;