manual.tex
changeset 0 2a5f2464f8c6
child 1 5c55c8f7986a
equal deleted inserted replaced
-1:000000000000 0:2a5f2464f8c6
       
     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: