uucpssh.org: UUCP email voor Linux-fans

ArticleCategory: Hardware

SystemAdministration

AuthorImage:[Here we need a little image from you]

[Guido Socher]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to nl Egon Willighagen

AboutTheAuthor:[A small biography about the author]

Guido houdt echt van UUCP-email omdat het een techniek is die perfect past in een Linux-omgeving.

Abstract:

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.

ArticleIllustration:

uucp mail

ArticleBody:

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 iets@linuxfocus.org).

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:

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 uucp@main.uucpssh.org
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 uucp@main.uucpssh.org -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 uwGebruiker@uw.email.domein 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!