Veilig e-mail ophalen via een SSH-tunnel in KMail
Originele auteur: Mike Pilone
Vertaling: Tom Verbreyt
Herziening 0.3
BSD-licentie
Inleiding
Dat POP3 een behoorlijk onveilig protocol is, hoeft geen verder betoog: zowel gebruikersnamen als wachtwoorden worden als platte tekst verzonden, dus zonder versleuteling of beveiliging. Een kwaadwillende medegebruiker op het netwerk hoeft slechts enkele IP-pakketjes te onderscheppen om de wachtwoorden van anderen te weten te komen. Ondanks dat er pogingen gedaan zijn om die situatie te veranderen (APOP, SSL), wordt POP3 nog steeds meestal in zijn meest eenvoudige vorm gebruikt.
Met een SSH-tunnel bedoelen we het proces waarbij je een veilige, met encryptie versleutelde "tunnel" opzet tussen jezelf en de mailserver. Die tunnel kan vele doeleinden dienen. Dankzij de functionaliteit van een "precommando" in KMail kan je de tunnel gebruiken voor POP3- en SMTP-verkeer.
Deze handleiding werd geschreven voor KDE 3.1, maar ook KDE 3.0 t/m KDE 3.3 biedt de mogelijkheid van "precommando". De meeste configuratie-opties zijn bovendien min of meer identiek.
Wat je nodig hebt
- Een werkende internetverbinding, om bepaalde dingen te testen terwijl we bezig zijn.
- Een werkende installatie van SSH: je moet uiteraard met SSH een verbinding kunnen maken naar de mailserver. Niet alle mailservers staan SSH-verbindingen toe, dus kijk even na of dat bij jou wel degelijk het geval is. Draai je je eigen mailserver, dan mag er geen probleem zijn: zowat alle distributies bieden SSH-pakketten aan.
- SSH moet ingesteld zijn voor het gebruik van RSA/DSA-authenticatie tegenover de server. Dat is een eerder complex onderwerp, waarop we hier niet dieper ingaan. Voor meer informatie kan je er bijvoorbeeld dit artikel eens op naslaan.
Shell-scripts
We hebben voorts twee shell-scriptjes nodig. De scripts maken gebruik van de SSH-parameter -L om de tunnel tot stand te brengen. Het eerste zorgt voor een tunnel naar poort 110 van de mailserver voor een POP3-verbinding, het tweede is er voor een tunnel naar poort 25, voor een SMTP-verbinding.
Download de beide scripts en maak ze uitvoerbaar:
chmod u+x sshpopportforward.sh sshsmtpportforward.sh
Open vervolgens beide scripts met een teksteditor zoals KWrite en wijzig de variabelen SSH_GEBRUIKERSNAAM en SSH_SERVER. Als gebruikersnaam vul je de naam in die je gebruikt om een SSH-verbinding met de mailserver te openen; deze naam kan verschillen van je gewone POP3- of SMTP-gebruikersnaam. Voor mailserver vul je de domeinnaam of het IP-adres van je mailserver in. We gaan ervan uit dat de mailserver een SSH-daemon draait.
Als je daarmee klaar bent, zou je probleemloos het volgende commando moeten kunnen uitvoeren:
sshpopportforward.sh ; telnet localhost 11110
Als alles goed gaat, zou je een antwoord moeten krijgen in de trant van +OK QPOP (version ...) at mail.fakehost.com. Typ QUIT om de verbinding met de mailserver te verbreken.
De scripts zijn identiek, afgezien van de verschillende poortnummers waarvan ze gebruik maken (25 voor SMTP, 110 voor POP). Elk script voert één enkel SSH-commando uit:
ssh -C -f $SSH_GEBRUIKERSNAAM@$SSH_SERVER -L 11110:$SSH_MAIL_SERVER:110 'sleep 3'; sleep 1
Stap voor stap: eerst verbindt SSH met $SSH_SERVER als gebruiker $SSH_GEBRUIKERSNAAM. Vervolgens opent SSH de lokale poort 11110 (localhost). Verbindingen op poort 11110 moeten daarna via de SSH-verbinding geforward worden naar poort 110 op $SSH_MAIL_SERVER. Als de poorten in orde zijn, voert het script het commando sleep 3 uit op de mailserver, opdat de tunnel voldoende lang geopend blijft en KMail voldoende tijd heeft om er gebruik van te maken. Als de verbinding tot stand gekomen is, zorgt SSH ervoor dat de tunnel open blijft zolang de verbinding bestaat. Zo blijft de tunnel actief, ook als het langer dan 3 seconden duurt om mail van de server te downloaden.
KMail instellen
Nu we via een SSH-tunnel een werkende verbinding met de mailserver hebben, wordt het tijd om KMail zodanig in te stellen dat het gebruikt maakt van die tunnel.
Open KMail en klik je weg naar de instellingen, via Instellingen->KMail instellen.... Klik op het tweede pictogram links voor de netwerkinstellingen. Je zou ongeveer dit moeten zien:
We willen eerst een nieuwe POP3-account toevoegen, dus klik op het tabblad Ontvangen. Het venster ziet er dan als volgt:
Voeg een nieuwe account toe door op Toevoegen... te klikken. Een dialoogvenster zoals in onderstaande afbeelding zou moeten verschijnen. Kies voor een POP3-account en bevestig je keuze.

