Dieser Beitrag stammt von http://www.linuxnetmag.de


Post verteilen mit fetchmail

Sie haben mehrere Mail-Accouts, oder mehrere Benutzer, die auf ihrem PC Arbeiten und alle e-mail benutzen wollen?
Oder auch wenn sie das gesamte lokale Netz mit Post aus dem Internet versorgen wollen, 
ist fetchmail das Programm, um derartige Prozesse zu automatiseren.

Automatismen

Der typische Windows Anwender ließt und schreibt seine Post mit Netscape oder IE. Mit diesen Programmen kann man dann auch die Post aus dem Internet herunterladen.
Unter Linux kann man genauso vorgehen, aber da Linux ein Mehrbenutzersystem ist, ist dieses Verfahren nicht mehr Praktikabel, sobald mehrere Personen an einen Rechner e-mail benutzen.
 
 

Einer für alle

Mit fetchmail kann man den Download der Post automatisieren. Fetchmail kann dabei für einen Rechner die Post aller Benutzer verwalten, oder sogar mit etwas weiterer Konfiguration das ganze lokale Netz (LAN) mit Post versorgen,oder für eine einzlene Person mehrere Post-Accounts verwalten.
Fetchmail ist bei den meisten Distributionen standardmäßig installiert, ansonsten muß dieses nachgeholt werden (bei S.u.S.E. das Paket fetchmail.rpm im aus dem Verzeichnis n (Netz) installieren). Nachdem man das Paket installiert hat, muß nur noch die Konfigurationsdatei angepaßt werden.
Für den Benutzer root wird die datei .fetchmailrc angelegt, falls diese noch nicht existiert:

>> touch .fetchmailrc

und diese Datei dann entsprechend angepaßt:
 

Datei /root/.fetchmairc

#.fetchmailrc
# poll POPSERVER protocol POP3 
# user REMOTEUSERNAME to LOCAL_USERNAME 
# password REMOTEPASSWORD
#
#Erster Account
poll pop.meinpopserver.com protocol POP3 user meinmailname to meinlocalername password meinpasswort
# zweiter Account
poll pop.meinpopserver2.com protocol POP3 user meinmailname2 to meinlocalername  password merinpasswort2

In dieser Datei wird für jeden Benutzer angegeben, von wo die Post abgeholt werden soll, und an welchen Benutzer auf dem lokalen Rechner die Post weitergeleitet wird. 
Die Konfiguration sollte dabei pro Account je eine Zeile angelegt werden. 
Die Zeile beginnt mit poll, gefolgt mit dem Server im Internet, von dem die Post abgeholt werden soll. Danach spezifiziert man das Protokoll. Hierbei handelt es sich meistens um einen POP3 Server.
Mit user wird angegeben, wie der Name auf dem Pop3-Server lautet. Dies ist der Teil, der in der e-mail-Adresse vor dem "@" steht. 
Danach muß das Programm noch wissen, an welchen lokalen User die Post weitergeleitet wird. Hierfür wird hinter to der Name angegeben, mit dem sich der entsprechende User auf dem lokalen Rechner einloggt. Natürlich wird auch noch das Passwort benötigt mit dem die Post auf dem Pop3-Server geschützt ist.


Da in der Konfigurationsdatei die Passwörter unverschlüsselt abgeleg werden, darf diese Datei nur vom Root lesbar sein.  Wenn dies nicht der Fall ist, macht einen fetchmail sofort darauf aufmerksam.
Mit

>> chmod og-xrw ~/.fetchmailrc

kann man die Datei für andere Benutzer sperren.
Wenn man nun auf mehreren POP3-Server seine Post hat, ist es kein Problem mit einem weiteren Eintrag, auch von den weiteren Rechnern die Post zu holen und an den selben lokalen Benutzer weiterzuleiten.
Für weitere Benutzer auf dem lokalen System, wird einfach nur ein weiterer Eintrag in der .fetchmailrc angelegt.
Die heruntergeladene Post wird vom Programm erstmal im Verzeichnis /var/spool/mail/ zwischengespeichert. Für jeden Benutzer wird dort eine Datei angelegt, in der sich die Post ansammelt. Nun kann man mit einem beliebigen Mail-Programm seine Post lesen. Man muß nun nur als Pop3-Server den lokalen Rechner angeben (localhost oder 127.0.0.1)  Damit wird die Post statt aus dem Internet vom eigenen Rechner geladen, und man benötigt keine stehende Verbindung ins Netz.
 

