|
LinuxFocus article number 330
http://linuxfocus.org
|
|
|
|
|
von Guido Socher (homepage)
Über den Autor:
Guido bevorzugt UUCP e-Mail, weil es sich perfekt
in Linux integriert.
Übersetzt ins Deutsche von:
Guido Socher (homepage)
|
uucpssh.org: UUCP e-mail für Linuxfans
Zusammenfassung:
In der Windowswelt empfängt man Mails mit POP3 oder IMAP
und schickt rausgehende Mail direkt über SMTP. Dieses in unterschiedliche
Protokolle aufgesplittete Verfahren verursacht alle möglichen
Kopfschmerzen, besonders dann, wenn man laufend einen anderen
Internetprovider benutzt.
UUCP ist ein altes Protocoll, aber es ist wirklich eine clevere Lösung,
um E-Mail zu senden und zu empfangen. uucpssh.org bietet darüberhinaus
noch sehr flexible Weiterleitungsmöglichkeiten.
_________________ _________________ _________________
|
Einführung
uucpssh.org bietet eine wirklich sehr gute E-Mail Lösung
für Linuxbenutzer. Diese Lösung kombiniert E-Mailtransport über
UUCP mit der Sicherheit von SSH und bietet zusätzlich noch flexible
Weiterleitungsmöglichkeiten.
UUCP ist ein sehr altes Protocol und wurde unrsprünglich benutzt, um
Dateien zwischen Unixsystemen zu kopieren. Daher der name "Unix to Unix Copy".
Diese frühen Computersysteme waren nicht permanent miteinander verbunden.
Über Modem wurden in regelmäßigen Abständen die Daten ausgetauscht. UUCP ist
ideal, um Sachen zu transportieren, die eine "batch job" Charakteristik haben, wie
z.B. E-Mail oder News.
Heute wird UUCP nicht mehr als allgemeines Medium zum Dateienaustausch benutzt.
Es ist aber immer noch sehr gut für E-Mail, speziell dann, wenn man unterwegs ist.
Mit UUCP kann man im wireless Lan am Flughafen genauso seine E-Mail
lesen und senden wie zu Hause im eigenen Netzwerk. Man muss dazu nicht
einen Konfigurationsparameter ändern.
Der technische Teil
Nun werden wir sehen, wie man E-Mail über UUCP durch einen SSH Tunnel
konfiguriert.
Für die, die sich jetzt wundern, wie man das unter XP oder 98 macht ....
Man braucht Linux! Dies ist eine Lösung speziell für Linux oder
Unixsysteme im Allgemeinen.
Ein E-Mailsystem besteht aus MUAs (mail user agents),
das Programm, wo man die Mail eintippt und liest, und MTAs (mail transport
agents), auch als Mail Server bekannt. Beispiele für MUAs sind
mutt, Kmail, Thunderbird, etc... MTAs transportieren die Mail von einem
Computer zum anderen. Da UUCP/SSH Transportprotokolle sind, ist es klar,
daß wir die UUCP/SSH Lösung benutzen, um MTAs zu verbinden.
In anderen Worden: wir werden lokal auf unserem Linuxcomputer einen
Mailserver konfigurieren und dann UUCP anstatt SMTP für reinkommende
und rausgehende E-Mail benutzen.
UUCP ist der Transportmechanismus, der die Tatsache, daß wir nicht immer
mit dem Internet verbunden sind, vor dem MTA versteckt. UUCP transportiert
die Mail als "batch" (Stoß), wann immer wir möchten, daß E-Mail ausgetauscht
wird.
SSH ist schließlich das Protokol, mit dem wir UUCP transportieren und
die Verbindung zu uucpssh.org aufbauen.
Um uucpssh.org UUCP E-Mail zu nutzen, braucht man seine eigene Domain, da
die Verteilung der Mail auf Domainbasis funktioniert. Erst der lokale MTA auf
unserem Linuxrechner wird die Mail an die einzelnen Benutzer auf unserem
Rechner verteilen.
Da uucpssh.org die Mail nur nach Domain sortiert, hat man selbst die volle
Flexibilität beim Benutzernamen (das Zeug was vor dem "@" in der E-Mailadresse
steht. Man kann so viele Benuteradressen und Aliase wie man möchte haben
und sie jeder Zeit änderen.
Was ist eine MX-domain?
Ein Domainname ist so etwas wie linuxfocus.org, das ist vermutlich den
meisten Leuten klar. Um einen Domainnamen zu haben, braucht man einen DNS-Server.
Das Internet funktioniert auf Protokollebene nicht mit Namen, sondern mit Nummern,
IP Adressen. Ein DNS Server übersetzt einen Namen in eine IP Adresse und diese
Nummer wird dann benutzt, um eine Verbindung zwischen zwei Rechnern aufzubauen
(z.B zu einem Webserver oder einem Mailserver).
Hat man zwei physikalisch verschiedene Rechner für Webeseiten und FTP, dann muß man
diesen unterschiedliche Namen geben. Z.B linuxfocus.org und ftp.linuxfocus.org.
Das ist jedoch bei E-Mail nicht der Fall, weil es einen speziellen DNS Eintrag
für Mail gibt: MX (Mail Exchanger). Man kann seine Webseiten auf einem Rechner,
linuxfocus.org, haben und gleichzeitig seine linuxfocus.org E-Mail auf einem anderen Rechner
bei uucpssh.org (z.B deinName@linuxfocus.org).
Mit anderen Worten: wenn man zu uucpssh.org umzieht, braucht man nur die
MX-Domain umziehen lassen.
Die Sache aufsetzen, MTA-Teil
Wir fangen mit der Konfiguration des MTA an. In diesem Artikel
werden wir xim, postfix und sendmail besprechen. Jeder von ihnen ist
für UUCP geeignet.
Exim 3
Füge folgendes im Hauptteil (am Anfang der Datei) von exim.conf ein:
trusted_users = uucp
primary_hostname = your.own.mail.domain
local_domains = your.own.mail.domain
Im Transportabschnitt füge folgendes hinzu:
# Transport for uucp
uucp:
driver = pipe
user = nobody
command = "/usr/bin/uux -r - ${host}!rmail ${pipe_addresses}"
return_fail_output = true
Am Anfang (!!) des Abschnittes "router" folgendes einfügen:
# Router for uucp (which domains are uucp domains):
# This must come before lookuphost!
uucphost:
transport = uucp
driver = domainlist
route_list = * uucpssh byname
Die Konfiguration kann mit dem Befehl
exim -bV getestet werden und danach startet man exim neu,
um die Konfiguration zu aktivieren (/etc/init.d/exit restart).
Exim 4
Füge folgendes im Hauptteil (an Anfang der Datei) von exim.conf ein:
trusted_users = uucp
primary_hostname = your.own.mail.domain
domainlist local_domains = your.own.mail.domain
domainlist relay_to_domains =
hostlist relay_from_hosts = 127.0.0.1
In dem TRansportabschnitt füge folgendes hinzu:
# Transport for uucp
uucp:
driver = pipe
user = uucp
command = "/usr/bin/uux -r - ${host}!rmail ${pipe_addresses}"
path = /usr/local/bin:/usr/bin:/bin
return_fail_output
Am Anfang (!!) des Abschnittes "router" folgendes einfügen:
# Router for uucp (which domains are uucp domains):
# This must come at the beginning of the router section
uucphost:
transport = uucp
driver = manualroute
domains = ! +local_domains
route_list = * uucpssh byname
Die Konfiguration kann mit dem Befehl
exim -bV getestet werden und danach startet man exim neu,
um die Konfiguration zu aktivieren (/etc/init.d/exit restart).
Sendmail
Sendmail nutzt einen m4 Pre-Prozessor für die
Konfiguration. Das m4 Konfigurationssystem ist vermutlich nicht
im selben Paket wie Sendmail selbst enthalten. Bei den meisten
Distributionen heißt das Paket "sendmail-cf" oder ähnlich.
Man legt eine neue sendmail-uucp.mc Datei in dem
cf Verzeichnis an (vermutlich /usr/lib/sendmail-cf/cf):
#divert(-1)
# `This is config sends outgoing mail via uucp
#
# 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, without DNS')
undefine(`BITNET_RELAY')
undefine(`DECNET_RELAY')
undefine(`UUCP_RELAY')
OSTYPE(`linux')
MASQUERADE_AS(your.own.mail.domain)
MASQUERADE_DOMAIN(localdomain)
MASQUERADE_DOMAIN(localhost)
# ` 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:uucpssh)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
Diese Datei kompiliert man mit dem Befehl:
m4 sendmail-uucp.mc > sendmail.cf
kopiere die sendmail.cf Datei nach /etc und starte sendmail neu.
/etc/init.d/sendmail restart
In der Datei /etc/service.switch sollte man folgendes eintragen:
hosts files
aliases files
Postfix
Siehe auch Postfix FAQ (http://www.postfix.org/faq.html#uucp-tcp)
und den Abschnitt wie man UUCP als "default transport" benutzt.
In /etc/postfix/main.cf fügt man folgendes ein:
relayhost=uucpssh
default_transport=uucp
und in /etc/postfix/master.cf braucht man diesen Eintrag:
uucp unix - n n - - pipe
flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
Die Sache aufsetzen, UUCP Teil
Die uucp Software ist von http://www.airs.com/ian/uucp.html erhältlich, man sollte aber zuerst die CDs seiner
Linuxdistribution checken. Alle größeren Distributionen haben
Pakete für UUCP.
Falls man trotzdem UUCP selbst aus den Quellen kompilieren
möchte, sollte man beachten, daß UUCP zumindest bis Version 1.07 sehr merkwürdige
Pfade benutzt. Einige ausführbare Dateien werden z.B nach /usr/lib/uucp
installiert. Alle Pakete der Distributionen haben diese
Probleme behoben. Bei gentoo gibt es jedoch in älteren Versionen ein
Problem. gentoo linux installiert in Version 1.06 die Dateien im richtigen
Verzeichnis (/usr/bin, /usr/sbin, /etc/uucp), aber die in die Programme
hineinkompilierten Pfade sind in einigen Fällen immer noch falsch.
Ich werde weiter unten einige Tips geben, wie man Probleme mit der
UUCP Installation finden kann.
Für die Konfiguaration von uucp solltest du im Verzeichnis /etc/uucp/ zumindest die folgenden Dateien haben:
- config -- allgemeine Konfiguarationsdatei (wenn alle Pfade korrekt nach uucp kompiliert wurden, kann diese Datei leer sein)
- call -- "eine password Datei" für das uucp login nach uucpss.org
- port -- config file für den zu benutzenden Verbindungstyp
- sys -- definiert alle uucp Systeme, die dein System kennt
In der uucp Welt sollte jede Installation von uucp einen Namen haben. Dieser Name wird beim Handshake zweier uucp Systeme zu Beginn ihrer Kommunikation überprüft.
uucpssh.org heißt uucpssh (alles in Kleinbuchstaben) und dein Systemname ist das, was du definierst, wenn du einen Account bei uucpssh.org einrichtest. Im unteren Beispiel ist das mailtux.
Editiere die Datei /etc/uucp/sys und füge am Ende das folgende hinzu:
system uucpssh
myname mailtux
time any
address main.uucpssh.org
port SSH
protocol t
remote-send /
remote-receive ~
chat ""
Editiere die Datei /etc/uucp/port und füge am Ende folgendes hinzu:
port SSH
type pipe
command /usr/bin/ssh -C -x -o batchmode=yes uucp@main.uucpssh.org
Editiere die Datei /etc/uucp/call und füge folgendes hinzu:
uucpssh mailtux your-random-string-get-it-from-uucpssh.org-admin-page
Überprüfe jetzt deine Konfiguration durch Laufenlassen des Befehls "uuchk". Korrigiere alle Syntaxfehler, wenn nötig.
Um Emails nach uucpssh.org weiterzuleiten, benutzen wir ssh als user uucp. Stell sicher daß ein User in /etc/passwd mit dem Namen uucp definiert ist und es ein gültiges Home-directory gibt.
Überprüfe auch, dass uucico das s-bit gesetzt hat und zum User uucp gehört. Das Program, wenn es von irgendeinem User ausgeführt wird, muß immer so laufen, als ob es vom User uucp ausgeführt worden wäre. Dasselbe gilt für uux:
-r-sr-sr-x 1 uucp uucp 225008 Mar 7 2002 /usr/sbin/uucico
-r-sr-xr-x 1 uucp uucp 93920 Mar 7 2002 /usr/bin/uux
Die Sache aufsetzen, SSH Teil
Wir müssen jetzt einen DSA Schlüssel für ssh generieren und ihn auf die uucpssh.org admin page hochladen.
Wie dies gemacht wird, ist ebenfalls auf der admin page beschrieben. Ich wiederhole es hier nur einfach.
- Werde uucp user (su - uucp)
- Führe ssh-keygen -t dsa aus
- Gib kein Passwort an.
- Lade den Inhalt von ~uucp/.ssh/id_dsa.pub auf deine
uucpssh.org admin page hoch.
Testen
Sende eine Email an jemanden außerhalb deines Hosts und überprüfe, ob es via uucp in die Warteschlange gepackt wird:
uustat -a
Die Email sollte in den Verzeichnissen /var/spool/uucp/uucpssh/C./ und /var/spool/uucp/uucpssh/D./
landen.
Laß
uulog -40
laufen, um zu sehen, was passiert. Überprüfe die log Dateien in /var/log für deinen Mailer und /var/log/uucp für uucp. Diese Dateien können dir einige Hinweise geben, falls etwas nicht funktioniert. Wenn das obige nicht funktioniert hat, dann liegt der Fehler irgendwo in der Konfiguartion deines MTA (mail servers).
Wenn der obige Test OK war, dann teste die SSH Verbindung. Log dich als User uucp (su - uucp als root) ein und laß das folgende laufen:
ssh uucp@main.uucpssh.org -v
Nach dem Akzeptieren des RSA Schlüssels des Servers solltest du einen uucp prompt sehen (etwas wie "Shere...").
Schließlich testen wir noch das Rausschicken unserer sich in der Warteschlange befindenden Email mit dem Befehl:
/usr/sbin/uucico -x 11 -S uucpssh
Das -x11 fügt die maximale Menge an Debuginformationen hinzu. Wenn etwas schief geht, solltest du in /var/log/uucp/Debug Hinweise finden.
Um hereinkommende Emails zu testen, schicke eine Email von außerhalb an yourUserId@your.own.mail.domain
und hole dann die Emails mit dem folgenden Befehl von uucpssh.org ab:
/usr/sbin/uucico -x 11 -S uucpssh
Überprüfe bei Problemen wieder /var/log/uucp/Debug. Eingehende Emails werden zuerst in die Warteschlange von
/var/spool/uucp/uucpssh/X./ gepackt und dann automatisch an dein MTA geschickt, mit dem Befehl
/usr/sbin/uuxqt und /usr/bin/rmail. gentoo linux hatte hier einen Bug: Es suchte nach uuxqt unter /usr/lib/uucp/ und erwartete die Konfigurationsddateien in /usr/conf/uucp. Ich reparierte diese gentoo spezifischen Fehler durch Erzeugen einiger softlinks.
Überprüfe das Log deines MTA und du solltest sehen, daß die Email empfangen und an dich "geliefert" wurde.
Täglicher Gebrauch
Einmal richtig installiert, gib es nicht mehr viel zu tun. Laß einfach das folgende laufen
/usr/sbin/uucico -S uucpssh
uulog -5
um Emails mit dem Internet auszutauschen. Ich bevorzuge es, totale Kontrolle darüber zu haben und laß es manuell durch ein Script laufen, aber du kannst auch das folgende
/usr/sbin/uucico -S uucpssh
zu /etc/ppp/ip-up hinzufügen und es wird jedes Mal ausgeführt, wenn du dich mit dem Internet verbindest.
Links
Viel Spaß mit UUCP mail!
2005-01-14, generated by lfparser_pdf version 2.51