deutsche Übersetzung der Seite: http://www.sendmail.org/virtual-hosting.html

Virtual Hosting mit Sendmail

Viele Personen und Firmen heutzutage haben ihre eigenen Domainnamen und wünschen sich e-mails an diese Domainnamen zu erhalten. Man kann einen Internet Service Provider dafür bezahlen oder es selbst tun. Diese Webseite ist ein Leitfaden für Autodidakten, der beschreibt wie man Sendmail benutzt um "virtual e-mail hosting" zu realisieren. Etwas Grundwissen über Sendmail, Unix Administration und Internet Protokolle wird dabei vorrausgesetzt. Die beste Quelle für Informationen über Sendmail ist das Buch Sendmail, 2nd Edition.

Diese Seite wurde auch in slowakisch übersetzt.

DNS Konfiguration

Zuerst muss der Domainname gültig sein und die Nameserver müssen für den neuen Namen eingerichtet werden:

1. Wählen Sie einen verfügbaren Domainnamen aus. In unserem Beispiel werden wir yourdomain.com benutzen.

2. Richten Sie zwei Rechner ein, einen als primären und einen als sekundären Nameserver für Ihre Domain. Wie man das macht wird vorrausgesetzt; andernfalls, sollten Sie in das Buch DNS and BIND, 4th Edition schauen.

3. Konfigurieren Sie die MX Einträge für Ihre Domain (Hinweis: CNAME Einträge können nicht benutzt werden; schauen Sie unter § 5.2.2 oder RFC 1123 für weitere Informationen) MX Einträge sind im Sendmail Buch erklärt, Abschnitt 15.3, Hinweise wie man sie konfiguriert finden Sie in Abschnitt 21.3, des Buches. Es gibt zwei Möglichkeiten für die MX Einträge

- Wenn der e-mail Server, der die neue Domain bedienen soll, eine ständige Verbindung zum Internet hat, sollte es der primäre MX Rechner für ihre Domain sein. In dieser Konfiguration sähe der MX Eintrag wie folgt aus:

yourdomain.com. IN MX 10 yourmailserver.yourdomain.com.

- Anderenfalls, brauchen Sie einen Rechner der die e-mails für Ihre Domain in der Warteschleife hält, während Sie nicht online sind. Holen Sie sich aber dazu erst die Erlaubnis des Rechnerbenutzers ein. Der Rechner muss so konfiguriert sein, das er das Weiterleiten an ihre Domain erlaubt. Wenn auf dem Rechner Sendmail läuft, fügen Sie einfach ihre Domain in die relay-domain Datei hinzu. Dann muss natürlich noch Ihr MX Eintrag auf den anderen Rechner zeigen. Zum Beispiel so:

yourdomain.com. IN MX 10 yourmailserver.yourdomain.com.
yourdomain.com. IN MX 20 othermailserver.otherdomain.com.

4. Nachdem die Nameserver geladen sind, registrieren Sie Ihre Domain, in dem Sie eine der Registrierungsstellen benutzen.

Sendmail Konfiguration

Nun da der DNS konfiguriert ist, wird es Zeit Sendmail zum laufen zu bringen.

1. Laden Sie Sendmail von FTP.Sendmail.ORG/pub/Sendmail/. Sie bekommen automatisch eine kurze Nachricht die, die aktuellste Version andeutet. Die nachfolgenden Anweisungen setzen Sendmail 8.10.0 oder später voraus.

2. Kompilieren und installieren Sie Sendmail auf ihrem Rechner. In den meisten Fällen, heißt das, entpacken der Distribution, lesen der README und Sendmail/README Dateien, sowie Build im Sendmail Verzeichnis eingeben. Schlagen Sie in der INSTALL Datei in der Wurzel des Distributionsverzeichnisbaumes nach, für weitere Details.

3. Konfigurieren Sie Sendmail. Hier geht es ins Detail.

a. Zuerst, lesen Sie die cf/README Datei komplett. Dort finden Sie Anweisungen wie Sie eine .mc Datei im cf/cf Verzeichnis erstellen. Ihre mailserver.mc Datei würde normalerweise in etwa so aussehen:

divert(-1)dnl
#
# This file contains definitions for mailserver.yourdomain.com
#
divert(0)dnl
VERSIONID(`@(#)mailserver.mc 1.0 (yourdomain.com) 5/1/97')
OSTYPE(solaris2)dnl
DOMAIN(yourdomain.com)dnl
FEATURE(`virtusertable', `dbm /etc/mail/virtusertable')dnl
MAILER(local)dnl
MAILER(smtp)dnl

