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]

[Photo of the Author]

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]

[uucp]

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:
[A private 
mail system connected via dialup]


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:
Die vom ISP benötigten Daten:

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: 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