| Lokaler Mailserver | ||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Voraussetzungen Die Beispielumgebung Aufgaben des Mailservers Funktionstest des Mailservers Sendmail konfigurieren Allgemeines Lokale Hostnamen festlegen Weiterleiten zum Provider Erlaubte Nutzer(Mailclients) festlegen Unqualifizierte Adressen miteinbeziehen Abliefereinstellungen Verbindungsaufbau zum Internet steuern Den Mailversand erlauben Aliase für lokale Adressen einrichten Abholung der Mail Mail beim Provider abholen: fetchmail POP3-Server konfigurieren Clientkonfiguration Automatisieren des Mailversandes und -empfangs Zeitgesteuerte Abarbeitung per cron Zuhilfenahme des ip-up Skriptes VoraussetzungenIm folgenden wird davon ausgegangen, dass...
Aufgaben des MailserversDer lokale Mailserver soll in regelmässigen Abständen die Nachrichten zum Provider übermitteln und vom Provider abholen und lokal zustellen, d.h. im lokalen Postfach ablegen. Von den Arbeitsstationen im Netz werden dann die Mails vom lokalen Postfach abgeholt. Die BeispielumgebungJetzt seid Ihr natürlich erst einmal gefordert die unten aufgeführten Informationen zu ermitteln. Das sollte jedoch nicht allzu schwer sein. Wir gehen mal von folgender Beispielumgebung aus:
Das Konto Internet
ist ein "catch-all"-Postfach,
dass alle sonstigen
Mails aufnimmt, die keinem dort
angelegten Benutzer
zuzuweisen sind.
Funktionstest des MailserversNach der Installation der Software mit den jeweiligen Tools der verwendeten Distribution müsste auf dem lokalen Mailserver schon der E-Mail Transport innerhalb des Systems funktionieren. D. h. die Nutzer auf diesem System können via E-Mail kommunizieren. Dies testet man am einfachsten, in dem man (als root) von der Konsole(Terminal, Kommandozeile) jeweils eine Mail an die Benutzer sendet:
mail:~ # mail sabine
Die Mail müsste nun im
Postfach der Benutzerin Sabine liegen.
Die
Benutzerpostfächer sind nur
vom Benutzer und natürlich von
root lesbar. Da ich
immer noch root bin wechsele ich
in das Verzeichnis
-rw-rw---- 1 sabine
root 452
Jul 23 09:49
sabine
Würde sich Sabine nun auf mail.intra.net anmelden, würde sie mit einem "You have new mail" begrüsst. Sollte allerdings kein
Eintrag vorhanden sein, hat sendmail
die Mail
wohl noch nicht ausgeliefert,
d. h. sie liegt noch in der
Warteschlange
unter
mail:~ # sendmail
-q
sollte die Mail endgültig in das Benutzerpostfach befördern. Sollte es zu Fehlermeldungen kommen oder die Mail immer noch nicht im Benutzerpostfach liegen, sind alle oben genannten Voraussetzungen(Nur Punkt 1) zu überprüfen. Im Regelfall übergibt sendmail die lokalen Mails an procmail, das letztendlich die Mails dem Benutzer zur Verfügung stellt. sendmail konfigurierenAllgemeinesIst bisher alles positiv verlaufen, kommen wir zur wesentlichen Konfiguration von sendmail, damit von den Arbeitsstationen Mails an die anderen lokalen Benutzer wie auch ins Internet verschickt werden können. Alle mir bekannten
Distributionen starten sendmail als
eigenständigen
Daemon im Hintergrund. Die
Paramter Für die eigentliche
Konfiguration ist die Datei
Gehen wir also zum Editieren
der Lokale Hostnamen festlegen############## # local info # ############## In der Datei
inter.net intra.net Weiterleitung zum ProviderNun wieder zurück zur /etc/sendmail.cf:
# "Smart" relay host (may be
null)
Dieser Server bekommt alle (nicht lokalen) Mails zur Weiterleitung. Hier ist also der SMTP-Server des Providers einzutragen. Erlaubte Nutzer(=Mailclients) unseres Mailservers# Hosts for which relaying is permitted ($=R) In der Datei /etc/mail/relay-domains sind die Domainnamen einzutragen, die über unseren Mailserver Mails versenden dürfen. Erstellen Sie also diese Datei mit folgendem Inhalt: inter.netintra.net unqualifizierte Empfänger miteinbeziehenDa alle unqualifizierten Adressen (also Mails ohne @ und Zieldomain) und auch alle lokalen Mails über den Mailserver laufen sollen, sind noch folgende Zeilen in der /etc/sendmail.cf anzupassen: # who I send unqualified names to (null means deliver locally) Absenderadresse n maskierenWürden von jetzt ab
Mails an den SMTP-Server des Providers
geschickt, hätten
diese als Abenderadresse
" # who I masquerade as (null for no masquerading) (see also $=M) Nun verlassen die Mails den
Server mit der
Absenderadresse
" AbliefereinstellungenSollten beim ersten Test des Mailversands die lokalen Mails nicht direkt zugestellt worden sein, ist wahrscheinlich noch der falsche "delivery mode" eingestellt: # default delivery mode Im Hintergrundmodus (background) werden lokale Mails sofort versandt. Verbindungsaufbau zum Internet steuernStandardmässig baut sendmail gerne Verbindungen zum Internet auf. Bei teuren Wählverbindungen kann dies ungewollt sein. Dann kann man dies mit folgenden Einträgen unterbinden: # avoid connecting to "expensive" mailers on initial submission? Durch den ersten Eintrag baut sendmail nur dann eine Verbindung zum Internet auf, wenn die Mailqueue verschickt wird. Der zweite verweist auf die Datei /etc/mail/service.switch , über die die Namensauflösung realisiert wird. Bei teuren Wählverbindungen sollte sie folgenden Inhalt haben: hosts filesaliases files Damit wäre der Ausflug in die /etc/sendmail.cf beendet. Speichern Sie nun alle Änderungen und legen vielleicht sicherheitshalber mal eine Kopie der Datei an. Den Mailversand erlaubenBis auf einen Punkt ist
sendmail nun fertig konfiguriert. Seit
Version 8.9 (?) verbietet
sendmail allen nicht extra deklarierten
Rechnern den Versand. Die
Rechner, die Mails versenden
dürfen,
müssen in der
intra.net RELAY # alle Rechner der Domain dürfen Die Datei ist gut
dokumentiert; über sie kann auch
ein Spamfilter realisiert
werden. Sind alle Eintragungen
gemacht, ist die
mail:~ # makemap hash -f /etc/mail/access.db < /etc/mail/access Nach einem Neustart des
Maildaemons (mit Aliase für lokale Adressen einrichtenDie Benutzernamen auf dem
Mailserver im Internet stimmen nicht
mit den lokalen überein.
Wenn jedoch intern und extern die
gleichen
Adressen benutzt werden sollen
(dann ist unsere Sabine z.B. auch
intern über
"info@inter.net" erreichbar, sind
folgende Einträge
in der
support max billing claudia Nach der Ergänzung
werden diese durch den Aufruf von
nach obenAbholung der MailDer nächste Punkt, der in Angriff genommen werden muss, ist die Abholung der Mail: Mail beim Provider abholen: fetchmailDies erledigt man am
einfachsten mit fetchmail. Dazu ist im
Homeverzeichnis des Benutzers,
der die Abholung vornimmt,
die Datei
poll mail.inter.net protocol POP3 localdomains inter.net user info password info to sabine here
In diesem Fall soll fetchmail
von root aufgerufen werden,
die Datei liegt also im
Verzeichnis Schreib- und Leserechte nur für den Besitzer einzustellen. Danach kann die Konfiguration ausprobiert werden: mail:~ # fetchmail -k -a -v >>/var/log/fetchmail 2>&1Durch den Parameter -k werden die Mails nicht vom Server gelöscht (dies kann in der Testphase sehr praktisch sein). Bei Fehlkonfigurationen sind schon mal Mails ins Nirwana gegangen. Sollte Mail vorhanden sein, meldet fetchmail dies: 1 message for info at mail.inter.net (392 octets).Da Mails an info lokal an
Sabine weitergeleitet werden sollen,
ist jetzt zu
prüfen, ob sich in Sabines
Postfach auch Mail befindet. Ist dies
nicht der Fall,
sollte zuerst mal in der
Protokolldatei
nach obenPOP3-Server konfigurierenUm Mails von den lokalen Arbeitsstationen abholen zu können, muss auf dem Server in der /etc/inetd.conf folgender Eintrag "entauskommentiert" sein: pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/popper -s Falls dies nicht der Fall sein sollte, ist das Kommentarzeichen (#) vor der Zeile zu entfernen und der inetd neu zu starten. Ausserdem muss der
popper(POP3-Mailserver) installiert
sein. Dazu gibt man
am Prompt einfach mal
Clientkonfiguration durchführenNun sind nur noch die Mailclients zu konfigurieren, hier am Beispiel für Sabine(info@inter.net):
Diese Einträge müssten sich bei jedem Mailclient auf jeder Plattform finden; ggf. ist die Onlinehilfe/das Handbuch des Programms zu Rate zu ziehen. Nimmt man die IP-Adresse des Mailservers, ist auf der Arbeitsstation keine hosts-Datei zu erstellen oder lokal auch kein Nameserver aufzubauen. Hat alles geklappt, müsste Sabine nun zwei Nachrichten in Ihrem Posteingang haben: die Begrüssungsmail von root und die Mail vom Providerpostfach. Herzlichen Glückwunsch! vom Arbeitsplatz an lokale und entfernte Adressen testen. Ich gehe mal davon aus, dass alles klappt! Dann ist nur noch dafür zu sorgen, dass die Mails regelmäßig verschickt und abgeholt werden. nach obenAutomatisie rung des Mailversands und -empfangsZeitgesteuerte Abarbeitung per cronIn der /etc/crontab ist folgender Einträge hinzuzufügen, der dafür sorgt, dass z. B. Wochentags zwischen 7:00 und 17.00 Uhr alle 30 Minuten Mails empfangen und dann gesendet werden: 0,30 7-17 * * 1-5 root /usr/bin/fetchmail -a -v >> /var/log/fetchmail 2>&1 && /usr/sbin/sendmail -q (Die Pfade sind ggf. anzupassen) Sendmail schickt in dieser Konfiguration die Mails auch erst dann raus, wenn fetchmail mit dem Empfang fertig ist. Dadurch können auch Konten auf Servern mit SMTP-after-POP Authentifizierung bedient werden. Zuhilfenahme des ip-up SkriptesIn meiner SuSE waren die Einträge im /etc/ppp/ip-up schon vorgesehen. Falls dies nicht der Fall sein sollte, ist der folgende Eintrag dort vorzunehmen: /usr/bin/fetchmail -a -v >> /var/log/fetchmail 2>&1 && /usr/sbin/sendmail -q Und nun viel Spass und Erfolg mit dem neuen lokalen Mailserver!! nach obenCopyrightCopyright 2001 by Leander Kirstein-Heine, Computer & Network Consulting, Engelplatz 11, D-07743 Jena Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. A copy of the license is included in the section entitled "GNU Free Documentation License".Dieses Dokument stammt aus den www.linuxforen.de und wurde gemäß den Lizenzbestimmung designmäßig bearbeitet von: Baitronic | ||||||||||||||||||||||||||||||||||||||
| Autor: Leander Kirstein-Heine |