Ihr aktuelles Betriebsystem wird an der Stelle solaris2 eingesetzt. Eine typische cf/domain/yourdomain.com.m4 Datei sieht etwa so aus:

divert(-1)dnl
#
# This file contains the global definitions for yourdomain.com
#
divert(0)dnl
VERSIONID(`@(#)yourdomain.com.m4 1.0 (yourdomain.com) 5/1/97')
FEATURE(`use_cw_file')dnl

Sie kann natürlich einige andere FEATURE()'s und define()'s beinhalten. Die virtual user table ist der Schlüssel zu unserem Vorhaben. Hinweis: Wenn Sie Sendmail mit NEWDB anstelle von NDBM'kompiliert haben, müssen Sie hash anstelle von dbm in der oberen Zeile benutzen.

b. Generieren Sie ihre /etc/mail/Sendmail.cf Datei aus Ihrer mailserver.mc Datei:

cd Sendmail-VERSION/cf/cf
./Build mailserver.cf
cp mailserver.cf /etc/mail/Sendmail.cf

4. Erzeugen Sie virtual user table. Eine detailliertere Beschreibung finden Sie im Sendmail Buch, Abschnitt 19.6.28; einen Überblick erhalten Sie aber hier. Die Tabelle (virtual user table) ist eine Datenbank die von virtuellen e-mail Adressen auf reale e-mail Adressen verweist. Dabei erstellen Sie eine Textdatei, in der jede Zeile ein Schlüssel/Werte Paar darstellt, das durch ein TAB getrennt ist. Zum Beispiel:

joe@yourdomain.com jschmoe
jane@yourdomain.com jdoe@othercompany.com
@yourdomain.com jschmoe

In diesem ersten Beispiel verweist die Adresse joe@yourdomain.com auf den lokalen Benutzer jschmoe, jane@yourdomain.com verweist auf den entfernten Benutzer jdoe@othercompany.com, und alle anderen e-mails an yourdomain.com werden an jschmoe weitergeleitet.

joe@yourdomain.com jschmoe
bogus@yourdomain.com error:nouser No such user here
list@yourdomain.com yourdomain-list
@yourdomain.com %1@othercompany.com

In diesem zweiten Beispiel verweist die Adresse joe@yourdomain.com auf den lokalen Benutzer jschmoe, die Adresse bogus@yourdomain.com gibt den angezeigten Fehler zurück, die Adresse list@yourdomain.com verweist an den lokalen Benutzer yourdomain-list (hier sollten Sie ihre Alias Datei angeben um die Adressen vollständig aufzulösen) und jeder anderer Benutzer auf yourdamain.com wird auf die entfernten Benutzer, mit gleichem Namen, auf othercompany.com weitergeleitet.

Hinweis 1: Wenn Sie einen lokalen Benutzer, sagen wir sam haben und es keinen sam@yourdomain.com gibt und keinen allgemeinen Schlüssel @yourdomain.com, dann wird Sendmail die e-mail an den lokalen Benutzer sam schicken, wenn es versucht sam@yourdomain.com aufzulösen. Um das zu verhindern, sollten Sie einen allgemeinen Schlüssel oder einen klaren Schlüssel für sam@yourdomain.com erstellen; das error:nouser Beispiel von oben mag in solchen Fällen nützlich sein.

Hinweis 2: Wenn Sie eine virtuelle e-mail Adresse zu mehr als einer realen e-mail Adresse verweisen wollen, müssen Sie das indirekt tun. Verweisen Sie mit der virtuellen e-mail Adresse auf einen lokalen Alias und lösen Sie dann den lokalen Alias zu den gewünschten Adressen auf. Zum Beispiel, in der virtual user table:

joe@yourdomain.com localjoe

und dann in der Alias Datei:

localjoe: joe@othercompany.com, jane@othercompany.com

Hinweis 3: Verschiedene Domains sind erlaubt und virtuelle Adressen in jeder Domain sind unabhängig voneinander. So könnten Sie zum Beispiel haben:

joe@yourdomain1.com localjoe
joe@yourdomain2.com joe@othercompany.com
joe@yourdomain3.com localjoe
joe@yourdomain4.com error:nouser No such user here

Für Leute die mehrere Domains administrieren ist es einfacher jede Liste der Domain in einer extra Datei zu haben, und dann ein kurzes Skript zu schreiben, das alle diese Dateien in eine Master virtual user table vereint. Aber wir schweifen ab; also zum nächsten Schritt...

5. Kompilieren Sie die virtual user table. Wenn die obige virtual user table Textdatei an der selben Stelle wie sourcefile liegt und Sie dbm Datenbanktypen benutzen, geben Sie folgendes Kommando ein:

makemap dbm /etc/mail/virtusertable < sourcefile

Dieses Kommando erzeugt eine oder mehr nicht Textdatein (typischerweise /etc/mail/virtusertable.dir und /etc/mail/virtusertable.pag, oder /etc/mail/virtusertable.db), aber es ändert nicht /etc/mail/virtusertable selbst, daher ist das die empfohlene Postition von sourcefile.

6. Wenn Sie die lokalen Benutzer, für ausgehende e-mails, rückwärts maskieren wollen, müssen Sie die Unterstützung für generics table in Ihrer .mc Datei aktivieren:

FEATURE(`genericstable', `dbm /etc/mail/genericstable')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl

Und Sie müssen /etc/mail/genericstable erzeugen, die wie /etc/mail/virtusertable aussieht (s.o.), außer das die Spalten festgelegt sind.

jschmoe joe@yourdomain.com
user adresse

Hinweis: Sie finden weitere Informationen dazu auf unserer Masquerading und Relaying Seite.

7. Fügen Sie ihren Domainnamen zur Sendmailklasse w hinzu. Dazu tragen Sie eine Zeile in /etc/mail/local-host-names (bekannt als /etc/Sendmail.cw vor Version 8.10), die den Namen ihrer Domain trägt, ein.

Wenn Sie genericstable benutzen sollten Sie jede Domain die Sie rückwärts maskieren wollen auch in /etc/mail/generics-domains eintragen.

8. Starten Sie Sendmail neu. Sie müssen Sendmail nicht neu starten, wenn Sie nur die virtual user oder generics table verändern, nur dann wenn Sie /etc/mail/Sendmail.cf oder Klassendateien wie /etc/mail/local-host-names Ändern.

Ein zusätzlicher Schritt ist nötig für Rechner die nicht ständig online sind. Wie bemerkt in dem MX Konfigurationsabschnitt, wenn Sie einen anderen Rechner benutzen um e-mails in der Warteschleife zu halten, bis Sie sich verbinden, müssen Sie die Auslieferung an den zweiten Rechner erzwingen. Um das zu erreichen, wenn Ihr erster Server online geht, sollten Sie das Script etrn.pl ausführen, das im contrib Verzeichnis der Sendmaildistribution zu finden ist:

etrn.pl secondary-mx-host yourdomain.com

Es mag hilfreich sein das Script am Ende des Sendmailstartskriptes auf jedem primären MX Server einzufügen. Es ist besonders nützlich als Anschlussskript an das Verbindungsskript, auf primären MX Servern die nicht ständig online sind.

Nun sollten die Leute e-mails an @yourdomain senden können. Wie auch immer, Sie sollten die Konfiguration testen uns sicher gehen das alles wie erwartet funktioniert, bevor Sie den neuen Domainnamen und die e-mail Adressen für die Domain veröffentlichen. Wenn etwas nicht wie erwartet funktioniert, können Sie im Sendmailtestmodus eine Fehlersuche durchführen:

Sendmail -bt

Hier einige Beispiele, die Sie bei der Fehlersuche durchführen sollten:

# Überprüfen, ob ihre Domain in der Klasse w ist:
$=w
# funktioniert die Maskierung?
/map virtuser joe@yourdomain.com
/map virtuser jane@yourdomain.com
/map virtuser @yourdomain.com
# funktioniert das umschreiben?
3,0 joe@yourdomain.com
3,0 some@yourdomain.com

Wenn Sie den Fehler nicht finden und die Antworten nicht in den verschiedenen README Dateien, der Sendmail FAQ, oder dem Sendmail Buch finden, können Sie eine e-mail an mailto:Sendmail-questions@Sendmail.org schicken und um Unterstützung bitten.

deutsche Übersetzung der Sendmailseite: http://www.sendmail.org/virtual-hosting.html

Übersetzung Moritz Möller aka brainyartist am 6.2.03
Korrekturen an mailto:moeller@museumsdienste.de oder mailto:moritz@brainyartist.com

Demnächst auch Masquerading and Relaying als Übersetzung und wenn ich es schaffe die FEATURE Seite der cf/Readme oder die ganze cf/Readme, ma sehn...

gruß brainyartist