Sie befinden sich hier: Hilfe / Howtos / Mail / Externe Mail lokal verteilen
Deutsch
2023-12-06

Content

HowTo um externe Mailaccounts lokal zu verteilen

Problemstellung:

 

Du lebst z. B. in einer WG (oder Familie), und es soll ein Mailserver die Mails von verschiedenen Accounts im lokalen Netzwerk verteilen. Dabei hat jeder einen eigenen Provider, beispielsweise gmx.de, web.de usw.

 

Vorraussetzungen:

 

Ein laufender eisfair mit Internetverbindung (vorzugsweise über fli4l).

 

Konfiguration auf dem eisfair:

 

Als allererstes sollten wir uns entscheiden, welches Protokoll wir benutzen wollen, IMAP4 oder POP3. IMAP4 hat den großen Vorteil, dass die Mails immer auf dem Server gespeichert werden und mit einem entsprechenden Client direkt auf dem Server angesehen werden. Im Gegensatz dazu werden bei POP3 die Mails auf den Client-PC (oder was auch immer) heruntergeladen und dort betrachtet. Hat jetzt z. B. ein Benutzer zwei Rechner, einen Arbeits-PC und ein Notebook oder einen Handheld, muss er sich die Mails also auf jedes seiner Geräte laden, er hat sie dann also doppelt. Noch schlimmer wird es, wenn die PCs alle als Mehrbenutzersysteme ausgelegt sind: um dann seine die Mails auf jedem System lesen zu können, muss sie auf jedem vorhanden sein! Diese Probleme umgeht man sehr elegant mit IMAP4, weshalb ich dessen Benutzung sehr empfehle. Für notorische Outlook Express Nutzer kann der POP3-Server zusätzlich noch aktiviert werden (OE hat eine erbärmliche, eigentlich gar nicht vorhandene IMAP4-Unterstützung). Als Client kann ich Sylpheed, www.sylpheed.org sehr empfehlen, gibt's für Windows und Linux.

In der Konfiguration sieht das so aus:

 

START_POP3='no' #POP3-Server wird nicht gestartet

START_IMAP='yes' #IMAP-Server wird gestartet

POP3IMAP_CREATE_MBX='yes'

POP3IMAP_USE_MAILONLY_PASSWORDS='no'

 

...CREATE_MBX bedeutet, dass der Server das modernere mbx-Format statt das mbox-Format zum Speichern der Mails benutzt. MAILONLY_PASSWORDS müssen nicht aktiviert werden, die Passwortüberprüfung erfolgt durch die lokalen Benutzerkonten. Weitere Informationen darüber bitte in der Doku nachlesen! Das gilt auch für die in diesem HowTo nicht beschriebenen Variablen, wenn ich alles erläutere, würde das den Rahmen sprengen.

 

Der nächste Schritt ist, die Benutzer anzulegen. Jeder lokale Mailaccount muss einen entsprechenden lokalen Benutzer haben, deshalb für alle Nutzer bitte so einen anlegen (als „eis“ einloggen, Punkt „User Administration“ wählen, usw., sollte klar sein). Die Passwörter darf jeder selbst wählen, oder der Admin vergibt sie, in einer WG vertraut man einander! Für unsere Konfiguration kommt dann folgendes zu Stande:

 

POP3IMAP_N='3' #Anzahl der Benutzer

POP3IMAP_1_USER='knuddel'

POP3IMAP_1_PASS='' #wird wegen ...MAILONLY_PASSWORDS='no' freigelassen

POP3IMAP_2_USER='kuschel'

POP3IMAP_3_USER='kruemel' #auf den Umlaut achten!!!

 

Das war eigentlich schon das, was die Nutzer dann am Ende bemerken, nämlich dass da jemand Mails für sie bereithält. Nun müssen diese Mails aber noch irgendwie herangeholt werden. Dazu wird das Programm „fetchmail“ benutzt, das von den Mailservern im Internet die Mails auf den lokalen Server holt. Dazu müssen wir es erstmal starten:

 

START_FETCHMAIL='yes'

 

In der Regel nutzen die im Internet stehenden Server POP3 als Protokoll, deshalb:

 

FETCHMAIL_PROTOCOL='POP3'

 

Die nächsten Parameter können so bleiben, interessant wird es dann wieder bei den Accounts. Im Beispiel oben hatten wir zwar drei Benutzer, das hat aber nichts mit der Anzahl dieser Accounts zu tun, hier stehen jetzt sämtliche E-Mail-Konten, die abgerufen werden sollen; ich nehme einfach mal vier Konten:

 

FETCHMAIL_N='4'

 

Die erste Variable ist der Mail-Server, von dem abgeholt werden soll, bei web.de z. B. mail.web.de:

 

FETCHMAIL_1_SERVER='mail.web.de'

 

Als nächstes kommen Benutzername und Kennwort:

 

FETCHMAIL_1_USER='benutzer1'

FETCHMAIL_1_PASS='kennwort1'

 

