Test je smtp-servers met swaks
Gepubliceerd: Dinsdag 22 maart 2011
Auteur: Koen Vervloesem
Wil je een smtp-server testen of complexe zaken scripten, dan kan swaks je hierbij helpen: deze tool (SWiss Army Knife Smtp) handelt alle smtp-taken voor je af en toont je alle in- en uitvoer.
Uiteraard kun je met telnet (voor smtp) of openssl (voor smtps) handmatig smtp-verbindingen opzetten om een server te debuggen, maar dat vereist wel dat je de smtp-syntax goed onder de knie hebt en geen typefouten maakt. Het programma swaks neemt je al deze taken uit handen.
Testmail
Om een testmail naar iemand te sturen op de standaardpoort 25 van een mailserver, gebruik je:
$ swaks --to gebruiker@voorbeeld.nl --server test.voorbeeld.net
=== Trying test.voorbeeld.net:25...=== Connected to test.voorbeeld.net.
<- 220 test.voorbeeld.net ESMTP
-> EHLO zen.lan
<- 250-test.voorbeeld.net
<- 250-8BITMIME
<- 250 SIZE 16777216
-> MAIL FROM:
<** 553 #5.1.8 Domain of sender address
<- 221 test.voorbeeld.net
=== Connection closed with remote host.
Je krijgt dus de in- en uitvoer te zien en kunt zo onmiddellijk problemen diagnoseren. Hier zie je dat het probleem is dat de mailserver het from-adres niet aanvaardt, omdat het niet bestaat (in dit geval een adres in het LAN). Dat los je op door een bestaand from-adres op te geven, en dan krijg je dit:
$ swaks --to gebruiker@voorbeeld.nl --from koen@voorbeeld.nl --server test.voorbeeld.net
=== Trying test.voorbeeld.net:25...=== Connected to test.voorbeeld.net.
<- 220 test.voorbeeld.net ESMTP
-> EHLO zen.lan
<- 250-test.voorbeeld.net
<- 250-8BITMIME
<- 250 SIZE 16777216
-> MAIL FROM:
<- 250 sender
-> RCPT TO:
<- 250 recipient
-> DATA
<- 354 go ahead
-> Date: Mon, 21 Mar 2011 15:52:15 +0100
-> To: gebruiker@voorbeeld.nl
-> From: koen@voorbeeld.nl
-> Subject: test Mon, 21 Mar 2011 15:52:15 +0100
-> X-Mailer: swaks v20100211.0 jetmore.org/john/code/swaks/
->-> This is a test mailing
->
-> .
<- 250 ok: Message 498060401 accepted
-> QUIT
<- 221 test.voorbeeld.net
=== Connection closed with remote host.
Maar swaks gaat veel verder. Je kunt zelf een mail body kiezen met --body, headers toevoegen met --header-HEADERNAAM, met --attach een attachment toevoegen, met --auth het type authenticatie kiezen (en dan met --auth-user en --auth-password de gebruikersnaam respectievelijk het wachtwoord), enzovoort. Bij de serveroptie kun je ook de poort achter een : opgeven, of je geeft de poort afzonderlijk op met de optie --port. Verder kun je het protocol kiezen met --protocol (standaard ESMTP) en het programma kent opties voor gebruik met TLS/SSL.
Configuratie
Gebruik je vaak dezelfde opties, dan kun je deze het beste in een configuratiebestand zetten. Standaard leest swak opties in uit het bestand ~/.swaksrc, maar je kunt een ander configuratiebestand opgeven met de optie --config. Wil je bijvoorbeeld voor al je tests hetzelfde from-adres gebruiken, dan zet je in ~/.swaksrc:
--from koen@voorbeeld.nl
Een andere manier is om de opties in omgevingsvariabelen in te stellen van de vorm SWAKS_OPT_optienaam. Het from-adres stellen we bijvoorbeeld in met:
export SWAKS_OPT_from="koen@voorbeeld.nl"
Scripts
Swaks is ook heel handig in gebruik voor scripts. Bekijk de man-pagina maar eens voor de vele opties. Swaks heeft bovendien ongewoon veel exit-codes, waardoor je in een script aan deze code vrij goed kunt zien wat er fout gelopen is en dus heel eenvoudig op basis daarvan het verdere verloop van het script kunt baseren. Al met al verdient swaks dus zeker zijn naam als Zwitsers zakmes voor SMTP.
De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.
