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)