E-mail mit UUCP: Die professionelle Lösung für Nutzer mit einer
Dial-Up Internet Verbindung
ArticleCategory: [Do not translate this]
System Administration
AuthorImage:[Do not translate this]
TranslationInfo:[Do not translate this]
original in en Guido
Socher
en to de Sebastian Stein
AboutTheAuthor:[Translate the paragraph below]
Guido benutzt UUCP schon seit vielen Jahren und er ist der Meinung,
dass dies der beste Weg ist, um ein lokales Mailsystem mit dem
Internet zu verbinden.
Abstract:[Translate the paragraph below]
UUCP gehört zu den ältesten Protokollen des Internets.
Heute wird es in vielen Bereichen durch modernere Protokolle ersetzt,
aber es bleibt weiterhin eine der besten Möglichkeiten, um
Emails über eine Dial-Up Verbindung zu senden und zu empfangen.
Leider sind sich viele Nutzer von Dial-Up Verbindungen der
Möglichkeiten, die ihnen UUCP bietet, nicht bewusst und fordern
deshalb diesen Service nicht. Daraus resultiert, dass weniger
serviceorientierte Provider UUCP heutzutage gar nicht mehr anbieten.
ArticleIllustration:[Do not try to translate this]
ArticleBody:[Translate everything below]
Einführung
UUCP ist ein schon sehr altes Protokoll und wurde ursprünglich
dazu benutzt, alle möglichen Dateien zwischen Unixsystemen zu
kopieren. Daher stammt auch der Name: "Unix to Unix Copy".
Diese frühen Computersysteme waren nicht ständig über
ein Netzwerk verbunden. Stattdessen wurden Dial-Up Modems für die
Verbindungen genutzt, die in regelmäßigen Intervallen einen
Transfer durchführten.
Um z.B. die Datei mynotes.txt auf ein über Netzwerk erreichbares System
"mars" zu kopieren, hätte man folgendes Kommando benutzt:
uucp mynotes.txt mars!~/mynotes.txt
Zuerst wurden die Daten in ein temporäres Verzeichnis, ein sogenanntes
"spool directory", kopiert. Erst nachdem eine Dial-Up Verbindung hergestellt
wurde, fand der eigentliche physikalische Transfer statt.
Heutzutage wird UUCP für diese Anwendung kaum noch benutzt.
Modernere Protokolle wie TCP/IP und Werkzeuge wie scp sind heute
verfügbar, um Dateien zwischen Computersystemen zu kopieren.
Aber UUCP kann noch mehr. So ist es z.B. möglich, eine begrenzte
Anzahl von Befehlen auf dem anderem System auszuführen. Um z.B.
auf dem entfernten System "mars" das Kommando "rnews" mit Daten von
der lokalen Standardeingabe auszuführen, hätte man folgenden
Befehl genutzt:
cat somedata.txt | uux - mars!rnews
Um es noch einmal zu verdeutlichen: Das Kommando rnews wäre erst auf
dem System "mars" ausgeführt worden, wenn eine Dial-Up Verbindung
hergestellt wurde. Bis dahin wurde der Befehl in dem temporären
Verzeichnis zwischengespeichert.
Aber was hat das alles mit Email zu tun?
Typischerweise ist Email eine Anwendung, bei der es nicht so wichtig ist,
ob die Sendung der Daten etwas verzögert wird. Normalerweise geht man
durch seine neuen Mails und beantwortet einige. Erst dann gibt man den
Sendebefehl. Es wäre im Gegenteil eher umständlich, wenn man alle
Fenster mit zu versendenden Emails so lange offen lassen müsste, bis
eine Verbindung zum Internet über den Provider hergestellt wurde.
Man will die Email versenden und das Fenster damit schließen. Ob
tatsächlich gleich ein Transfer stattfindet, ist nicht so wichtig,
solange die Emails auch wirklich später versendet werden.
Das ist genau die Aufgabe, die man hervorragend und zuverlässig mit
UUCP erledigen kann.
Das eigene Mailsystem
UUCP ist flexibel. Man kann es so konfigurieren, dass man einen eigenen
Mailserver für ein ganzes Netzwerk hat. Ein Linuxcomputer kann das
zentrale Mailsystem sein, das ein privates lokales Netzwerk
(LAN) mit verschiedenen Computern und Betriebssystemen mit Emails versorgt:
Einen Mailserver auf diese Art und Weise zu konfigurieren, ist für
eine Familie sehr bequem und für eine kleine Firma kostenschonend
hinzu. Man kann Email-Zugänge für eine unbegrenzte Anzahl von
Nutzern anbieten mit nur einer Dial-Up Internet Verbindung. Eine Firma
würde die Verbindung sicher automatisch in gewissen Abständen,
z.B. jede Stunde, herstellen, während Privatleute dies nur tun
würden, wenn sie aus einem anderem Grund online gehen.
Um es zusammenzufassen: Email über UUCP ist nicht etwas altes und
angestaubtes. Im Gegenteil, es ist eine sehr bequeme, kostengünstige
und clevere Anwendung von UUCP.
Wie funktioniert es?
Um UUCP zu nutzen, muss der Internet Service Provider (ISP) eine MX Domain
vergeben (MX = Mail Exchanger, Domain Name - Teil der Email Adresse). So
würde z.B. der ISP mit der Homepageadresse www.my-friendly-isp.com seinem
Kunden Joe Miller die Domain miller.my-friendly-isp.com geben. Alle Mail
an diese Domain würde an Joe Millers Mailserver unter der Zuhilfenahme
von UUCP gesendet. Joe könnte dann beliebig viele Nutzer konfigurieren:
joe@miller.my-friendly-isp.com, diana@miller.my-friendly-isp.com,
frank@miller.my-friendly-isp.com ... Dafür ist allein Joe verantwortlich.
Da der Linux Mailserver verschiedene Protokolle wie POP, IMAP, NFS oder
Mail Box unterstützt, ist es völlig egal, welches Betriebssystem
oder welche Software der Nutzer einsetzt, um seine Emails abzurufen.
UUCP ist ein eigenständiges Protokoll und man könnte es direkt auf
Hardwareebene betreiben (z.B. über eine Modemverbindung ohne
PPP Protokoll). Natürlich kann man es auch über TCP/IP nutzen und
das eröffnet einem weitere Möglichkeiten:
So reicht es nämlich aus, wenn man einen sehr guten ISP irgendwo auf der
Welt hat (z.B. in Amsterdam) und sich über einen beliebigen
preisgünstigen lokalen ISP mit dem Internet verbindet. Da UUCP über
TCP/IP möglich ist, spielt der physische Ort des Email/UUCP ISP keine
Rolle. Man kann diesen von überall auf der Welt über das Internet
erreichen.
Die nötigen Einstellungen vornehmen
Die meisten Linux Distributionen beinhalten bereits ein Paket mit dem Namen
uucp und es enthält normalerweise Trailer UUCP. Falls es nicht auf
den CDs zu finden ist, kann man es auch unter folgender Adresse laden:
www.airs.com/ian
Neben dem UUCP Paket braucht man noch ein Mailsystem, dass mit UUCP
zusammenarbeiten kann. Ich werde in diesem Artikel Sendmail beschreiben,
aber die meisten Mailsysteme sollten mit UUCP zusammenarbeiten. Ein
Mailsystem, dass mit UUCP arbeiten kann, stellt das Kommando rmail
in einem der rpm oder deb Pakete zur Verfügung.
Emails werden zum eigenen System über die entfernte Kommandoausführung verschickt, ähnlich wie oben im uux/rnews Beispiel
beschrieben. rmail ist das Kommando, dass die Emails über die UUCP
"pipe" empfängt und in das lokale Mail System einschleust.
Die folgenden Informationen werden vom ISP benötigt, der den Zugang
anbieten soll:
- Der Name der gewünschten MX Domain, z.B.
miller.my-friendly-isp.com
- Der Login Name für die UUCP Verbindung
- Das Passwort für die UUCP Verbindung
- Der Name des eigenen UUCP Systems. Eine kurze Zeichenkette,
z.B. der eigene Rechnername (hostname).
- Kontaktinformationen für administrative Fragen und allgemeine Mails,
im Normalfall der Postmaster
- UUCP über IP? An dieser Stelle ja sagen und keinen Provider
wählen, der das nicht anbietet, denn es wird ja Email über UUCP
und damit UUCP über IP angestrebt!
Die vom ISP benötigten Daten:
- Der Domainname des Servers, mit dem man sich über UUCP verbinden
kann. Das könnte z.B. etwas der Art uucp.my-friendly-isp.com sein.
- sein UUCP System Name
Den Zugang Schritt für Schritt testen
UUCP über TCP/IP nutzt TCP Port 540 und man kann ganz einfach den
Zugang testen, bevor man die eigentliche UUCP Konfiguration vornehmen muss.
Dadurch kann man sicherstellen, dass der ISP keine Fehler gemacht hat und man
die richtigen IDs und Passwörter hat. Dazu folgender Befehl:
telnet uucp.my-friendly-isp.com 540
Darauf sollte etwa folgendes erscheinen:
Trying 1.2.3.42...
Connected to uucp.my-friendly-isp.com
Escape character is '^]'.
login:
Tippe den Loginnamen und das Passwort:
Trying 1.2.3.42...
Connected to uucp.my-friendly-isp.com
Escape character is '^]'.
login: linux
Password: tux.1234
Shere=mfic
Nach einem erfolgreichen Login antwortet das System mit "Shere". Das steht
für System gefolgt vom Systemnamen des entfernten Systems. (mit Angaben
des ISPs vergleichen)
Um die Verbindung zu beenden crtl-] und am telnet Prompt "q" eingeben:
^]
telnet> q
Connection closed.
Nun ist bekannt, dass der Zugang korrekt konfiguriert wurde.
Das eigene UUCP System konfigurieren
Um Emails über UUCP zu empfangen und zu senden, müssen die
richtigen Daten in die UUCP Konfigurationsdateien eingetragen werden.
Die Dateien befinden sich meistens in /etc/uucp. Folgende Dateien
müssen bearbeitet werden:
- call -- beinhaltet Login/Passwort
- sys -- Diese Datei definiert, wie ein entferntes System zu erreichen ist,
in unserem Fall also TCP/IP.
- port -- Gibt den Port 540 für TCP Verbindungen an.
- config -- die restlichen Einstellungen
Alle Dateien müssen dem Nutzer uucp und der Gruppe uucp gehören. Die
Dateien müssen nicht für alle lesbar sein (chmod 640 call).
Die Logdateien werden normalerweise unter /var/log/uucp/ abgelegt und
/var/spool/uucp/ muss ein Verzeichnis mit dem Namen des entfernten Systems
enthalten. Man sollte darauf achten, dass beide für den Nutzer uucp
schreibbar sind.
call
# call file
# The format is just remote-system-name login-name password.
mfic linux tux.1234
port
# port file
# No need to change this
type tcp
port tcp
service 540
sys
# sys file
# defines information about the remote system
# system name of your ISP:
system mfic
# the server of your ISP:
address uucp.my-friendly-isp.com
# do not change the next 3 lines, see documentation of Tailer UUCP
# for details
time Any 2
port tcp
chat-timeout 60
# allowed commands:
commands rmail
# take the password and user name from the call file:
call-login *
call-password *
# do not change the next line:
chat ogin: \L assword: \P
#
config
# The config file just defines the path names
# of the other files and directories as well as your
# system name.
# Your system name:
nodename oblelix
# max number of request from other systems to execute in parallel:
max-uuxqts 2
# The UUCP spool directory
spool /var/spool/uucp
# The other fields are usually already compiled into
# as defaults:
# pubdir /var/spool/uucppublic
# logfile /var/log/uucp/Log
# statfile /var/log/uucp/Stats
# debugfile /var/log/uucp/Debug
# callfile /etc/uucp/call
# ....
Nach dem Speichern der Konfigurationsdateien ist das Kommando "uuchk"
auszuführen. Es ist zu finden unter: /usr/sbin/uuchk
Als Ausgabe gibt es eine Zusammenfassung der Konfiguration und ein paar
Standardwerte, die man nicht explizit gesetzt hat. Der Rechnername des Servers
beim ISP, in unserem Beispiel uucp.my-friendly-isp.com, erscheint unter
"phone number":
Phone number uucp.my-friendly-isp.com
Dies ist zwar merkwürdig, aber trotzdem richtig für UUCP über
TCP/IP. Speziell sollte man die Einträge zu Verzeichnissen, Logdateien,
Debugdateien überprüfen, und dass diese dem Nutzer uucp gehören.
Jetzt sollte man in der Lage sein, Emails über UUCP zu empfangen, aber
der lokale Mailer (MTA = mail transport agent) weiß noch nicht,
dass er die Mails für die beim ISP registrierte Domain bearbeiten darf.
In unserem Fall ist das die Domain miller.my-friendly-isp.com. Die
Konfiguration dieser Domain hängt vom eingesetzten MTA ab. Bei Sendmail
reicht es, eine einzelne Zeile mit miller.my-friendly-isp.com in die Datei
/etc/sendmail.cw zu schreiben:
# sendmail.cw define the domains for which we handle mail
miller.my-friendly-isp.com
Nun sind wir soweit auszuprobieren, ob der Emailempfang über UUCP
funktioniert.
Das Versenden funktioniert noch nicht, da Sendmail noch nicht vollständig
konfiguriert ist.
Laß den folgenden Befehl laufen:
/usr/sbin/uucico -x 11 -S mfic
mfic ist der UUCP Systemname von my-friendly-isp.com.
In einem weiteren Terminalfenster sollte man die Resultat mittels
"tail -f /var/log/uucp/Debug" überwachen.
Die "-x 11" Option schaltet in die höchste Debugebene und sollte nur
während Tests benutzt werden. Es werden alle Details des UUCP Protokolls
angezeigt. Man sollte nach Fehlern schauen. Falls man am Ende etwas der Art
uucico mfic - (2001-06-22 20:20:57.73 1020) Call complete (31 seconds 42835
bytes 1381 bps)
erhält, hat alles funktioniert. Glückwunsch!
Nun sollte man den Befehl "uulog" ausführen. Dies gibt eine kompaktere
Zusammenfassung über die mittels UUCP/rmail erhaltenen Mails aus.
Sendmail zum Versenden von Emails über UUCP konfigurieren
Sendmail nutzt ein m4 Präprozessor basiertes Konfigurationssystem.
Andere Mailsysteme wie Postfix nutzen besser lesbare Konfigurationsdateien
und es ist kein Problem diese direkt zu bearbeiten. Da ich Sendmail nutze,
werde ich an dieser Stelle meine Erfahrungen mit Sendmail beschreiben. Sie
sind herzlich eingeladen Informationen über andere MTAs auf der Talkback
Seite am Ende hinzuzufügen.
Soweit ich mich erinnern kann, musste man bei Postfix lediglich die Datei
transport/transport.db bearbeiten und eine Definition für UUCP in
master.cf einfügen. Mehr kann ich aber aufgrund mangelnder Erfahrung
nicht beisteuern.
Das m4 Konfigurationssystem könnte unter Umständen nicht im selben
Paket enthalten sein wie Sendmail selbst. Man sollte die CDs der eingesetzten
Distribution überprüfen. Eventuell muss man ein Paket installieren,
dass "sendmail-cf" oder ähnlich genannt wird.
Man muss eine neue sendmail-uucp.mc Datei im cf Verzeichnis von Sendmail
(wahrscheinlich /usr/lib/sendmail-cf/cf) erstellen:
#divert(-1)
# `This is config sends outgoing mail via uucp using /usr/bin/uux
#
# to generate a sendmail.cf out of this .mc file use the sendmail sources
# and run m4 thisfile.mc > sendmail.cf.'
divert(0)
include(`../m4/cf.m4')
VERSIONID(`UUCP, Jan 28 2001, without DNS')
undefine(`BITNET_RELAY')
undefine(`DECNET_RELAY')
undefine(`UUCP_RELAY')
OSTYPE(`linux')
MASQUERADE_AS(miller.my-friendly-isp.com)
MASQUERADE_DOMAIN(localdomain)
MASQUERADE_DOMAIN(localhost)
# ` add any local hostnames here:'
MASQUERADE_DOMAIN(philosophus)
# ` needed if you use an internal domain that does not exist: '
FEATURE(`masquerade_envelope')
FEATURE(always_add_domain)
# ` read allowed domains from cw file: '
FEATURE(use_cw_file)
FEATURE(local_procmail)
# `important for uucp:'
FEATURE(accept_unresolvable_domains)dnl
# `the /etc/passwd entry: mail:*:8:12:mail:/var/spool/mail:'
define(`confDEF_USER_ID',``8:12'')
define(`confSAFE_QUEUE',`True')
define(`confDELIVERY_MODE',`background')dnl
# 'replace mfic by the UUCP system name of your ISP:'
define(`SMART_HOST',uucp-uudom:mfic)dnl
define(`confSERVICE_SWITCH_FILE',/etc/service.switch)dnl
define(`confHOSTS_FILE',/etc/hosts)dnl
define(`UUCP_MAILER_MAX',1024000)dnl
MAILER(procmail)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)dnl
Nachdem man die Datei an die eigene Umgebung angepasst hat, muss man sie mit
folgendem Kommando kompilieren:
m4 sendmail-uucp.mc > sendmail.cf
Nun kopiert man die sendmail.cf Datei nach /etc und startet Sendmail neu:
/etc/rc.d/init.d/sendmail restart
Der o.g. Pfad stimmt für Redhat/Mandrake. Für Suse, Debian usw.
ist er anders...
In der /etc/service.switch Datei sollte folgendes stehen:
hosts files
aliases files
Zum Test sollte man eine Email an jemanden schicken. Man kann dies entweder
mit seinem Lieblings-Emailprogramm tun oder direkt über die Unix
Kommandozeile:
echo "hello john, just testing..." | Mail john@somewhere.org
Diese Email wird nicht direkt verschickt. Sie wird im UUCP System in eine
Warteschlange gestellt. Man kann sie mit folgendem Kommando sehen:
uustat -a
uustat gibt aus:
mfic.CRJjd4uAAAPs mfic joe 07-24 20:19 Executing rmail john@somewhere.org
(sending 50 bytes)
und als nächster Befehl:
/usr/sbin/uucico -x 11 -S mfic
mfic ist der UUCP System Name von my-friendly-isp.com!
Wenn man sich nun die Debugdatei anschaut, kann man beobachten, wie die Mail
versendet wird.
Alles automatisch
Man sollte folgendes /usr/bin/uumail Skript erstellen:
#!/bin/sh
hostn=uucp.my-friendly-isp.com
# first check that the server of my ISP is reachable.
# This requires a more recent version of ping where you can
# specify the timeout:
if ping -w 3 -qn -c 1 $hostn > /dev/null ; then
/usr/sbin/uucico -S mfic
#sleep 1
#uulog -s mfic -5
else
echo "ERROR: $hostn is down"
exit 1
fi
Das Skript sollte mit "chmod 755 /usr/bin/uumail" ausführbar
gemacht werden. Jetzt ruft man es manuell auf, um zu überprüfen,
ob es funktioniert.
Um Emails automatisch auszutauschen jedesmal wenn man online geht,
sollte man die Zeile /usr/bin/uumail dem /etc/ppp/ip-up Skript
hinzufügen.
Ok, das war's. Das Mailsystem läuft.
Ein paar weitere Dinge
Das Mailsystem ist komplett konfiguriert. Alle Benutzer (/etc/passwd,
Befehl adduser) können automatisch Mails senden und empfangen.
Die Emails werden in den klassischen temporären Verzeichnissen (spool)
unter /var/spool/mail gespeichert und können lokal gelesen werden.
Falls man Benutzern die Möglichkeit bieten will, die Emails über
Protokolle wie POP3 und IMAP zu lesen, muss man ein Paket installieren,
dass sich normalerweise "imap" nennt und die beiden Dämons
/usr/sbin/imapd und /usr/sbin/ipop3d zur Verfügung stellt.
In /etc/inetd.conf werden diese durch die Aktivierung der beiden folgenden
Zeilen gestartet:
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
imap stream tcp nowait root /usr/sbin/tcpd imapd
Falls xinetd genutzt wird, muss eine passende Konfigurationsdatei für
jeden Dienst erstellt werden (siehe dazu auch LinuxFocus
Artikel 175 mit entsprechendem Titel).
Man sollte auch nicht vergessen, den Zugang in /etc/hosts.allow zu erlauben,
falls Benutzer ihres Mails von anderen Hosts im LAN abrufen wollen:
# hosts.allow , tcp wrapper config file
# anybody can get access to imap:
imapd: ALL
# pop3 is only allowed from 2 hosts:
ipop3d: 10.0.0.1, 10.0.0.2, 127.0.0.1
Einen ISP finden
Einen guten und vertrauenswürdigen Internet Service Provider für
UUCP zu finden, ist nicht sehr einfach, besonders da sich die meisten ISPs
nur auf den Otto Normalverbraucher mit vorinstalliertem Windows konzentrieren.
Mir sind 2 wirklich gute ISPs in Deutschland bekannt, die Email
über UUCP ermöglichen:
Beides sind Organisationen und man tritt eigentlich diesen Organisationen
bei, um den Service zu nutzen. Die Preise liegen ungefähr zwischen
11 bis 20 Euro pro Monat.
Wir von LinuxFocus.org können auch für eine begrenzte Anzahl von
Linux Fans Email über UUCP anbieten, wenn man in unsere Organisation
eintritt, uns finanziell unterstützt und/oder mit uns
regelmäßig zusammenarbeitet. Nehmt Kontakt zu mir auf, falls
Interesse besteht.
Eine andere Möglichkeit einen passenden ISP im eigenen Land zu finden wäre,
Google oder eine andere Suchmaschine zu nutzen. Die kleineren mehr kunden- und
serviceorientierten ISPs bieten bestimmt Email über UUCP als Produkt an.
Referenzen
- Das UUCP HOWTO,
veröffentlicht von linuxdoc.org
- The Tailer UUCP documentation (mehr als
300K an html)