Mailserver [4]

E-Mail-Grundlagen

Mail User Agent (MUA) = Anwenderprogramm wie Thunderbird zum Schreiben von Mails.

Mail Transfer Agent (MTA) = Weiterleitung von Mails (SMTP). Sendmail, Qmail, Exim, Postfix sind klassische MTAs.

Mail Delivery Agent (MDA) = Nimmt Mails an und verteilt diese in die Postfächer. Schnittstelle zwischen MTA und MUA. Viele MTAs übernehmen die Aufgabe des MDA.


- Stellt der MTA fest, dass die Empfängeradresse auf dem lokalen System existiert, übergibt dieser die Mail an den MDA, welcher die Mail in die Mailbox des User legt.


Aufbau einer E-Mail


1.) Envelope

Der Envelope Sender wird von E-Mail-Programmen normalerweise nicht angezeigt. Der MTA wertet nur den Envelope aus, nicht den Mail-Header.

MAIL FROM: <absender@example.com>
RCPT TO: <empfaenger@example.net>

2.) Mail-Header

Zeigt an, welchen Weg die E-Mail genommen hat. Hinweise auf Absender, Empfänger, Datum der Erstellung und Stationen der Übermittlung. Des Weiteren können auch Informationen über Spam- und Virenfilter eingetragen werden.

From – der Absender

To: – der Empfänger

Cc: – weitere Empfänger

Subject – der Betreff

Date – der Zeitpunkt der Erstellung


Beispiel Mail-Header

Return-Path: <fritz@gmx.net>
Received: from mailserver.pce.de (qmailr@mailserver.pce.de [195.63.104.129])
by ancalagon.rhein-neckar.de (8.8.5/8.8.5) with SMTP id SAA25291
for <karl-heinz@ancalagon.rhein-neckar.de>; Thu, 16 Sep 1998 17:36:20
+0200 (MET DST)
Received: (qmail 1935 invoked by alias); 16 Sep 1998 15:36:06 -0000
Delivered-To: GMX delivery to karl-heinz@gmx.example
Received: (qmail 27698 invoked by uid 0); 16 Sep 1998 15:36:02 -0000
Received: from pbox.rz.rwth-aachen.example (137.226.144.252)
by mailserver.pce.de with SMTP; 16 Sep 1998 15:36:02 -0000
Received: from gmx.net (slip-vertech.dialup.RWTH-Aachen.EXAMPLE
[134.130.73.8]) by pbox.rz.rwth-aachen.example (8.9.1/8.9.0) with ESMTP
id RAA28830 for <karl-heinz@gmx.example>; Wed, 16 Sep 1998 17:35:59
+0200
Message-ID: <356s4A4F.2BC2A064@gmx.net>
Date: Wed, 16 Aug 2007 17:33:35 +0200
From: fritz Hinz <fritz@gmx.net>
Organization: RWTH Aachen
X-Mailer: Mozilla 4.05 [de] (Win95; I)
To: anne-frank <anne-frank@gmx.net>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Subject: Re: Ich bins!
References: <anne@gmx.de>
X-Resent-By: Global Message Exchange <forwarder@gmx.example>
X-Resent-For: anne-frank@gmx.de

Hinweis: To: und From: wertet der MTA nicht aus (er nutzt den Envelope)

SMTP – Simple Mail Transfer Protocol

Ist das Protokoll zum Versenden von Mails. Über dieses Protokoll kommunizieren die MTAs untereinander. Mithilfe einer Telnet-Verbindung über Port 25 kann man mit dem Mail-Server kommunizieren:

Via Telnet mit einem Mail-Server kommunizieren

Befehle

HELO server = Anmelden beim Server

MAIL FROM: absenderadresse = Spezifiziert den Absender und leitet das Absenden von Mail ein.

RCPT TO: empfängeradresse = Spezifizieren des Empfängers.

DATA = Nachrichteninhalt eingeben und übertragen.

RSET = Abbruch einer laufenden übertragung und Reset der Verbindung.


SEND FROM: = Übertragung der Nachricht an ein Terminal. (Optional)

SOML FROM: = Übertragung der Nachricht an ein Postfach oder ein Terminal.

SAML FROM: = Übertragung der Nachricht an ein Terminal und ein Postfach.

VRFY = Fragt nach, ob ein bestimmtes Postfach verfügbar ist.

EXPN = Fragt nach den Mitgliedern einer Maillingliste.


Beispiel:

telnet mail.domain.de 25
220 mail.domain.de ESMTP Postfix
helo mailhost.domain.de
250 mail.domain.de
mail from:<absender@domain.de>
250 2.1.0 absender@domain.de....Sender OK
rcpt to:<empfaenger@domain.de>
250 2.1.5 empfaenger@domain.de
data
354 Start mail input; end with <CRLF>.<CRLF>
Subject: Hi Fritz

Nach einer Leerzeile beginnt der Body (Eine Leerzeile beendet den Header)
Und er endet mit einem Punkt auf einer Zeile
.
250 2.6.0 <NAWSV002562dr5r20000011f@domain.de> Queued mail for delivery
quit
221 2.0.0 nawsv001.netatwork.de Service closing transmission channel

SMTP Return-Codes

[0] Syntaxfehler

[1] Positive vorläufige Antwort


[2] Bestätigungen

211 System Status

214 Hilfe Nachricht

220 Dienst bereit

221 Dienst schließt Übertragungskanal

250 Aktion abgeschlossen

251 Weiterleiten, Benutzer nicht lokal


[3] Aufforderungen

354 Beginne Mail Eingabe


[4] Temporäre Fehler

421 Dienst nicht bereit und Übertragungskanal schließen

450 Mail Aktion nicht ausgeführt, da Mailbox nicht aktiv

451 Aktion abgebrochen


[5] Fatale Fehler

500 Syntax Fehler

501 Syntax Fehler (Parameter oder Argument)

502 Befehl nicht implementiert

503 Unbrauchbare Befehlsabfolge

504 Befehlsparameter nicht unbekannt

550 Aktion nicht ausgeführt, da Mailbox nicht erreicht

551 Weiterleitung, da Benutzer nicht lokal

552 Mail Aktion abgebrochen (nicht genügend Speicher)

553 Unerlaubter Mailboxname, Aktion nicht ausgeführt

554 Übertragung mißlungen

Konfiguration von Postfix

- Postfix ist ein MTA
- ist nicht ein „großes“ Programm, sondern besteht aus Programm-Modulen
- Bestimmte Aufgaben können von unterschiedlichen Modulen übernommen werden
- Diese Module können mit unpriviligierten Rechten gestartet werden ==> höhere Sicherheit
- besitzt ein Programm sendmail, um die weitverbreiteten sendmail-Befehle verarbeiten zu können.

postfix master-modul = Überwacht und ruft Module auf. Erster und letzter Postfix Prozess. Überwacht Einhaltung von Limits und Ressourcen, welche in /etc/postfix/master.cf festgelegt sind.
Lokal empfangene Mails = Werden an postdrop Modul geschickt => maildrop => pickup => cleanup
smtpd
= Nimmt Mails entgegen. smtpd gibt die Mail an cleanup.


Wichtige Postfix-Module für Zustellung einer Mail:

master = Verwaltet das Zusammenspiel der Module
smtp
= leitet die Mail an andere Server weiter.
smtpd = Nimmt Mails von anderen Servern an
local = Speichert die Mail in dem Postfach des Users.
pipe = Übergibt die Mail an Programme wie Majordomo
lmtp = (Local Mail Transfer Protocol) Protokoll, über das MTA und MDA kommunizieren.
pickup = Aufnahme neuer Emails aus der Queue und Weitergabe an cleanup
postdrop = Nimmt lokal erzeugte Emails an
bounce = Zuständig für nicht zustellbare Mails

cleanup = Ergänzt fehlende Header-Informationen

showq = Anzeigen der Queue


Die wichtigsten Konfigurations-Dateien von Postfix

/etc/postfix/main.cf: Hauptkonfigurationsdatei von Postfix

/etc/postfix/master.cf: Postfix-Prozesse/-Module steuern

/etc/postfix/access: Eingehende Emails konfigurieren. Prüfen des Mailheaders.

/etc/aliases: Lokale Emails werden anderen Adressen zugeordnet.

/etc/postfix/canonical: Mail-Adresse umschreiben, um Adressen zu "verstecken" (smtp-Header und -Envelope)

/etc/postfix/relocated: Wenn alte E-Mail-Adresse nicht mehr existiert, kann die Mail an eine andere weitergeleitet werden

/etc/postfix/transport: Hier können andere Transport-Protokolle konfiguriert werden