Dämonen nehmen Arbeit ab

Nur wie startet man jetzt das Programm, um die Post herunterzuladen?
Zum ersten Testen stellt man ganz normal seine Verbindung zum Internet her, und startet dann das Programm von Hand mit dem Befehl

>> fetchmail -a

mit diesem Befehl wird die Post aus dem Internet geladen, auf diesem Server nach dem herunterkopieren gelöscht, und auf dem lokalen pop3-Server zwischengelagert.
Falls Probleme auftreten, sollte man zusätlich die Option -v benutzen, weil somit genauere Informationen über den Verbindungsaufbau geliefert werden, und man schneller den Fehler findet.
Sobald fetchmail fehlerfrei arbeitet, kann man das Programm als Deamon im Hintergrund arbeiten lassen. Dies geschieht mit dem Befehl

>> fetchmail -d 300

Dabei gibt die Zahl an, in welchen Zeitabständen in Sekunden nach neuer Post geschaut werden soll.
Da dies nur Sinn macht, wenn auch eine Internetverbindung besteht, sollte das Programm erst nach einem Verbindugsaufbau gestartet werden.
Durch einen Eintrag in die Datei /etc/ppp/ip-up kann dies erreicht werden.
Neben den anderen Befehlen, die hier ausgeführ werden, sollte auch die Befehle "fetchmail -quit" und "fetchmail -d 300" stehen, um erstmal einen möglicherweise noch laufenden fetchmail zu beenden, und danach den fetchmail in dem eigenen Intervall zu starten.
Nach Abbaud der Verbindung kann fetchmail wieder gestoppt werden, mit einem Eintrag in der Datei /etc/ppp/ip-down in der Form "fetchmail -quit"
wird dieses erreicht.
Somit startet fetchmail beim Einwählen ins Netz automatisch und beendet sich beim Auswählen. Der Mail-Transport ist somit komplett automatisiert.

Wie man nun mit fetchmail das gesamte lokale Netz versorgen kann, folgt in der nächsten Ausgabe von LinuxNetMag.

 


  

Wir basteln uns einen POP3-Server

Nachdem wir in der letzten Ausgabe mit fetchmail nur die Benutzer am lokalen PC mit Post versorgt haben, wollen wir nun für das gesamte heterogene Netzwerk einen Postserver (Protokoll POP3) bereitstellen. Der hierbei aufgezeigte Weg eignet sich besonders für kleinere Netzwerke, die nicht ständig mit dem Internet verbunden sind.  

Netztopologie

 

Der Aufbau unseres gedachten Netzwerks ist ungefähr folgender:
Ein Linuxrechner ist zuständig für den Aufbau einer zeitweiligen Internetverbindung, und an diesen Rechner sind weitere PCs (Windows, Macintosch, OS/2 und Linux) angeschlossen.
 
 

Rechner anmelden

Für diejenigen Benutzer, die an dem Linux-Rechner arbeiten, der auch die Verbindung zum Internet herstellt (also für den Fall, daß dieser Rechner nicht als reiner Server benutzt wird, sondern gleichzeitig auch als Client), erfolgt die Konfiguration analog wie im ersten Teil unseres Berichts. Also .fetchmailrc anlegen, eintragen von "fetchmail -d 150" in die /etc/ppp/ip-up und schon ist man fertig.
Nun soll dieser Rechner aber auch für andere Benutzer aus dem Netz zuständig sein, die der Linuxmaschine bisher noch unbekannt sind (d.h. sie  können sich nicht auf dem Linux-Server einloggen). Deshalb müssen wir diese ersteinmal unter Linux anmelden. Am einfachsten geschieht dies mit Hilfe von Yast. Unter

  • Administration des Systems
    • Gruppenverwaltung

erhalten wir die Möglichkeit neue Buntzergruppen anzulegen. Wir wollen hier eine Benutzergruppe anlegen, in der alle Personen, die nur POP3-Zugriff auf den Server erhalten, gesammelt werden sollen. Deshalb legen wir, falls noch nicht vorhanden eine Gruppe mit dem Namen "mailer" an.
Nun können die einzelnen Benutzer angelegt werden. Dies geschieht mittels Yast unter

  • Administration des Sytems
    • Benutzerverwaltung

