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;
- Du côté du serveur de mail : rien de particulier (comme l'authentification ne marchait pas)
- 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…