Und jetzt wird es interessant. Fetchmail gibt diese abgeholten Mails an „unseren“ SMTP-Server Exim weiter, dessen Konfiguration weiter unten beschrieben wird. Damit dieser sie aber korrekt zustellen kann, muss sie an den entsprechenden Nutzer weitergeleitet werden. Der wird in der nächsten Variable festgelegt:

 

FETCHMAIL_1_FORWARD='knuddel@home.lan'

 

Im Folgenden nenne ich die lokale Domain „home.lan“, anstelle dessen ist jede andere Domain denkbar, solange sie nirgendwo im Internet existiert. Ansonsten wird man an diese niemals eine Mail schicken können, und das ist vielleicht nicht so schön. Also irgendeinen Namen ausdenken, dahinter „.lan“ setzen und man ist auf der sicheren Seite. Domains wie home.de sind zu vermeiden

 

Die nächsten Variablen können wieder alle in Ruhe gelassen werden (bei FETCHMAIL_x_AUTH_TYPE bitte unbedingt mal das Handbuch durchlesen, wenn was nicht klappt könnte da ein Fehler liegen, in der Regel geht aber der Default-Wert).

Die nächste wichtige ist FETCHMAIL_x_KEEP. Diese Variable stellt ein, ob die Mails auf dem Server im Internet belassen werden sollen, bei volumenbeschränkten Mailboxen sollte sie auf 'no' gesetzt werden.

 

ACHTUNG! WICHTIG!

 

Wenn man keine Möglichkeit hat, eine vernünftige Backup-Strategie durchzuführen, droht hier Datenverlust! Sind die Mails erstmal auf dem Server, dann auch nur noch da. Schmiert dann die Festplatte ab sind sie für immer veschwunden! Also bitte vorher drüber nachdenken, als Admin von rasenden Mitbewohnern an den nächstbesten Baum geknüpft zu werden, ist keine besonders verlockende Vorstellung.

 

Um E-Mails in einem IMAP-Ordner effektiv zu sichern gibt es das archimap-Paket von Jürgen Edner, zur Zeit noch im dev-Bereich verfügbar.

 

Mit den nächsten beiden Accounts verfahren wir genauso, bitte die Server anpassen und, ganz wichtig, den Forwarder, also dort dann kuschel@home.lan bzw. kruemel@home.lan eintragen. Warum nur die nächsten beiden? Wir hatten doch vier eingestellt? Mit dem habe ich jetzt etwas spezielles vor.

 

Viele haben ja nicht nur eine E-Mail-Adresse, sondern vielleicht zwei oder drei. Diese verschiedenen Adressen können mittels FETCHMAIL_x_FORWARD an einen einzigen User weitergeleitet werden. Dazu stellt man einfach _SERVER, _USER und _PASS wie gewohnt auf die richtige Adresse ein, und dann schreibt man

 

FETCHMAIL_4_FORWARD='knuddel@home.lan'

 

Das wars. So bekommt der User knuddel alle Mails seiner Accounts zugestellt.

 

Als nächstes muss der SMTP-Server Exim konfiguriert werden. Natürlich wird er erstmal gestartet:

 

START_SMTP='yes'

 

Der Mailserver sollte natürlich auch einen Namen haben; dieser muss nicht mit dem Rechnernamen übereinstimmen, wäre aber angebracht:

 

SMTP_HOSTNAME='mail.home.lan'

 

Von Interesse ist dann wieder die Einstellung der „local domains“ (wie gesagt, für alle anderen Variablen bitte das Handbuch konsultieren). Für fetchmail haben wir ein paar Forwarder definiert, z.B. knuddel@home.lan. Damit Exim damit vernünftig umgehen kann und die abgeholten Mails nicht in der Queue versauern, müssen wir ihm mitteilen, das home.lan unsere lokale Domain ist. Zusätzlich wird noch der Server selber dort eingetragen, und zwar zwei Mal:

 

SMTP_LOCAL_DOMAIN_N='3'

SMTP_LOCAL_DOMAIN_1='@' #@ steht für SMTP_HOSTNAME

SMTP_LOCAL_DOMAIN_2='localhost'

SMTP_LOCAL_DOMAIN_3='home.lan'

 

Dann kommt wieder ein großer Bereich, den wir einfach so überspringen können, bis zu „server authentication“. Da wir keine Mails aus dem Internet weiterleiten (die Konfiguration haben wir übersprungen) und auch jeder aus dem Netz seine Mails über den Server schicken darf folgt daraus:

 

SMTP_AUTH_TYPE='none'

 

Und jetzt kommen wir zu den Smarthosts. Dazu sollte ich vielleicht noch etwas erklären. Jeder Mail-Provider hat auch einen SMTP-Server bei sich stehen. Damit aber auch wirklich nur diejenigen Benutzer Mails über diesen verschicken können, die registriert sind, weigert er sich einfach, Mails, die nicht seine Domain im Absender tragen, weiterzuleiten. Das, so die Provider, verhindere Spam (kann ich nicht nachvollziehen, bei mir kommt immer noch genug an), ist für unsere Zwecke aber sehr hinderlich. Denn das würde ja bedeuten, das für jede E-Mail-Adresse ein eigener SMTP-Server eingetragen werden muss. Das ist nicht nur eine Menge Arbeit, sondern auch noch fehleranfällig, in dem Chaos was entsteht muss man so einen Fehler erstmal finden.

 

