Anzeige:
Ergebnis 1 bis 1 von 1

Thema: Lokalen Mailserver einrichten

  1. #1
    Premium Mitglied Avatar von mightymike99
    Registriert seit
    Aug 1999
    Beiträge
    374

    Post Lokalen Mailserver einrichten

    PDF+HTML am Ende
    Code:
    *** Netzwerk: Lokaler Mailserver ****
    ***** 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
    ==========================================
    
    **** Voraussetzungen ****
    
    Im folgenden wird davon ausgegangen, dass...
       1. alle benötigten Programme installiert sind:
              o sendmail (>=Version 8.10.x) (ist in Regel bereits installiert, wenn
                nicht hier die Homepage)
              o fetchmail
              o (ist auch idR schon installiert, hier
              o die Homepage)
              o procmail
              o popper(Ist nicht unbedingt installiert. hier die Homepage)
       2. eine Verbindung zum Internet besteht.
       3. ein Postfach bei einem Provider vorhanden ist.
    
    **** Aufgaben des Mailservers ****
    
    Der 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 Beispielumgebung ****
    
    Jetzt 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:
    Lokales Netz:          192.168.11.0/24
    Lokale Domain:         intra.net
    Mailservername:        mail
    FQDN des Mailservers:  mail.intra.net
    IP des Mailservers:    192.168.11.6
    Benutzerinformationen: sabine, info@inter.net, Passwort "info"
                           max, support@inter.net, Passwort "support"
                           claudia, billing@inter.net, Passwort "billing"
                           Universalanlaufstelle, internet@inter.net, Passwort
                           "Internet"
    IP's im LAN:          192.168.11.1 ... 192.168.11.3
    Entferntes Netz:       dynamisch
    Internetdomain:        inter.net
    Mailserver:            mail.inter.net
    Das Konto Internet ist ein "catch-all"-Postfach, dass alle sonstigen Mails
    aufnimmt, die keinem dort angelegten Benutzer zuzuweisen sind.
    Für jeden lokalen Empfänger muss natürlich ein Benutzer angelegt sein. Folgende
    Regeln sollen für die Zustellung gelten:
        * Sabine ist die Sekretärin und bekommt die Mails für info und das catch-
          all-Postfach.
        * Max macht den Support und bekommt die Mails für support.
        * Claudia macht die Buchhaltung und bekommt die Mails für billing.
    
    **** Funktionstest des Mailservers ****
    
    Nach 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
    Subject: Willkommen
    STRG+D beendet die Texteingabe
    Use "." to terminate letter
    Willkommen auf dem lokalen Mailserver.
    .
    EOT
    mail:~ #
    
    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 /var/spool/mail. Ein ls -
    l müsste u. a. folgenden Eintrag liefern:
    
    -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 /var/spool/
    mqueue. Die Eingabe von
    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 konfigurieren ****
    
    *** Allgemeines ***
    
    Ist 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 -bd beim Aufruf gewährleisten dies. Beim Aufruf lässt
    sich auch steuern, ob sendmail in regelmässigen Abständen eine eventuell
    vorhandene Warteschlange an den Provider senden soll. Dies regelt der Parameter
    -q (z. B. -q30m bedeutet, dass sendmail alle 30 Minuten schaut, ob Mails zu
    versenden sind und diese dann auf den Weg bringt; mit -q1h wird dies stündlich
    erledigt.) Diese Einrichtung des sendmail-Daemons ist abhängig von der
    Distribution (bei SuSE über die /etc/rc.config, bei RedHat über die /etc/
    sysconfig/sendmail).
    Für die eigentliche Konfiguration ist die Datei /etc/sendmail.cf zu erstellen
    und dann zu editieren. Da alle mir bekannten Distributionen schon eine
    vorgefertigte sendmail.cf liefern, werde ich auf die Erstellung über eine m4-
    Konfigurationsdatei nicht weiter eingehen.
    Gehen wir also zum Editieren der /etc/senmail.cf über (dazu sollte man wissen,
    dass es unterhalb von /etc noch ein Verzeichnis mail gibt, in dem weitere
    Konfigurationsdateien liegen). Im folgenden werde ich nur die relevanten
    Ausschnitte zeigen.
    
    *** Lokale Hostnamen festlegen ***
    
    ##############
    # local info #
    ##############
    # file containing names of hosts for which we receive email
    Fw-o /etc/mail/sendmail.cw %[^#]
    
    In der Datei /etc/mail/sendmail.cw werden alle Hostnamen eingetragen, die als
    lokal betrachtet werden sollen, in unserem Falle also neben dem obligatorischen
    localhost die Domäenen inter.net und intra.net. Dazu erstellen Sie in die Datei
    /etc/mail/sendmail.cw mit folgendem Inhalt:
    
    localhost
    inter.net
    intra.net
    
    *** Weiterleitung zum Provider ***
    
    Nun wieder zurück zur /etc/sendmail.cf:
    
    # "Smart" relay host (may be null)
    DSmail.inter.net
    
    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)
    FR-o /etc/mail/relay-domains %[^#]
    
    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.net
    intra.net
    
    *** unqualifizierte Empfänger miteinbeziehen ***
    
    Da 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)
    DRmail.intra.net
    # who gets all local email traffic ($R has precedence for unqualified names)
    DHmail.intra.net
    
    *** Absenderadressen maskieren ***
    
    Würden von jetzt ab Mails an den SMTP-Server des Providers geschickt, hätten
    diese als Abenderadresse "benutzer@mail.intra.net". Da dies kein Provider
    akzeptieren würde, müssen wir die ausgehenden Mails noch maskieren:
    
    # who I masquerade as (null for no masquerading) (see also $=M)
    DMinter.net
    
    Nun verlassen die Mails den Server mit der Absenderadresse
    "benutzer@inter.net".
    
    *** Abliefereinstellungen ***
    
    Sollten beim ersten Test des Mailversands die lokalen Mails nicht direkt
    zugestellt worden sein, ist der wahrscheinlich noch der falsche "delivery
    mode" eingestellt:
    
    # default delivery mode
    O DeliveryMode=background
    
    Im Hintergrundmodus (background) werden lokale Mails sofort versandt.
    
    *** Verbindungsaufbau zum Internet steuern ***
    
    Standardmässig baut sendmail gerne Verbindungen zum Internet auf. Bei teuren
    Wählverbindungen kann dies ungewollt sein kann man mit folgenden Einträgen
    unterbunden werden:
    
    # avoid connecting to "expensive" mailers on initial submission?
    O HoldExpensive=True
    # service switch file (ignored on Solaris, Ultrix, OSF/1, others)
    O ServiceSwitchFile=/etc/mail/service.switch
    
    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 files
    aliases 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 erlauben ***
    
    Bis 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 access.db eingetragen sein.
    Diese wird aus der Datei access gebildet. Diese Dateien liegen wieder unterhalb
    von /etc/mail. Zum Erstellen der access.db ist zuerst die Datei access zu
    editieren:
    
    intra.net RELAY # alle Rechner der Domain dürfen
    inter.net RELAY
    pc1.intra.net RELAY # dieser Rechner darf
    192.168.11 RELAY # das ganze lokale Netz darf
    
    Die Datei ist gut dokumentiert; über sie kann auch ein Spamfilter realisiert
    werden. Sind alle Eintragungen gemacht, ist die access.db aufzubauen mit:
    
    mail:~ #makemap hash -f /etc/mail/access.db < /etc/mail/access
    
    Nach eine Neustart des Maildaemons (mit rcsendmail restart unter SuSE, /sbin/
    service sendmail restart unter RedHat etc.) steht nun einem Versand nichts mehr
    im Wege.
    
    *** Aliase für lokale Adressen einrichten  ***
    
    Die 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 /etc/mail/aliases erforderlich:
    
    info sabine
    support max
    billing claudia
    
    Nach der Ergänzung werden diese durch den Aufruf von newalisases wirksam. Ein
    Eintrag in der /etc/mail/virtusertableist nicht nötig, das die externe Domain
    ebenfalls als lokal angesehen wird.
    
    **** Abholung der Mail ****
    
    Der nächste Punkt, der in Angriff genommen werden muss, ist die Abholung der
    Mail:
    
    *** Mail beim Provider abholen: fetchmail ***
    
    Dies erledigt man am einfachsten mit fetchmail. Dazu ist im Homeverzeichnis des
    Benutzers, der die Abholung vornimmt, die Datei .fetchmailrc nach folgendem
    Muster anzulegen:
    
    poll mail.inter.net protocol POP3 localdomains inter.net
         user info password info to sabine here
    poll mail.inter.net protocol POP3 localdomains inter.net
         user support password support to max here
    poll mail.inter.net protocol POP3 localdomains inter.net
         user billing password billing to claudia here
    poll mail.inter.net protocol POP3 localdomains inter.net
         user internet password internet to sabine here
    
    In diesem Fall soll fetchmail von root aufgerufen werden, die Datei liegt also
    im Verzeichnis /root. Fetchmail startet nur, wenn sichergestellt ist, dass nur
    der Besitzer die Datei lesen kann (immerhin werden dort die Passwörter im
    Klartext eingetragen). Daher ist mit
    
    mail:~ #chmod 0600 .fetchmailrc
    
    Schreib- und Leserechte nur für den Besitzer einzustellen. Danach kann die
    Konfiguration ausprobiert werden:
    
    mail:~ #fetchmail -k -a -v >>/var/log/fetchmail 2>&1
    
    Durch 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 die Protokolldatei /var/log/fetchmail nachgeschaut
    werden, was passiert ist. Nachdem etwaige Fehler behoben wurden, könnten nun
    die Mails von den Clients an den Arbeitsstationen abgeholt werden.
    
    *** POP3-Server konfigurieren ***
    
    Um Mails von den lokalen Arbeitsstationen abholen zu können, muss auf dem
    Server in der /etc/inetd.conf folgender Eintrag auskommentiert 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 popper ein (ggf. mit locate danach suchen). Ist der popper
    nicht zu finden, muss er nachinstalliert werden.
    
    *** Clientconfiguration durchführen ***
    
    Nun sind nur noch die Mailclients zu konfigurieren, hier am Beispiel für Sabine
    
    (info@inter.net):
    Name:        Sabine Irgendwie
    E-Mail:      info@inter.net
    SMTP-Server: 192.168.11.6
    POP3-Server: 192.168.11.6
    Login:       sabine
    Passwort:    *****(sabine's Passwort bei mail)
    
    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! Nun kann man gleich auch den Versand 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.
    
    **** Automatisierung des Mailversands und -empfangs ****
    
    *** Zeitgesteuerte Abarbeitung per cron ***
    
    In 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 mit SMTP-
    after-POP bedient werden.
    
    *** Zuhilfename des ip-up Skriptes ***
    
    In meiner SuSE waren die Einträge im /etc/ppp/ip-up schon vorgesehen. Falls
    dies nicht der Fall sein sollte, ist der folgende Eintrag vor ip-down
    einzutragen.
    
    /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!!
    ======================================
     Copyright 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".
    Geändert von mightymike99 (25.01.02 um 04:23 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •