Verder Terug Inhoud

3. Gebruik het met je mailsoftware

In deze sectie wordt de instelling van je POP clientsoftware beschreven waarbij het gebruik maakt van de ssh forwarded connectie. Het is primair op fetchmail gericht (ESR's uitstekende mail-ophaal en forwarding utility), aangezien dat de meest flexibele software die ik voor het omgaan met POP heb gevonden. Fetchmail is te vinden op http://www.tuxedo.org/~esr/fetchmail/. Je verleent jezelf een grote dienst als je de uitstekende documentatie leest die met fetchmail wordt meegeleverd.

3.1 Opzetten van fetchmail

Hieronder volgt mijn .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;

Tamelijk simpel, toch? fetchmail kent een rijkdom aan opdrachten, maar de belangrijkste zijn de preconnect regel en de optie poll.

We maken geen directe verbinding met de POP-server, maar in plaats daarvan met localhost en poort 11110. De preconnect doet de forwarding elke keer dat fetchmail wordt uitgevoerd, de verbinding 5 seconden open latend, zodat fetchmail zijn eigen verbinding kan opzetten. De rest doet fetchmail zelf.

Dus elke keer dat je fetchmail uitvoert, wordt er gevraagd om je ssh wachtwoord voor de authenticatie. Als je fetchmail in de achtergrond uitvoert (zoals ik doe), dan is dat niet handig. Wat ons brengt bij de volgende sectie.

3.2 Alles automatiseren

ssh kan met veel manieren authenticeren. Een hiervan is een RSA public/private sleutelpaar. Je kunt met ssh-keygen een authenticatiesleutel voor je account genereren. Er kan met een authenticatiesleutel een wachtwoord worden geassocieerd of het wachtwoord kan worden leeggelaten. Of je een wachtwoord wilt, hangt af van hoe veilig je meent dat het account is dat je lokaal gebruikt.

Als je denkt dat je machine veilig is, ga dan verder en laat het wachtwoord leeg. Dan werkt de bovenstaande .fetchmailrc door het slechts uitvoeren van fetchmail. Je kunt fetchmail dan in daemon modus uitvoeren wanneer je inbelt waarbij de mail automatisch wordt opgehaald. Je bent klaar.

Als je echter meent een wachtwoord nodig te hebben, dan wordt het wat complexer. ssh kan onder besturing van een agent worden uitgevoerd, die sleutels kan registreren en wat voor ssh verbindingen er ook onder worden gemaakt authenticeren. Dus maak ik gebruik van het volgende script getmail.sh:


#!/bin/sh
ssh-add
while true; do fetchmail --syslog --invisible; sleep 5m; done

Wanneer ik inbel, voer ik uit:

$ ssh-agent getmail.sh

Eenmaal wordt om mijn wachtwoord gevraagd, vervolgens wordt elke 5 minuten mijn mail gecontroleerd. Wanneer de inbelverbinding wordt gesloten, beëindig ik de ssh-agent. (Dit is geautomiseerd in mijn ip-up en ip-down scripts).

3.3 Geen gebruik van fetchmail

Wat als ik geen gebruik kan/wil maken van fetchmail? Pine, Netscape en nog een aantal andere clients hebben eigen POP-mechanismen. Overweeg eerst het gebruik van fetchmail! Het is veel flexibeler, en mailclients zouden zich hoe dan ook toch niet met dergelijke zaken bezig moeten houden. Zowel Pine als Netscape kunnen worden geconfigureerd dat ze gebruik maken van lokale mailsystemen.

Maar als je erop staat, dan moet je de ssh port forware de gehele tijd dat je verbonden bent actief houden, tenzij je client een preconnect feature heeft zoals fetchmail. Wat betekent het gebruik van sleep 100000000 om de verbinding te behouden. De systeembeheerders kunnen dit wellicht niet waarderen.

Ten tweede hebben een aantal clients (zoals Netscape) het poortnummmer hardcoded in 110. Dus wellicht dat je root moet zijn om port forwarding te gebruiken vanuit privileged poorten. Ook dit is ergerlijk. Maar het zou moeten functioneren.


Verder Terug Inhoud