Sicher, schnell und einfach zu benutzen, das ist mein bevorzugter MTA (= »Mail Transport Agent« E-Mail Transportprogramm).
Momentan bietet keine Distribution eine Vorinstallation von qmail
.
Wir konzentrieren uns auf das Kompilieren und Installieren von
qmail
, da dies der einzige knifflige Teil ist: die Konfiguration
ist ziemlich geradlinig.
Besuchen Sie
http://www.qmail.org/
um die letzte Version herunterzuladen.
Danach werden sie ausgepackt durch Start von:
mv qmail.tar.gz /usr/local/src
cd /usr/local/src ; tar -zxvf qmail.tar.gz
Falls Sie eine »bz2« Version finden (ein neueres und besseres Packformat),
ersetzen Sie tar
einfach durch:
bunzip2 qmail.tar.bz2
tar -xvf qmail.tar
Jetzt wechseln Sie in das qmail
Verzeichnis, um die
Konfigurationsvorgaben einzusehen:
cd qmail; more conf-*
Sie sollten keine Vorgaben ändern müssen, aber Sie können z.B.
ein alternatives Installationsverzeichnis angeben oder bessere
flags
zur Kompilierung setzen.
Jetzt rufen Sie
mkdir /var/qmail
auf, um das Zielverzeichnis zu erstellen.
Wenn Sie keine Debian Distribution installiert haben, müssen Sie einige
Benutzer IDs für die Benutzung von qmail
hinzufügen:
qmail
s hohe Sicherheit hängt davon ab.
Die Tatsache, daß qmail
in Module aufgeteilt ist, die je unter
ihrer eigenen Benutzer ID laufen, macht es wesentlich schwerer für einen
Endringling, in Ihr gesamtes E-Mail System einzubrechen oder root Zugang
durch Mißbrauch zu erhalten.
Also starten Sie:
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias alias
# useradd -g nofiles -d /var/qmail qmaild
# useradd -g nofiles -d /var/qmail qmaill
# useradd -g nofiles -d /var/qmail qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail qmailq
# useradd -g qmail -d /var/qmail qmailr
# useradd -g qmail -d /var/qmail qmails
Oder bearbeiten Sie /etc/passwd
und /etc/group
von Hand, um
diese Benutzer selbst anzufügen.
Evan E. berichtete, er mußte den »-g groupid« Parameter für ein Vanilla
groupadd
(Caldera 1.2) benutzen, da ansonsten groupadd
folgenden Fehler ergab: »Eine Gruppe mit diesem Namen existiert bereits.«
Sie können zum Beispiel dementsprechend hinzufügen:
qmail:*:2107:
nofiles:*:2108:
und
alias:*:7790:2108::/var/qmail/alias:/bin/true
qmaild:*:7791:2108::/var/qmail:/bin/true
qmaill:*:7792:2108::/var/qmail:/bin/true
qmailp:*:7793:2108::/var/qmail:/bin/true
qmailq:*:7794:2107::/var/qmail:/bin/true
qmailr:*:7795:2107::/var/qmail:/bin/true
qmails:*:7796:2107::/var/qmail:/bin/true
Jetzt können Sie
make setup check
aufrufen, um Ihre Einstellungen zu prüfen, dann
./config
um qmail
zu konfigurieren.
Achtung, Ihr Server muß über DNS auflösbar sein, oder ./config
wird verwirrt werden.
Falls Sie keinen DNS Zugang haben, können Sie Ihren Servernamen direkt per
./config-fast foo.bar.com
angeben.
Nun müssen Sie einige Alias Namen installieren, da /etc/alias
nicht von qmail
verwendet wird, bis Sie ein optionloses Paket
kompilieren und installieren.
Hier ist mein Setup:
File : ".qmail-MAILER-DAEMON"
&postmaster
File : ".qmail-bin"
&root
File : ".qmail-daemon"
&root
File : ".qmail-decode"
&root
File : ".qmail-dumper"
&root
File : ".qmail-games"
&root
File : ".qmail-ingres"
&root
File : ".qmail-mailer-daemon"
&postmaster
File : ".qmail-manager"
&root
File : ".qmail-news"
&root
File : ".qmail-nobody"
&root
File : ".qmail-operator"
&root
File : ".qmail-postmaster"
&root
File : ".qmail-root"
&guylhem
File : ".qmail-system"
&root
File : ".qmail-toor"
&root
File : ".qmail-uucp"
&root
File : ".qmail-uucp-default"
|preline -dr /usr/bin/uux - -r -gC -a"${SENDER:-MAILER-DAEMON}" lm!rmail
"($DEFAULT@$HOST)"
Sie müssen jede dieser Dateien in ~alias
erstellen, wobei
&guylhem
in .qmail-root
durch Ihr eigenes Login
für root E-Mail ersetzt werden muß.
Eine Warnung an UUCP Benutzer:
Vertrauen Sie nicht der qmail
FAQ für UUCP; benutzen Sie statt
dessen meine .qmail-uucp-default
. Ansonsten sind Sie nicht in der
Lage, irgend welche E-Mails über Ihre UUCP Verbindung zu senden.
Sie werden sich jetzt entscheiden müssen, in welchem Format Ihre Benutzer ihre E-Mails erhalten werden.
Hier ist mein Vorschlag:
http://www.qmail.org
erhältlich.setenv
(für csh) für ihren E-Mail Leser erstellen./var/spool/mail/$Benutzer
Format, da zu unsicher.Um das Standardformat festzulegen, lesen Sie jede Datei in
/var/qmail/boot
, kopieren danach die, die Ihnen am besten gefällt,
nach /var/qmail/rc
.
/home/
oder /proc/
sind eine sichere Wahl, aber bevorzugen
Sie /home/
aus Sicherheitsgründen.
In der Datei /var/qmail/control
müssen einige Optionen
angepaßt werden.
ist Ihr »Full Qualified Domain Name« (voll qualifizierter
Domainname, Abkürzung: FQDN), zum Beispiel lautet er auf meinem Computer
barberouge.linux.lmm.com
wird an jeden Hostnamen ohne Punkte angefügt,
einschließlich defaulthost. Zum Beispiel können Sie es auf
localnetwork
setzen, so daß jede E-Mail, gesendet an
»joe@seinpostfach« statt dessen ergänzt wird, um an
»joe@seinpostfach.lokalesnetzwerk« gesendet zu werden.
ist die Ausnahme: es wird an jeden Hostnamen angefügt, der
mit einem Plus-Zeichen endet, eingeschlossen defaulthost (gesetzt in
me
, falls es mit einem Plus-Zeichen endet).
Diese drei Beispiele zeigen Ihnen die Macht und Leichtigkeit der
qmail
Konfiguration.
Falls Sie virtuelle Domainnamen unterstützen wollen, fügen Sie einfach zusätzliche Namen in diesen Dateien hinzu. Jede E-Mail, die Sie für diese Namen erhalten, wird lokal behandelt.
Der Unterschied zwischen locals
und rcpthosts
ist, daß
letztere nicht als lokale Aliases betrachtet werden, was nützlich ist, falls
Sie E-Mails von einigen kostenlosen E-Mail Adressen wie yahoo.com
oder gmx.de
erhalten, während Sie auch E-Mails an andere Benutzer
dieser nicht-lokalen Dienste senden, d.h. Sie wollen keine als lokal
behandelten E-Mails an jemand@yahoo.com senden!
Dort können Sie den Standardmodus für den Ausgang bestimmen, z.B.
#:alias-uucp
wenn Sie abgehende E-Mails nicht per UUCP, sondern per SMTP (Vorgabe) senden wollen:
:alias-ucp
Nachdem nun alles konfiguriert ist, versuchen Sie
sh -cf '/var/qmail/rc &'
um qmail
zu starten (es wird den lokalen MTA nicht
beeinträchtigen), dann
echo to: meinylogin | /var/qmail/bin/qmail-inject
Sie sollten diese E-Mail in dem von Ihnen in /var/qmail/boot/
gewählten Format erhalten.
Wenn dieser Test erfolgreich verlaufen ist, beenden Sie Ihren frühreren MTA:
killall -STOP daemon_name
Falls irgendwelche Child-Prozesse laufen, sollten Sie
killall -CONT their_name
abwarten, noch einmal
killall -STOP
wiederholen und solange wie nötig wiederholen.
Wenn es keine Child-Prozesse gibt
killall -TERM
und dann
killall -CONT
Entfernen Sie den MTA. Wie man das anstellt, hängt von der installierten Distribution ab, zum Beispiel
rpm -e --nodeps
bei RedHat, Caldera
und SuSE, oder
dpkg -r --force-depends
bei Debian.
Danach starten Sie:
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
Nun setzen Sie »qmail-smtpd« in /etc/inetd.conf
ein (alles auf
einer Zeile):
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env
/var/qmail/bin/qmail-smtpd
Falls Sie eine alte »nicht-SYSV-init« Distribution wie RedHat einsetzen, fügen Sie einfach in die Startskripte ein:
sh -cf '/var/qmail/rc &'
Diese sollten sich gewöhnlich in /etc/local
befinden, aber Ihr
Aufwand mag variieren.
Für aktuelle »SYSV-init« fähige Distributionen (RedHat, Caldera, SuSE, Debian)
fügen Sie dieses Skript zu /etc/init.d
oder
/etc/rc.d/init.d/
hinzu:
Debian Version:
#!/bin/sh
test -x /var/qmail/rc || exit 0
case "$1" in
start)
echo -n "Starte MTA: "
sh -cf '/var/qmail/rc &'
echo "qmail."
;;
stop)
echo -n "Stoppe MTA: "
killall qmail-lspawn
echo "qmail."
;;
restart)
echo -n "Starte erneut MTA: "
killall -HUP qmail-lspawn
killall -ALRM qmail-lspawn
echo "qmail."
;;
*)
echo "Verwendung: /etc/init.d/qmail {start|stop|restart}"
exit 1
esac
exit 0
RedHat Version:
#!/bin/sh
#
# qmail Dieses Shell Skript sorgt für Start und Halt von qmail.
#
# Beschreibung: qmail ist ein E-Mail Transportprogramm, welches ein Programm
# ist, daß E-Mails von einer Maschine zu einer anderen
# transportiert.
# Prozeßname: qmail
# config: /var/qmail/control/
# Funktionsbibliothek Quelle.
. /etc/rc.d/init.d/functions
# Netzwerkskonfiguration Quelle.
. /etc/sysconfig/network
export PATH=$PATH:/var/qmail/bin
# Prüfe, daß das Netzwerk läuft.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/sendmail ] || exit 0
# Sieh nach, wie wir genannt werden.
case "$1" in
start)
# Starte Daemon.
echo -n "Starte qmail: "
qmail-start '|preline procmail' splogger qmail &
touch /var/lock/subsys/qmail
echo
;;
stop)
# Stoppe Daemon.
echo -n "Schließe qmail ab: "
killproc qmail-lspawn
echo
rm -f /var/lock/subsys/qmail
;;
restart)
$0 stop
$0 start
;;
status)
status qmail
;;
*)
echo "Verwendung: qmail {start|stop|restart|status}"
exit 1
esac
exit 0
Und erstellen Sie symbolische Links zu jeder /etc/rc.d/rcN.d/
,
zum Beispiel:
ln -sf /etc/init.d/qmail /etc/rc1.d/K19qmail
Wenn der erste Buchstabe ein »K« ist, werden Sie qmail
auf diesem
Runlevel beenden (»1« für den Einzelmodus oder »6« für den Start), falls aber
der erste Buchstabe ein »S« ist, wird qmail
auf diesem Runlevel
gestartet (Runlevel wie oben).
RedHat, Caldera und SuSE werden /etc/rc.d/
benutzen, anstelle der
lesbaren /etc/
der Debian Distribution, d.h., zum Beispiel
/etc/rc.d/rc1.d
oder /etc/rc.d/init.d
.
Es wird für das Inkrafttreten der Modifikationen kein Neustart benötigt. Wie Sie sich erinnern, benutzen Sie Linux und kein anderes billiges Betriebssystem. Starten Sie einfach
killall inetd
init 1
um in den Einzelnutzer Modus zu wechseln, danach:
init 2
um zurück in Ihr normales Runlevel zu wechseln (angezeigt in
/etc/inittab
mit der »initdefault« Bezeichnung).
Sie können das qmail
Skript auch von Hand starten, aber die
»init« Methode wird Ihnen zeigen, falls das qmail
Skript gut
platziert ist, d.h. nach dem Start des Netzwerkskripts aber vor jedem
anderen Programm, das davon abhängt, Sie per E-Mail zu warnen (wie
inn
).
smail
v3.1 scheint ein de-facto Standard Transportagent für reine
UUCP Systeme und einige SMTP Systeme zu sein. Es ist leicht zu
konfigurieren, es wird ohne Patch aus den Quellen kompiliert und ist
ziemlich sicher.
Installieren Sie das smail
Binärpaket aus Ihrer Distribution (ich
empfehle dies zu wählen) oder besorgen Sie sich die Quellen und bauen
smail
. Falls Sie smail
von den Quellen selbst bauen,
benötigen Sie Folgendes in Ihrer os/linux
Datei, so daß
sed
Ihnen Shell Skripte liefert, die richtig arbeiten:
CASE_NO_NEWLINES=true
Sobald das installiert ist, werden Konfigurationsdateien gewiß nach
/etc/smail
gelangen (aber das mag bei Ihnen anders sein, wenn Sie
alte Distributionen verwenden); lassen Sie uns mit ihrer Bearbeitung beginnen.
# From
smart_path=polux
smart_transport=uux
# To
hostname=barberouge
domains=linux.lmm.com
visible_name=barberouge.linux.lmm.com
uucp_name=barberouge.linux.lmm.com
# max_message_size=512k
# auth_domains=foo.bar
# more_hostnames=barberouge.polux.freenix.fr
Nun zuerst: wer versorgt Sie? Ich werde von »polux« per UUCP (d.h. UUX Transport) versorgt. Natürlich müssen Sie diese Datei ändern, um sie an Ihre Situation anzupassen. Zum Beispiel könnten Sie von »bargw.bar.foobar.com« über »smtp« versorgt werden, in diesem Fall benötigen Sie keine Transportdatei und können »-transport_file« definieren, um anzuzeigen, daß sie keine brauchen.
Sie können außerdem »postmaster_address = IhrName« verwenden, die Netzwerktopologie in ausgehenden Adressen verbergen (falls Sie ein Gateway haben), indem Sie »visible_name« (sichtbarer Name) verwenden, außerdem kann das Einsetzen, welche Aliasadresse für von Ihnen empfangenen E-Mails verwendet wird, durch Verwendung von »more_hostnames« benutzt werden.
Sehen Sie in der smail
Dokumentation für weitere Details oder
Beispiele unter /usr/doc/smail/examples
nach, ob etwas davon auf
Ihre Situation paßt.
# aliasinclude - expand ":include:filename" Adresse erstellt durch Aliasdatei
# Dieser und der nächste Eintrag sind wie ein dampfender Teller. Es gibt einige
# Gründe dafür, signifikante Änderungen vorzunehmen. Der Änderungszweck ist
# dabei, Adressen der Form anzupassen und zu erweitern:
# :include:pathname
# welche in Aliasdateien oder Mailinglisten/»forward« Dateien auftauchen
# können (hergestellt durch jeden Zeiger mit einem Treiber der
# »forward« Datei).
aliasinclude:
driver = aliasinclude, # benutze diesen Spezialfall Treiber
nobody; # assoziiere Benutzer nobody mit
# Adresse, wenn geringe Verletzung
# von Zugriffsrechten eintreten
copysecure, # beziehe Erlaubnis von Aliaszeiger
copyowners, # beziehe Eigentümer von Aliaszeiger
# forwardinclude - expand ":include:filename" Adressen erstellt durch
# »forward« Datei
forwardinclude:
driver = forwardinclude, # benutze diesen Spezialfall Treiber
nobody;
copysecure, # beziehe Erlaubnisse von Zeiger der
# Weiterleitung
copyowners, # beziehe Eigentümer von Zeiger der
# Weiterleitung
# aliases - Suche nach Alias Erweiterungen, abgelegt in einer Datenbank
# Dies ist die Standard Aliasdatei. Sie wird für generische Dinge
# verwendet, wie Mapping von Root auf andere Benutzer, Postmaster,
# MAILER-DAEMON und UUCP auf Administratorseite, Erstellen einiger kleiner
# Systemalias Erweiterungen usw. Bei dieser Seiten-Konfiguration wird
# die Aliasdatei meist für computerspezifische Aliase/Weiterleitungen
# verwendet. Globales Weiterleiten von Informationen sollte in der
# Weiterleitungsdatenbank abgelegt werden.
aliases:
driver=aliasfile, # genereller Aliaszeiger
-nobody, # alle Adressen werden standardmäßig
# mit Benutzer nobody assoziiert, hier
# etwas einzusetzen ist nicht nützlich
sender_okay, # nicht den Absender aus der
# Erweiterung entfernen
owner=owner-$user; # Probleme gehen an Inhaberadresse
file=/etc/aliases,
modemask=002, # sollte nicht global beschreibbar sein
optional, # ignoriere, falls Datei nicht
# existiert
proto=lsearch, # unsortierte ASCII Datei
# forward - Suche nach Erweiterung, gespeichert in der Weiterleitungsdatenbank
# Dies ist eine subdomainweite Benutzer-Weiterleitungsdatenbank. Einträge
# werden hier für aktuelle und veraltete Benutzer vorgenommen, um ihre E-Mails
# an deren bevorzugten E-Mail-Leser weiterzuleiten. Die Weiterleitungsdatenbank
# wird über das TCP/IP Netzwerk versendet, sobald Änderungen vorgenommen
# werden, um das Netzwerk konsistent zu halten.
#forward:
# driver = aliasfile, # genereller Aliaszeiger
# -nobody, # alle Adressen werden mit Benutzer
# # nobody assoziiert, hier etwas
# # einzusetzen ist nicht sinnvoll
# owner = real-$user; # Probleme gehen an die Eigentümer-
# # adresse
#
# file = /etc/forward,
# modemask = 002,
# proto = dbm, # benutze dbm(3X) Bibliothek für
# # Zugriff
# dotforward - erweitere ».forward« Dateien in Benutzerverzeichnissen
# Für Benutzer, für die ein Eintrag in der »forward« Datenbank besteht,
# wird eine ».forward« Datei nur verwendet, wenn sie auf der
# Heimatmaschine besteht, die in der Weiterleitungsdatenbank
# identifiziert wurde. Falls verwendet, wird ihr wie einer Adressliste
# gefolgt, an die E-Mails zugestellt werden sollen, anstatt denen (oder
# zusätzlich zu denen), die der Benutzer in der lokalen Adresse
# indentifiziert hat.
dotforward:
driver = forwardfile, # genereller Weiterleitungszeiger
owner = postmaster, nobody, sender_okay;
file = ~/.forward, # .forward Datei im Heimatverzeichnis
checkowner, # Benutzer kann diese Datei innehaben
owners = root, # oder Root kann Eigentümer sein
modemask = 002, # sie sollte nicht global beschreibbar
# sein
caution = daemon:root, # dies Sachen nicht als Root oder
# Daemon starten
# extra Vorsicht bei von der Entfernung aus zugänglichen
# Heimatverzeichnissen walten lassen!
unsecure = "~uucp:/tmp:/usr/tmp:/var/tmp"
# forwardto - erweitere ein »Forward to « in Benutzer Mailbox Dateien
# Dies emuliert die V6/V7/System-V Weiterleitungsmechanismen, die eine
# Zeile von Adressen zur Weiterleitung, gespeichert am Anfang der
# Benutzer-Mailbox Datei verwenden, die mit dem String »Forward to«
# (weiterleiten an) als Präfix ausgestattet sind.
forwardto:
driver = forwardfile,
owner = postmaster, nobody, sender_okay;
file = /var/spool/mail/${lc:user}, # zeige auf Benutzer Mailbox
# Datei
forwardto, # schalte »Forward to « Funktion ein
checkowner, # Benutzer kann Dateiinhaber sein
owners = root, # oder Root kann Datei innehaben
modemask = 0002, # unter System V kann Gruppe mail
# schreiben
caution = daemon:root # diese Dinge nicht als Root oder
# Daemon starten
# user - übereinstimmende Benutzer auf diesem lokalen Host mit Zustellung an
# deren Mailboxen
user: driver = user; # zu Benutzernamen passende Treiber
transport = local # lokaler Transport an Mailboxen
# real_user - übereinstimmende Benutzernamen mit Präfixstring »real-«
# Das ist nützlich, um eine Adresse zu erlauben, die explizit an eine
# Mailbox eines Benutzers zustellt. Zum Beispiel können hier Fehler in einer
# ».forward« Datei Erweiterung zugestellt werden, oder Weiterleitungsschleifen
# zwischen mehreren Maschinen können durch Verwendung einer wahren Benutzernamen
# Adresse aufgelöst werden. Auch können Benutzer, die E-Mails dazu verwenden
# wollen, um Daten auf eine Maschine zu übertragen, die nicht ihre »Heimat-«
# Maschine ist, eine E-Mail an »wahrer-Loginname@ferner.host« senden.
real_user:
driver = user;
transport = local,
prefix = "real-" # z.B. Übereinstimmung wahrer Root
# lists - erweitere Mailinglistgen, gespeichert in einem Listenverzeichnis
# Mailinglisten können einfach erstellt werden durch Anlegen einer Datei im
# Verzeichnis /etc/smail/lists.
lists:
driver = forwardfile,
caution, # markiere alle Adressen mit »Vorsicht«
nobody, # und dann assoziiere mit Benutzer
# nobody
owner = owner-$user; # System V Seiten können o-$user
# verwenden wollen, wenn Eigentümer-
# $user für einen 14-Zeichen Dateinamen
# zu lang ist
file = lists/${lc:user} # Listen sind unter $smail_lib_dir
# owners - erweitere Mailinglisten, die in einem Eigentümer-Listenverzeichnis
# gespeichert sind
# Mailinglisten-Eigentümerlisten können einfach durch Erstellen einer Datei
# im Verzeichnis /etc/smail/lists/owner erstellt werden. Mailinglisten
# Eigentümer bekommen die lokal produzierten Fehler einer Mailingliste mit
# dem selben Namen zugesandt. Um eine Eigentümerliste für eine Mailingliste
# zu erstellen, ist eine Datei mit dem Listennamen in /etc/smail/lists/owner
# zu erstellen. Damit wird eine Adressliste von Eigentümer-Listennamen kreiert,
# wie sie vom »lists« Zeiger oben verwendet wird.
owners:
driver = forwardfile,
caution, # markiere alle Adressen mit "Vorsicht"
nobody, # und dann assoziiere mit Benutzer
# nobody
owner = postmaster; # System V Seiten können o-$user
# verwenden wollen, wenn Eigentümer-
# $user für einen 14-Zeichen Dateinamen
# zu lang ist
prefix = "owner-",
file = lists/owner/${lc:user} # Listen sind unter $smail_lib_dir
# request - dehne Mailinglisten, gespeichert in einem Listenanfrageverzeichnis
# Mailinglisten Anfragelisten können einfach durch Anlegen einer Datei im
# Verzeichnis /etc/smail/lists/request erstellt werden. Die Anfrageadressen
# werden typischerweise als eine Standardadresse für Abfragen über eine
# Mailingliste verwendet. Zum Beispiel Anfragen über die Aufnahme oder Löschen
# in / aus einer Liste wird normalerweise an »list-request« gesendet, das so
# eingestellt sein sollte, daß die richtige(n) Person(en) die E-Mail erhalten.
request:
driver = forwardfile,
caution, # markiere alle Adressen mit »Vorsicht«
nobody, # und dann assoziiere mit Benutzer
# nobody
owner = postmaster; # System V Seiten können o-$user
# verwenden wollen, wenn Eigentümer-
# $user für einen 14-Zeichen Dateinamen
# zu lang ist
suffix = "-request",
file = lists/request/${lc:user} # Listen sind unter $smail_lib_dir
Hier sollten Sie nichts ändern müssen, nur Mailinglisten Optionen, falls Sie vorhaben, einige über smail laufen zu lassen, oder Weiterleitungsoptionen, falls Sie z.B. die Weiterleitung abschalten wollen.
.f105.n324.z2.fidonet.org f105.n324.z2.fidonet.org!%s
.n324.z2.fidonet.org f105.n324.z2.fidonet.org!%s
.z2.fidonet.org f105.n324.z2.fidonet.org!%s
.fidonet.org f105.n324.z2.fidonet.org!%s
Erstellen Sie so eine Datei nur, wenn Sie ifmail
und FIDO verwenden.
# forces - erzwingt bestimmte Pfade
# Diese Datenbank existiert als harte Kodierung der Pfade zu verschiedenen
# Maschinen oder Domains. Sie findet Verwendung bei der Erstellung temporärer
# Tweaks zu anderen Routing Datenbanken. Um diese Datenbank zu ändern,
# bearbeiten Sie die Datei maps/force.path und geben »make« im maps/
# Unterverzeichnis ein.
forces:
driver = pathalias, # Router zu Pfad-Datei Suche
method = /etc/smail/maps/table; # Transporte sind in dieser Datei
file = forcepaths, # Datei enthält Info zu erwzungenem Pfad
proto = lsearch, # verwedne sortierte Pfad-Datei
optional,
reopen # schließe, wenn nicht verwendet
uucp_neighbors:
driver=uuname, # verwende Programm, das Nachbarn
# zurückgibt
transport=uux;
cmd="/usr/bin/uuname -a", # verwende ausdrücklich das uuname Programm
domain=uucp # entferne Endung ».uucp«
# smart_host - ein teilweise spezifizierter Smarthost Zeiger
# Falls das Attribut »smart_path« in der Konfigurationsdatei als ein
# Pfad vom lokalen zu einem entfernten Host definiert ist, dann werden
# Hostnamen, auf die keine andere Regel paßt, an den angegebenen
# entfernten Host geschickt. Das Attribut »smart_transport« kann zur
# Spezifizierung eines davon verschiedenen Transports verwendet werden.
# Wenn das "smart_path" Attribut nicht gesetzt ist, wird dieser Router
# ignoriert.
smart_host:
driver = smarthost, # Spezialfall Treiber
transport = uux # stelle standardmäßig per UUCP zu
path=phreak
# ifmail - um E-Mails an FIDONET und umgekehrt zu senden
ifmail:
driver=pathalias,
transport=ifmail;
file=fidopaths,
proto=lsearch
Sie sollten nur dann ein ifmail
-Kapitel eintragen, wenn Sie
ifmail
für FIDO E-Mails nutzen. Beachten Sie, daß Sie auch den
Transportmodus von »uux« (UUCP) auf z.B. »smtp« oder sogar die Pfade zu
verschiedenen Maschinen oder Domains in /etc/smail/maps/table
hartkodieren können.
Dies ist dann sinnvoll, wenn Sie ausgehende E-Mails für Ihr lokales Netzwerk unverzüglich zugestellt haben wollen, während kein Bedarf dafür besteht, zu Ihrer uux Verbindung Ihres Internetzugangs geleitet zu werden.
# local - stelle E-Mail an lokale Benutzer zu
# Teile smail mit, direkt an die Benutzer Mailboxdateien im /var/spool/mail
# Verzeichnis anzufügen.
#local:
#driver = appendfile, # hänge Nachricht an Datei an
#-return_path, # schließe Return-Path: Feld ein
#local, # verwende lokale Form für Zustellung
#from, # unterstütze Von_ Zeile im Kopfteil
#unix_from_hack; # füge > vor Von im Körper ein
#
#file = /var/spool/mail/${lc:user}, # benutze diesen Ort bei Linux
# # Beachte, daß mail-spooler
# "1777" Rechte hat
#file = ~/mailfile, # benutze diesen Ort für höhere
# Sicherheit
#group = mail, # Eigentümergruppe bei System V
#mode = 0660, # unter System V kann Gruppe mail
# Zugriff haben
#suffix = "\n", # zusätzlichen Zeilenumbruch einfügen
#append_as_user,
# Dies erlaubt jedem Benutzer, über eine »~/.procmailrc« Datei das
# Filtern und Speichern von E-Mails und E-Maillisten in verschiedenen
# Mailboxen zu kontrollieren, falls sie das wünschen.
local:
+inet,
-uucp,
driver = pipe, # hänge Nachricht an Datei an
#-return_path, # schließe Return-Path: Feld ein
#local, # verwende lokale Form für Zustellung
#from, # unterstütze Von_ Zeile im Kopfteil
#unix_from_hack; # füge > vor Von im Körper ein
cmd = "/usr/bin/procmail", # nutze procmail für lokale Zustellung
parent_env, # Umgebungsinfo von parent_Adresse
pipe_as_user, # nutze mit Adresse assoziierte
# Benutzer-ID
umask = 0022, # umask für child-Prozeß
#-ignore_status, # Status beim Verlassen glauben
#-ignore_write_errors, # erneut versuchen bei abgerissener Pipe
# pipe - stelle E-Mails an Shell-Befehle zu
# Dies wird implizit genutzt, wenn smail Adressen antrifft, die mit einem
# vertikalen Balken beginnen, wie »|/usr/lib/news/recnews talk.bizarre«.
# Der vertikale Balken wird entfernt aus der Adresse, bevor sie zum
# Transport übergeben wird.
#pipe:
driver = pipe, # leite Nachrich an anderes Programm
#return_path, local, from, unix_from_hack;
#
#cmd = "/bin/sh -c $user", # sende Adresse an die Bourne Shell
#parent_env, # Umgebungsinfo von parent_Adresse
#pipe_as_user, # verwende mit Adresse assoziierte
# Benutzer-ID
#umask = 0022, # umask für child-Prozeß
#-log_output, # kein Log von stdout/stderr
#ignore_status, # Status beim Verlassen könnte falsch
# sein, ignoniere
#ignore_write_errors, # ignoriere abgebrochene Pipes
# file - stelle E-Mail an Dateien zu
# Dies findet implizit Verwendung, wenn smail Adressen antrifft, die mit
# einem Schrägstrich oder Tilde beginnen, wie »/usr/info/list_messages« oder
# vielleicht »~/Mail/inbox«.
#file:
driver = appendfile,
#return_path, local, from, unix_from_hack;
#
#file = $user, # Datei wird Adresse entnommen
#append_as_user, # verwende mit Adresse assoziierte
# Benutzer-ID
#expand_user, # dehne ~ und $ innerhalb der Adresse
# aus
#check_path,
#suffix = "\n",
#mode = 0644
# uux - Zustellung an das rmail Programm auf einer entfernten UUCP Gegenstelle
#
# Bis zu 5 Empfängeradressen werden an den entfernten Host in einer UUCP
# Übertragung gesandt.
uux:
driver = pipe,
-uucp,
inet,
#uucp, # nutze UUCP Form der Adressierung
from, # unterstütze eine Von_ Zeile
max_addrs = 5, # maximal 5 Adressen pro Aufruf
max_chars = 200; # maximal 200 Zeichen für Adressen
# das -r Flag verhindert sofortige Zustellung, Klammern um die
# $user Variable verhindern besondere Interpreation durch uux.
cmd = "/usr/bin/uux - -r -g$grade $host!rmail $((${strip:user})$)",
#cmd="/usr/bin/uux - $host!rmail $(($user)$)",
ignore_write_errors, # ignoriere abgerissene Pipes
umask = 0022,
#pipe_as_sender,
# uux_one_addr - stelle E-Mail über UUCP an einen entfernten Host zu, der
# jeweils eine Adresse entgegennehmen kann.
# Dies ist oft notwendig, wenn die Zustellung an eine Seite erfolgt, auf der
# eine unmodifizierte Version von 4.1BSD läuft.
uux_one_addr:
driver = pipe,
uucp, # verwende UUCP Art der Adressform
from; # unterstütze eine Von_ Zeile
die -r Kennung verhindert sofortige Zustellung
cmd = "/usr/bin/uux - -r -g$grade $host!rmail (${strip:user})",
umask = 0022,
pipe_as_sender
queueonly:
driver = pipe; # sende Nachrich an eine Pipe
cmd = "/usr/lib/sendmail -Q -f $sender -bm $user",
# nutze getmail für lokale Zustellung
user=root, # führe getmail als "root" aus
group=mail, # führe getmail als "mail" aus
parent_env, # Umgebungsinfo von Eltern_Adresse
-pipe_as_user, # verwende mit Adresse assoziierte
# Benutzer-ID
umask = 0007, # umask für child-Prozeß
# um die Nachricht zuzustellen. Der smtp Transport wird nur eingefügt, wenn
# es ein BSD Netzwerk gibt.
# Das uucp Attribut kann für Übertragungen innerhalb der UUCP Zone gesetzt
# werden. Das inet Attribut muß für Transfers innerhalb des Internet gesetzt
# werden.
# Beachte: Dies ist nur wenig optimal, es sollte ein backend geben, das
# mit mehreren Nachrichten pro Verbindung umgehen kann.
# Weiterhin: Es kann erforderlich sein, »max_addrs« auf 100 zu
# beschränken, da dies das untere Limit ist, für das SMTP eine Implementation
# für den Umgang mit einer Adresse benötigt.
smtp:
driver=tcpsmtp,
inet, # wenn UUCP_ZONE nicht gesetzt ist
#uucp, # wenn UUCP_ZONE gesetzt ist
-max_addrs, -max_chars; # kein Limit für Adressenzahl
short_timeout=5m, # Timeout für kurze Operationen
long_timeout=2h, # Timeout für längere SMTP
Operationen
service=smtp, # verbinde zu diesem Service Port
Für Internet Verwendung die 4 folgenden Zeilen auskommentieren
use_bind, # löse MX und multiple A Records auf
defnames, # verwende Standard Domänensuche
defer_no_connect, # erneut versuchen, wenn Nameserver
# nicht erreichbar
local_mx_okay, # einen MX an lokalem Host ablehnen
ifmail:
from,received,max_addrs=5,max_chars=200,
driver=pipe;
pipe_as_sender,
cmd="/usr/local/bin/ifmail -x9 -r$host $((${strip:user})$)"
Sie sollten ein ifmail
Kapitel nur dann einbeziehen, wenn Sie
ifmail
für FIDO E-Mail verwenden. Außerhalb davon sollte es für
Sie nicht notwendig sein, etwas an dieser Datei zu bearbeiten, die das
Transportprotokoll (wie uux, smtp, ...) definiert, die Sie als Parameter
in anderen .config
Dateien verwenden können.
Nehmen Sie zu Kenntnis, daß ich einige Teile wie »pipes« oder »file« auskommentiert habe, um die Sicherheit zu erhöhen.
Das Verzeichnis maps/
enthält die Dateien map
und table
:
Zuerst die Datei map
:
#N foo.bar foo2.bar2
#S AT 486/RedHat Linux 1.2.13
#O Organisation
#C Kontakt
#E Administration (E-Mail)
#T Telefon
#P Adresse
#R
#U Hosts verbunden via uucp
#W erstellt/bearbeitet von
#
hname polux
hname linux.eu.org
hname = polux
hname = polux.linux.eu.org
Bearbeiten Sie diese Datei wieder so, daß sie zu Ihrer Situation paßt
(ich werde von polux.linux.eu.org
versorgt).
Nun die Datei table
:
* uux
Sie können verschiedene Transporte zu verschiedenen Pfaden definieren, z.B. »smtp« für die Maschinen in Ihrem lokalen Netzwerk, »uux« (d.h. UUCP) für den Rest der Welt oder umgekehrt (ich verwende uucp für jede ausgehende E-Mail, dafür benutze ich »*«!).
Die vorherigen Dateien sind diejenigen, die ich momentan auf meiner Seite verwende, Ihnen sollten keinerlei Probleme begegnen, wenn Sie sie als Beispiele oder Basis für Ihre eigenen Dateien nehmen.
Die folgenden Dateien sollen nur als gute Beispiele für die Konfiguration von
smail
auf anderem Weg dienen.
#ident »@(#) transports,v 1.2 1990/10/24 05:20:46 tron Exp«
# Siehe smail(5) für eine vollständige Beschreibung diese Dateiinhalts.
# local - Zustellung von E-Mail an lokale Benutzer
#
# Sage smail, direkt an die Benutzer-Mailboxdateien im Verzeichnis /usr/mail
# zuzustellen.
local:
driver = appendfile, # füge Nachrich an eine Datei an
return_path, # einbetten eines Return-Path: Feldes
local, # nutze lokale Form für Zustellung
from, # unterstütze eine Von_ Zeile
unix_from_hack; # füge > vor Von im Body ein
file = /usr/mail/${lc:user}, # nutze diesen Ort bei System V
group = mail, # Eigentümergruppe bei System V
mode = 0660, # unter System V kann Gruppe mail
# zugreifen
suffix = "\n", # zusätzlichen Zeilenumbruch einfügen
append_as_user,
# pipe - E-Mails an Shell-Befehle übergeben
#
# Dies wird implizit verwendet, wenn smail auf Adressen stößt, die mit einem
# senkrechten Balken beginnen, wie »|/usr/lib/news/recnews talk.bizarre«.
# Der senkrechte Balken wird aus der Adresse entfernt, bevor sie zum
# Transport gegeben wird.
pipe:
driver = pipe, # leite Nachricht an anderes Programm
return_path, local, from, unix_from_hack;
cmd = "/bin/sh -c $user", # sende Adresse an die Bourne Shell
parent_env, # Umgebungsinfo von parent_Adresse
pipe_as_user, # nutze mit Adresse assoziierte
# Benutzer-ID
umask = 0022, # umask für child-Prozeß
-log_output, # kein Log von stdout/stderr
ignore_status, # Status beim Verlassen kann falsch
# sein, ignorieren
ignore_write_errors, # ignoriere abgebrochene Pipes
# file - Übergabe von E-Mails an Dateien
#
# Dies wird implizit verwendet, wenn smail auf Adressen trifft, die mit einem
# Schrägstrich oder Tilde beginnen, wie »/usr/info/list_messages« oder
# vielleicht »~/Mail/inbox«.
file:
driver = appendfile,
return_path, local, from, unix_from_hack;
file = $user, # Datei wird aus Adresse entnommen
append_as_user, # nutze mit Adresse assoziierte
# Benutzer-ID
expand_user, # erweitere ~ und $ innerhalb der
# Adresse
suffix = "\n",
mode = 0644
# uux - Übergabe an Programm rmail auf einer entfernten UUCP Seite
#
# Bis zu 5 Empfängeradressen werden mit einer UUCP Transaktion an den
# entfernten Host übertragen.
uux:
driver = pipe,
uucp, # nutze UUCP Form der Adressierung
from, # unterstütze eine Von Zeile
max_addrs = 5, # max. 5 Adressen pro Aufruf
max_chars = 200; # max. 200 Zeichen für Adressen
# Das -r Flag verhindert die sofortige Zustellung, Klammern
# um die $user Variable verhindern spezielle Interpretation durch uux.
cmd = "/usr/bin/uux - -r -g$grade $host!rmail $((${strip:user})$)",
umask = 0022,
pipe_as_sender
# uux_one_addr - Zustellung der E-Mails über UUCP an einen entfernten Host,
# der nur eine Adresse mit einem Mal annehmen kann.
#
# Dies ist oft dann notwendig, wenn die Zustellung an eine Seite erfolgt,
# auf der eine unmodifizierte Version von 4.1BSD läuft.
uux_one_addr:
driver = pipe,
uucp, # nutze UUCP Form der Adressierung
from; # unterstütze eine Von Zeile
# Das -r Flag verhindert die sofortige Zustellung
cmd = "/usr/bin/uux - -r -g$grade $host!rmail (${strip:user})",
umask = 0022, pipe_as_sender
# demand - Übergabe an ein entferntes rmail Programm, Abfrage bei Bedarf
demand:
driver = pipe,
uucp, from, max_addrs = 5, max_chars = 200;
# ohne -r Flag versuche sofort, Kontakt mit der Gegenstelle aufzunehmen
cmd = "/usr/bin/uux - -g$grade $host!rmail $(($user)$)",
umask = 0022, pipe_as_sender
# uusmtp - Übergabe an das Programm rsmtp auf einer entfernten UUCP Seite
#
# Zustellung unter Verwendung eines einfachen, gestapelten SMTP Protokolls
# an die entfernte Maschine. Das erlaubt die Verwendung von viel mehr
# willkürlichen Adressen. Es beseitigt zudem das Limit von Empfängeradressen
# pro uux Aufruf.
uusmtp:
driver = pipe,
bsmtp, # sende gestapelte SMTP Befehle
-max_addrs, # es gibt kein Limit bei Anzahl oder
-max_chars; # max. Größe der Empfängeradressen.
# unterstütze -r zur Verhinderung der sofortigen Zustellung, die
# Empfängeradressen werden in den Daten speichert, die an die
# Standardeingabe von rsmtp gesendet werden.
cmd = "/usr/bin/uux - -r -g$grade $host!rsmtp",
umask = 0022, pipe_as_sender
# demand_uusmtp - Übergabe an ein entferntes rsmtp Programm, Abfrage bei
# Bedarf
demand_uusmtp:
driver = pipe,
bsmtp, -max_addrs, -max_chars;
# ohne -r Flag versuche sofort, Kontakt mit der Gegenstelle aufzunehmen
cmd = "/usr/bin/uux - -g$grade $host!rsmtp",
umask = 0022, pipe_as_sender
# smtp - Zustellung per SMTP über TCP/IP
#
# Verbinde mit einem entfernten Host unter Verwendung von TCP/IP und initiiere
# eine SMTP Konversation, um die Nachricht zuzustellen. Der SMTP Transport
# ist nur enthalten, wenn ein BSD Netzwerk existiert.
# Beachte: Es kann erforderlich sein, »max_addrs« auf 100 zu begrenzen, da
# das die untere Grenze ist, ab der SMTP eine Implementation benötigt, um
# eine Nachricht zu handhaben.
smtp:
driver = smtp,
-max_addrs,
-max_chars
#ident »@(#) table,v 1.2 1990/10/24 05:20:31 tron Exp«
# Diese Datei benennt die Transporte, die von »bargw« zur Übertragung an
# bestimmte Hosts verwendet werden sollen.
#host transport
#-------- ---------
curdsgw demand_uusmtp # Übergabe per batch SMTP
oldbsd uux_one_addr # 4.1BSD Seiten können nicht mehr als eine
# Adresse gleichzeitig annehmen
sun demand # rufe sun auf, wenn es E-Mails zu versenden
# gibt
* uux # für alle anderen frage in Intervallen ab
Um smail
als SMTP Daemon zu starten, fügen sie eines der Folgenden zu
/etc/inetd.conf
hinzu:
smtp stream tcp nowait root /usr/bin/smtpd smtpd
Alternativ:
smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.smtpd
Abgehende E-Mails werden bei der Benutzung von elm
automatisch
versandt.
Normalerweise verwenden ISPs SMTP, deshalb sollten Sie keine Probleme beim
Versand Ihrer E-Mails haben. Wenn zu dem Zeitpunkt keine Internetverbindung
besteht, zu dem Sie E-Mails versenden, dann liegt die E-Mails unter
/var/spool/smail/input
.
Wenn dann die nächste Verbindung zustande kommt, wird runq
gestartet, das den E-Mail Versand auslöst. Jedenfalls ist das Empfangen von
E-Mails das Problem, da Ihr Provider viele Clients hat, um die er
sich kümmert, nicht bloß Sie.
Gewöhnlich beziehen Sie Ihre E-Mail via POP Protokoll, sehen Sie dazu in den POP-Abschnitt weiter unten.
Für große Seiten ist sendmail
aufgrund der »unglaublichen Einfachheit
der Verwendung« (ein sehr relatives Gefühl, wenn Sie qmail kennen) eine gute
Wahl. Aber Sie müssen sich zwischen sendmail+IDA
und sendmail
8.x entscheiden:
sendmail+IDA
sendmail+IDA
und Quellcode Bearbeitungsendmail
8.x wählenZur Erinnerung: Linux-Neulinge oder diejenigen, die über Sicherheit und
Leichtigkeit der Konfiguration besorgt sind, sollten lieber die Verwendung
von smail
oder qmail
in Erwägung ziehen, die sicherer und
leichter zu nutzen sind.
Falls Ihre Dirstribution Sie nicht mit einem installationsfertigen Paket von
sendmail
versorgt (».rpm« für RedHat, Caldera und SuSE, ».deb« für Debian),
laden Sie einfach die Quellen herunter und starten:
cd / ; tar -zxvf sendmail5.67b+IDA1.5.tgz
cd /usr/local/lib/mail/CF
Kopieren Sie die Dateien sample.m4
und local.m4
nach
»IhrHostName.m4
«.
Ändern Sie die vorgegebenen Hostnamen, Aliase, Smarthost und füllen Sie mit dem für Ihre Seite richtigen Werten. Die Vorgabedatei ist eine reine UUCP-Seite (so nicht mehr in Version 8.x), die Domänen in den Köpfen hat und die mit einem Smarthost kommunizieren. Geben Sie nun folgendes ein:
make IhrHostName.cf
Kopieren Sie die entstandene Datei nach /etc/sendmail.cf
.
Falls Sie nur UUCP haben, brauchen Sie keine der in der
README.Linux
Datei erwähnten Tabellen zu erstellen.
Sie müssen die Dateien nur per touch
erstellen, damit der
Makefile
arbeitet. Bearbeiten Sie die ».m4« Datei, wenden Sie
make
auf die sendmail.cf
Datei an und starten Sie einen Test.
Falls Sie nur UUCP haben und mit Gegenstellen zusätzlich zu Ihrem
»Smart-Host« kommunizieren, müssen Sie für jeden »uucpxtable« Einträge anfügen
(oder E-Mails zu denen laufen ebenfalls über den Smarthost) und dbm
auf
die überarbeiteten »uucpxtable« anwenden.
Wenn Sie Rich Brauns original Binärdistribution 5.67a laufen lassen, werden Sie die Konfiguration einfrieren müssen, wenn Sie ihre ».cf« Datei mit
/usr/lib/sendmail -bz
wechseln, um den Wechsel wirksam werden zu lassen
Außerdem sollten Sie Ihre Version zumindest auf den Stand von 5.67b bringen,
da es ein ärgerliches Sicherheitsloch in 5.67a und früheren Versionen gibt.
Eine andere nette Sache ist, daß, wenn Sie »mail.debug« gesetzt haben und
syslog
starten, Ihre ein- und ausgehenden E-Mails im Log eingetragen
werden. Sehen Sie für Einzelheiten in die Datei /etc/syslog.conf
.
Die Quellen für sendmail+IDA
finden Sie unter:
vixe.cso.uiuc.edu
Sie brauchen keinen Patch, um unter Linux zu laufen, wenn Sie etwas wie
einen Kernel 1.00 laufen haben.
Wenn Sie einen Kernel > 1.1.50 haben, bekommen Sie den Spaß des Rückbaus der
meisten der Linux-spezifischen Patches, die jetzt in den Vanilla Quellen sind.
Ich habe Ihnen gesagt, daß dieses sendmail
nur für alte
Kernels war :-).
Es ist äußerst fraglich, wo dies notwendig ist: einfach »make
« eingeben
und wenn es sich aufbläht, gehen Sie zu der Zeile in den Quellen und
kommentieren
den darin enthaltenen Linux-spezifischen Code aus.
Wenn Sie vorhaben, sendmail+IDA
laufen zu lassen, empfehle ich Ihnen
sehr, die Version sendmail5.67b+IDA1.5
zu nehmen, da dort alle
Linux-spezifischen Patches in den Vanilla Quellen enthalten sind und
verschiedene Sicherheitslöcher gestopft wurden, die in den älteren Versionen
waren, die Sie vielleicht vor dem 1. Dezember 1993 erhalten oder
eingebaut haben.
Jetzt sollten Sie mit dem Kernel 2.0 sendmail
8.x statt
sendmail+IDA
nutzen, aber ich sagte bereits, Sie sollten besser
sendmail
8.x wählen :-).
Für sendmail+IDA
müssen Sie eine sendmail.m4
Datei erstellen,
statt die sendmail.cf
Datei direkt zu bearbeiten. Das Schöne daran ist,
daß die Einstellung der E-Mail Konfiguration einfach, die in smail
oder traditionellem sendmail
extrem schwierig (wenn nicht sogar für
manche ganz unmöglich richtig zu machen) ist.
Die sendmail.m4
Datei, die dem oben gebrachten smail
Beispiel entspricht, sieht wie folgt aus:
dnl #------------------ BEISPIELDATEI SENDMAIL.M4 ------------------
dnl #
dnl # Der String »dnl« ist das m4 Äquivalent zum Auskommentieren einer
dnl # Zeile (nun, nicht ganz, aber nutzen Sie es für diesen Zweck,
dnl # wenn Sie müssen :-)).
dnl # Generell sollten Sie LIBDIR aus den kompilierten Pfaden überbrücken.
dnl #define(LIBDIR,/usr/local/lib/mail)dnl # wohin alle unterstützten
dnl # Dateien gehen
define(LOCAL_MAILER_DEF, mailers.linux)dnl # E-Mail Program für Lokales
define(POSTMASTERBOUNCE)dnl # Postmeister bekommt die
dnl # »Rausschmeißer«
define(PSEUDODOMAINS, BITNET UUCP)dnl # nicht DNS versuchen
dnl #
dnl #-------------------------------------------------------------
dnl #
dnl # Namen, unter denen wir bekannt sind
define(PSEUDONYMS, myhostname.subdomain.domain myhostname.UUCP)
dnl #
dnl # unser Primärname
define(HOSTNAME, myhostname.subdomain.domain)
dnl #
dnl # unser UUCP-Name
define(UUCPNAME, myhostname)dnl
dnl #
dnl #-------------------------------------------------------------
dnl #
define(UUCPNODES, |uuname|sort|uniq)dnl # unsere UUCP Nachbarn
define(BANGIMPLIESUUCP)dnl # sicherstellen, daß UUCP
define(BANGONLYUUCP)dnl # E-Mails richtig behandelt
define(RELAY_HOST, my_uucp_neighbor)dnl # unser Smart-Relay-Host
define(RELAY_MAILER, UUCP-A)dnl # wir erreichen Moria via UUCP
dnl #
dnl #--------------------------------------------------------------------
dnl #
dnl # die verschiedenen dbm Nachschlagetabellen
dnl #
define(ALIASES, LIBDIR/aliases)dnl # System Aliase
define(DOMAINTABLE, LIBDIR/domaintable)dnl # Domainhosts
define(PATHTABLE, LIBDIR/pathtable)dnl # Pfaddatenbank
define(GENERICFROM, LIBDIR/generics)dnl # generische »Von«-Adressen
define(MAILERTABLE, LIBDIR/mailertable)dnl # E-Mail per Host oder Domain
define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # Pfade zu von uns versorgten
# Hosts
define(UUCPRELAYS, LIBDIR/uucprelays)dnl # Umgehungspfade
dnl #
dnl #--------------------------------------------------------------------
dnl #
dnl # Einschluß des »wahren« Code, der alles zum Laufen bringt
dnl # (mit Quellcode zur Verfügung gestellt)
dnl #
include(sendmail.mc)dnl # NOTWENDIGER EINTRAG!!!
dnl #
dnl #------------ ENDE DER BEISPIEL DATEI SENDMAIL.M4 -------------------
Anders als anderen Unix Distributionen kommt Linux nicht mit lokalen Zustellungsprogramm (MDA) als Standard daher.
Die Slackware Distribution schon. Nun, es wird zumindest durch das
»einfach-zu-verwendende-aber-langwierige« Installationsskript angeboten
und verwendet procmail
.
Jetzt, wenn normalerweise deliver
oder procmail
installiert
ist, um mit einem vorgegebenen sendmail Setup lokale E-Mails zu handhaben,
wird dieses ohnehin sehr komplexe Setup nicht noch komplexer gemacht. Ich
empfehle die Verwendung der allgemein erhältlichen Programme deliver
oder procmail
, die in einigen Linuxdistributionen als optionale Pakete
enthalten sein können.
Dafür müssen Sie »LOCAL_MAILER_DEF« in der Datei sendmail.m4
definieren, das auf eine Datei zeigt, die wie folgt aussieht:
# -- /usr/local/lib/mail/mailers.linux --
# (lokale E-Mail Programme für Verwendung unter Linux)
Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u
Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u
Es gibt auch eine eingebaute Vorgabe für deliver
in der Datei
sendmail.mc
, die in die Datei sendmail.cf
einbezogen wird.
Zur Spezifizierung verwenden Sie statt der Datei mailers.linux
folgende Definition in Ihrer sendmail.m4
Datei:
dnl --- (in sendmail.m4) ---
define(LOCAL_MAILER_DEF, DELIVER)dnl # E-Mail Programm für lokale
dnl # Zustellung
Unglücklicherweise geht sendmail.mc
davon aus, daß deliver
in /bin
installiert ist, was bei Slackware 1.1.1 nicht der Fall ist;
dort liegt es unter /usr/bin
. In dem Fall müssen Sie es entweder
mit einem Link täuschen oder deliver
aus den Quellen neu aufbauen,
so daß es unter /bin
residiert. Bitte beachten Sie, daß
procmail
generell besser als deliver
ist, zum Beispiel
für die Filterung von E-Mails.
Das Einstellen besonderer Umstande für Sites oder Domänene kann besser
durch eine Anzahl optionaler dbm
Tabellen erreicht werden, als durch
eine direkte Bearbeitung der Datei sendmail.cf
.
Sehen Sie für mehr Einzelheiten in die Ausgabe des Linux Journal
vom Juli 1994 (wenn Sie die noch finden können :-)), die Dokumentation in den
Quellen oder in das sendmail
Kapitel zu der neuesten Version des Linux
Documentation Projects Networking Administration Guide, das sehr bald
verfügbar sein wird.
definiert spezielles Verhalten für entfernte Host oder Domains
erzwingt UUCP Zustellung der E-Mails an Hosts im DNS Format
definiert UUCP Pfade zu entfernten Hosts oder Domains
Abkürzung von Pfadalias Pfaden zu bekannten entfernten Hosts
konvertiert interne Adressen zu generischen, die nach außen sichtbar sind
konvertiert genererische Adressen nach/von gültigen internen Adressen
konvertiert RFC-822 Adressen zur DECnet Adressform
Wenn keine der optionalen dbm Tabellen verwendet werden, stellt
sendmail
E-Mails über »RELAY_HOST« und »RELAY_MAILER« zu, die in
der Datei sendmail.m4
definiert sind, die zur Generierung der
sendmail.cf
verwendet wird. Es ist leicht möglich, diese Umstände
durch Einträge in die Domaintabelle oder »uucpxtable« zu übergehen.
Eine generische Seite im Internet mit Domain Name Service (DNS) oder eine reine UUCP Seite, die alle E-Mails per UUCP über einen »Smart Relay Host« weiterleitet, braucht vielleicht überhaupt keine spezifischen Tabelleneinträge.
Jedes System sollte virtuell die Makros »DEFAULT_HOST« und »PSEUDONYMS« setzen, die den anerkannten Sitenamen und Aliase, unter denen sie bekannt ist, entspricht.
Falls alles, was Sie haben, ein Übertragungshost und E-Mailprogramm ist, müssen Sie diese Voreinstellungen nicht setzen, da sie automatisch arbeiten; UUCP Hosts brauchen vielleicht zusätzlich das Setzen von »UUCPNAME« auf ihren offiziellen UUCP-Namen.
Letztere werden vielleicht außerdem »RELAY_MAILER« und »RELAY_HOST« setzen, die Smart-Host Routing über eine E-Mail Weiterleitung einschalten.
Der zu verwendende E-Mail Transport wird in »RELAY_MAILER« eingestellt und sollte gewöhnlich »UUCP-A« für UUCP Seiten sein. Wenn Ihre Seite nur SMTP einsetzt und DNS (Domain Name Service) spricht, werden Sie den »RELAY_MAILER« wechseln.
Wenn auf Ihrer Seite SLIP ist, werden Sie den leichten Ausweg nehmen wollen und alle ausgehenden E-Mails an Ihren Service Povider weiterleiten wollen, damit dieser die richtigen Dinge damit tut. Dafür müssen Sie »ISOLATED_DOMAINS« und »VALIDATION_DOMAINS« auf Ihre Domain definieren. Weiterhin ist »RELAY_HOST« als Ihr Service Provider zu definieren und der »RELAY_MAILER« muß »TCP« sein. Natürlich werden Sie nach einer Berechtigung fragen wollen, bevor Sie irgend ein System als Ihre generell verwendete Stelle zur Weiterleitung einstellen.
sendmail
8.7.x von Berkeley war die letzte Hauptrevision nach
sendmail5
. Es hatte einen wunderbaren eingebauten Support unter Linux:
einfach
make Linux
eingeben und alles war eingestellt.
Ihnen wird am besten damit gedient sein, sich eines der verschiedenen
Binärpaket aus den normalen Linux Archivseiten herauszugreifen, als wenn
Sie sich alles wie Berkley mit dbm
selbst erkämpfen müssen.
Der Nachteil von sendmail
v8 besteht darin, daß Sie das absolute
Minimum konfigurieren müssen, damit die Arbeit erledigt wird; das Folgende ist
ein Beispiel, das Sie zumindest recht nahe heranbringen sollte.
Fast wie sendmail+IDA
verwendet sendmail
v8 m4
, um
eine Konfigurationsdatei in eine volle sendmail.cf
zu verarbeiten,
die sendmail
verwendet. Das Folgende ist meine momentane .mc
Datei für meinen Rechner (PPP zum Internet für ausgehende E-Mails, UUCP für
eingehende E-Mails).
dnl divert(-1)
#---------------------------------------------------------------------
#
# Das ist die .mc Datei für einen Linux Host, der wie folgt eingestellt
# ist:
#
# - verbunden zum Internet für ausgehende E-Mails (hier PPP)
# - verbunden via UUCP für eingehende E-Mails
# - Header enthalten Domain
# - kein lokaler E-Mailer (statt dessen »deliver«)
# - kein laufendes DNS, also nicht nach außen nicht anerkannt
# - alle nicht-lokalen ausgehenden E-Mails gehen an den
# RELAY_HOST über SMTP
# (Wir haben PPP laufen und lassen unseren Service Provider
# die Arbeit erledigen)
#
# vds 3/31/95
#
#---------------------------------------------------------------------
include(`../m4/cf.m4')
VERSIONID(`linux nodns relays to slip service provider smarthost')
dnl
Cwmyhostname.myprimary.domain myhostname.UUCP localhost
OSTYPE(linux)
FEATURE(nodns)dnl
FEATURE(always_add_domain)dnl
FEATURE(redirect)
FEATURE(nocanonify)
dnl MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)dnl
define(`RELAY_HOST', smtp:my.relay.host.domain)
define(`SMART_HOST', smtp:my.relay.host.domain)
define(`UUCP_RELAY', smtp:my.relay.host.domain)
define(`LOCAL_MAILER_PATH', `/bin/deliver')
define(`LOCAL_MAILER_ARGS', `deliver $u')
Es gibt einige Unterschiede, die ich gegenüber »IDA bigots« erwähnen will. Bis jetzt habe ich den folgenden entdeckt:
Statt
runq
muß für die Warteschlange (»Queue«)
sendmail -q
gestartet werden.
Anders als die meisten Betriebssysteme hat Linux keine E-Mail Unterstützung
»eingebaut«. Sie benötigen ein Programm, um lokale E-Mails zuzustellen, wie
lmail
, procmail
oder deliver
.
Wie auch immer, jede neuere Distribution enthält jetzt ein entsprechendes Programm.
Eine Beschreibung, wie sie für die lokale Zustellung verwendet werden, findet sich im oben erwähnten Binärrelease von »sendmail5.67b+IDA1.5«.