Het daarop volgende venster dient voor de instellingen van je POP3-verbinding. Vul de velden in met deze waarden:
- Naam: eender welke naam die je aan je account wil geven
- Gebruikersnaam: de gewone gebruikersnaam van je POP3-account
- Wachtwoord: het bijbehorende wachtwoord
- Host: localhost
- Poort: 11110
- Precommando: /pad/naar/script1/sshpopportforward.sh
De andere waarden mag je naar eigen goeddunken wijzigen. Bovenstaande informatie vertelt KMail dat het moet verbinden met de eigen machine (localhost) op poort 11110. KMail gaat er dus van uit daar de POP3-server aan te treffen. Als "precommando" geven we het script op, waarvan we weten dat het alle verbindingen op poort 11110 via de beveiligde tunnel doorverbindt naar poort 110 op de eigenlijke mailserver.
De instellingen onder het tabblad Extra's zijn op dit moment niet belangrijk. Bevestig dus je instellingen door op OK te klikken.
Vervolgens gaan we de SMTP-verbinding instellen om mail correct te verzenden. Meestal hebben SMTP-servers geen wachtwoord nodig, dus een tunnel is voor deze verbinding van minder belang. Toch vinden sommigen het goed te weten dat verzonden mail onderweg naar de mailserver niet onderschept kan worden door derden. Aan het einde van deze handleiding worden enkele redenen opgesomd waarom de tunnel toch nuttig kan zijn.
Klik op het tabblad Verzenden onder het pictogram voor netwerkinstellingen. Het volgende dialoogvenster zal verschijnen:
Kies Toevoegen... en vervolgens kies je SMTP als Transport. Bevestig je keuze en vul volgende waarden in het dialoogvenster Transport toevoegen:
- Naam: een naam naar keuze die je aan je account wil geven
- Host: localhost
- Poort: 11125
- Precommando:/pad/naar/script2/sshsmtpportforward.sh
De andere waarden mag je opnieuw naar eigen goeddunken wijzigen. Bovenstaande informatie draagt KMail op om met de eigen machine (localhost) te verbinden op poort 11125. KMail verwacht daar dus de SMTP-server; opnieuw zal het script ervoor zorgen dat de verbinding omgeleid wordt naar poort 25 van de eigenlijke mailserver.
Het tabblad Beveiliging is hier niet van belang. Bevestig dus vooral je instellingen door op OK te klikken.
Het is, tot slot, misschien een goed idee om de Standaard verzendwijze, onderaan onder het tabblad Verzenden te wijzigen in Later verzenen. Vink ook de selectievak erboven aan (Berichten in postvak uit verzenden tijdens controle).
Normaal gezien zou de SSH-tunnel telkens opnieuw tot stand gebracht worden bij het verzenden van mail. Door de mail in een wachtrij te zetten (Later verzenden) kan je eerst meerdere emailberichten schrijven, om ze later allemaal samen door een enkele tunnel te verzenden. Uiteraard is dat niet noodzakelijk, maar het maakt KMail wat vlotter in het gebruik. Het aangevinkte selectievakje zorgt ervoor dat email die in de wachtrij zit, verzonden wordt als je je email controleert.
Zo. KMail is nu ingesteld om gebruik te maken van de tunnel. Als je de volgende keer je email controleert, worden eerst de "precommando's" uitgevoerd, die de tunnels tot stand brengen.
Mogelijke problemen
Het grootste probleem met bovenstaande aanpak is dat de lokale poorten 11110 en 11125 geopend worden voor het checken van je mail. Dat mag geen noemenswaardig bezwaar heten, maar in bepaalde omstandigheden is het een goed idee die poorten te beschermen met een firewall, zodat enkel localhost ermee kan verbinden.
Verder zijn er meldingen van bepaalde mailservers die geen uitgaande SMTP-verbindingen toelaten vanop localhost. Dat is natuurlijk een vereiste voor bovenstaande SMTP-tunnel. Bill Farrow heeft daar een oplossing voor bedacht.
Mogelijke uitgebreide toepassingen
SSH-tunnels bieden veel meer mogelijkheden dan het hierboven beschrevene. SSH is bijvoorbeeld in staat een tunnel op te zetten waarmee je via een derde machine naar je doel verbindt, wat erg handig is als je pakweg voorbij een firewall moet om je mailserver te bereiken: zo kan een bedrijf perfect een POP3-server draaien zonder hem noodzakelijkerwijs publiekelijk open te stellen, een gratis en eenvoudige VPN-oplossing.
We hadden het er al over dat er meestal geen wachtwoord-authenticatie beschikbaar is op SMTP-servers. Waarom dan toch? De meeste goed ingestelde SMTP-servers staan geen relaying toe, om te vermijden dat ze gebruikt worden voor het verzenden van mail, door personen die daartoe niet bevoegd zijn. Dat kan echter lastig zijn, bijvoorbeeld als werknemers van thuis uit email willen verzenden. Een mogelijke oplossing is "SMTP after POP", waarbij je pas mail mag versturen nadat je eerst je POP3-gebruikersnaam en -wachtwoord hebt opgegeven. Een andere oplossing is authenticatie op basis van een statisch IP-adres. Deze oplossing is een derde mogelijkheid: met een SSH-tunnel log je in op de firewall om probleemloos je email te kunnen versturen. De mailserver gaat er dan immers van uit dat de verbinding van een geldige machine afkomstig is (dat is ook zo) en maakt er verder geen probleem meer van.
Merk op dat de scripts niet per se als dusdanig gebruikt moeten worden. Je kan het specifieke SSH-commando natuurlijk ook gewoon invullen in de velden voor de "precommando's". Ter wille van de duidelijkheid hebben we de scripts in deze handleiding apart gehouden. Een andere opmerking: mocht je meerdere POP3-accounts op deze manier willen gebruiken, dan gewoon kopieën van elk script voor elke account, of wijzig het script zodanig dat het een server als parameter verwacht.
Links
KDE: http://www.kde.org/
KMail: http://pim.kde.org/components/kmail.php
OpenSSH: http://www.openssh.com/
IBM DeveloperWorks OpenSSH Key Management
SSH sendmail in plaats van een SSH-tunnel voor SMTP-verbinding
Licenties en verdiensten
Deze howto is overgenomen van http://www.slac.com/~mpilone/projects/kde/kmailssh/index.htm.
Dan Pilone schreef de scripts; Bill Farrow kwam op het SSH-sendmail-idee met bijbehorend script.
Inhoudelijke commentaar richt je best (in het engels) naar mpilone@slac.com
Tom Verbreyt heeft deze howto vertaald naar het nederlands.
Deze howto valt onder een BSD-licentie (nederlandse versie).
Over deze site | Laatst gewijzigd: $Date: 2005/04/24 18:27:08 $ door: $Author: tijmen $




