In de wereld van e-mail zijn er veel aspecten om te testen, maar een van de meest basale tests die je kunt doen, is eenvoudigweg telnetten naar een gegeven SMTP-server. Deze SMTP-check is nuttig om te bepalen of de meest basale problemen wel of niet bestaan.
Is de server online?
Is er een firewall die communicatie blokkeert?
Staat de mailserver het doorsturen van een specifiek domein/e-mailadres toe?
Welke SMTP-commando's ondersteunt de mailserver?
Reageert de server met de juiste hostnaam?
Werkt de verbinding buiten eventuele software van derden of API's?
Al deze vragen en meer kunnen worden beantwoord met een eenvoudige telnettest.
Voordat we beginnen, open ons begeleidend artikel bij deze post in een nieuw tabblad, zodat je het kunt lezen nadat je klaar bent met deze blog: Waarheen worden Bounce-berichten gestuurd?
Als een aantekening, de gebruikte commando's in de volgende voorbeelden (en aanvullende commando's) worden behandeld in sectie 4.1 van RFC 2821.
Hoe verstuur ik een e-mail met Telnet?
Een e-mail via telnet versturen kan je helpen leveringsproblemen binnen je huidige configuratie te identificeren.
Voordat je een e-mail met telnet verstuurt, bevestig dat telnet zowel geïnstalleerd als ingeschakeld is op je computer. De meeste computers worden geleverd met een vooraf geïnstalleerde telnet-client. Voor die Windows-versies die dat niet doen, kan men een telnet-client installeren door naar het gedeelte “Programma's en onderdelen” van het configuratiescherm te gaan en “Windows-onderdelen in- of uitschakelen” te kiezen. Selecteer in dit venster “telnetclient” en klik vervolgens op OK.
Zodra een telnet-client is geverifieerd dat het op de server is geïnstalleerd, open je het terminalvenster waarin je je opdrachtcommando's zult invoeren. Op Windows gebruik je Windows + R, typ je “cmd”, en druk je op enter. Voor Mac-gebruikers vind je het terminalpictogram door Finder te openen en te zoeken naar “Hulpprogramma's” op de Applicatiepagina, of door “terminal” in de Launchpad-zoekfunctie in te voeren.
Vervolgens moeten we een mailserver vinden om in te loggen. Hiervoor hebben we het DNS MX-record van een bepaald domein nodig. Dit kan worden gevonden met het volgende commando (voor deze voorbeelden wordt port25.com gebruikt, maar elk domein kan worden vervangen):
Windows:
nslookup -type=mx port25.com
Niet-gezaghebbend antwoord:
port25.com MX-voorkeur = 100, mailuitwisselaar = mail.port25.com
Linux:
nslookup -type=mx port25.com
Niet-gezaghebbend antwoord:
port25.com mailuitwisselaar = 100 mail.port25.com.
SMTP gebruikt een van de drie poorten — 25, 465 of 587, welke Microsoft Outlook vaak gebruikt. Als je SMTP-relay een andere poort gebruikt dan 25 zoals in het voorbeeld, gebruik je de poort die is opgegeven door de reactie van de mailuitwisselingsserver op de nslookup. Je kunt de poort waarop je SMTP vertrouwt ook verifiëren door je beheerder te vragen of door in te loggen op de mailuitwisselingsserver en de protocollen te bekijken.
Vervolgens hebben we het DNS PTR-record nodig voor het IP dat we gaan gebruiken. Eerst moeten we weten welk IP-adres het internet ons als hebbend ziet. Om dat te vinden, kunnen we een website gebruiken zoals:
Met het IP-adres voer je het volgende commando uit, waarbij A.B.C.D het IP-adres is.
Windows:
nslookup -type=ptr A.B.C.D
Niet-gezaghebbend antwoord:
D.C.B.A.in-addr.arpa naam = server.example.com
Linux:
nslookup -type=ptr A.B.C.D
Niet-gezaghebbend antwoord:
D.C.B.A.in-addr.arpa naam = server.example.com
server.example.com is slechts een voorbeeld, en je resultaten zullen anders zijn.
Nu hebben we het MX-record voor port25.com en de PTR voor het IP dat we gaan gebruiken. Het is tijd om in te loggen op de SMTP-server. Gebruik hiervoor het volgende commando:
telnet mail.port25.com 25
Iets dergelijks als het volgende zou nu moeten worden weergegeven:
Trying 69.63.149.30... Verbonden met mail.port25.com (69.63.149.30). Escape-teken is '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) ESMTP-service gereed
Als je een foutmelding krijgt zoals “kan niet verbinden” op dit punt, is ofwel het poortnummer correct of de mailserver ondervindt problemen.
Het eerste commando dat we aan de mailserver moeten geven voor onze SMTP-emailtest is de EHLO of HELO. Dit is een basisbegroeting die de communicatie tussen de telnet-client en de SMTP-server begint. Ook wordt de DNS PTR voor het IP-adres van waaruit we verbinden zoals eerder bepaald, doorgegeven.
EHLO server.example.com
Iets dergelijks als het volgende zou dan moeten worden geretourneerd:
250-mail.port25.com zegt hallo 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN
Dit toont de SMTP-commando's die de SMTP-server accepteert. Niet alle SMTP-servers ondersteunen dezelfde sets van commando's. Bijvoorbeeld, Yahoo toont alleen het volgende:
250-8BITMIME 250-SIZE 41943040 250 PIPELINING
En AOL toont er slechts één met:
250 DSN
Het volgende commando dat we moeten geven is het MAIL FROM-commando. Dit bepaalt het adres waarnaar bounces worden gestuurd. Dit is niet hetzelfde als de from-header, die het e-mailadres is dat in een e-mailclient wordt weergegeven.
MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok
Zorg ervoor dat je de domeinnaam gebruikt die overeenkomt met het domein van je mailserver. Als je e-maildomein bijvoorbeeld anycompany.com is, wil je je@anycompany.com gebruiken in plaats van een extern e-mailadres zoals je@free-mail-provider.com. Variaties in domeinnamen kunnen ervoor zorgen dat er een foutmelding verschijnt.
Nu het MAIL FROM-commando is verstuurd, kunnen we het RCPT TO-commando versturen. Dit commando vertelt de SMTP-mailserver aan wie het bericht moet worden gestuurd. Dit kan hetzelfde of anders zijn dan de to-header, die het e-mailadres is dat in de e-mailclient wordt weergegeven.
RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok
Controleer het adres van de ontvanger dubbel voordat je het RCPT TO-commando verstuurt — een foutmelding die hier verschijnt kan wijzen op een verkeerd gespeld of geblokkeerd e-mailadres van de ontvanger.
Het laatste commando dat moet worden uitgevoerd voordat de inhoud van het bericht begint, is het DATA-commando. Dit commando laat de SMTP-mailserver weten dat alles wat nu wordt verstuurd, het lichaam van het bericht is (dat ook de headers bevat).
DATA 354 verzend bericht
Het is belangrijk op te merken dat als een mailserver PIPELINING ondersteunt, zoals mail.port25.com doet, de SMTP-mailserver mogelijk wacht tot het DATA-commando is gegeven voordat hij reageert op andere commando's na de EHLO/HELO. Voer in dat geval de MAIL FROM-, RCPT TO- en DATA-commando's in voordat je op een reactie wacht.
Nu het DATA-commando is verstuurd, kunnen we beginnen met het verzenden van de berichtinhoud. Dit begint met de verschillende headers. Minimaal moet een bericht een to-, from-, onderwerp- en datumheader bevatten. De hier ingevoerde headers worden aan de gebruiker getoond in zijn e-mailclient.
Van: "John Smith" <jsmith@port25.com> Aan: "Jane Doe" <jdoe@port25.com> Onderwerp: testbericht verzonden vanuit een handmatige telnet-sessie Datum: Wo, 11 mei 2011 16:19:57 -0400
Met de ingestelde headers voegen we nu één lege regel toe met een carriage return/line feed (gewoon tweemaal op enter drukken) en dan beginnen we met het werkelijk lichaam van het bericht.
Hallo Wereld, Dit is een testbericht verzonden vanuit een handmatige telnet-sessie. Hoogachtend, SMTP-beheerder
Met het voltooide bericht moeten we de SMTP-server laten weten dat we klaar zijn met het bericht en dat we willen dat de SMTP-mailserver het accepteert. Dit wordt gedaan met een punt op een regel op zichzelf. Als tijdens het schrijven van een bericht een punt op een regel op zichzelf nodig is, moet je 2 punten gebruiken, waarbij de eerste de tweede ontsnapt.
. 250 2.6.0 bericht ontvangen
Als je in plaats van de melding “ontvangen” een foutmelding krijgt, log dan de relevante details en neem contact op met je e-mailprovider voor meer hulp.
Tot slot wordt het QUIT-commando verzonden om de verbinding te verbreken:
QUIT 221 2.0.0 mail.port25.com zegt vaarwel
Hiermee heeft de mailserver nu het bericht voor aflevering geaccepteerd, je telnet-e-mailtest is voltooid, en het zou in de inbox van het RCPT TO-adres moeten staan!!!
Hier zijn alle commando's zonder onderbreking:
telnet mail.port25.com 25 Proberen 69.63.149.30... Verbonden met mail.port25.com (69.63.149.30). Escape-teken is '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) ESMTP-service gereed EHLO server.example.com 250-mail.port25.com zegt hallo 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok DATA 354 verzend bericht Van: "John Smith" <jsmith@port25.com> Aan: "Jane Doe" <jdoe@port25.com> Onderwerp: testbericht verzonden vanuit een handmatige telnet-sessie Datum: Wo, 11 mei 2011 16:19:57 -0400 Hallo Wereld, Dit is een testbericht verzonden vanuit een handmatige telnet-sessie. Hoogachtend, SMTP-beheerder . 250 2.6.0 bericht ontvangen QUIT 221 2.0.0 mail.port25.com zegt vaarwel
Een e-mail verzenden met telnet stelt je in staat om verbindingsmogelijkheden snel te testen en tegen lagere kosten dan robuuste diagnostische apparatuur of software.
Hoe test ik SMTP met Telnet-authenticatie?
Nu je weet hoe je een SMTP-verbinding met telnet controleert, bespreken we authenticatieprocedures. SMTP-authenticatie helpt om grote hoeveelheden spam te voorkomen in de inboxen van lezers, hoewel niet alle mailuitwisselingsservers dit vereisen.
Het belangrijkste verschil in moderne authenticatieprotocollen is de aanwezigheid van een base64-codering. Base64 converteert binaire gegevens naar het ASCII-tekstformaat dat vereist is door mailservers voor een succesvolle gegevensoverdracht. Het is een manier om je inloggegevens — een combinatie van tekst — in een numeriek formaat te representeren dat de computer kan begrijpen.
Je kunt je base64 genereren met software of gratis online tools. Zodra je de informatie aan de mailserver communiceert, vergelijkt deze de gegevens met zijn records om authenticatie te bepalen.
Om SMTP-authenticatie via telnet te testen, volg je de volgende stappen:
Open de terminal en maak verbinding met de mailserver door de telnetservername en het toegangscommando te gebruiken — mail.port25.com in het bovenstaande voorbeeld.
Begroet de server met EHLO of HELO, voer AUTH LOGIN in, en wacht op de reactie van de computer.
Voer de base64-gecodeerde gebruikersnaam in en laat de server antwoorden.
Voer het in base64 gecodeerde wachtwoord in, en je zou een reactie moeten ontvangen zoals “authenticatie geslaagd.”
Ga verder met MAIL FROM, RCPT TO, DATA, en QUIT om je geauthenticeerde e-mail te verzenden.