Login
Newsletter
Werbung

Mi, 5. Februar 2003, 00:00

POP3 before SMTP mit tpop3d und exim4

Diese Anleitung beschreibt, wie ein Mail-Server auf der Basis von Tpop3d und Exim eingerichtet werden kann. Alle Beispiele beziehen sich auf eine Installation unter Linux.

Einführung

Features

  • Die Konfiguration erfolgt dynamisch über Datenbankeinträge
  • Virtuelle Domänen werden unterstützt
  • Die Authentifizierung des SMTP-Servers erfolgt über POP3 before SMTP
  • Die Mails der Benutzer werden im Maildir-Format abgelegt

Benötigte Software

  • MySQL zur Verwaltung der Konfigurationen
  • Exim als SMTP-Server (hier 4.05)
  • Tpop3d als POP3-Server (hier 1.4.2)

Datenbankstruktur

Domänen, Benutzer und Weiterleitungen werden über die Datenbank eingerichtet. Ihre Struktur entspricht dabei im Wesentlichen der im Projekt Vmail vorgeschlagenen. Bevor Tpop3d und Exim installiert werden, sollte zunächst die im Beispiel gezeigte Datenbank mit MySQL erzeugt werden. Es ist anzuraten, für unseren Zweck einen eigenen Benutzer in MySQL einzutragen, der das Recht hat, SELECT- und UPDATE-Anweisungen auf unsere Konfigurationsdatenbank auszuführen. Im folgenden ist der Datenbankname virtualemail, auf die der Benutzer email mit dem Passwort emailpasswort (bitte in der endgültigen Konfiguration etwas mehr Einfallsreichtum zeigen!) zugreift.

Listing: Anlegen der Tabellen

#
# Tabellenstruktur für Tabelle `domain`
#
CREATE TABLE domain (
 domain_name varchar(255) NOT NULL default '',
 unix_user varchar(255) default NULL,
 password_hash varchar(255) default NULL,
 path varchar(255) default NULL,
 max_popbox int(11) default NULL,
 PRIMARY KEY (domain_name)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `domain_alias`
#
CREATE TABLE domain_alias (
 domain_name varchar(255) NOT NULL default '',
 alias varchar(255) NOT NULL default '',
 PRIMARY KEY (alias)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `forwarder`
#
CREATE TABLE forwarder (
 domain_name varchar(255) NOT NULL default '',
 local_part varchar(255) NOT NULL default '',
 remote_name varchar(255) NOT NULL default '',
 PRIMARY KEY (domain_name(16),local_part(32))
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `popbox`
#
CREATE TABLE popbox (
 domain_name varchar(255) NOT NULL default '',
 local_part varchar(255) NOT NULL default '',
 password_hash varchar(255) NOT NULL default '',
 mbox_name varchar(255) default NULL,
 login_ip varchar(16) NOT NULL default '127.0.0.1',
 PRIMARY KEY (domain_name(16),local_part(32))
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `web_session`
#
CREATE TABLE web_session (
 domain_name varchar(255) NOT NULL default '',
 session_id varchar(32) default NULL,
 expires int(11) default NULL,
 PRIMARY KEY (domain_name)
) TYPE=MyISAM;

In die Tabelle domain werden die verwendeten Domänen analog zum folgenden Beispiel eingetragen:

domain_name unix_user path
mailserver.de mail /var/spool/mail/SERVERS/mailserver.de

Das betreffende Verzeichnis /var/spool/mail/SERVERS/mailserver.de und der Benutzer (kein MySQL-Benutzer, sondern Benutzer auf Betriebssystemebene) mail mit dem Recht, in dem Verzeichnis Dateien erstellen zu dürfen, muss angelegt werden, falls noch nicht vorhanden. Am Beispiel des Benutzers postmaster, der auf jeder Domäne existieren sollte, wird die Benutzung der Tabelle popbox klar.

domain_name local_path password_hash mbox_name
mailserver.de postmaster 000c98dce4d5f26a144586c34eafe666 postmaster

Das Passwort ist dabei ein MD5-Hash des Klartextpassworts. Das SQL-Statement zu diesem Eintrag lautet also: INSERT INTO popbox (domain_name,local_part,password_hash,mbox_name) VALUES ('mailserver.de','postmaster',MD5('testpasswort'),'postmaster')

Um erste Tests durchzuführen, reichen diese Datenbankeinträge.

Nameserver-Einträge

Um die entsprechenden virtuellen Domänen auch auf den Rechner verfügbar zu haben, müssen diese als lokale Zone angelegt werden. Der komplete Zusammenhang des BIND-Services wird im BIND-Handbuch beschrieben, ein kurzer Überblick über das Thema und die Problematik befindet sich im Linux-Magazin. Für jede Domäne muss ein entsprechender Eintrag in /etc/named.conf vorliegen. Hier wird der Zone testdomain.de eine genauere Beschreibung in /var/named/testdomain.zone zugewiesen:

zone "testdomain.de" IN {
 type master;
 file "testdomain.de.zone";
 allow-update { none; };
};

Der entsprechende Eintrag in /var/named/testdomain.de.zone sieht wie folgt aus:

$ORIGIN de
testdomain 86400 IN SOA ns.mydnsserver.de. (2002101702 21600
3600 691200 86400)
 86400 IN NS ns.mydnsserver.de.
 86400 IN NS pns.dtag.de.
 86400 IN NS secondary004.dtag.net.
 86400 IN A XXX.XXX.XXX.XXX
 86400 IN MX 200 mforward.dtag.de.
 86400 IN MX 100 mail.testdomain.de.
 $ORIGIN testdomain.de.
 www 86400 IN A XXX.XXX.XXX.XXX
 mail 86400 IN A XXX.XXX.XXX.XXX

testdomain ist eine Zone in de. NS steht für Nameserver; der erste Nameserver, der diese Zone verwaltet, ist der lokale (hier: ns.mydnsserver.de), desweiteren zwei Nameserver der Telekom (pns.dtag.de und secondary..). A steht für Adresse und dient der Auflösung Name auf IP (lokale IP: 217.7.83.178). MX steht für Mailexchange, die Nummer dahinter gibt die Priorität an (nimm zuerst den Mailserver mail.testdomain.de -> exim4 auf server mydnsserver), und falls es keine lokale Adresse ist, benutze den Mailexchanger der Telekom. Der letzte Eintrag ($ORIGIN testdomain.de) hängt die Subdomains www und mail an, d.h.: die Subdomains www.testdomain.de und mail.testdomain.de befinden sich auf der ip-adresse XXX.XXX.XXX.XXX (=> mydnsserver.de).

WICHTIG: Bei jeder Änderung in diesen Zonenkonfigurationen muss die Seriennummer erhöht (hier: SOA 2002101702) und der Nameserver neu gestartet werden (z.B. /etc/init.d/named restart).

WICHTIG: Vgl. hierzu auch den Link unter Fehlersuche.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung