original in en Guido Socher
en to nl Tom Uijldert
Om het bestand mynotes.txt te kopiëren naar een ander systeem, genaamd "mars", kan men het volgende commando gebruiken:
$ uucp mynotes.txt mars!~/mynotes.txtHet bestand wordt tijdelijk in een spool directory opgeslagen en overgeseind naar het betreffende systeem zodra er een verbinding is gemaakt. Tegenwoordig wordt dit als zodanig niet meer gebruikt en nemen meer moderne protocollen als TCP/IP en scp dit werk over.
UUCP kon echter nog veel meer. Het stelde je in staat een aantal commando's op het andere
systeem uit te voeren. Om op data van stdin het commando
rnews
los te laten op de machine mars kun je het volgende
commando geven:
$ cat somedata.txt | uux - mars!rnewsWederom wordt het commando
rnews
niet direct uitgevoerd, maar pas nadat
een inbelverbinding is gelegd met het betreffende systeem. Ook dit keer wordt het commando
geparkeerd in de spool directory.
Wat heeft dit nu te maken met email?
Email is nou typisch een toepassing waarbij het niet uit maakt of de berichten wat worden
vertraagd. Normaal gesproken zal je op gezette tijden je email lezen, op een aantal daarvan
antwoorden componeren en het vervolgens "versturen". Je wilt deze antwoorden niet
de hele tijd op je scherm hebben staan maar ze gewoon "versturen" en doorgaan met
andere bezigheden. Of het nu ook daadwerkelijk meteen wordt verstuurd of wat later zal je worst
wezen, als het op een gegeven moment maar wordt afgeleverd.
Dit is nu precies wat je betrouwbaar en makkelijk kunt doen met UUCP.
Een systeem op deze manier opzetten kan heel makkelijk zijn voor het hele gezin en erg economisch voor een klein bedrijf. Je kunt een willekeurig aantal email adressen uitgeven en tegelijkertijd kun je toe met slechts één inbelverbinding naar je ISP. Een bedrijf zal waarschijnlijk regelmatig (bijvoorbeeld ieder uur) inbellen, een gezin kan dit doen als ze voor andere doeleinden toch al moeten inbellen.
Samengevat: Email met UUCP is niet ouderwets. Het is gemakkelijk, economisch en een goede toepassing van UUCP.
UUCP is een zelfstandig protocol wat direct op beschikbare hardware kan draaien (een connectie via modem dus, zonder de noodzaak van ppp). Het kan echter ook over TCP/IP draaien, wat een aantal extra mogelijkheden geeft.
Zo kun je bijvoorbeeld een behoorlijke ISP uitzoeken met een goede connectie (backbone) naar het Internet (in Amsterdam bijvoorbeeld) maar inbellen via een willekeurige ISP via goedkope lokale verbindingen. Omdat UUCP toch boven op TCP/IP draait maakt het niet meer uit waar je UUCP-ISP zit. Hij is altijd via Internet bereikbaar.
Behalve UUCP heb je ook nog een mail systeem nodig dat UUCP begrijpt. Hier gaan we in op sendmail maar de meeste andere systemen kennen ook UUCP. Een systeem dat UUCP begrijpt zal over het algemeen een commando rmail in het rpm of deb pakket hebben.
Post wordt je toegestuurd via commando's vanaf een andere machine, zoals in het voorbeeld met uux/rnews hierboven. rmail is het commando dat de mail ontvangt en doorstuurt via de UUCP-"pijplijn" voor verwerking in het mailsysteem.
Je ISP heeft de volgende gegevens nodig voor het opzetten van iets dergelijks:
$ telnet uucp.my-friendly-isp.com 540Je krijgt dan het volgende:
Trying 1.2.3.42... Connected to uucp.my-friendly-isp.com Escape character is '^]'. login:Voer je naam en wachtwoord in:
Trying 1.2.3.42... Connected to uucp.my-friendly-isp.com Escape character is '^]'. login: linux Password: tux.1234 Shere=mficNa een geslaagde login zal de andere kant antwoorden met "Shere", wat betekent "System here", gevolgd door de naam van het systeem (controleer dit met de naam, opgegeven door de ISP).
^] telnet> q Connection closed.Nu weet je zeker dat alles goed is opgezet aan de andere kant.
$ chmod 640 call
). Logbestanden worden meestal naar
/var/log/uucp geschreven en hierin moet een subdirectory aanwezig zijn met
de naam van het systeem waarmee verbinding wordt gelegd. Vergewis je ervan dat gebruiker
uucp schrijfrechten heeft in beide directories.
# call file # The format is just remote-system-name login-name password. mfic linux tux.1234
# port file # No need to change this type tcp port tcp service 540
# 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 #
# 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 # ....Start na het instellen het programma uuchk, waarschijnlijk te vinden in sbin: /usr/sbin/uuchk
Deze geeft uitvoer die een samenvatting geeft van je instellingen, inclusief standaard waarden die je niet hebt ingesteld. De machine van je ISP (uucp.my-friendly-isp.com in ons voorbeeld) zul je terugzien onder "phone number":
Phone number uucp.my-friendly-isp.comDit lijkt gek maar is wel correct voor UUCP over TCP/IP. Ga vooral na dat directories, log- en debug-bestanden naar de juiste plaats wijzen en eigendom zijn van gebruiker uucp.
Je zou nu email moeten kunnen ontvangen via UUCP maar je lokale mail-programma (MTA=Mail Transfer Agent) moet nog weten dat hij mail voor domein miller.my-friendly-isp.com mag afhandelen. Instelling hiervan hangt af van het programma dat je gebruikt als MTA. In het geval van sendmail moet je de volgende regel hebben in het bestand /etc/sendmail.cw:
# sendmail.cw define the domains for which we handle mail miller.my-friendly-isp.comWe zijn nu klaar voor het testen van email-ontvangst via UUCP. Het versturen zal nog niet werken daar sendmail nog niet volledig is ingesteld. Geef het volgende commando:
$ /usr/sbin/uucico -x 11 -S mficmfic is de UUCP systeemnaam van my-friendly-isp.com
Open een tweede terminal-window en bekijk de resultaten met $ tail -f
/var/log/uucp/Debug
. De "-x 11" geeft het hoogste debug-niveau
aan en dien je alleen tijdens testen te gebruiken. Je ziet nu alle details van het UUCP-protocol.
Let op eventuele fouten. Wanneer je op het eind het volgende ziet:
uucico mfic - (2001-06-22 20:20:57.73 1020) Call complete (31 seconds 42835 bytes 1381 bps)dan werkt alles. Gefeliciteerd!
Geef vervolgens het commando "uulog". Dit geeft een meer compacte samenvatting betreffende de mails die je via UUCP/mail hebt ontvangen.
Het zou kunnen zijn dat het instellen via m4 geen onderdeel uitmaakt van de sendmail-distributie. Zoek op je CD's naar een pakket met de naam "sendmail-cf".
Maak een nieuw bestand sendmail-uucp.mc aan in de directory cf van sendmail (waarschijnlijk iets als /usr/lib/sendmail- cf/cf):
#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)dnlPas het bestand aan jouw systeem aan en compileer met het commando:
$ m4 sendmail-uucp.mc > sendmail.cfKopieer het bestand sendmail.cf naar /etc en herstart sendmail met:
$ /etc/rc.d/init.d/sendmail restartHet hierboven gegeven pad is specifiek voor RedHat/Mandrake. Dit verschilt voor Suse, Debian, etc...
Het volgende moet in het bestand /etc/service.switch staan:
hosts files aliases filesVerstuur nu een email naar iemand. Dit kun je doen met je favoriete mail-programma of direct vanaf de prompt met:
$ echo "hello john, just testing..." | Mail [email protected]Deze mail zal niet direct worden verstuurd. Het zal daarentegen klaar worden gezet in een wachtrij van UUCP voor verzending. Dat kun je zien met het volgende commando:
$ uustat -auustat zal de volgende uitvoer geven:
mfic.CRJjd4uAAAPs mfic joe 07-24 20:19 Executing rmail [email protected] (sending 50 bytes)Start nu het volgende:
$ /usr/sbin/uucico -x 11 -S mficmfic is wederom de UUCP-naam van my-friendly-isp.com. Je kunt nu het versturen volgen via het Debug-bestand.
#!/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 fiMaak het uitvoerbaar via
$ chmod 755 /usr/bin/uumail
en laat het lopen om te
zien of het werkt.
Om automatisch email's uit te wisselen iedere keer dat je verbinding legt, kun je de regel /usr/bin/uumail toevoegen aan /etc/ppp/ip-up.
Ok, dat is het dan. Je mailsysteem is klaar.
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d imap stream tcp nowait root /usr/sbin/tcpd imapdAls je xinetd hebt dan zul je een configuratiebestand hiervoor aan moeten maken (zie ook het _LF_ artikel 175 hierover). Vergeet ook niet toegang te regelen in het bestand /etc/hosts.allow wanneer gebruikers via een andere machine hun mail willen benaderen:
# 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
Ik ken twee redelijke ISP's in Duitsland die ook email over UUCP bieden:
Beide zijn in wezen coöperaties waarbij je je aansluit om de service te verkrijgen. Kost je rond de 11 tot 20 Euro per maand.We kunnen bij linuxfocus.org ook een beperkt aantal email connecties over UUCP aanbieden voor de echte linux-fans wanneer je onze organisatie steunt, hetzij financieel dan wel door met ons samen te werken. Neem bij interesse contact met me op.
Een goede manier om een ISP met UUCP te vinden in je eigen land is wellicht het raadplegen van zoekmachines als Google. De kleinere ISP's die wat meer klant- en service-gericht zijn zullen dit hoogstwaarschijnlijk in hun pakket hebben.