/etc/postfix/virtual: Empfänger- und Absenderadressen verändern, ändert nur SMTP-Envelope auf lokalen User

/etc/postfix/master.cf – Prozesse steuern

Legt fest, wie und welche Postfix-Prozesse gestartet werden.

Syntax:

service typ zugriffsrecht unpriv chroot wakeup max_prozess kommando

procmail unix – n n - - pipe flags=R user=nobody argv=/usr/bin/procmail


service = Name des Postfix-Dienstes (smtp, local, pipe, etc)
typ = Verbindungstyp (inet = Internet-Socket, unix = Unix Domain Socket, fifo = Named Pipe)
Zugriffsrecht = Y (nur Mailkomponenten haben Zugriff), N (auch andere Programme haben Zugriff)

unpriv = Y (Modul läuft unter unpriviligierter UID), N (Modul läuft mit Root-Rechten)
chroot = Y (Modul läuft aus sicherheitsgründen in Chroot-Umgebung), N (kein Chroot)
wakeup = Wie viele Sekunden liegt zwischen zwei Aufrufen. 0 deaktiviert den Eintrag

max_prozess = Wie viele Prozesse diesen Typs dürfen maximal gestartet werden.

/etc/postfix/main.cf – Haupt-Konfigurationsdatei

Legt unter anderem die zuständigen Domains und die globalen Einstellungen fest. Hier können auch Variablen verwendet werden. Auch die Zuweisung von Werten entspricht dem Prinzip von Variablen.


Die wichtigsten Parameter:

myhostname = mailserver.pce.de // Vollständiger Name inkl. Domain.
mydomain = pce.de // Für diese Domain ist Server zuständig. Dient als Absenderdomain

myorigin = $mydomain // Dient der FQDN (Fully Qualified Domain Name), Domainname von lokal erzeugten Mails.

mydestination = $myhostname, $mydomain, localhost, localhost.$mydomain // Legt fest, für welche Domains der Server Mails annimmt.

relayhost = pop.gmx.net // Weiterleitung aller nicht lokalen Mails an externen MTA.

mynetworks = 192.168.0.0/24, 127.0.0.1/8 // Rechner aus diesem Netz dürfen diesen Mail-Server als Relay-Server nutzen. Verhindert, dass der Server als offener Relay fungiert.

mynetworks_style = subnet | class | host // subnet = nur Clients aus dem eigenen Subnetz vertrauen. class = allen Rechner aus selben Class A, B, C-Netzwerk. host = nur dem lokalen Rechner

mail_owner = postfix // nicht-previligierter User unter dem Postfix läuft

inet_interfaces = all | ip-adresse // Über welche IP-Adresse nimmt Postfix Mails an.

smtpd_banner = Willkommen // Begrüßungstext von Postfix

queue_directory = /var/spool/postfix // Spoolverzeichnis, in dem Postfix Mails ablegt

program_directory = /usr/lib/postfix // In diesem Vrz. liegen die Postfix-Module

command_directory = /usr/sbin // Wenn Postfix-Tools in einem anderen Vrz als $program_directory liegen
daemon_directory = /usr/lib/postfix // Wenn Postfix-Module in einem anderen Vrz als $program_directory liegen

# Einbinden der Postfix-Konfigurationsdateien

canonical_maps = hash:/etc/postfix/canonical

virtual_maps = hash:/etc/postfix/virtual

relocated_maps = hash:/etc/postfix/relocated

transport_maps = hash:/etc/postfix/transport

sender_canonical_maps = hash:/etc/postfix/sender_canonical

alias_maps = hash:/etc/aliases

smtpd_sender_restriction = hash:/etc/postfix/access

# Wenn man auf MySQL oder Ldap zurückgreifen möchte

virtual_maps = mysql:/etc/postfix/virtual.mysql

transport_maps = hash:/etc/postfix/transport,ldap:transportldap


Achtung: Die Dateien müssen noch mit dem Befehl postmap in das Bekeley Datenbankformat umgewandelt werden (Ausnahme ist /etc/aliases):

linux # postmap /etc/postfix/virtual

/etc/postfix/access – Absender annehmen oder abweisen

Die Datei /etc/postfix/access wird vom smtpd-Modul ausgewertet. In dieser Datei wird festgelegt, ob Absender angenommen oder abgelehnt werden. Baut man hier keine Sperren ein, mutiert der Server zum offenen Mailrelay!


