Soms moet je even kunnen testen of een mailserver een verbinding toestaat. Of dat je daadwerkelijk een e-mail kunt versturen via die server. Maar hoe doe je dat eenvoudig? In dit artikel legt ik uit hoe je eenvoudig een mail verstuurt via telnet.
Hoe kan ik een e-mail versturen via telnet?
Als je via telnet mail kunt versturen, dan scheelt dat enorm veel tijd ten opzichte van het even tijdelijk instellen van een e-mailaccount in Microsoft Office Outlook of Mozilla Thunderbird. Ook is het erg handig voor het identificeren van SMTP-verbindingsproblemen, of om IMAP- en POP3-verbindingen met telnet te testen.
Benodigdheden om e-mail te versturen via telnet
Telnet installeren in Windows: Via het Windows-onderdeel Turn Windows features on or off (Windows-onderdelen in- of uitschakelen) moet je eerst de Telnet Client beschikbaar maken. Standaard is deze vaak niet aanwezig. Je komt hier via Configuratiescherm en Programma’s en klik vervolgens op Windows-onderdelen in- of uitschakelen.
In het venster vink je de Telnet Client aan en klik je op OK, het wordt geïnstalleerd en beschikbaar gemaakt.
Enige ervaring met de Windows opdrachtprompt (cmd.exe
) is handig, want alles wat je doet om via telnet e-mail te versturen moet je intypen. Is de Telnet Client geïnstalleerd, dan start je de Windows opdrachtprompt (cmd.exe
). Je mag ook geen typfouten maken, telnet kent – in dit geval – geen backspace-functionaliteit.
Wat is telnet?
Telnet is een netwerkprotocol om verbinding te maken met een telnet server. Die is beschikbaar op TCP-poort 23. De computer waarop de telnet client uitgevoerd wordt fungeert dan als terminal van de server. Maar vanwege de onveiligheid van dit netwerkprotocol – alle data wordt onversleuteld, en dus leesbaar, verzonden – vind je nog maar weinig echte telnetservers. De telnet client kan ook verbinding maken met andere poorten en praten met andere netwerk- en applicatieprotocollen. Zodoende kan je de telnet client gebruiken om een e-mailprogramma te emuleren om e-mail te versturen. Mits je alle e-mail (SMTP) commando’s kent.
SMTP-commando’s
No, not these type of commandos :)
Het SMTP-protocol kent een heel scala aan commando’s om e-mail te versturen, of bijvoorbeeld om op een mailserver in te loggen voordat je e-mail kunt versturen. Beveiliging en versleuteling van de verbinding via TLS of SSL over SMTP kent ook weer eigen commando’s. In dit artikel gaan we hier verder niet op in, het is mijns inziens simpelweg niet relevant. Je wilt graag verbinding kunnen maken met een SMTP-server om een eenvoudige e-mail te versturen, dus dat laat ik je hier zien.
De commando’s die we gebruiken zijn helo
, mail from
, rcpt to
, en data
. Eenvoudig gezegd: de begroeting (SMTP is een heel vriendelijk protocol, iedere server groet elkaar nog netjes :-) ), afzender, ontvanger (“rcpt” staat voor recipient) en data als gegeven dat je data wilt sturen.
Een commando en de waarde ervan wordt gescheiden door een dubbelepunt (:
).
E-mail versturen via telnet
Goed, je hebt nu de telnet client geïnstalleerd en de Windows opdrachtprompt geopend staan. Je maakt verbinding met een mailserver met de opdracht telnet mail.example.net 25
. Je geeft aan telnet
de betreffende mailserver en het poortnummer mee als parameters.
In het voorbeeld hieronder verbind ik met de mailserver van mijn werkgever, om mijzelf een e-mail te sturen. De uitleg staat eronder.
C:\Users\janreilink> telnet mx1.example.com 25
220 net3-nl-mx-27.example.net ESMTP Postfix
HELO THERE
250 net3-nl-mx-27.example.net
MAIL FROM: <root@example.com>
250 2.1.0 Ok
RCPT TO: <postmaster@example.net>
250 2.1.5 Ok
DATA
354 End data with .
Subject: Dit is een e-mail via telnet verzonden
To: Jan Reilink
From: Jan Reilink
Testbericht
.
250 2.0.0 Ok, id=28851-09, from MTA([127.0.0.1]:10001): 250 2.0.0 Ok: queued as
E8049C0003F
QUIT
221 2.0.0 Bye
Connection to host lost.
C:\Users\janreilink>
Wat je hier ziet gebeuren is als volgt (SMTP-commando’s in hoofdletters):
- ik maak via telnet verbinding met mx1.example.com, op poort 25
- de mailserver antwoord met
220 net3-nl-mx-27.example.net ESMTP Postfix
- ik begroet de mailserver met “HELO THERE”, en de mailserver groet terug met zijn hostnaam:
250 net3-nl-mx-27.example.net
- ik weet dat het dan toegestaan is om te beginnen met de e-mail, anders gaf de mailserver een foutmelding terug.
- ik begin met aan te geven van wie de e-mail afkomstig is:
MAIL FROM:<jan@saotn.nl>
- en de mailserver antwoordt dat het goed is:
250 2.1.0 Ok
- daarna geef ik op wie de ontvanger is:
RCPT TO:<janreilink@example.com>
, en weer eenOk
reactie daarop - dan is het nu tijd om de data-invoer te initieren, met het
DATA
-commando - de mailserver antwoordt dat het einde van de data-invoer moet bestaan uit
<CR><LF>.<CR><LF>
. Of eenvoudig gezegd: ENTER, punt, ENTER - de SMTP-data-invoer wordt gestart en we beginnen met een paar headers (onderwerp, ontvanger en verzender), zodat dat netjes in de e-mail komt
- na de headers houd ik een lege regel aan om te starten met de body van de e-mail; het bericht
- en zoals door de mailserver opgegeven eindigt de data-invoer met een ENTER, punt (
.
) en ENTER - de mailserver bevestigt dat het bericht goed is ontvangen met een
250
response code, en geeft een uniek Message-ID eraan mee. In dit geval E8049C0003F (SMTP) en 28851-09 (anti-spam). Omdat een Message-ID altijd uniek is kan een mailserverbeheerder dit weer terugvinden in zijn mailserver-logbestanden - met
QUIT
geef ik aan de SMTP-sessie te willen beëindigen. Een tweede e-mail sturen kan door in plaats hiervan eenRSET
in te voeren. Dat staat voor “reset de verbinding” - netjes als het SMTP-protocol is, groet de mailserver en sluit de verbinding
Alleen de SMTP-verbinding testen
Wil je alleen testen of een mailserver een verbinding toestaat dan kan je in plaats van “HELO THERE” al een “QUIT” ingeven. Om te verifiëren dat het e-mailadres van de ontvanger bestaat geef je QUIT in in plaats van DATA. De SMTP-sessie is te allen tijde te beëindigen.
Op Saotn.org leg ik uit hoe je een beveiligde SMTP-verbinding test, mét SMTP-authenticatie: How to test SMTP Authentication and StartTLS
Uitgaande SMTP mailserveradressen internet providers
Ben je benieuwd naar wat de mailserveradressen zijn van internet providers Ziggo, KPN, Xs4all, Gmail of Hotmail/Outlook? In het artikel e-mail instellen in Outlook 2013 vind je de mailserveradressen van deze aanbieders.