Da kommt jetzt das System der Smarthosts, besser des Smarthosts, ins Spiel. Es gibt nämlich andere Provider, z. B. Webhoster, die Ihre SMTP-Server mit Benutzername und Passwort blocken, denen aber herzlich egal ist, welche Adressen denn nun wirklich weitergeleitet werden – der Benutzer zahlt ja schließlich in der Regel dafür. Hat einer zufällig Webspace und eine Domain bei so einem Anbieter, Strato oder 1&1 vielleicht? Ja? Dann hat dieser nun folgende hehre Aufgabe: er erstellt eine E-Mail-Adresse mit seiner Domain,foo@domain.de und merkt sich Benutzername und Passwort. Die brauchen wir nämlich gleich.

Als allererstes sagen wir Exim, dass für alle Adressen ein SMTP-Server, der Smarthost genutzt wird:

 

SMTP_SMARTHOST_ONE_FOR_ALL='yes'

 

Dann kommen die Daten dieses einen Hosts:

 

SMTP_SMARTHOST_N='1' #klar, wir brauchen ja nur einen

SMTP_SMARTHOST_1_HOST='smtp.domain.de'

SMTP_SMARTHOST_1_AUTH_TYPE='login' #bitte DOKU lesen

SMTP_SMARTHOST_1_ADDR=''

SMTP_SMARTHOST_1_DOMAIN=''

SMTP_SMARTHOST_1_USER='foo@domain.de' #bzw. der Benutzername

SMTP_SMARTHOST_1_PASS='geheim' #und sein Passwort

 

Das wars eigentlich schon. Wenn niemand so einen Server zur Verfügung stellen will oder kann, dann bitte in die Doku schauen, da stehen auch einige Beispiele drin die sicherlich helfen.

 

Das nächste wären SMTP-Aliases. Da lassen wir alles so, nur tragen wir bei

 

SMTP_ALIASES_1_ALIAS_1='root: knuddel'

 

den Admin, in diesem Fall knuddel, als Empfänger von Mails für root ein. Das sind Meldungen des Systems, Statistikmails, alles was nur für den Admin ist und unbedingt zugestellt werden sollte.

 

Jetzt haben wir nur noch ein Problem: in den Mailclients (Beschreibung unten) wird die Absenderadresse als user@home.lan angegeben. Das ist ziemlich ungünstig, weil der Empfänger dann diese Adresse im „Von“-Feld sieht. Damit kann und soll er aber nichts anfangen.

Dafür gibt es die Variablen SMTP_OUTGOING_ADRESSES..., die die Absenderadresse bei Mails nach draußen verändert. Das sieht dann folgendermaßen aus:

 

SMTP_OUTGOING_ADRESSES_N='3'

SMTP_OUTGOING_ADRESSES_1='knuddel: knuddel@web.de'

SMTP_OUTGOING_ADRESSES_2='kruemel: kruemel@gmx.de'

SMTP_OUTGOING_ADRESSES_3='kuschel: kuschel@freenet.de'

 

Das wärs auf dem Server, stehen noch die Clients an.

 

Konfiguration der Mailclients

 

Es ist eigentlich ganz einfach. Es wird ein neues Konto eröffnet, Protokoll IMAP4 (hier in unserem Fall), Benutzername und Passwort wie auf dem Server eingestellt, als E-Mail-Adresse die des lokalen Benutzers (also z.B. knuddel@home.lan), IMAP4-Server ist mail.home.lan, SMTP-Server ebenfalls. Im Adressbuch eines jeden Benutzers sollten dann die lokalen User nur mit Ihren Benutzernamen eingetragen sein, also knuddel@home.lan, kuschel@home.lan und kruemel@home.lan. Mails werden so direkt lokal verteilt, gut für kurze Nachrichten. Für Nachrichten nach „draußen“ werden die Adressen dann mit den oben beschriebenen SMTP_OUTGOING_ADRESSES... umgeschrieben.

 

Das wars. Ist gar nicht so schwer, wie es erst aussieht. Viel Spaß beim Ausprobieren!

 

Gruß

Jochen

 

P. S.: Beim „Ausprobieren“ aber bitte FETCHMAIL_x_KEEP auf 'yes' belassen, denn sonst...

 

Dank an Jürgen Edner, der mir bei der ersten eigenen Konfiguration unter die Arme gegriffen und dieses How-To berichtigt bzw. verbessert hat, sowie natürlich auch an alle anderen in der Newsgroup die mir geholfen haben.

 

Berichtigungen, Anregungen, sonstiges an mail [at] jochenfabricius [dot] de