# Auszug /etc/postfix/main.cf

smtpd_sender_restriction = hash:/etc/postfix/access

smtpd_sender_sender = hash:/etc/postfix/access_sender

smtpd_sender_helo = hash:/etc/postfix/access_helo

smtpd_sender_recipient = hash:/etc/postfix/access_recipient

# Auszug /etc/postfix/access
# Alle Mails von pc-erfahrung.de weiterverarbeiten
pc-erfahrung.de OK
# Der Punkt bedeutet nur Subdomains
.pc-erfahrung.de OK
# Mails von dieser Domain verwerfen
otherdomain.com REJECT

Adressmuster in /etc/postfix/access

user@domain = nur angegebene E-Mail-Adresse

domain.tld = Alle E-Mail-Adressen dieser Domain.

User@ = Alle E-Mail-Adressen beginnend mit User@

IP-Adresse = Nur Mails von dieser IP-Adresse


Mögliche Werte

4xx TEXT, 5xx TEXT, usw. = Mail wird mit SMTP-Code abgewiesen

REJECT = Mail wird mit Fehlermeldung abgewiesen

OK = smtpd akzeptiert die Mail

DUNNO = smtpd beendet die Abarbeitung dieser Tabelle

DISCARD = Mail wird verworfen, Absender bekommt trotzdem OK-Bestätigung

FILTER methode:ziel = Mail wird durch Filter geschickt

HOLD text = Mail kommt in Warteschlange bis sie mit postsuper gelöscht und weitergeleitet wird

PREPEND headername:wert = smtpd stellt anderen Header an die Mail

REDIRECT user@domain = Mail wird an diese Adresse umgeleitet

WARN text = Mitloggen dieser Mail.


Wichtig: Datei muss ins Datenbankformat konvertiert wird.
Linux # postmap /etc/postmap/access

/etc/postfix/canonical

Diese Datei wird dazu genutzt, um Absender- und Empfängeradressen sowohl im E-Mail-Header als auch im Envelope zu ändern. Diese Datei entspricht einer erweiterten /etc/aliases. Somit können Adressen „versteckt“ werden.

# Auszug /etc/postfix/canonical
# Die Adresse test@... wird in tux@... umgeschrieben
test@srv002.pc-erfahrung.de tux@pc-erfahrung.de
# Mails von und an root werden umgeschrieben
root tux@pc-erfahrung.de
# Mails von dieser Subdomain werden umgeschrieben
@mail.pc-erfahrung.de @pc-erfahrung.de

Wichtig: Datei muss ins Datenbankformat konvertiert wird.
Linux # postmap /etc/postmap/canonical

/etc/postfix/virtual

Wenn eine Mailserver auch für andere Domains zuständig ist, spricht man von einer virtuellen Domain. Mithilfe der Datei /etc/postfix/virtual schreibt der smtpd NUR den SMTP-Envelope der eingehenden Mail auf den entsprechenden User um. Die Empfängeradresse bleibt logischerweise unberührt.

# Auszug /etc/postfix/virtual
# Syntax: Empfängeradresse Adresse
# Postfix ist auch für pce-forum.de zuständig.
pce-forum.de pc-erfahrung.de
# Mails an tux@pce-forum.de gehen an lokalen User tux
tux@pce-forum.de tux
tux@pce-forum.com tux@pce-forum.de
# Alle weiteren Mails an pce-forum.de gehen an chef@pc-erfahrung.de
# Catch-All-Regel
@pce-forum.de chef@pc-erfahrung.de

Wichtig: Datei muss ins Datenbankformat konvertiert wird.
Linux # postmap /etc/postmap/virtual

/etc/postfix/transport

Hier kann man das Transport-Protokoll festlegen, das die E-Mails an bestimmte Empfängeradresse nutzen sollen.

# Auszug /etc/postfix/transport
# Syntax: domain-muster transportmethode:rechner
# Alle Mails der Domain via SMTP an anderer_server.com schicken
example.com smtp:anderer_server.com
# Alle Mails der Subdomains via SMTP an anderer_server.com schicken
.example.com smtp:anderer_server.com

Transport-Methoden in /etc/postfix/transport

local: = lokale Zustellung, nach dem : bleibt leer

lmtp: = lokale Zustellung via lmtp, nach dem : bleibt leer

