Denne delen beskriver hvordan du kan få dine POP-klienter til å bruke ssh vidersendingsforbindelsen. Primært fokusere det på fetchmail (ESR's glimrende nedlastings- og videresendings-program for e-post), siden det er det mest fleksible programmet jeg har funnet for å håndtere POP. Fetchmail kan en finne på http://www.tuxedo.org/~esr/fetchmail/. Du kan gjøre deg selv en stor tjeneste ved å lese den glimrende dokumentasjonen som følger med fetchmail.
Følgende er innholdet i min .fetchmailrc
defaults
user msingh is manish
no rewrite
poll localhost with protocol pop3 and port 11110:
preconnect "ssh -C -f msingh@popserver -L 11110:popserver:110 sleep 5"
password foobar;
Ganske enkelt, eller hva?
fetchmail har et utall av kommandoer,
men de viktigste i denne forbindelse
er preconnect
linja og funksjonsvalget poll
.
Vi er ikke forbundet direkte til POP-tjeneren, men istedet
til localhost og port 11110.
Preconnect
-delen sørger for videresending hver gang
fetchmail kjører. Den holder forbindelsen oppe i 5 sekund,
slik at fetchmail kan få tid til å opprette en egen forbindelse.
Resten sørger fetchmail for selv.
Så hver gang du kjører fetchmail blir du bedt om å skrive inn ssh passordet ditt for pålitelighetskontroll. Hvis du kjører fetchmail i bakgrunnen (slik jeg gjør), er dette tungvint. Dette bringer oss over til neste del.
ssh kan bruke mange metoder for pålitelighetskontroll.
En av disse er å bruke et RSA offentlig/privat nøkkel-par.
Du kan lage en pålitelighetskontrollnøkkel for din konto
ved å bruke ssh-keygen
.
En pålitelighetskontrollnøkkel kan ha en assosiert pass-setning,
eller en tom pass-setning.
Om du ønsker en pass-setning avhenger av hvor sikker
du tror kontoen du bruker lokalt er.
Hvis du tror maskinen din er sikker, er det bare å gå i
gang med en tom pass-setning.
I det tilfellet virker .fetchmailrc
over ved bare å
kjøre fetchmail.
Du kan deretter kjøre fetchmail i daemon modus når du ringer
opp og e-posten din vil bli henta automatisk.
Det er det hele.
Men hvis du tror du trenger en pass-setning,
blir ting straks mer kompliserte.
ssh kan bli styrt av en agent når det kjører, og denne
kan registrere nøkler og utføre pålitelighetskontroll for de
ssh-forbindelsene som den styrer.
Så jeg har dette skallmanuset getmail.sh
:
#!/bin/sh
ssh-add
while true; do fetchmail --syslog --invisible; sleep 5m; done
Når jeg ringer opp kjører jeg:
$ ssh-agent getmail.sh
Jeg blir bedt om å skrive inn pass-setningen en gang, og det blir hentet eventuell e-post hvert femte minutt. Når oppringtforbindelsen lukkes stopper jeg ssh-agent. (Dette blir automatisert i mine ip-up og ip-down skallmanus.)
Hva hvis jeg ikke kan eller vil bruke fetchmail? Pine, Netscape og noen andre klienter har egne POP-mekanismer. Først, vurder å bruke fetchmail! Det er mye mer fleksibelt. Dessuten burde ikke e-postklienter holde på med slike ting uansett.
Men hvis du må, og ikke klienten din har mulighet for å
opprette en forhåndsforbindelse slik som fetchmail,
blir du nødt til å holde ssh's viderekobling av porten aktiv
under hele oppkoblingstida.
Det betyr at du må bruke sleep 100000000
for å opprettholde forbindelsen.
Dette er noe nettverksadministratoren din kanskje ikke er glad for.
Dessuten, hos noen klienter (slik som Netscape) er portnummeret hardkodet til 110. Du blir da nødt til å være root for å gjøre videresending av en port fra privilegerte porter. Dette er i tillegg irriterende, men det burde fungere.