door Guido Socher (homepage)
Over de auteur:
Guido houdt echt van UUCP-email omdat het een techniek is die
perfect past in een Linux-omgeving.
Vertaald naar het Nederlands door:
Egon Willighagen <egonw(at)sci.kun.nl>
Inhoud:
|
uucpssh.org: UUCP email voor Linux-fans
Kort:
In de windows wereld wordt email ontvangen via het POP3- of het IMAP-protocol.
Uitgaande email wordt verstuurd via het SMTP-protocol. Deze scheiding kan
flinke hoofdpijn bezorgen, vooral als gelijktijdig meerdere ISP's gebruikt
worden.
UUCP is een oud protocol, maar het is een elegante oplossing om zowel email
te versturen als ook te ontvangen. Bovendien biedt uucpssh.org enkele
flexibele doorstuurmogelijkheden.
_________________ _________________ _________________
|
Introductie
uucpssh.org biedt een zeer goede emailoplossing voor Linux-gebruikers.
Het combineert UUCP email met de veiligheid van SSH en ook flexibele
doorstuurfaciliteiten.
UUCP is een zeer oud protocol dat oorspronkelijk gebruikt werd voor het kopiëren van bestanden
tussen twee UNIX-systemen, en daarom de naam "Unix to Unix Copy".
Deze oudere computersystemen waren niet permanent via een netwerk verbonden.
In plaats daarvan werden inbelmodem-verbindingen gebruikt om met afgesproken intervallen
data uit te wisselen. UUCP is ideaal voor het transport van data die een hoog batch karakter
hebben, zoals email of nieuws.
Tegenwoordig wordt UUCP niet langer gebruik voor generieke bestandsuitwisseling. Het
is, echter, nog steeds goed bruikbaar voor email, en zeker als de email regelmatig vanuit
andere plaatsen, zoals met de laptop op een draadloos netwerk op een vliegveld.
UUCP maakt het mogelijk om op dezelfde manier email te ontvangen en versturen waar
u ook bent. Daarvoor hoeft u geen enkele instelling te veranderen..
De technische kant
Laten we nu eens bekijken hoe u uw email kan configureren om te werken met UUCP via
een SSH-tunnel.
Voor diegenen die zich afvragen hoe zo'n configuratie werkt onder XP of 98 of ...
U heeft Linux nodig. Deze oplossing is specifiek voor Linux en UNIX in het algemeen.
Een emailsysteem bestaat in het algemeen uit MUA's (mail user agents), dwz.
emailprogramma's waarin u uw email leest en schrijft, en MTA's (mail transport
agents), beter bekend als de email-server. Voorbeelden van MUA'a zijn mutt, Kmail,
Thunderbird, etc... MTA's zorgt ervoor dat de email op de computer uitkomt van
de persoon naar wie u een email verstuurd heeft.
Omdat UUCP/SSH transportprotocollen zijn, lijkt het me duidelijk dat we UUCP/SSH
gebruiken om MTA's te verbinden.
In andere woorden: we gaan lokaal een email-server voor onze Linux-computer opzetten
die gebruikt maakt van UUCP voor zowel de inkomende als ook de uitgaande email.
UUCP verzorgt het transport en verbergt het feit dat we niet altijd verbonden zijn
met het internet. Het zorgt ervoor dat het transport van de email als batches
gebeurt.
Tenslotte, SSH is het protocol waarin we de UUCP transporten verpakken en waarmee
we verbinding maken met uucpssh.org.
Om uucpssh.org te kunnen gebruiken moet u een compleet internet domein beheren, omdat
routing op een per-domein basis gebeurt. De lokale MTA op uw Linux-machine zal dan
het email beheren voor de verschillende gebruikers.
Omdat uucpssh.org de email sorteert op een per-domein basis heeft u de volledige
vrijheid om zelf gebruikers aan te maken (het deel voor het "@"-teken). U kunt zoveel
aliassen maken als u wilt.
Wat is een MX-domein?
Een domein naam is zoiets als linuxfocus.org, dat is wellicht duidelijk. Om een domein
te beheren heeft u een DNS-server nodig. Het internet werkt op het protocol-nivo niet
met namen, maar met nummers, de IP-adressen. een DNS-server vertaalt de naam naar een IP-adres
en dit nummer wordt dan gebruikt om een verbinding te maken met de andere host, zoals
een webserver, of email-server.
Als u verschillende computers wilt inrichten voor verschillende diensten, zoals www en
ftp, dan moet u deze verschillende namen geven. Bijvoorbeeld linuxfocus.org en
ftp.linuxfocus.org.
Dit is echter niet het geval voor email, omdat er een speciale DNS-opdracht is voor email, met
de naam MX (Mail Exchanger). U kunt uw website op een computer hebben (bv. linuxfocus.org)
en uw emaildiensten hebben op uucpssh.org, en deze toch te adresseren via linuxfocus.org
(of beter [email protected]).
Met andere woorden, als u uucpssh.org gaat gebruiken is het enkel nodig de MX
van het domein aan te passen.
Het configureren: het MTA deel
We beginnen met het configureren van de MTA. In dit artikel behandelen we exim, postfix
en sendmail. Elk van deze agents kunnen werken met UUCP.
Exim 3
Voeg het volgende toe aan de "main" sectie (in het begin) in het exim.conf bestand:
trusted_users = uucp
primary_hostname = uw.eigen.email.domein
local_domains = uw.eigen.email.domein
In de "transport" sectie voegt u toe:
# Transport for uucp
uucp:
driver = pipe
user = nobody
command = "/usr/bin/uux -r - ${host}!rmail ${pipe_addresses}"
return_fail_output = true
En, als eerste (!) in de "router" sectie:
# Router for uucp (which domains are uucp domains):
# This must come before lookuphost!
uucphost:
transport = uucp
driver = domainlist
route_list = * uucpssh byname
Test de nieuwe configuratie met het commando exim -bV en herstart exim daarna
(/etc/init.d/exim restart).
Exim 4
Voeg de volgende regels toe aan exim.conf:
trusted_users = uucp
primary_hostname = uw.eigen.email.domein
domainlist local_domains = uw.eigen.email.domein
domainlist relay_to_domains =
hostlist relay_from_hosts = 127.0.0.1
In de "transport" sectie:
# 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
En aan het begin van de "router" sectie:
# 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
Test de nieuwe configuratie met het commando exim -bV en herstart
exim (/etc/init.d/exim restart).
Sendmail
Sendmail gebruikt een m4-gebaseerd configuratiesysteem.
Dit systeem is niet altijd in hetzelfde softwarepakket
verpakt als sendmail. Bekijk de CD's van uw distributie, omdat
u misschien deze apart moet installeren. Het pakketnaam is zoiets
als "sendmail-cf".
Maak een nieuwe sendmail-uucp.mc bestand in de cf directory
voor sendmail (bv. /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(uw.eigen.email.domein)
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
Compileer het met het commando:
m4 sendmail-uucp.mc > sendmail.cf
Copieer het sendmail.cf bestand naar /etc en herstart sendmail met
/etc/init.d/sendmail restart
In het /etc/service.switch bestand moet staan:
hosts files
aliases files
Postfix
Bekijk ook de Postfix FAQ (http://www.postfix.org/faq.html#uucp-tcp)
over het gebruik van UUCP als de standaard transport methode.
In /etc/postfix/main.cf voegt u toe:
relayhost=uucpssh
default_transport=uucp
en in /etc/postfix/master.cf moet het volgende staan:
uucp unix - n n - - pipe
flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
Het configureren: het UUCP deel
De UUCP-software kan gedownload worden van http://www.airs.com/ian/uucp.html,
maar controleer eerst de CD's van uw Linux distributie. Alle grote distributies hebben er een pakket voor.
Als u toch liever de broncode zelf compileert, pas dan op. UUCP (in ieder geval tot versie 1.07)
gebruikt een nogal vreemde directory structuur: het installeert, bijvoorbeeld, de
startbare programma's in /usr/lib/uucp. Alle distributies hebben dit probleem in hun pakketten opgelost.
Oké, dat gezegd te hebben: gentoo linux installeert in versie 1.06 de programma's op de juiste plaats, maar
vergeet hier en daar de paden bij te werken.
Verderop beschrijf ik enkele tips hoe problemen opgelost kunnen worden met de UUCP-installatie.
Voor het configureren van UUCP moet u in de /etc/uucp/ directory in ieder geval de
volgende bestanden hebben:
- config -- een algemeen configuratie bestand (als alle paden correct in uucp
gecompileerd zijn, dan kan dit bestand leeg zijn)
- call -- "een wachtwoord bestand" voor het UUCP login voor uucpssh.org
- port -- configuratiebestand voor het type connectie dat gebruikt wordt
- sys -- definieert alle UUCP-systemen voor uw computer
of
In de UUCP-wereld heeft elke UUCP-installatie een eigen naam. Deze naam wordt gecontroleerd
wanneer twee UUCP-machines met elkaar in contact komen aan het begin van de communicatie.
uucpssh.org heeft de naam uucpssh (allemaal kleine letters) en uw systeem heeft de naam
die u noemt bij het aanvragen van een account op uucpssh.org. In het onderstaande voorbeeld
zal dit mailtux zijn.
Bewerk het bestand /etc/uucp/sys en voeg het volgende aan het eind toe:
system uucpssh
myname mailtux
time any
address main.uucpssh.org
port SSH
protocol t
remote-send /
remote-receive ~
chat ""
Bewerk het bestand /etc/uucp/port en voeg het volgende aan het eind toe::
port SSH
type pipe
command /usr/bin/ssh -C -x -o batchmode=yes [email protected]
Bewerk het bestand /etc/uucp/call en voeg toe:
uucpssh mailtux uw-willekeurige-string-gekregen-van-de-uucpssh.org-admin-pagina
Controleer nu of uw configuratie werkt door het commando "uuchk" uit te voeren.
Corrigeer eventueel syntaxfouten.
Om email door te sturen naar uucpssh.org, gebruiken we ssh als gebruiker uucp.
Wees er zeker van dat de gebruiker gedefinieerd is in /etc/passwd met de naam
uucp en dat deze gebruiker een bruikbare home-directory heeft.
Controleer ook dat uucico heeft s-bit gezet heeft en behoort aan de gebruiker uucp.
Het programma, wanneer het gestart wordt door elke gebruiker, zal nu draaien als
gebruiker uucp. Hetzelfde geldt voor 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
Het configureren: het SSH deel
We moeten nu een DSA sleutel voor ssh maken en deze uploaden naar de uucpssh.org
administratiepagina. Hoe dit moet staat beschreven op deze admin pagina. Hier
volgt enkel een herhaling:
- Log in als uucp gebruiker (su - uucp)
- Start ssh-keygen -t dsa
- Geef geen wachtwoord.
- Upload de inhoud van ~uucp/.ssh/id_dsa.pub naar uw uucpssh.org admin pagina
Testen
Stuur een email naar iemand buiten uw eigen domein en controleer dat het in de
wachtrij komt te staan van uucp. Dit kan met het commando:
uustat -a
De email zou nu moeten staan in de /var/spool/uucp/uucpssh/C./ en /var/spool/uucp/uucpssh/D./
directories. Start
uulog -40
om te zien wat er gebeurt is. Controleer de log bestanden in /var/log voor uw emailprogramma
en /var/log/uucp voor uucp. Deze bestanden kunnen u tips geven over wat er mis gaat als
het niet werkt. Als het bovenstaande niet werkt, dan is er iets mis met de configuratie van
uw MTA (email-server).
Als de bovenstaande test goed werkte, kunt u de SSH-verbinding testen. Log in als gebruiker
uucp (su -uucp als root) en start:
ssh [email protected] -v
Accepteer de server's RSA-sleutel waarna u de uucp-prompt zou moeten krijgen (iets
als "Shere...").
Tenslotte testen we het zenden van de in de wachtrij geplaatste email met het commando:
/usr/sbin/uucico -x 11 -S uucpssh
De -x 11 geeft aan dat zoveel mogelijk debug-informatie gegeven moet worden. Als er iets misgaat
kunt u dan ideeën vinden in /var/log/uucp/Debug.
Inkomende email kan getest worden door vanbuiten uw domein te email naar
[email protected] om daarna de email vanaf uucpssh.org te downloaden met
het commando:
/usr/sbin/uucico -x 11 -S uucpssh
Controleer nogmaals /var/log/uucp/Debug voor problemen. Inkomende emails worden
eerst bewaard in /var/spool/uucp/uucpssh/X./ en daarna naar uw MTA gestuurd met het
commando /usr/sbin/uuxqt en /usr/bin/rmail.
Gentoo Linux had daar een bug: het zocht uuxqt in de directory /usr/lib/uucp/
en verwachtte het configuratiebestand in /usr/conf/uucp. Deze problemen heb ik
opgelost door enkele zachte links te maken.
Controleer de log van uw MTA en check dat de email ontvangen is.
Dagelijks gebruik
Nadat alles correct geïnstalleerd is, is er niets meer te doen.
Gebruik simpelweg
/usr/sbin/uucico -S uucpssh
uulog -5
om email uit te wisselen met het internet. I heb het liefste daar volledige controle
over, dus draai ik deze commando's met een script, maar u kunt het volgende ook toevoegen
aan het /etc/pp/ip-up script
/usr/sbin/uucico -S uucpssh
Dan wordt de email automatisch opgehaald wanneer u de verbinding met het Internet opzet.
Links
Geniet van UUCP-email!
Talkback voor dit artikel
Elk artikel heeft zijn eigen talkback pagina. Daar kan je commentaar geven of commentaar van anderen lezen:
2004-10-08, generated by lfparser version 2.36