smtp:HOST = Weiterleitung an HOST über smtp.

uucp:HOST = Weiterleitung an HOST über uucp.

/etc/postfix/relocated

Hier trägt man E-Mail-Adressen ein, die umgezogen sind und nicht mehr exisitieren. Mit einem Verweis auf die neue Adresse wird der Absender informiert.

# Auszug /etc/postfix/relocated
# Syntax: Adresse Hinweis
pinguin@pc-erfahrung.de Die neue Adresse lautet tux@pc-erfahrung.de

/etc/aliases

Die Datei existiert zusätzlich zur Rückwärtskompatibilität, da ältere und andere Programme wie bsp. sendmail darauf zurückgreifen. Sie dient wie die Datei /etc/postfix/canonical für die Umleitung der Mails an andere Adressen.

# Auszug /etc/aliases
# Syntax: Alias-Adresse Real-Adresse
# Mails an tux werden an root geschickt
tux: root
# Mails an tux werden an root geschickt. Pinguin bekommt CC (\)
tux: root, \pinguin
# Mails an privat werden an zuhause@gmx.de geschickt
privat: zuhause@gmx.de
# Mail an maschine wird über Pipe an Programm übergeben
maschine: "|/usr/bin/programm"
# Liste mit Benutzernamen einbinden
#
==> Verteilerliste erstellen
admins: :include:/var/mail/liste_admin

newaliases = Befehl, um neue Aliase bekannt zu machen


Wichtig: Datei muss ins Datenbankformat konvertiert wird.
Linux # postalias /etc/paliases

Wichtige Tools für Postfix

mailq = listet die nicht versendeten Mails auf

newaliases = Die ASCII-Datei /etc/aliases in Hash (aliases.db) umwandeln => Aliase bekannt machen

postalias = wie newaliases ==> Standard.

postcat = Zeigt die Mail-Warteschlange in lesbaren Format auf.

postconf = Anzeigen der Optionen von /etc/postfix/main.cf

postconf -e mydomain=pc-erfahrung.de = Mit postconf Werte ändern

postfix = Startet den Postfix-Master-Prozess
postfix check = Konfigurationsfehler suchen
postfix flush =Zustellung von Mails erzwingen/anstoßen

postfix reload = Konfig-Datei neu einlesen


postlock = Mailboxen sperren

postlog = Logmeldung für syslog erzeugen

postmap = Hash-Datei erzeugen

postqueue = Mail-Warteschlange anzeigen und anschließend Mails „flushen“


postsuper = Verwaltung der Mail-Warteschlange

postsuper -d queue_id = Bestimmte Mail aus Queue löschen

postsuper -d ALL = Löscht alle Mails in der Queue

postsuper -h queue_id = Verschieben der Mail in die Hold-Queue => Mail „parken“

postsuper -H queue_id = „Geparkte“ Mail freigeben

postsuper -p = Temporäre Dateien löschen

postsuper -s = Queue-Struktur prüfen und reparieren

Konfiguration von Qmail

- Ist wie Postfix modular aufgebaut
- Steht nicht unter der GPL-Lizenz, darf daher nicht bedenklos verbreitet werden.

Qmail-Module

qmail-smtpd = Nimmt Mails von fremden MTAs entgegen. Übergibt Mail an qmail-queue.

qmail-inject = Prüft E-Mail-Header und -Envelope bei lokal generierten Mails. Übergibt Mail an qmail-queue.

qmail-queue = Verwaltet Warteschlange. Übergibt Mail an qmail-send, welche Mail verschickt.

qmail-lspawn = Bei lokalen Empfängern übernimmt dieses Modul die Aufgabe. Sucht passende Mailbox.

qmail-local = Legt die Mail in das Postfach des Empfängers, wenn es sich um einen lok. Empfänger handelt.

qmail-rspawn = Bei Remote-Empfänger übergibt qmail-send die Mail an dieses Modul.
qmail-remote = Übergibt die Mail an externen MTA

qmail-clean = Räumt die Warteschlange wieder auf.

qmail-read = Zeigt Mail-Warteschlange an

Qmail-Konfigurationsdateien in /var/qmail/control/


defaultdomain, defaulthost = Enthält die Domäne des Mailservers, wird von qmail-inject benötigt, um unvollständige E-Mail-Header zu vervollständigen. Fehlt die Domain-Angabe in der Mail, wird sie durch diesen Eintrag ergänzt.


