LINUX:Postfix-Tester
But
Après la configuration de Postfix, il faut le tester. On peut aussi tester un serveur distant.
Envoi de mail
On peut directement tester l'envoi à partir du serveur de messagerie via la commande "mail":
mail root -s Essai
Avec la commande ci-dessus, on veut envoyer un mail à l'utilisateur local root dont le sujet ("-s") est "Essai". Le prompt apparaît pour introduire le corps du message. Ce message est clôturé par une ligne ne comportant qu'un point (".").
On peut l'envoyer à un autre serveur de messagerie afin de voir si l'envoi distant fonctionne:
mail pdupont@home.dom -s Essai
Codage en BASE64
La messagerie via Internet est très ancienne; il travaillait en 7 bits dont la partie centrale correspond à l'alphabet anglais (majuscules et minuscules) et aux digits (0 à 9), ce qui correspond à 62 caractères (on y ajoute le "+" et le "/" pour arriver à 64) ; le début regroupe des caractères spéciaux comme le saut de ligne, le saut de page, le retour à la ligne, des codes pour la gestion du transfert sur ligne série ou via modem. Pour envoyer par exemple un exécutable directement, il allait y avoir interférence avec ces codes de gestion. La solution, toujours utilisée est de recoder ce fichier d'une base de 8 bits à une base de 6 bits (2 exposant 6 égal 64); ces 64 cases correspondent aux lettres et chiffres ci-dessus des cases 0 à 63. Le principe est d'aligner l'un derrière l'autre toutes les séquences de 8 bits du fichier; ensuite on prend de proche en proche 6 bits auquel on attribue une lettre ou un chiffre parmi la table des 64 cases de ci-dessus.
Ce codage est encore utilisé actuellement pour l'envoi de fichier attaché à votre mail. Quand on regarde le texte source du mail, en début du fichier attaché, on peut remarquer une ligne:
Content-Transfer-Encoding: base64
qui notifie que la suite de la section est codé sur cette base.
Lors de l'authentification passant par l'envoi du nom de l'utilisateur et de son mot de passe, ce codage est utilisé. Nous en avons donc besoin pour notre essai d'envoi de mail aux points qui suivent.
Les commande suivantes donnent un exemple d'un script permettant cette transformation:
#!/usr/bin/bash perl -MMIME::Base64 -le 'print encode_base64("pdupont\@CENTRAL");' > user.lis perl -MMIME::Base64 -le 'print encode_base64("Bateau23Ivre");' > pw.lis
La seconde ligne transforme le nom d'utilisateur "pdupont@CENTRAL" et le stocke dans le fichier "user.lis".
La troisième fait la même chose pour le mot de passe de cet utilisateur et le stocke dans le fichier "pw.lis".
Nous pourrons intégrer leur contenu dans les deux scripts qui suivent.
STARTTLS
dnf install expect
#!/usr/bin/expect -f spawn /usr/bin/openssl s_client -crlf -starttls smtp -CAfile /etc/pki/tls/certs/ca.central.crt -connect 192.168.1.35:587 sleep 1 send -- "EHLO mail.adbweb.gslb.eu\n" sleep 1 send -- "AUTH LOGIN\n" sleep 1 send -- " cGR1cG9udEBDRU5UUkFM\n" sleep 1 send -- " QmF0ZWF1MjNJdnJl\n" sleep 1 send -- "MAIL FROM:<pdupont@central.dom>\n" sleep 1 send -- "rcpt to:<edupont@central.dom>\n" sleep 1 send -- "DATA\n" send -- "From: Pierre <pdupont@central.dom>\n" send -- "To: Eric <edupont@central.dom>\n" send -- "Subject: Test\n" send -- "OK\n" send -- ".\n" sleep 1 send -- "QUIT\n" expect EOF
SSL/TLS
#!/usr/bin/expect -f spawn /usr/bin/openssl s_client -crlf -CAfile /etc/pki/tls/certs/ca.central.crt -connect 192.168.1.35:587 sleep 1 send -- "EHLO mail.adbweb.gslb.eu\n" sleep 1 send -- "AUTH LOGIN\n" sleep 1 send -- " cGR1cG9udEBDRU5UUkFM\n" sleep 1 send -- " QmF0ZWF1MjNJdnJl\n" sleep 1 send -- "MAIL FROM:<pdupont@central.dom>\n" sleep 1 send -- "rcpt to:<edupont@central.dom>\n" sleep 1 send -- "DATA\n" send -- "From: Pierre <pdupont@central.dom>\n" send -- "To: Eric <edupont@central.dom>\n" send -- "Subject: Test\n" send -- "OK\n" send -- ".\n" sleep 1 send -- "QUIT\n" expect EOF