1 Exim |
1 = Exim - Konfiguration und Betrieb = |
2 ==== |
2 :Author: Heiko Schlittermann |
3 Heiko Schlittermann |
3 :Email: hs@schlittermann.de |
|
4 :Date: 2014-12-21 |
|
5 :Revision: 0.1 |
4 :doctype: book |
6 :doctype: book |
|
7 :toc: |
5 |
8 |
6 Im folgenden nehme ich Bezug auf Exim 4.85. |
9 [[preface]] |
7 Ultimative Referenz ist immer das Spec-File, also die |
10 = Vorwort = |
8 Referenzdokumentation, die den Exim begleitet. Einige Details werden |
|
9 hier ausgelassen werden. |
|
10 |
11 |
11 == Konfigurationsdatei |
12 SMTP-Server gehören neben Webservern vermutlich zur am häufigsten |
|
13 genutzen Art von Servern. Sie treten jedoch deutlich selterner in |
|
14 Erscheinung, jedoch beruht ein Großteil dessen, was wir als _Internet_ |
|
15 bezeichnen auf der Funktion von SMTP-Servern. |
12 |
16 |
13 Exim sucht beim Start nach genau einer Konfigurationsdatei. |
17 Seit etwa 1996 beschäftige ich mich mit dem Betrieb von SMTP-Servern, |
14 Diese lässt sich mit |
18 seit etwa 1997 ist es der Exim. Durch meine Arbeit konnte ich viel über |
|
19 die Interna des Exim lernen. |
15 |
20 |
16 exim -bP configure_file |
21 .Für wen ist dieses Buch? |
|
22 Sie möchten Ihrem Exim konfigurieren und betreiben und Sie möchten dabei |
|
23 verstehen, was Sie tun. Dieses Buch soll kein Ersatz für die überaus |
|
24 hervorragende <<spec-file,Exim-Spezifikation>> sein, sondern eine |
|
25 Ergänzung. |
17 |
26 |
18 anzeigen. |
27 .Referenz |
|
28 Dieses Buch bezieht sich auf die Exim-Version 4.85. An einigen Stellen |
|
29 wurden die Darstellungen vereinfacht. Die ultimative Informationsquelle |
|
30 ist immer das <<spec-file,Spec-File>> |
19 |
31 |
|
32 == Typographische Konventionen |
20 |
33 |
21 === Format der Konfigurationsdatei |
34 Folgende Konventionen werden im folgenden verwendet: |
22 |
35 |
23 Die Konfigurationsdatei beginnt mit einem globalen Teil, es folgen |
36 'exim.conf':: |
24 Abschnitte für ACL, Router, Transports, Address-Rewriting, |
37 verwenden wir für Pfad- und Dateinamen. |
25 Retry-Verhalten und Authentifizierung. |
|
26 |
38 |
27 Kommentare sind erlaubt - das sind Zeilen, die mit dem Rautenzeichen (#) |
39 `ls -l`:: |
28 beginnen. Vor der Raute ist lediglich Whitespace erlaubt. Rautenzeichen |
40 verwenden wir für Kommandos. |
29 an anderen Stellen sind *kein* Kommentar. |
|
30 |
41 |
31 Der Parser der Konfigurationsdatei ist relativ simpel: |
42 *router*:: |
|
43 verwenden wir für Namen von Exim-Routern, -Transports und -Authenticators |
32 |
44 |
33 . Kommentarzeilen werden entfernt |
45 include::operation.txt[] |
34 . Fortsetzungszeilen werden zusammengesetzt |
46 include::config.txt[] |
|
47 include::appendix.txt[] |
35 |
48 |
36 Es ist also möglich, auch innerhalb von Fortsetzungszeilen Kommentare zu |
49 // vim:ft=asciidoc |
37 verwenden: |
|
38 |
|
39 ---- |
|
40 domainlist local_domains = example.com \ |
|
41 # foo bar comment |
|
42 : example.org \ |
|
43 : example.net |
|
44 ---- |
|
45 |
|
46 |
|
47 ==== Macros |
|
48 |
|
49 In der Konfigurationsdatei dürfen Macros enthalten sein. Macros bestehen |
|
50 ausschließlich aus Großbuchstaben und Ziffern. |
|
51 |
|
52 ---- |
|
53 FOOBAR = foo bar |
|
54 FOO = bar |
|
55 ---- |
|
56 |
|
57 Die Macros sind ein sehr einfacher Textersetzungsmechanismus, der |
|
58 während des Einlesens der der Konfiguration stattfindet. Die Gültigkeit |
|
59 der Macros beginnt an der Stelle ihrer Definition. Macro-Namen dürfen |
|
60 nicht in später definierten Macro-Namen enthalten sein. Eine |
|
61 Neudefinition von Macros ist jederzeit möglich: |
|
62 |
|
63 ---- |
|
64 FOO = bar |
|
65 … |
|
66 FOO == foobar |
|
67 ---- |
|
68 |
|
69 Macros, die auf der Kommandozeile beim Aufruf des Exim gesetzt werden, |
|
70 haben Vorrang vor denen, die in der Konfiguration definiert sind. Aus |
|
71 Sicherheitsgründen legt Exim aber seine setuid-Rechte ab, sobald auf der |
|
72 Kommandozeile Macros definiert sind. |
|
73 footnote:[Mit Ausnahme von Macros, die in einer zur Build-Zeit |
|
74 definierten Whitelist stehen.] |
|
75 |
|
76 exim -DFOO=bar … |
|
77 |
|
78 ==== Includes |
|
79 |
|
80 Die Konfigurationsdatei darf weitere Konfigurationsdateien |
|
81 referenzieren. Diese werden mit `.include` oder mit |
|
82 `.include_if_exists` eingelesen. Ebenso ist ein bedingtes Lesen von |
|
83 Teilen der Konfiguration möglich: `.ifdef` erlaubt hier den Test von |
|
84 Macros. |
|