idhost = Hier wird der Hostname des Mailservers eingetragen. Hiermit ist es möglich, den wahren Hostnamen zu verschleiern. Qmail-inject verwendet diesen Eintrag, um diesen im Message-ID-Header einzutragen.


plusdomain = Diesen Eintrag verwendet Qmail, wenn man eine E-Mail an eine unvollständige Mail wie tux@sub.+ schickt. Das + wird durch diesen Eintrag ersetzt.


bouncefrom, bouncehost, doublebouncehost, doublebounceto = Hier werden Absender und Hostname der Bounce-Nachrichten definiert. Ist eine Bounce-Meldung nicht zustellbar, wird eine Info an den Betreiber des Mailservers geschrieben. Hierfür sind die doublebounce-Einträge zuständig.


concurrencylocal, concurrencyremote = Festlegen, wie viele Mails gleichzeitig durch qmail-send verschickt werden dürfen.


envnotahost = qmail-send fügt diesen Eintrag im Envelope hinzu, wenn die Empfänger-Adresse keinen Hostnamen bzw. @-Zeichen enthält


locals = Hier werden Empfänger eingetragen, welche lokal zugestellt werden sollen.


queuelifetime = Max. Zeit, wie eine Mail in der Warteschlange verweilen darf. Kann die Mail innerhalb dieser Zeit nicht verschickt werden, bekommt der Absender eine Fehlernmeldung und die Mail wird verworfen.


virtualdomains = Hier werden virtuelle Domains und User definiert


/var/qmail/users/cdb = Welche Mailbox gehört zu welchem Unix-User? Diese Datei wird also von qmail-getpw ausgewertet, wenn eine Mail lokal zugestellt wird.Diese Datei existiert im Datenbank-Format und wird durch das qmail-newu konvertiert.


/var/qmail/users/assign = Ist die Textdatei zu /var/qmail/users/cdb. Hier wird dem einzelnen Mailboxen ein User zugeordnet. Folgendes Bsp. weist der Mail-Adresse tux dem User fritz zu:

=adresse:login:uid:gid:home:-:erweiterung

=tux:fritz:501:1001:/home/fritz:-:tux:

+tux:fritz:501:1001:/home/fritz:-:tux: // + = Alle Mails beginnend mit tux


badmailfrom = Mails von diesen Absenderadressen verweigert qmail-smtpd die Annahme:

# badmailfrom

viagra@hongkong.ru

@hongkong.ru


databytes = Max. Größe der Mails in Bytes, die qmail-smtpd akzeptiert


localiphost = Wenn eine Mail an eine IP-Adresse adressiert wird (tux@221.89.8.199), dann wird diese durch den hier eingetragenen Hostnamen ersetzt.


rcpthosts, morercpthosts = Fehlt diese Datei, hat man ein offenes Mail-Relay. Hier legt man fest, von welchen Servern qmail-smtpd Mails annimmt. Diese Datei liegt im Datenbankformat vor, welche durch qmail-newmrh erstellt wird ==> morercpthosts.cdb.

smtpgreeting = Hier legt man den Begrüßungstext des Mailserver fest


timeoutsmtpd, timeoutconnect, timeoutremote = Maximaler Timeout während der Verbindung zu einem Remote-MTA.


helohost = Mit diesem Hostnamen meldet sich der Mailserver bei einem Remote-Mailserver


smtproutes = In dieser Datei kann man Einstellung zum Routing von Mails vornehmen. Möchte man für Empfänger einer bestimmten Domain einen festen Server nutzen, trägt man diesen hier ein:

domain:relay

domain:relay:port

.example.com:

:mail.example.com

Qmail und Aliase

1.) /var/qmail/aliase/

Qmail wertet die Datei /etc/aliases nicht aus. Um Aliase anzulegen, muss man im Verzeichnis /var/qmail/alias/ eine Datei in der Form .qmail-NAME anlegen.


Beispiel:

Linux # echo tux > /var/qmail/alias/.qmail-fritz

Sorgt dafür, dass Mails an fritz in der Mailbox des Users tux landen


2.) ~/.qmail im Home-Laufwerk

Jeder Benutzer kann in seinem Homelaufwerk eine .qmail Datei anlegen. Diese wird ausgewertet, wenn diesem Benutzer eine Mail zugeschickt wird. Man kann folgendes eintragen:


| /usr/bin/programm = Mail an Programm übergeben

./Mail = Mail im mbox-Format nach ~/Mail kopieren

./Mail/ = Mail im maildir-Format nach ~/Mail kopieren


Qmail und virtuelle Domains - /var/qmail/control/virtualdomains


Syntax:

user@virtualDomain:präfix

fritz@pc-erfahrung.de:tux // Alle Mails an Fritz landen in der Mailbox von Tux.

pc-erfahrung.de:tux // Alle Mails der Domain pc-erfahrung.de landen bei tux

Qmail und sendmail

Auch Qmail hat einen sendmail implentiert oder besser gesagt: aus Kompatibilitätsgründen steht Qmail der Befehl sendmail zur Verfügung. Folgende sendmail-Befehle sind möglich:


sendmail -t = E-Mail-Adressen aus Header lesen und an diese die Mail schicken

sendmail -fABSENDER = Absender im Envelope wird geändert

sendmail -bs = Schaltet im SMTP-Protokollmodus. Befehle müssen im SMTP-Format erfolgen

sendmail -bp = Ruft qmail-read, um Mail-Warteschlange auszugeben

Konfiguration von Exim

Konfiguration von Exim in Version 3

In Version unterscheidet man in:


directors = Vermittler, zuständig für die Zustellung an lokale Mail-Adressen. Verwaltet Aliase, das Forwarding (Weiterleitung) und lokale Mailboxen.

routers = Routern, zuständig für die Zustellung an Remote-Mail-Adressen

transports = Transportern, legen die Zustellungsmethode fest. Definiert bsp. dass der Transport über SMTP erfolgt oder dass Mails kopiert werden.


/etc/exim.conf - Hauptkonfigurationsdatei

# Name der Domain des Mailservers

qualify_domain = mail.pc-erfahrung.com
# Für diese Domains ist der Mailserver zuständig
local_domains = localhost:mail.pc-erfahrung.com
# Von diesen Domains werden Mails angenommen und weitergeleitet
relay_domains = pce-forum.de
# Exim führt einen Reverse DNS-Lookup durch.
host_lookup = *
######
###### Transporter für Mailzustellung definieren #####
######
local_delivery:
driver = appendfile // lokale Transportmethode, Treiber appendfile
group = mail
mode = 0660
mode_fail_narrower = false
envelope_to_add = true
file = /var/spool/mail/${local_part}
procmail_pipe:
driver = pipe // Mail an Programm übergeben
command = „/usr/bin/procmail -t -o -d ${local_part}“
smtp:
driver = smtp
#####
##### Vermittler (directors) ########
#####
system_aliases:
driver = aliasfile // Treiber aliasfile
file = /etc/aliases // Aus dieser Datei die Aliase lesen
domains = @
file_transport = address_file
pipe_transport = address_pipe
search_type = lsearch
userforward:
driver = forwardfile // Weiterleitungen festlegen
no_verify
file = .forward
####
#### Router definieren ####
####
smarthost:
driver = domainlist
transport = remote_smtp
route_list = "* gateway.lan.aokiconsulting.com bydns_a"

Konfiguration von Sendmail

/usr/sbin/sendmail = Sendmail-Programm
/etc/sendmail.cf = Die Konfigurationsdatei für Sendmail
/etc/mail/aliases = Mailumleitungen und Mailweiterleitungen. Wird mittels newaliases in die interne Datenbank /etc/mail/aliases.db übersetzt.
/etc/mail/access = Liste mit Rechnern bzw. Adressen von denen Mail akzeptiert bzw. abgelehnt wird
/etc/mail/sendmail.cw = Optionale Liste der lokalen Domains
/etc/mail/virtusertable = Zuordnung von kompletten Mail-Adressen (mit Domain-Teil) zu anderen Adressen. Benutzername + Domainteil wird ausgewertet
/etc/mail/relay-domains = Für diese nicht lokalen Domains wird Mail angenommen
/etc/mail/mailertable = Versandweg für Adressen festlegen
/etc/mail/genericstable = Hiermit können bestimmten lokalen Benutzern spezielle Absenderadressen zugeordnet werden. Ähnlich der virtusertable.
m4 sendmail.mc > sendmail.cf = m4-Makro, um die sendmail.cf zu erstellen
/var/spool/mqueue/ = Warteschlangenverzeichnis

makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable = Datei ins Datenbankformat konvertieren
makemap dbm /etc/mail/mailertable.db < /etc/mail/mailertable = Datei ins Datenbankformat konvertieren

/etc/mail/access – Zugriff auf Mailserver regeln

Diese Datei regelt den Zugriff auf den Mailserver. Also die Frage, welcher Rechner darf ausgehende Mail an diesen Server schicken, damit er sie weiterleitet. Ein paar Beispiele:


127 RELAY

192.168.100.123 OK

mydomain.de OK

boeseDomain.com REJECT

boeseDomain2.com DISCARD


linux # makemap hash -f access < access // Hashtabelle erzeugen

/etc/mail/virtusertable – Empfängeradressen umschreiben

Diese Datei ähnelt der Datei /etc/aliases. Hier kann man aber Empfängeradressen über Domaingrenzen umschreiben, so dass sie nicht nur für das Umschreiben lokaler Empfänger geeignet ist.


# /etc/mail/virtusertable

# Syntax: Empfängeradresse WeiterleitungAn

# Mails an info@pc-erfahrung.de an lokalen User fritz weiterleiten

info@pc-erfahrung.de fritz

# Adresse existiert nicht, Absender erhält Fehlermeldung 
unbekannt@pc-erfahrung.de error:nouser Den User gibts nicht
# Alle Mails an diese Domain werden umgeleitet
@example.com fritz

linux # makemap hash -f virtusertable.db < virtusertable // Hashtabelle erzeugen

/etc/mail/genericstable – Absenderadresse anpassen

# /etc/mail/genericstable

# Syntax: User neueAbsenderadresse

# Mails an info@pc-erfahrung.de an lokalen User fritz weiterleiten

fritz mod@pc-erfahrung.de // Mails von fritz haben diese Absenderadresse

tux@pc-erfahrung.de mod@pc-erfahrung.de


linux # makemap hash -f genericstable.db < genericstable // Hashtabelle erzeugen

/etc/mail/mailertable – Transport von Mails definieren

Hier kann festgelegt, über welchen Weg die Mails an bestimmte Domains, User und Mailserver geschickt werden sollen:


# /etc/mail/mailertable

# Syntax: Host Transport-Weise

mail.server.com uucp-dom:mail // Mails via UUCP an diesen Mailserver schicken

local:fritz smtp:mail.example.net // Mails an fritz werden via smtp an mail.example.net geschickt


linux # makemap hash -f mailertable.db < mailertable // Hashtabelle erzeugen

/etc/mail/domaintable – Umzug einer Domain

Wird nur benötigt, wenn eine alte Domain auf eine neue umzieht.


# /etc/mail/domaintable

# Syntax: AlteDomain NeueDomain

server.com neu.de

Sendmail-Befehle

sendmail -bd = sendmail als Dämon starten

sendmail -bd -q5m = sendmail als Dämon starten und alle 5 Min. Mails verschicken

sendmail -q = Verschicken aller Mails in der Warteschlange (auch mit runq möglich)

sendmail -bs = sendmail mithilfe von inetd starten

sendmail -bp = Anzeigen der Mailqueue (entspricht mailq)

sendmail -bi = entspricht newaliases, Hashtabelle von /etc/aliases erzeugen

sendmail -t = Versenden von Mails im Testmodus

sendmail -bv = Unverschickte Mails prüfen

sendmail -bh = Ausgabe der Hosts, an welche Mails verschickt wurden

sendmail -bH = Das HostStatusDirectory (/var/spool/mqueue/.hostat, Speicherung von Infos) leeren


sendmail -bt = sendmail im Testmodus starten

sendmail -bt /try smtp tux@server.com = Mail schreibt Adresse in tux... um

sendmail -bt /mx server.com = Gibt den MX-Record aus

sendmail -bt /parse tux@server.com = Gibt Mailer, Host und Benutzer der angebebenen Mailadresse aus.


mailq = Entspricht sendmail -bp => Mailqueue anzeigen

mailstats = Ausgabe von Statistik über empfangene/gesendete Mails.

makemap = Erzeugen von Hashtabellen

newaliases = Aliase bekannt machen, entspricht sendmail -bi, erzeugt Hastabelle von /etc/aliases

hoststat = Info über den Host anzeigen, an den die Mail verschickt wurde.

purgestat = löscht alle statistischen Infos (HostStatusDirectory, /var/spool/queue/.hostat)