Petite histoire de debugging (sendemail)

Je vous raconte comment j'ai failli envoyé un bug report à Debian 🙂
TL;DR: Une dépendances manquante pour le paquet sendemail m’empêchait d'envoyer des mail via TLS.

Dans notre architecture, nous avons un serveur sous XEN, et différentes VM pour différentes fonctions, dont une "WEB" (pour les sites), une "DATA" et enfin une "MAIL" qui est notre serveur mail.
Je voulais changer de méthode d'envoi de mail en local, je suis donc passé au package sendEmail (pas sendmail donc) pour avoir l'auth STARTTLS. Mais, pour une raison inexpliquée, certaines VM arrivaient à envoyer des mails et d'autre non.

Première chose, vérifier les logs;

  1. Du côté du serveur de mail : rien de particulier (comme l'authentification ne marchait pas)
  2. Du côté du client mail (sendemail) : l'envoi en mode debug me donnait quelques indices :

depuis la VM WEB (impossible d'envoyer un mail) :

sendemail -u subject -m message -f user@domain.tld -t user@domain.tld -s mailserver -xu user@domain.tld -xp password -vvvv
DEBUG => Connecting to mailserver
DEBUG => My IP address is: 10.0.1.1
DEBUG => evalSMTPresponse() - Checking for SMTP success or error status in themessage: 220 mailserver ESMTP Postfix (Debian/GNU)
DEBUG => evalSMTPresponse() - Found SMTP success code: 220
SUCCESS => Received:     220 mailserver ESMTP Postfix (Debian/GNU)
INFO => Sending:         EHLO WEB
DEBUG => evalSMTPresponse() - Checking for SMTP success or error status in themessage: 250-mailserver, 250-PIPELINING, 250-SIZE 502400000, 250-ETRN, 250-STARTTLS, 250-ENHANCEDSTATUSCODES, 250-8BITMIME, 250 DSN
DEBUG => evalSMTPresponse() - Found SMTP success code: 250
SUCCESS => Received:     250-mailserver, 250-PIPELINING, 250-SIZE 502400000, 250-ETRN, 250-STARTTLS, 250-ENHANCEDSTATUSCODES, 250-8BITMIME, 250 DSN
DEBUG => The remote SMTP server supports TLS :)
NOTICE => Authentication not supported by the remote SMTP server!
INFO => Sending:         MAIL FROM:user@domain.tld
DEBUG => evalSMTPresponse() - Checking for SMTP success or error status in themessage: 530 5.7.0 Must issue a STARTTLS command first
DEBUG => evalSMTPresponse() - Found SMTP error code: 530
ERROR => Received:       530 5.7.0 Must issue a STARTTLS command first

depuis la VM DATA (où les mails fonctionnaient sans problème) :

# sendemail -u subject -m message -f user@domain.tld -t user@domain.tld -s mailserver -xu user@domain.tld -xp password -vvvv
DEBUG => Connecting to mailserver
DEBUG => My IP address is: 10.0.1.2
DEBUG => evalSMTPresponse() - Checking for SMTP success or error status in themessage: 220 mailserver ESMTP Postfix (Debian/GNU)
DEBUG => evalSMTPresponse() - Found SMTP success code: 220
SUCCESS => Received:     220 mailserver ESMTP Postfix (Debian/GNU)
INFO => Sending:         EHLO DATA
DEBUG => evalSMTPresponse() - Checking for SMTP success or error status in themessage: 250-mailserver, 250-PIPELINING, 250-SIZE 502400000, 250-ETRN, 250-STARTTLS, 250-ENHANCEDSTATUSCODES, 250-8BITMIME, 250 DSN
DEBUG => evalSMTPresponse() - Found SMTP success code: 250
SUCCESS => Received:     250-mailserver, 250-PIPELINING, 250-SIZE 502400000, 250-ETRN, 250-STARTTLS, 250-ENHANCEDSTATUSCODES, 250-8BITMIME, 250 DSN
DEBUG => The remote SMTP server supports TLS :)
DEBUG => Starting TLS
INFO => Sending:         STARTTLS
DEBUG => evalSMTPresponse() - Checking for SMTP success or error status in themessage: 220 2.0.0 Ready to start TLS
DEBUG => evalSMTPresponse() - Found SMTP success code: 220
SUCCESS => Received:     220 2.0.0 Ready to start TLS
DEBUG => TLS: Using cipher: ECDHE-RSA-AES256-GCM-SHA384
DEBUG => TLS session initialized :)
INFO => Sending:         EHLO DATA
[...]

Dans les deux cas, le serveur supporte TLS, mais le "STARTTLS" n'est pas envoyé depuis ma VM WEB.

Les configurations et les accès/restrictions étant les mêmes, gnutls installé sur les deux machines, j'ai commencé à rédiger mon bug report en m'aidant de : https://www.debian.org/Bugs/Reporting

L'une des étapes du rapport de bug debian est d'envoyer les infos du package, dont l'une d'elle (https://www.debian.org/Bugs/Reporting#findpkgver) est :
dpkg --status

Bien m'en a pris, car j'ai pu me rendre compte de cette intéressante ligne :

# dpkg --status sendemail
Package: sendemail
[...]
Suggests: libio-socket-ssl-perl, libnet-ssleay-perl

Effectivement, ces deux paquets ne sont pas des dépendances, mais des suggestions …. néanmoins très indispensable pour envoyer des mails en TLS 🙂

J'ai pu régler mon bug et m’éviter de passer pour un idiot à remplir un rapport de bug inutile…