Dort erhalten wir die Möglichkeit einen neuen Benutzer anzulegen. Dies verläuft eigentlich genauso, als wenn man normale Benutzer für den lokalen Rechner anlegt. Die Gruppe ist die erzeugte Gruppe "mailer". Als home-Verzeichnis erhalten die Personen das /tmp Verzeichnis (man könnte auch /dev/null benutzen),  da sie ja keine Daten auf dem Server auslagern sollen, und als Loginshell wird /bin/passwd benutzt. Somit erhalten die Benutzer keinen direkten Zugriff auf unser System, stattdessen bekommen sie auf diese Weise beim Login nur die Möglichkeit ihr Passwort zu ändern.
Ist diese Prozedur erfolgreich verlaufen, muß an der .fetchmailrc weitergearbeitet werden.
 
 

die /root/.fetchmailrc

Weil nun die Benutzer auf dem POP3-Server bekannt sind, können wir sie auch in die /root/.fetchmairc eintragen.
 
 

Datei /root/.fetchmailrc

poll mail.server.de protocol pop3 user PansenHansen to pansen password kuhdarm 
poll mail.server2.de protocol pop3 user kp123X2 to pop3master password midnight

Hierbei werden jetzt sowohl die lokalen Benutzer als auch diejenigen Benutzer eingetragen, die den Linuxrechner nur als POP3-Server benutzen.
Somit wird bei jeder Internetverbindung die Post aller Personen aus dem LAN heruntergeladen und auf dem Linux-POP3-Server zwischengespeichert.
 
 

Client Konfiguration

Damit die Benutzer anderer Betriebssysteme auf ihrem PC nun die Post lesen können, müssen sie in Netscape, IE, Outlook, oder welches Mail-Programm sie benutzen, als POP3-Server die IP-Nummer des Linux-PCs angeben. Denn ab nun übernimmt dieser statt eines Servers im Internet die Rolle des POP3-Server für das gesamt Netz. Als Passwort zum Zugriff auf die Post gilt jetzt das Passwort auf dem Linux-POP3-Server und auch der Benutzernamen entspricht dem auf dem Linux-Server. Damit die Antwortpost trotzdem ankommt, sollte man das Mailprogramm so konfigurieren, daß unter "Reply to address" die e-Mail-Adresse steht, die vom Internet aus erreichbar ist (z.B. xxx@gmx.de).
Durch diese Konfiguration ist es jetzt möglich, seine neue Post vom Linux-Server und nicht aus dem Internet zu holen. Es muß keine extra Verbindung mehr aufgebaut werden, nur weil ein einzelner Benutzer aus dem LAN seine Post lesen will.

Die Konfiguration auf einer Linux-Maschine läuft analog, nur kann man hier noch etwas die zusätzlichen Möglichkeiten von Linux ausnutzen.
 
 

Wenn der Server mal pausiert

In vielen privaten Netzwerken wird auch ein Server nachts ausgeschaltet. Leider kann dann von den anderen Rechner aus die Post nicht mehr gelesen werden. Zumindest nicht unter Windows, denn unter Linux gibt es abhilfe. Dort können wir derartige Probleme umgehen, indem wir auf dem Linuxclient auch einen POP3-Server installieren, der sich dann in regelmäßigen Abständen die Post vom eigentlichen POP3-Server holt und den lokalen Benutzern zustellt. Die Post wird somit von Server zu Server weitergereicht, sobald eine Netzwerkverbindung besteht. Falls der Server nicht aktiv ist, wartet der Client so lange, bis er wieder erreichbar ist, und holt sich sofort seine Post.
Dafür benötigt man natürlich wieder eine .fetchmailrc, die die Post vom Linux-POP3-Server holt und den lokalen Benutzern zustellt. (Die Konfiguration dieser Datei sollte mittlerweile bekannt sein). Zusätzlich sollte beim Booten immer der fetchmail-Deamon gestartet werden. Dies geschieht entweder durch einen Eintrag in /sbin/init.d/boot.local , wo am Ende der Eintrag "fetchmail -d 150" eingefügt werden muß, oder man schreibt sich (dies ist der sauberere Lösungsweg) ein Init-Script. Man kann auch durch einen regelmäßigen cron-Aufruf die Post nachschauen lassen.
So wird immer dann die Post zwischen beiden Linux-Maschinen ausgetauscht, wenn beide Recher eingeschaltet sind. Der Benutzer kann seine Post somit auch dann lesen, wenn der Linux-Server ausgeschaltet wurde.