|
1 \documentclass[final]{article} |
|
2 % © Heiko Schlittermann |
|
3 % $Id$ |
|
4 % $URL$ |
|
5 |
|
6 \usepackage{ius} |
|
7 \usepackage{makeidx} |
|
8 \newcommand{\N}[1]{\textit{#1\/}} % name |
|
9 \newcommand{\T}[1]{\texttt{#1}} % typed |
|
10 \newcommand{\U}[1]{\underline{#1}} |
|
11 \newcommand{\C}[1]{} |
|
12 |
|
13 \title{Mailsystem --- Deutsche Post AG / TCB --- Systemdokumentation} |
|
14 \author{$<$hs@schlittermann.de$>$} |
|
15 \date{\today} |
|
16 %\makeindex |
|
17 |
|
18 \begin{document} |
|
19 \maketitle |
|
20 |
|
21 %\begin{abstract} |
|
22 \subsubsection*{Zusammenfassung} |
|
23 Ein Mailserver. Post wird per \N{fetchmail} geholt, an \N{exim} |
|
24 (SMTP) übergeben und dann in den \N{cyrus}-Mailstore gelegt. Dort |
|
25 ist dann alles per POP/IMAP verfügbar. |
|
26 %\end{abstract} |
|
27 |
|
28 \parskip0mm |
|
29 \tableofcontents |
|
30 \parskip0.5em |
|
31 |
|
32 %\setlength{\parindent}{0mm} |
|
33 %\setlength{\parskip}{1em} |
|
34 |
|
35 \section{Verwendete Komponenten} |
|
36 |
|
37 \begin{tabular}{ll} |
|
38 Post-Abholer & fetchmail \\ |
|
39 SMTP-Server & exim 4.5x \\ |
|
40 POP3/IMAP-Server & cyrus 2.2 \\ |
|
41 OpenLDAP & 2.2 \\ |
|
42 \end{tabular} |
|
43 |
|
44 \section{LDAP} |
|
45 |
|
46 Im LDAP sind die Nutzerdaten (Accounts, Passworte, \ldots) hinterlegt. |
|
47 Mit einem LDAP-Browser ist jederzeit der Zugang zum LDAP-Server |
|
48 möglich, so sind Änderungen relativ einfach und schnell möglich.\index{LDAP-Tools} |
|
49 |
|
50 \subsection{SSL/TLS} |
|
51 |
|
52 Der LDAP-Server stellt seine Dienste unverschlüsselt zur Verfügung. Verschlüsselung über |
|
53 STARTTLS bzw. \texttt{ldaps:///} ist möglich und konfiguriert. Die Herausforderung ist |
|
54 aber, daß dann der Client das auch unterstützen muß und vor allem mit den von einer nicht |
|
55 offiziellen CA signierten Zertifikaten auskommen muß. |
|
56 |
|
57 \subsection{LDAP-Browser} |
|
58 |
|
59 Es gibt einige GUI-LDAP-Browser. |
|
60 |
|
61 \begin{description} |
|
62 \item{\N{ldapbrowser}} Bei Google man nach \qq{ldapbrowser java} |
|
63 suchen. Er läuft unter Linux und unter Win32 mit einer aktuellen |
|
64 Java-Runtime. |
|
65 |
|
66 \item{\N{JXplorer}} Alternative zu dem o.g. |
|
67 \end{description} |
|
68 |
|
69 Und es gibt natürlich noch für die (Linux)-Kommandozeile einiges. |
|
70 Am besten geeignet: \N{ldapvi}. Für die Kontrolle über die |
|
71 letzten Schrauben dann \N{ldap\{add,delete,modify\}}. Für |
|
72 \N{ldapvi} ist ein Alias \T{ldapvi} in der \T{~.bashrc} eingetragen, |
|
73 der sich versucht, als Admin an den LDAP-Server zu binden. |
|
74 |
|
75 Die Zugangsdaten $\rightarrow$ Seite~\pageref{p:Zugangsdaten}. |
|
76 |
|
77 \subsection{Struktur} |
|
78 |
|
79 Unterhalb des Knotens \N{ou=MailAccounts} sind Nutzer-Objekte angelegt, die |
|
80 für die Authentifizierung notwendig sind. Außerdem enthalten diese |
|
81 Objekte auch alternative Mail-Adressen und die Mailgruppen-Zugehörigkeit |
|
82 für die jeweiligen Nutzer. |
|
83 |
|
84 \begin{sloppypar} |
|
85 Unterhalb von \N{ou=MailAliases} sind Objekte, die den bisherigen |
|
86 Aliasen/Verteilerlisten aus \T{/etc/aliases} entsprechen. |
|
87 \end{sloppypar} |
|
88 |
|
89 Es existieren also zwei Mechanismen für eine Realisierung von Alias-ähnlichen |
|
90 Verteilern: über \N{ou=MailAliases} und über das \N{MailGroup}-Attribut. |
|
91 |
|
92 \fussy |
|
93 Wichtige Bestandteile der Mail-Accounts sind: |
|
94 |
|
95 \begin{tabular}{ll} |
|
96 objectClass & \N{uidObject}, \N{tcbMailRecipient}, \N{person} \\ |
|
97 uid & Nutzer-ID (Anmeldung am POP3/IMAP-Server, Name der Mailbox) \\ |
|
98 userPassword & Passwort für SMTP/POP3/IMAP \\ |
|
99 tcbMailPrimaryAddress & primäre Mailadresse \\ |
|
100 tcbMailAddress & alternative Adressen \\ |
|
101 tcbMailGroup & Mitgliedschaft in Mailgruppen \\ |
|
102 tcbMailForwardingAddress & Weiterleitungsadresse (analog .forward) \\ |
|
103 sn & Nachname (ungenutzt, muß aber gesetzt sein) \\ |
|
104 cn & allgemeiner Name (ungenutzt, muß aber gesetzt sein) \\ |
|
105 \end{tabular} |
|
106 |
|
107 Die Aliase sind einfacher aufgebaut: |
|
108 |
|
109 \begin{tabular}{ll} |
|
110 objectClass & \N{tcbMailAlias} \\ |
|
111 mail & allgemeiner Name des Aliases (hier: \qq{linke Seite}) \\ |
|
112 tcbMailForwardingAddress & Alias, als der Empfänger \\ |
|
113 \end{tabular} |
|
114 |
|
115 \subsection{Files} |
|
116 |
|
117 \begin{tabular}{ll} |
|
118 Konfiguration & \T{/etc/ldap/*} \\ |
|
119 Logfiles & \T{/var/log/syslog} \\ |
|
120 Datenbank & \T{/var/lib/ldap/*} \\ |
|
121 Backup & \T{/var/backups/ldap.week*} \\ |
|
122 \end{tabular} |
|
123 |
|
124 \subsection{Administration} |
|
125 |
|
126 Am LDAP-Server selbst ist nicht viel zu administrieren. Nutzer an- |
|
127 und ablegen ist auf Seite~\pageref{p:admin} beschrieben. |
|
128 |
|
129 \subsection{Backup/Recovery} |
|
130 |
|
131 Sollte das LDAP sich über Datenbank-Probleme beschweren, gibt es |
|
132 etwa folgenden Weg: |
|
133 |
|
134 \begin{enumerate} |
|
135 \item LDAP-Server neustarten: \T{service lap restart} |
|
136 \item Datenbank-Recovery versuchen: |
|
137 \begin{quote}\T{% |
|
138 service ldap stop \\ |
|
139 cd /var/lib/ldap\\ |
|
140 db41\_recover\\ |
|
141 service ldap start\\ |
|
142 }\end{quote} |
|
143 \item Backup wieder einspielen: |
|
144 \begin{quote}\T{% |
|
145 service ldap stop \\ |
|
146 rm -r /var/lib/ldap/* \\ |
|
147 bzcat </var/backups/ldap/XXX.bz2 | slapadd \\ |
|
148 service ldap start \\ |
|
149 }\end{quote} |
|
150 \item 0351.8029981 |
|
151 \end{enumerate} |
|
152 |
|
153 \section{SMTP} |
|
154 |
|
155 Um unerwünschtes Mailweiterleiten\index{Relaying} zu verhinden, sind Mails von |
|
156 unauthentifizierten Nutzern nur zugelassen, wenn der Empfänger |
|
157 in einer der bekannten lokalen Domains ist. Zum Senden von Mails an |
|
158 andere Domains ist eine Authentifizierung\footnote{Name/Passwort wie |
|
159 am POP3/IMAP-Server} am Mailserver notwendig. |
|
160 |
|
161 \subsection{SMTP-Authentifizerung} |
|
162 |
|
163 Es werden die Authentifizierungsverfahren PLAIN und |
|
164 LOGIN unterstützt. |
|
165 |
|
166 Authentifizierung ist nur möglich, wenn eine verschlüsselte Verbindung |
|
167 zwischen MUA und MTA besteht. Dafür bietet der MTA \N{STARTTLS} an. |
|
168 |
|
169 \subsubsection{Authorisierung} |
|
170 |
|
171 Authentifizierte Nutzer dürfen Mails an beliebige Adressen versenden. |
|
172 Dabei wird jedoch immer die \N{PrimaryMailAddress} als deren Absender |
|
173 eingetragen. |
|
174 |
|
175 \subsection{Mailrouting}\label{s:mailrouting} |
|
176 |
|
177 \begin{enumerate} |
|
178 |
|
179 \item Mail an nicht lokale Domains (lokal ist |
|
180 \N{tcb.deutschepost.de}) wird an den Smart-Relay (\N{mimesweeper} |
|
181 über DNS-Auflösung) weitergeleitet. |
|
182 |
|
183 \item Es wird im LDAP nach Aliasen für die aktuelle Adresse gesucht (unterhalb |
|
184 \N{ou=MailAliases}). Diese Aliase entsprechen den bisherigen |
|
185 \T{/etc/aliases}. Aliase werden dort ohne angehängte Domain gesucht. |
|
186 |
|
187 \item Es wird unterhalb von \N{ou=MailAccounts} gesucht, ob der Adressat eine |
|
188 Mailgruppe ist. Wenn ja, werden alle Gruppenmitglieder zu neuen |
|
189 Adressaten. |
|
190 |
|
191 \item Es wird unterhalb von \N{ou=MailAccounts} gesucht, ob |
|
192 es für den Adressaten eine Mailbox/UID gibt. |
|
193 |
|
194 \item Es wird unterhalb von \N{ou=MailAccounts} gesucht, ob für den |
|
195 Adressaten/UID Weiterleitungsadressen existieren. Wenn ja, werden diese |
|
196 eingesetzt und das Routing beginnt von vorn. |
|
197 |
|
198 \item Wenn dieser Schritt erfolgreich ist, wird die Mail an den |
|
199 POP3/IMAP-Server übergeben. |
|
200 |
|
201 \end{enumerate} |
|
202 |
|
203 |
|
204 \subsection{Adress-Rewriting} |
|
205 |
|
206 In ausgehenden Mails (zum Mimesweeper) werden alle Absender-Adressen |
|
207 so umgeschrieben, daß als Absender (in \N{From:} und \N{Sender:} und auch im |
|
208 \N{Return-Path} die primäre Adresse des authentifizierten Nutzers steht. |
|
209 |
|
210 Enthält die Primäre Adresse kein \T{@}, dann wird der Return-Path |
|
211 auf \T{$<>$} gesetzt und die \N{From:} und \N{Sender:}-Header |
|
212 bleiben unverändert. Mit dieser Einstellung sollte die Mail dann |
|
213 (wegen des leeren Return-Path) die meisten Mailserver passieren |
|
214 können.\footnote{Die meisten. Einige prüfen inzwischen auch die |
|
215 Verfügbarkeit von brauchbaren Header-Zeilen \N{From:} und |
|
216 \N{Sender:}.} |
|
217 |
|
218 In \N{CC:}, \N{Reply-To:}, \N{To:}-Headern wird, wenn sie eine |
|
219 Adresse \N{@tcb.deutschepost.de} enthalten, diese ersetzt durch die |
|
220 primäre Adresse des entsprechenden Nutzers (gesucht wird im Ldap |
|
221 nach Einträgen, deren \N{tcbMailAddress} dem Nutzer lokalen Teil der |
|
222 fraglichen Adresse entspricht). |
|
223 |
|
224 \subsection{Files} |
|
225 |
|
226 \begin{tabular}{ll} |
|
227 Konfiguration \N{Exim} & \T{/etc/exim/*} \\ |
|
228 SMTP-Spool & \T{/var/spool/exim/*} \\ |
|
229 SMTP-Log & \T{/var/log/exim/\{main,reject,panic\}.log} \\ |
|
230 \end{tabular} |
|
231 |
|
232 \subsection{Administration} |
|
233 |
|
234 Viel zu administrieren sollte es am \N{Exim} nicht geben. Ab und zu |
|
235 kann man die Warteschlange mit \T{mailq} oder \T{exipick} kontrollieren. |
|
236 Eingefrorene Mails sollten nach einigen (7) Tagen verschwinden. |
|
237 |
|
238 Im Zweifelsfall ist ein Blick in die Logfiles (vor allem |
|
239 \T{panic.log} und \T{reject.log}) interessant. |
|
240 |
|
241 Zum Adress-Test biete sich folgendes an: |
|
242 |
|
243 \begin{quote}\T{exim -v -bv hans@domain.de}\end{quote} |
|
244 |
|
245 Damit können lokale und auch externe Adressen getestet werden und es |
|
246 ist zu erkennen, wie der Mailserver die jeweilige Adresse routen |
|
247 würde. |
|
248 |
|
249 |
|
250 \section{POP3/IMAP} |
|
251 |
|
252 Vom SMTP-Server \N{Exim} kommt die Mail per LMTP zum \N{Cyrus}. Der |
|
253 verwaltet sein eigenes Mailstore in \T{/var/spool/cyrus}. Dort |
|
254 manuell einzugreifen ist nicht die beste Idee, da der \N{Cyrus} sich |
|
255 Index-Dateien erzeugt, über die er dann den Zustand der Mailboxen zu |
|
256 kennen glaubt. |
|
257 |
|
258 |
|
259 \subsection{Clients} |
|
260 |
|
261 Die Clients können per POP3 und/oder IMAP auf ihre Postfächer |
|
262 zugreifen. Allerdings steht per POP3 nur die Inbox zur Verfügung. |
|
263 |
|
264 Der übertragenen User-Name wird im LDAP unter \N{ou=MailAccounts} |
|
265 gesucht und dann wird über ein LDAP-Bind die Korrektheit des |
|
266 Passworts geprüft. |
|
267 |
|
268 \subsection{Files} |
|
269 |
|
270 \begin{tabular}{ll} |
|
271 Konfiguration & \T{/etc/imapd.conf} \\ |
|
272 & \T{/etc/cyrus.conf} \\ |
|
273 Spool & \T{/var/spool/cyrus} \\ |
|
274 Logfiles & \T{/var/log/mail.log} |
|
275 \end{tabular} |
|
276 |
|
277 \subsection{Administration} |
|
278 |
|
279 Sollten die unten (S.~\pageref{p:admin}) beschriebenen Werkzeuge |
|
280 nicht ausreichen, ist mit \T{cyradm} noch einiges zu retten: |
|
281 \T{cyradm localhost}: |
|
282 |
|
283 \begin{verbatim} |
|
284 lm # alle Mailboxen anzeigen |
|
285 cm user/hannes # Mailbox anlegen für hannes |
|
286 lm user/hannes # Hannes Mailbox |
|
287 lam user/hannes # Berechtigungen zeigen |
|
288 sam user/hannes root all # Berechtigungen setzten |
|
289 lq user/hannes # Quota anzeigen |
|
290 sq user/hannes STORAGE 200 # Quota auf 200k setzen |
|
291 \end{verbatim} |
|
292 |
|
293 Eine direkte Verbindung mit den Mailboxen ist mit jedem beliebigen |
|
294 IMAP-Client möglich, z.B. auch mit Mutt: |
|
295 |
|
296 \begin{quote} |
|
297 \T{mutt -f imap://cyrus@localhost/user/hannes} |
|
298 \end{quote} |
|
299 |
|
300 bzw.\ direkt als Hannes: |
|
301 |
|
302 \begin{quote} |
|
303 \T{mutt -f imap://hannes@localhost/} |
|
304 \end{quote} |
|
305 |
|
306 |
|
307 \section{Administration}\label{p:admin} |
|
308 |
|
309 Zur Administration des Mailsystem liegt ein einfach(!) zu benutzender |
|
310 Script \T{ma} vor. Die aktuelle Dokumentation dazu ist \N{ma(8)} zu entnehmen. |
|
311 |
|
312 |
|
313 \subsection{Accounts} |
|
314 |
|
315 \subsubsection{Anzeigen} |
|
316 |
|
317 Vorhandene Accounts können angezeigt werden: |
|
318 |
|
319 \begin{quote} |
|
320 \T{ma \U{account} --ls}\\ |
|
321 \T{ma \U{account} --ls `h*'} |
|
322 \end{quote} |
|
323 |
|
324 \subsubsection{Anlegen}\label{ss:account} |
|
325 |
|
326 Beim Anlegen werden nur Accounts und Mailboxen angelegt, wenn sie |
|
327 noch nicht da sind. In bestehende Accounts werden nur die |
|
328 Mail-Attribute (\N{tcbMailPrimaryAddress}, \N{tcbMailAddress}) eingetragen, |
|
329 wenn Sie noch nicht vorhanden sind. Andernfalls gehen wir davon |
|
330 aus, daß es kein Neueintrag ist. |
|
331 |
|
332 \begin{quote} |
|
333 \T{ma \U{account} \U{--add} --fullname='Hans Hanson' --other='hh' hans.hanson} |
|
334 \end{quote} |
|
335 |
|
336 Weitere Optionen sind: |
|
337 |
|
338 \begin{description} |
|
339 \item[\T{--address=s}] Primäre Mailadresse (default: entspricht dem Account-Namen) |
|
340 \item[\T{--fullname=s}] Klartext-Name (default: -) |
|
341 \item[\T{--other:s}] Weitere alternative Mailadressen für \emph{diesen\/} Nutzer (default: -) |
|
342 \item[\T{--imap\_quota=i}] Imap-Quota in MegaByte (default: 300\,MB) |
|
343 \item[\T{--[no]mbox}] Anlegen der Mailbox (default: Mailbox wird angelegt) |
|
344 \item[\T{--password=s}] Passwort (default: \{pwgen\}, d.h.\ es wird generiert und |
|
345 dann angezeigt) |
|
346 \item[\T{--group:s}] Zugehörigkeit zu Mailgruppen. |
|
347 \end{description} |
|
348 |
|
349 |
|
350 \subsubsection{Verändern}\label{ss:change} |
|
351 |
|
352 Vorhandene Einträge können natürlich auch verändert werden: |
|
353 |
|
354 \begin{quote} |
|
355 \T{ma \U{account} \U{--modify} --fullname='Hans-Georg Hanson' hans.hanson}\\ |
|
356 \end{quote} |
|
357 |
|
358 Für einige Attribute ist eine kumulative Änderung möglich (z.B. |
|
359 Hinzufügen von alternativen Namen), bei anderen (primary |
|
360 Mailadresse) nur ein Verändern. Der Präfix \T{+} oder \T{-} ist |
|
361 wichtig, ohne den Präfix wird das Attribut \emph{genau\/} auf den |
|
362 angegebenen Wert gesetzt: |
|
363 |
|
364 \begin{quote} |
|
365 \T{ma \U{account} \U{--modify} --also=+hans,-hh hans.hanson} \\ |
|
366 \T{ma \U{account} \U{--modify} --also=h.hanson hans.hanson} |
|
367 \end{quote} |
|
368 |
|
369 Veränderbar sind die selben Optionen wie oben |
|
370 (\ref{ss:account}).\footnote{Außer die Mailbox-Option, das ist |
|
371 noch nicht implementiert.} |
|
372 |
|
373 \subsubsection{Löschen} |
|
374 |
|
375 \emph{Vorsicht.\/} Es wird rigoros der komplette LDAP-Eintrag |
|
376 gelöscht! Und bei Bedarf die Mailbox. |
|
377 |
|
378 \begin{quote} |
|
379 \T{ma \U{account} \U{--delete} hans.hanson}\\ |
|
380 \T{ma \U{account} \U{--delete} --nombox hans.hanson}\\ |
|
381 \end{quote} |
|
382 |
|
383 Die zweite Zeile würde die Mailbox bestehen lassen. |
|
384 Optionen gibt es keine weiteren. |
|
385 |
|
386 \subsection{Aliase} |
|
387 |
|
388 \subsubsection{Anzeigen} |
|
389 |
|
390 Alle vorhandenen Aliase werden in einem bequemen |
|
391 \T{/etc/aliases}-Format ausgegeben: |
|
392 |
|
393 \begin{quote} |
|
394 \T{ma \U{alias} --list} \\ |
|
395 \T{ma \U{alias} --list `h*'} |
|
396 \end{quote} |
|
397 |
|
398 \subsubsection{Anlegen} |
|
399 |
|
400 Beim Anlegen wird der Eintrag nur gemacht, wenn er noch nicht |
|
401 vorhanden ist. |
|
402 |
|
403 \begin{quote} |
|
404 \T{ma \U{alias} \U{--add} --members=hans,suse fam.ente} |
|
405 \end{quote} |
|
406 |
|
407 Das trägt einen Alias \N{fam.ente} ein, der als Verteiler wirkt |
|
408 und die Mails an \N{hans} und \N{suse} weiterleitet. |
|
409 |
|
410 Weitere Optionen gibt es nicht. |
|
411 |
|
412 \subsubsection{Verändern} |
|
413 |
|
414 Zum Verändern gilt das selbe wie schon in~\ref{ss:change} zu den |
|
415 Accounts. Hinzufügen von Mitgliedern und Entfernen von |
|
416 Mitgliedern ist möglich. Dabei sind auch \qq{Masseneintragungen} |
|
417 möglich: |
|
418 |
|
419 \begin{quote} |
|
420 \T{ma \U{alias} \U{--modify} --members=+big.brother '*'} |
|
421 \end{quote} |
|
422 |
|
423 \subsubsection{Löschen} |
|
424 |
|
425 Der gesamt Alias-Eintrag wird entfernt. |
|
426 |
|
427 \begin{quote} |
|
428 \T{ma \U{alias} \U{--delete} fam.ente} |
|
429 \end{quote} |
|
430 |
|
431 |
|
432 \section{Zugangsdaten}\label{p:Zugangsdaten} |
|
433 \index{Passwort} |
|
434 |
|
435 \subsection{LDAP} |
|
436 |
|
437 \begin{tabular}{ll} |
|
438 Server:Port & mail.tcb.deutschepost.de:389 (Plain + STARTTLS)\\ |
|
439 & mail.tcb.deutschepost.de:636 (SSL) \\ |
|
440 Base-DN & \T{dc=tcb,dc=deutschepost,dc=de} \\ |
|
441 Admin-User (Bind-DN) & \T{cn=admin,dc=tcb,dc=deutschepost,dc=de}\\ |
|
442 Admin-Passwort & \T{anfang} \\ |
|
443 \end{tabular} |
|
444 |
|
445 \subsection{IMAP} |
|
446 |
|
447 \begin{tabular}{ll} |
|
448 Server:Port & mail.tcb.deutschepost.de:143 \\ |
|
449 Admin-User & \T{cyrus} \\ |
|
450 Admin-Passwort & \T{anfang} \\ |
|
451 Korrespondierender LDAP-Eintrag & \T{uid=cyrus,ou=Cyrus,\dots} \\ |
|
452 \end{tabular} |
|
453 |
|
454 Um die nervigen Fragen nach Passworten\index{Passwort} für LDAP und IMAP zu umgehen, |
|
455 können die Passworte in Umgebungsvariablen abgelegt werden: \T{export |
|
456 IMAP\_PASS=XXX} und \T{export LDAP\_PASS=XXX}. |
|
457 |
|
458 \printindex |
|
459 |
|
460 \vfill |
|
461 Stand: \verb!$Id$!\\ |
|
462 Quelle: \verb!$URL$! |
|
463 |
|
464 |
|
465 \end{document} |
|
466 |
|
467 % vim:sts=2 sw=2 aw ai sm: |