swaks : Envoyez des mails depuis vos scripts sans MTA

envoi_courriel



Introduction



SWAKS pour SWiss Army Knife for SMTP, est un client SMTP, qui vous permettra d'envoyer facilement des mails dans vos scripts par exemple.
Avec lui, pas besoin d'installer postfix et de le configurer en relais SMTP !

Tout se passe en ligne de commande, bien qu'il y ait des fichiers de configuration au besoin.

Dans cet exemple, je vais partir avec une boite mail créée pour ce tuto :
Code TEXT :
Email : [email protected]
Mot de passe : [email protected]


Pour envoyer du mail, j'ai besoin des paramètres SMTP de IONOS, l'hébergeur :
Code TEXT :
Serveur : smtp.ionos.fr
Port (pour TLS) : 587


Installation



Sous RHEL et dérivées, le dépôt EPEL est nécessaire. Après installation :

Code BASH :
dnf install swaks


Sous Gentoo :

Code BASH :
emerge -av swaks


Si on utilise du protocole SSL :

Code BASH :
emerge -av dev-perl/Net-SSLeay




Utilisation



Testons le fonctionnement :

Code BASH :
swaks -t destinataire@linuxtricks.fr -s smtp.1und1.de:587 -tls -au demo@linuxtricks.fr -ap Demo@21 -f demo@linuxtricks.fr


Un message contenant This is a test mailing sera envoyé avec en titre test Tue, 06 Apr 2021 09:44:22 +0200.

Quelques infos sur les options :
-t : Destinataire (to)
-s : SMTP à utiliser
-tls : On active le mode TLS (STARTTLS)
-au : Identifiant pour s'authentifier sur le SMTP (Auth Username)
-ap : Mot de passe pour s'authentifier sur le SMTP (Auth Password)
-f : Expéditeur (From). important sinon c'est envoyé depuis [email protected] !

On a en plus des traces de debug sur la console :

Code TEXT :
=== Trying smtp.1und1.de:587...
=== Connected to smtp.1und1.de.
<-  220 kundenserver.de (mreue010) Nemesis ESMTP Service ready
 -> EHLO SRV-RHEL-TUTOS-LT
<-  250-kundenserver.de Hello SRV-RHEL-TUTOS-LT [xx.xx.xx.xx]
<-  250-8BITMIME
<-  250-AUTH LOGIN PLAIN
<-  250-SIZE 140000000
<-  250 STARTTLS
 -> STARTTLS
<-  220 OK
=== TLS started with cipher TLSv1.3:TLS_AES_256_GCM_SHA384:256
=== TLS no local certificate set
=== TLS peer DN="/C=DE/O=1&1 IONOS SE/ST=Rheinland-Pfalz/L=Montabaur/CN=smtp.1und1.de"
 ~> EHLO SRV-RHEL-TUTOS-LT
<~  250-kundenserver.de Hello SRV-RHEL-TUTOS-LT [xx.xx.xx.xx]
<~  250-8BITMIME
<~  250-AUTH LOGIN PLAIN
<~  250 SIZE 140000000
 ~> AUTH LOGIN
<~  334 VXNlcm5hbWU6
 ~> ZGVtb0BsaW51eHRyaWNrcy5mcg==
<~  334 UGFzc3dvcmQ6
 ~> RGVtRGVtQDIxMjE=
<~  235 Authentication succeeded
 ~> MAIL FROM:<[email protected]>
<~  250 Requested mail action okay, completed
 ~> RCPT TO:<[email protected]>
<~  250 OK
 ~> DATA
<~  354 Start mail input; end with <CRLF>.<CRLF>
 ~> Date: Tue, 06 Apr 2021 09:44:22 +0200
 ~> To: [email protected]
 ~> From: [email protected]
 ~> Subject: test Tue, 06 Apr 2021 09:44:22 +0200
 ~> Message-Id: <[email protected]>
 ~> X-Mailer: swaks v20181104.0 jetmore.org/john/code/swaks/
 ~> 
 ~> This is a test mailing
 ~> 
 ~> 
 ~> .
<~  250 Requested mail action okay, completed: id=1MeCd5-1m2kU42mmt-00bHnr
 ~> QUIT
<~  221 kundenserver.de Service closing transmission channel
=== Connection closed with remote host.
 


Si on veut spécifier du texte dans le corps, on ajoutera l'option --body et pour le sujet, c'est --h-Subject :

Code BASH :
swaks -t destinataire@linuxtricks.fr -s smtp.1und1.de:587 -tls -au demo@linuxtricks.fr -ap Demo@21 -f demo@linuxtricks.fr --body "Contenu du message" --h-Subject "Sujet du message"


Parfois, le contenu du message peut être long, on peut le stocker dans un fichier et indiquer le nom du fichier :

Code BASH :
swaks -t destinataire@linuxtricks.fr -s smtp.1und1.de:587 -tls -au demo@linuxtricks.fr -ap Demo@21 -f demo@linuxtricks.fr --body /home/adrien/message.txt --h-Subject "Sujet du message"


Si on veut joindre un fichier, c'est --attach qu'on utilisera :

Code BASH :
swaks -t demo@linuxtricks.fr -s smtp.1und1.de:587 -tls -au demo@linuxtricks.fr -ap Demo@21 -f demo@linuxtricks.fr --body /home/adrien/message.txt --h-Subject "Sujetde message" --attach fichier.txt


Enfin, si vous souhaitez cacher les informations de debug à l'écran, on pourra utiliser l'option --hide-all !

Fichier de configuration



Si on ne veut pas s'embêter avec toutes les options, on pourra créer un fichier de configuration dans notre dossier personnel nommé .swaksrc :

Code BASH :
vi $HOME/.swaksrc


On y mettra toutes les options qu'on souhaite, 1 par ligne :

Code TEXT :
-s smtp.1und1.de:587
-tls
-au [email protected]
-ap [email protected]
-f [email protected]


Et maintenant, on a une ligne de commande plus courte puisque les informations de connexion sont dans un fichier de config :

Code BASH :
swaks -t destinataire@linuxtricks.fr --body /home/adrien/message.txt --h-subject "Sujet du message"