|
1 Kurzer Konfigurationsritt |
|
2 ========================= |
|
3 :Author: Heiko Schlittermann |
|
4 :Toc: |
|
5 :data-uri: |
|
6 :icons: |
|
7 :numbered: |
|
8 |
|
9 |
|
10 == Konfig im Detail == |
|
11 |
|
12 Welche Konfiguration wird eingelesen? Je nach Installation kann das |
|
13 ein anderes File sind. |
|
14 |
|
15 .aktive Konfiguration ermitteln: |
|
16 ---- |
|
17 > exim -bV | tail -n 1 |
|
18 > exim -bP configure_file |
|
19 ---- |
|
20 |
|
21 .aktive Konfiguration ändern |
|
22 ---- |
|
23 > exim -C `pwd`/test.config … |
|
24 ---- |
|
25 |
|
26 Die Konfiguration öfter gelesen, als vielleicht erwartet: |
|
27 |
|
28 * Klar - beim Start |
|
29 * Aber - wann wird gestartet? |
|
30 ** Start des Daemon |
|
31 ** Signal HUP |
|
32 ** re-exec for verschiedene Zwecke |
|
33 * Achtung: |
|
34 ** exim4.conf + .include ist "statisch" |
|
35 ** lists, lookups, … "dynamisch" |
|
36 |
|
37 Der Config-Parser ist ziemlich einfach. |
|
38 |
|
39 * einfache Syntax-Checks |
|
40 * Erst „de-comment“, dann „trimm“, dann Fortsetzungszeilen mit `\` |
|
41 am Ende |
|
42 |
|
43 == Syntax der Konfiguration == |
|
44 |
|
45 Es gibt Macros. |
|
46 |
|
47 * Macros - Text-Ersatz während des Einlesens, |
|
48 ggf. bedingt über `.ifdef` |
|
49 * `.include`, `.include_ifexists` |
|
50 |
|
51 .Macro-Ersetzungen |
|
52 ---- |
|
53 FOO = foo <1> |
|
54 FOO == bar <2> |
|
55 primary_hostname = FOO |
|
56 ---- |
|
57 <1> Definition |
|
58 <2> Re-Definition |
|
59 |
|
60 Es gibt weitere Elemente: |
|
61 |
|
62 * Optionsnamen |
|
63 * benamste Listen |
|
64 * Instanzen von Routern, Transports, … |
|
65 |
|
66 == Werte == |
|
67 |
|
68 Optionen und Listen haben Werte. Es gibt _bool_, _integer_, _fixed-point_, _time_ und _string_. |
|
69 |
|
70 === Bool === |
|
71 |
|
72 _bool_ sind einfache Schalter. |
|
73 |
|
74 .Format |
|
75 ---- |
|
76 true |
|
77 false |
|
78 <option> |
|
79 no_<option> |
|
80 not_<option> |
|
81 ---- |
|
82 |
|
83 ---- |
|
84 split_spool_directory |
|
85 not_split_spool_directory |
|
86 split_spool_directory = true |
|
87 split_spool_directory = no |
|
88 ---- |
|
89 |
|
90 .spect.txt |
|
91 +---------------------+---------+-------------+--------------+ |
|
92 |split_spool_directory|Use: main|Type: boolean|Default: false| |
|
93 +---------------------+---------+-------------+--------------+ |
|
94 |
|
95 === Integer === |
|
96 |
|
97 Zahlen halt. Ganze Zahlen. |
|
98 |
|
99 .Format |
|
100 ---- |
|
101 <n>[<suffix>] |
|
102 0<n>[<suffix>] |
|
103 0x<n>[<suffix>] |
|
104 suffix: k|m |
|
105 ---- |
|
106 |
|
107 ---- |
|
108 check_spool_space = 10M |
|
109 ---- |
|
110 |
|
111 .spec.txt |
|
112 +-----------------+---------+-------------+----------+ |
|
113 |check_spool_space|Use: main|Type: integer|Default: 0| |
|
114 +-----------------+---------+-------------+----------+ |
|
115 |
|
116 |
|
117 |
|
118 ### fixed-point |
|
119 Format: <i>[.d[d[d]]] eg: 0.234 |
|
120 |
|
121 +----------------------+---------+-----------------+--------------+ |
|
122 |deliver_queue_load_max|Use: main|Type: fixed-point|Default: unset| |
|
123 +----------------------+---------+-----------------+--------------+ |
|
124 > exim -C <(echo deliver_queue_load_max = 3.3) -bP deliver_queue_load_max |
|
125 |
|
126 ### time intervals |
|
127 Format: n<suffix>... eg: 2w3d |
|
128 suffix: s|m|h|d|w |
|
129 |
|
130 +---------+---------+----------+-----------+ |
|
131 |auto_thaw|Use: main|Type: time|Default: 0s| |
|
132 +---------+---------+----------+-----------+ |
|
133 > exim -C <(echo auto_thaw = 1w7s) -bP auto_thaw |
|
134 |
|
135 ### strings |
|
136 Fromat: <string> eg: localhost |
|
137 <"string"> eg: " A\x42C" |
|
138 |
|
139 Quoting für \\, \n, \r, \t, \ddd, \xdd und führende oder baumelnde Spaces |
|
140 |
|
141 - Vorsicht: Expansion |
|
142 - Vorsicht: User/Groups |
|
143 |
|
144 +----------------+---------+------------+------------------+ |
|
145 |primary_hostname|Use: main|Type: string|Default: see below| |
|
146 +----------------+---------+------------+------------------+ |
|
147 > exim -C <(echo 'primary_hostname = a\x41b') -bP primary_hostname |
|
148 > exim -C <(echo 'primary_hostname = "a\x41b"') -bP primary_hostname |
|
149 |
|
150 Steuerzeichen werden für die Ausgabe escaped: |
|
151 > exim -C <(echo 'primary_hostname = "a\x091b"') -bP primary_hostname |
|
152 |
|
153 |
|
154 ### Lists |
|
155 Format: <item>:… eg: a:b:c:d vs. a:b::c:d |
|
156 eg: : -> ein leeres Element |
|
157 [<<sep> <item><sep>…] eg: <, a,b,c |
|
158 |
|
159 - leere Felder am Ende werden „gestrippt“ |
|
160 - Whitespace der Felder wird gestrippt |
|
161 - leeres Feld in der Mitte: a: :b |
|
162 - leeres Felder am Anfang bleibt |
|
163 - "Escapen" des Listentrenners durch Verdoppeln |
|
164 |
|
165 a : b::c : d -> (a) (b:c) (d) |
|
166 |
|
167 > exim -be '${map{:a:b:c,}{<$item>}}' |
|
168 > exim -be '${map{<,,a,b,c,}{<$item>}}' |
|
169 |
|
170 > exim -C <(echo domainlist local_domains = 'a:b::c:d') -be '${listnamed:local_domains}' |
|
171 |
|
172 |
|
173 ### Regexp |
|
174 Format ^… |
|
175 |
|
176 Beginnt mit ^, damit es sich von einem normalen String unterscheidet! |
|
177 Achtung, Backslash ggf. vom String-Expander gefressen, |
|
178 hauptsächlich in Listen, die RE enthalten dürfen |
|
179 |
|
180 Ggf. mit \N..\N |
|
181 |
|
182 ## Lookups |
|
183 |
|
184 - 2 Syntaxen |
|
185 - 2 Types |
|
186 => 4 Varianten |
|
187 |
|
188 ### Syntax 1: explizit - der Key oder die Frage wird ausdrücklich formuliert |
|
189 es ist ein String-Expansion. s.u. |
|
190 |
|
191 ${lookup{<key>}<type>{file}} eg: ${lookup{$domain}dsearch{/etc/exim4/domains}} |
|
192 ${lookup <type> {<query>}} eg: ${lookup ldap {ldap:///o=roka?mail?sub?uid=${quote_ldap:$local_part}}} |
|
193 |
|
194 Liefert eine Liste zurück, ggf. Listentrenner unorthodox und muss massiert werden |
|
195 |
|
196 ### Syntax 2: implizit - der Key ergibt sich aus dem Kontext |
|
197 keine Stringexpansion, sondern ein Element für sich |
|
198 |
|
199 |
|
200 <type>;<file> eg: domains = dsearch;/etc/exim4/domains |
|
201 <type>;<query> eg: domains = sqlite;/etc/db.sqlite SELECT … WHERE ${quote_sqlite:$local_part} … |
|
202 domains = ldap;ldap:///o=roka?mail?sub?… |
|
203 |
|
204 - Auffindes des "impliziten" Keys |
|
205 - Query: Success der Query ist entscheidend, nicht der Resultat-Wert |
|
206 - Achtung: In einer Liste ggf. an den Listentrenner denken! |
|
207 domains = ldap;ldap::///o=… |
|
208 |
|
209 ### Style 1: Single Key |
|
210 |
|
211 ${lookup{<key>}<type>{<file>} eg: ${lookup{$sender_host_address}iplsearch{/etc/exim4/blacklist}} |
|
212 <type>;<file> eg: hosts = iplsearch;/etc/exim4/blacklist |
|
213 |
|
214 <type> ist dann lsearch, dsearch, iplsearch, … |
|
215 |
|
216 ### Style 2: Query Style |
|
217 |
|
218 ${lookup <type> {<query>}} eg: ${lookup dnsdb{mxh=roka.net}} |
|
219 <type>;<query> eg: dnsdb;mxh=roka.net |
|
220 |
|
221 |
|
222 Matrix |
|
223 |
|
224 style| single key | query style |
|
225 syntax \| | |
|
226 ---------+--------------------------------+--------------------------- |
|
227 explicit | ${lookup{<key>}<type>{<file>} | ${lookup <type> {<query>}} |
|
228 implizit | <type>;<file> | [ <type>;<query> ] |
|
229 |
|
230 |
|
231 eg. config: |
|
232 |
|
233 domains = ${lookup{$domain}lsearch{/etc/exim4/local_domains}} # WRONG |
|
234 = <\n ${lookup mysql { SELECT domain FROM domains }} # BETTER |
|
235 = ${lookup mysql { SELECT DISTINCT(domain) FROM domains WHERE domain = $domain}} # ggf BEST |
|
236 vs |
|
237 domains = lsearch;/etc/exim4/local_domains # OK |
|
238 |
|
239 |
|
240 ## Named Lists |
|
241 Format: <listtype> <name> |
|
242 <listtype>_cache <name> |
|
243 Bezug: +<name> |
|
244 |
|
245 Typen: domainlist, hostlist, addresslist, localpartlist |
|
246 Caching nur wenn die RHS keine '$' enthält, also konstante Ergebnisse zu erwarten sind. |
|
247 |
|
248 Jeder Listtyp hat seine Eigenarten. |
|
249 |
|
250 > exim -bP +<name> |
|
251 |
|
252 ### domainlist |
|
253 |
|
254 domainlist - @, @mx_primary, @mx_secondary, @mx_any, <pattern>, lookup, literal |
|
255 hostlist - Namen, Adressen spec(10.11 ff) |
|
256 |
|
257 |
|
258 ## String-Expansion |
|
259 |
|
260 - von links nach rechts: $ und \ wirken als Trigger |
|
261 |
|
262 > exim -be [<string>] |
|
263 > exim -bem <message-file> [<string>] |
|
264 > exim -be -Mset <spool-id> [<string>] |
|
265 |
|
266 eg: exim -be '$primary_hostname' |
|
267 exim -be '$tod_full' |
|
268 exim -bem <(echo 'Subject: Hi') '$h_subject:' |
|
269 |
|
270 Expansionen liefern neuen Text zurück oder können „forced expansion failure“ |
|
271 bewirken |
|
272 |
|
273 ## Expansions-Items |
|
274 |
|
275 ### Variablen |
|
276 Format: $<variable> eg: $localhost_number |
|
277 ${<variable>} |
|
278 |
|
279 ### Operatoren |
|
280 Format: ${<op>:<string>} |
|
281 Für einfache Expansionen, lc, uc, hash, … |
|
282 |
|
283 ### Funktionen |
|
284 Format ${<function>{string1}...} |
|
285 |
|
286 # Debugging |
|
287 |
|
288 ## Konfiguration |
|
289 |
|
290 - > exim -bV |
|
291 |
|
292 ## Routing / Transport |
|
293 |
|
294 > exim -bt <address> |
|
295 > exim -bts <address> |
|
296 |
|
297 > exim -bv <address> |
|
298 > exim -bvs <address> |
|
299 |
|
300 Routing, Fake-Delivery |
|
301 > exim -N < <message-file> |
|
302 |
|
303 Fake-SMTP-Session |
|
304 > exim -bh <sender-ip> |
|
305 > swaks --pipe 'exim -bh <sender-ip>' -f <sender> -t <rcpt> |
|
306 (note: --tls-cert, --tls-key Optionen sind für SWAKS vorhanden, um ein |
|
307 Client-Zertifikat mitzuschicken, aber offenbar erst in neueren Versionen |
|
308 von swaks) |
|
309 |
|
310 - debug_print Option für Router und Transports |
|
311 |
|
312 |
|
313 ### Minimalkonfiguration |
|
314 |
|
315 .-[ m.conf ]-------- {{{ |
|
316 |exim_user = exim |
|
317 |spool_directory = /tmp/exim-spool |
|
318 |log_file_path = |
|
319 | |
|
320 |begin routers |
|
321 | |
|
322 | default: |
|
323 | driver = accept |
|
324 | transport = null |
|
325 | no_more |
|
326 | |
|
327 |begin transports |
|
328 | |
|
329 | null: |
|
330 | driver = appendfile |
|
331 | file = /dev/null |
|
332 `------------- }}} |
|
333 |
|
334 |
|
335 # Routing |
|
336 |
|
337 - Preconditions |
|
338 - Driver und Driver-Options |
|
339 Result: - accept -> DONE (transport oder neue Adresse) |
|
340 - pass -> pass_router (bzw. nächster Router) |
|
341 - decline -> nächster Router (or fail, wenn no_more) |
|
342 - fail -> DONE (bounce) |
|
343 - defer -> Semi-DONE (re-queue) |
|
344 - error -> wie defer |
|
345 |
|
346 # Hint-Databases |
|
347 |
|
348 liegen in $spool_directory/db |
|
349 - retry |
|
350 - wait-<transport> |
|
351 - callout |
|
352 - ratelimit |
|
353 - misc |
|
354 |
|
355 Sind verzichtbar! |
|
356 |
|
357 ## Wartung |
|
358 |
|
359 ### Ansehen |
|
360 |
|
361 > exim_dumpdb <spool_dir> <db> |
|
362 eg: exim_dumpdb /var/spool/exim4 |
|
363 |
|
364 Je nach DB unterschiedliches Format |
|
365 |
|
366 ### Verändern |
|
367 |
|
368 Aufräumen |
|
369 > exim_tidyb <spool_dir> <db> (Cronjob) |
|
370 |
|
371 Reparieren |
|
372 > exim_fixdb <spool_dir> <db> |
|
373 |
|
374 … that's it … |
|
375 |
|
376 ### Retry |
|
377 |
|
378 exinext - Route: Adressproblem |
|
379 Transport: Hostproblem |
|
380 |
|
381 # Acess Control Lists |
|
382 |
|
383 acl_not_smtp ACL for non-SMTP messages |
|
384 acl_not_smtp_mime ACL for non-SMTP MIME parts |
|
385 acl_not_smtp_start ACL at start of non-SMTP message |
|
386 acl_smtp_auth ACL for AUTH |
|
387 acl_smtp_connect ACL for start of SMTP connection |
|
388 acl_smtp_data ACL after DATA is complete |
|
389 acl_smtp_data_prdr ACL for each recipient, after DATA is complete |
|
390 acl_smtp_etrn ACL for ETRN |
|
391 acl_smtp_expn ACL for EXPN |
|
392 acl_smtp_helo ACL for HELO or EHLO |
|
393 acl_smtp_mail ACL for MAIL |
|
394 acl_smtp_mailauth ACL for the AUTH parameter of MAIL |
|
395 acl_smtp_mime ACL for content-scanning MIME parts |
|
396 acl_smtp_notquit ACL for non-QUIT terminations |
|
397 acl_smtp_predata ACL at start of DATA command |
|
398 acl_smtp_quit ACL for QUIT |
|
399 acl_smtp_rcpt ACL for RCPT |
|
400 acl_smtp_starttls ACL for STARTTLS |
|
401 acl_smtp_vrfy ACL for VRFY |
|
402 |
|
403 acl_<hook> = <aclverb> | <filename> | <acl-name> |
|
404 |
|
405 eg: acl_smtp_rcpt = acl_check_rcpt |
|
406 acl_smtp_rcpt = acl_check_rcpt_${primary_hostname} |
|
407 |
|
408 ## Policies |
|
409 |
|
410 ### acl_smtp_rcpt |
|
411 |
|
412 Abweisung einzelner Empfänger, noch kein Content! |
|
413 |
|
414 ### acl_smtp_data |
|
415 |
|
416 Content-Scan. Nicht mehr für einzelne Empfänger, |
|
417 $local_part, $domain steht nicht mehr zur Verfügung, |
|
418 aber $recpients, $rcpt_count, … |
|
419 |
|
420 ## Return-Values |
|
421 |
|
422 - accept |
|
423 - defer |
|
424 - deny |
|
425 - discard |
|
426 |
|
427 default: "accept", ausser bei acl_smtp_rcpt, dort ist es "deny" |
|
428 implizit "deny" am Ende jeder ACL! |
|
429 |
|
430 |
|
431 ## Test |
|
432 |
|
433 > exim -bh <ip> # ohne callouts |
|
434 > exim -bhc <ip> # mit callouts |
|
435 > swaks --pipe 'exim -bh <ip> -C <config>' -f <sender> -t <rcpt> |
|
436 |
|
437 exim -N hilft nicht, ist nicht für die SMTP acl |
|
438 relevant! |
|
439 |
|
440 ## Format |
|
441 |
|
442 <aclverb> [<condition>] |
|
443 … |
|
444 [<modifier] |
|
445 |
|
446 Bedingungen müssen erfüllt sein, Order matters, Abbruch |
|
447 bei nicht erfüllter Bedingung! Modifier sind immer "true" |
|
448 |
|
449 ### Verb |
|
450 |
|
451 accept, defer, deny, discard, drop, require, warn |
|
452 |
|
453 ### Modifier |
|
454 |
|
455 message = [code] text |
|
456 log_message = text |
|
457 |
|
458 Immediate: |
|
459 logwrite = … |
|
460 control = … |
|
461 set = … |
|
462 add_header = … |
|
463 remove_header = … |
|
464 delay = … |
|
465 |
|
466 ### Conditions |
|
467 |
|
468 <condition> = <value> |
|
469 |
|
470 eg: deny hosts = !192.168.3.8 # neg. Liste |
|
471 deny !hosts = 192.168.3.8 # neg. Resultat |
|
472 |
|
473 vs: deny !verify = recipient # works |
|
474 deny verify = !recipient # FALSCH |
|
475 |
|
476 |
|
477 Wert der Condition und von Modifiern wird expandiert. |
|
478 Force Failure bedeutet: Condition war nicht anwesend! |
|
479 |
|
480 Reihenfolge ist wichtig! Short Circuit. |
|
481 Position der Modifier ist wichtig! |
|
482 |
|
483 |
|
484 |
|
485 # DNS Lookups |
|
486 |
|
487 ## DNSSEC |
|
488 dns_dnssec_ok = 1 |
|
489 |
|
490 dnslookup.dnssec_require_domains = # leider noch falsche Syntax |
|
491 smtp.dnssec_require_domains = # leider noch falsche Syntax |
|
492 dnslookup.dnssec_request_domains = # leider noch falsche Syntax |
|
493 smtp.dnssec_request_domains = # leider noch falsche Syntax |
|
494 |
|
495 # Anhang |
|
496 |
|
497 ## Misc |
|
498 |
|
499 Spec.txt durchsuchen (less): |
|
500 - Option /^.<option> eg: |exim_user| |
|
501 - Variable /^\$<variable eg: $localhost_number |
|
502 - Operators: /^\$\{<operator>: eg: ${hash:<string>} … |
|
503 - Condition: /^<condition> \{ eg: eq {<string1>}{<string2>} … |
|
504 - Functions: /^\$\{<function\{ eg: ${map{<string1>}{<string2>}} … |
|
505 - ACL conditions /^<condition> = eg: malware = … |
|
506 |
|
507 // Die folgenden Listen sind durch einfaches Greppen im Spec-File bzw. |
|
508 // im spec.xfpt enstanden, also weder vollständig noch zwingend korrekt! |
|
509 |
|
510 ## Liste globaler Optionen {{{ |
|
511 |
|
512 accept_8bitmime |
|
513 acl_not_smtp |
|
514 acl_not_smtp_mime |
|
515 acl_not_smtp_start |
|
516 acl_smtp_auth |
|
517 acl_smtp_connect |
|
518 acl_smtp_data |
|
519 acl_smtp_data_prdr |
|
520 acl_smtp_etrn |
|
521 acl_smtp_expn |
|
522 acl_smtp_helo |
|
523 acl_smtp_mail |
|
524 acl_smtp_mailauth |
|
525 acl_smtp_mime |
|
526 acl_smtp_predata |
|
527 acl_smtp_quit |
|
528 acl_smtp_rcpt |
|
529 acl_smtp_starttls |
|
530 acl_smtp_vrfy |
|
531 admin_groups |
|
532 allow_domain_literals |
|
533 allow_mx_to_ip |
|
534 allow_utf8_domains |
|
535 auth_advertise_hosts |
|
536 auto_thaw |
|
537 av_scanner |
|
538 bi_command |
|
539 bounce_message_file |
|
540 bounce_message_text |
|
541 bounce_return_body |
|
542 bounce_return_message |
|
543 bounce_return_size_limit |
|
544 bounce_sender_authentication |
|
545 callout_domain_negative_expire |
|
546 callout_domain_positive_expire |
|
547 callout_negative_expire |
|
548 callout_positive_expire |
|
549 callout_random_local_part |
|
550 check_log_inodes |
|
551 check_log_space |
|
552 check_rfc2047_length |
|
553 check_spool_inodes |
|
554 check_spool_space |
|
555 daemon_smtp_ports |
|
556 daemon_startup_retries |
|
557 daemon_startup_sleep |
|
558 delay_warning |
|
559 delay_warning_condition |
|
560 deliver_drop_privilege |
|
561 deliver_queue_load_max |
|
562 delivery_date_remove |
|
563 disable_fsync |
|
564 disable_ipv6 |
|
565 dns_again_means_nonexist |
|
566 dns_check_names_pattern |
|
567 dns_csa_search_limit |
|
568 dns_csa_use_reverse |
|
569 dns_dnssec_ok |
|
570 dns_ipv4_lookup |
|
571 dns_retrans |
|
572 dns_retry |
|
573 dns_use_edns0 |
|
574 drop_cr |
|
575 dsn_from |
|
576 envelope_to_remove |
|
577 errors_copy |
|
578 errors_reply_to |
|
579 exim_group |
|
580 exim_path |
|
581 exim_user |
|
582 extra_local_interfaces |
|
583 finduser_retries |
|
584 freeze_tell |
|
585 gecos_name |
|
586 gecos_pattern |
|
587 gnutls_compat_mode |
|
588 header_line_maxsize |
|
589 header_maxsize |
|
590 headers_charset |
|
591 helo_accept_junk_hosts |
|
592 helo_allow_chars |
|
593 helo_lookup_domains |
|
594 helo_try_verify_hosts |
|
595 helo_verify_hosts |
|
596 hold_domains |
|
597 host_lookup |
|
598 host_lookup_order |
|
599 host_reject_connection |
|
600 hosts_connection_nolog |
|
601 hosts_treat_as_local |
|
602 ibase_servers |
|
603 ignore_bounce_errors_after |
|
604 ignore_fromline_hosts |
|
605 ignore_fromline_local |
|
606 keep_malformed |
|
607 ldap_ca_cert_dir |
|
608 ldap_ca_cert_file |
|
609 ldap_cert_file |
|
610 ldap_cert_key |
|
611 ldap_cipher_suite |
|
612 ldap_default_servers |
|
613 ldap_require_cert |
|
614 ldap_start_tls |
|
615 ldap_version |
|
616 local_from_check |
|
617 local_from_prefix |
|
618 local_from_suffix |
|
619 local_interfaces |
|
620 local_scan_timeout |
|
621 local_sender_retain |
|
622 localhost_number |
|
623 log_file_path |
|
624 log_selector |
|
625 log_timezone |
|
626 lookup_open_max |
|
627 max_username_length |
|
628 message_body_newlines |
|
629 message_body_visible |
|
630 message_id_header_domain |
|
631 message_id_header_text |
|
632 message_logs |
|
633 message_size_limit |
|
634 move_frozen_messages |
|
635 mua_wrapper |
|
636 mysql_servers |
|
637 never_users |
|
638 openssl_options |
|
639 oracle_servers |
|
640 percent_hack_domains |
|
641 perl_at_start |
|
642 perl_startup |
|
643 pgsql_servers |
|
644 pid_file_path |
|
645 pipelining_advertise_hosts |
|
646 prdr_enable |
|
647 preserve_message_logs |
|
648 primary_hostname |
|
649 print_topbitchars |
|
650 process_log_path |
|
651 prod_requires_admin |
|
652 qualify_domain |
|
653 qualify_recipient |
|
654 queue_domains |
|
655 queue_list_requires_admin |
|
656 queue_only |
|
657 queue_only_file |
|
658 queue_only_load |
|
659 queue_only_load_latch |
|
660 queue_only_override |
|
661 queue_run_in_order |
|
662 queue_run_max |
|
663 queue_smtp_domains |
|
664 receive_timeout |
|
665 received_header_text |
|
666 received_headers_max |
|
667 recipient_unqualified_hosts |
|
668 recipients_max |
|
669 recipients_max_reject |
|
670 remote_max_parallel |
|
671 remote_sort_domains |
|
672 retry_data_expire |
|
673 retry_interval_max |
|
674 return_path_remove |
|
675 return_size_limit |
|
676 rfc1413_hosts |
|
677 rfc1413_query_timeout |
|
678 sender_unqualified_hosts |
|
679 smtp_accept_keepalive |
|
680 smtp_accept_max |
|
681 smtp_accept_max_nonmail |
|
682 smtp_accept_max_nonmail_hosts |
|
683 smtp_accept_max_per_connection |
|
684 smtp_accept_max_per_host |
|
685 smtp_accept_queue |
|
686 smtp_accept_queue_per_connection |
|
687 smtp_accept_reserve |
|
688 smtp_active_hostname |
|
689 smtp_banner |
|
690 smtp_check_spool_space |
|
691 smtp_connect_backlog |
|
692 smtp_enforce_sync |
|
693 smtp_etrn_command |
|
694 smtp_etrn_serialize |
|
695 smtp_load_reserve |
|
696 smtp_max_synprot_errors |
|
697 smtp_max_unknown_commands |
|
698 smtp_ratelimit_hosts |
|
699 smtp_ratelimit_mail |
|
700 smtp_ratelimit_rcpt |
|
701 smtp_receive_timeout |
|
702 smtp_reserve_hosts |
|
703 smtp_return_error_details |
|
704 spamd_address |
|
705 split_spool_directory |
|
706 spool_directory |
|
707 sqlite_lock_timeout |
|
708 strict_acl_vars |
|
709 strip_excess_angle_brackets |
|
710 strip_trailing_dot |
|
711 syslog_duplication |
|
712 syslog_facility |
|
713 syslog_processname |
|
714 syslog_timestamp |
|
715 system_filter |
|
716 system_filter_directory_transport |
|
717 system_filter_file_transport |
|
718 system_filter_group |
|
719 system_filter_pipe_transport |
|
720 system_filter_reply_transport |
|
721 system_filter_user |
|
722 tcp_nodelay |
|
723 timeout_frozen_after |
|
724 timezone |
|
725 tls_advertise_hosts |
|
726 tls_certificate |
|
727 tls_crl |
|
728 tls_dh_max_bits |
|
729 tls_dhparam |
|
730 tls_ocsp_file |
|
731 tls_on_connect_ports |
|
732 tls_privatekey |
|
733 tls_remember_esmtp |
|
734 tls_require_ciphers |
|
735 tls_try_verify_hosts |
|
736 tls_verify_certificates |
|
737 tls_verify_hosts |
|
738 trusted_groups |
|
739 trusted_users |
|
740 unknown_login |
|
741 unknown_username |
|
742 untrusted_set_sender |
|
743 uucp_from_pattern |
|
744 uucp_from_sender |
|
745 warn_message_file |
|
746 write_rejectlog |
|
747 |
|
748 |
|
749 }}} |
|
750 |
|
751 ## Liste von Expansionsvariablen {{{ |
|
752 |
|
753 $acl_narg |
|
754 $acl_verify_message |
|
755 $address_data |
|
756 $address_file |
|
757 $address_pipe |
|
758 $authenticated_fail_id |
|
759 $authenticated_id |
|
760 $authenticated_sender |
|
761 $authentication_failed |
|
762 $av_failed |
|
763 $body_linecount |
|
764 $body_zerocount |
|
765 $bounce_recipient |
|
766 $bounce_return_size_limit |
|
767 $caller_gid |
|
768 $caller_uid |
|
769 $compile_date |
|
770 $compile_number |
|
771 $demime_errorlevel |
|
772 $demime_errorlevel |
|
773 $demime_reason |
|
774 $demime_reason |
|
775 $dnslist_domain |
|
776 $domain |
|
777 $domain_data |
|
778 $exim_gid |
|
779 $exim_path |
|
780 $exim_uid |
|
781 $found_extension |
|
782 $found_extension |
|
783 $header_ |
|
784 $headers_added |
|
785 $home |
|
786 $host |
|
787 $host_address |
|
788 $host_data |
|
789 $host_lookup_deferred |
|
790 $host_lookup_failed |
|
791 $host_port |
|
792 $inode |
|
793 $interface_address |
|
794 $interface_port |
|
795 $item |
|
796 $ldap_dn |
|
797 $load_average |
|
798 $local_part |
|
799 $local_part_data |
|
800 $local_part_prefix |
|
801 $local_part_suffix |
|
802 $local_scan_data |
|
803 $local_user_gid |
|
804 $local_user_uid |
|
805 $localhost_number |
|
806 $log_inodes |
|
807 $log_space |
|
808 $lookup_dnssec_authenticated |
|
809 $mailstore_basename |
|
810 $malware_name |
|
811 $max_received_linelength |
|
812 $message_age |
|
813 $message_body |
|
814 $message_body_end |
|
815 $message_body_size |
|
816 $message_exim_id |
|
817 $message_headers |
|
818 $message_headers_raw |
|
819 $message_id |
|
820 $message_linecount |
|
821 $message_size |
|
822 $mime_ |
|
823 $mime_boundary |
|
824 $mime_charset |
|
825 $mime_content_description |
|
826 $mime_content_disposition |
|
827 $mime_content_id |
|
828 $mime_content_size |
|
829 $mime_content_transfer_encoding |
|
830 $mime_content_type |
|
831 $mime_decoded_filename |
|
832 $mime_filename |
|
833 $mime_is_coverletter |
|
834 $mime_is_multipart |
|
835 $mime_is_rfc822 |
|
836 $mime_part_count |
|
837 $original_domain |
|
838 $original_local_part |
|
839 $originator_gid |
|
840 $originator_uid |
|
841 $parent_domain |
|
842 $parent_local_part |
|
843 $pid |
|
844 $pipe_addresses |
|
845 $primary_hostname |
|
846 $prvscheck_address |
|
847 $prvscheck_keynum |
|
848 $prvscheck_result |
|
849 $qualify_domain |
|
850 $qualify_recipient |
|
851 $rcpt_count |
|
852 $rcpt_defer_count |
|
853 $rcpt_fail_count |
|
854 $received_count |
|
855 $received_for |
|
856 $received_ip_address |
|
857 $received_port |
|
858 $received_protocol |
|
859 $received_time |
|
860 $recipient_data |
|
861 $recipient_verify_failure |
|
862 $recipients |
|
863 $recipients_count |
|
864 $regex_match_string |
|
865 $reply_address |
|
866 $return_path |
|
867 $return_size_limit |
|
868 $router_name |
|
869 $runrc |
|
870 $self_hostname |
|
871 $sender_address |
|
872 $sender_address_data |
|
873 $sender_address_domain |
|
874 $sender_address_local_part |
|
875 $sender_data |
|
876 $sender_fullhost |
|
877 $sender_helo_name |
|
878 $sender_host_address |
|
879 $sender_host_authenticated |
|
880 $sender_host_dnssec |
|
881 $sender_host_name |
|
882 $sender_host_port |
|
883 $sender_ident |
|
884 $sender_rate_ |
|
885 $sender_rcvhost |
|
886 $sender_verify_failure |
|
887 $sending_ip_address |
|
888 $sending_port |
|
889 $smtp_active_hostname |
|
890 $smtp_command |
|
891 $smtp_command_argument |
|
892 $smtp_count_at_connection_start |
|
893 $spam_ |
|
894 $spam_bar |
|
895 $spam_report |
|
896 $spam_score |
|
897 $spam_score_int |
|
898 $spool_directory |
|
899 $spool_inodes |
|
900 $spool_space |
|
901 $thisaddress |
|
902 $tls_in_bits |
|
903 $tls_in_certificate_verified |
|
904 $tls_in_cipher |
|
905 $tls_in_ocsp |
|
906 $tls_in_ourcert |
|
907 $tls_in_peercert |
|
908 $tls_in_peerdn |
|
909 $tls_in_sni |
|
910 $tls_out_bits |
|
911 $tls_out_certificate_verified |
|
912 $tls_out_cipher |
|
913 $tls_out_ocsp |
|
914 $tls_out_ourcert |
|
915 $tls_out_peercert |
|
916 $tls_out_peerdn |
|
917 $tls_out_sni |
|
918 $tod_bsdinbox |
|
919 $tod_epoch |
|
920 $tod_epoch_l |
|
921 $tod_full |
|
922 $tod_log |
|
923 $tod_logfile |
|
924 $tod_zone |
|
925 $tod_zulu |
|
926 $transport_name |
|
927 $value |
|
928 $verify_mode |
|
929 $version_number |
|
930 $warn_message_delay |
|
931 $warn_message_recipients |
|
932 |
|
933 }}} |
|
934 |
|
935 ## Liste von Operatoren {{{ |
|
936 |
|
937 ${address: |
|
938 ${addresses: |
|
939 ${base62: |
|
940 ${base62d: |
|
941 ${domain: |
|
942 ${escape: |
|
943 ${eval: |
|
944 ${expand: |
|
945 ${from_utf8: |
|
946 ${hex2b64: |
|
947 ${hexquote: |
|
948 ${lc: |
|
949 ${listcount: |
|
950 ${listnamed: |
|
951 ${local_part: |
|
952 ${mask: |
|
953 ${md5: |
|
954 ${quote: |
|
955 ${quote_local_part: |
|
956 ${randint: |
|
957 ${reverse_ip: |
|
958 ${rfc2047: |
|
959 ${rfc2047d: |
|
960 ${rxquote: |
|
961 ${sha1: |
|
962 ${sha256: |
|
963 ${stat: |
|
964 ${str2b64: |
|
965 ${strlen: |
|
966 ${time_eval: |
|
967 ${time_interval: |
|
968 ${uc: |
|
969 ${utf8clean: |
|
970 |
|
971 }}} |
|
972 |
|
973 ## List of Conditions {{{ |
|
974 |
|
975 acl |
|
976 and |
|
977 bool |
|
978 bool_lax |
|
979 crypteq |
|
980 eq |
|
981 exists |
|
982 ge |
|
983 gt |
|
984 inlist |
|
985 isip |
|
986 ldapauth |
|
987 le |
|
988 lt |
|
989 match |
|
990 match_address |
|
991 match_domain |
|
992 match_ip |
|
993 match_local_part |
|
994 or |
|
995 pam |
|
996 pwcheck |
|
997 radius |
|
998 |
|
999 }}} |
|
1000 |
|
1001 ## List of Functions {{{ |
|
1002 |
|
1003 ${acl |
|
1004 ${certextract |
|
1005 ${dlfunc |
|
1006 ${extract |
|
1007 ${extract |
|
1008 ${filter |
|
1009 ${hash |
|
1010 ${hmac |
|
1011 ${length |
|
1012 ${listextract |
|
1013 ${lookup |
|
1014 ${map |
|
1015 ${nhash |
|
1016 ${perl |
|
1017 ${prvs |
|
1018 ${prvscheck |
|
1019 ${readfile |
|
1020 ${readsocket |
|
1021 ${reduce |
|
1022 ${run |
|
1023 ${sg |
|
1024 ${sort |
|
1025 ${substr |
|
1026 ${tr |
|
1027 |
|
1028 }}} |
|
1029 |
|
1030 ## Routing Pre-Conditions {{{ |
|
1031 |
|
1032 address_test |
|
1033 check_local_user |
|
1034 condition |
|
1035 domains |
|
1036 expn |
|
1037 local_part_prefix |
|
1038 local_part_suffix |
|
1039 local_parts |
|
1040 require_files |
|
1041 senders |
|
1042 verify |
|
1043 verify_only |
|
1044 verify_recipient |
|
1045 verify_sender |
|
1046 |
|
1047 }}} |
|
1048 |
|
1049 |
|
1050 Cheat sheet: http://www.datadisk.co.uk/html_docs/exim/exim_cs.htm |
|
1051 |
|
1052 # vim:tw=0:et:ts=4:sw=4:fdm=marker:ft=asciidoc: |