Thunderbird – Sending of message failed

thunderbird-error-01После очередного обновления Fedora некоторые пользователи Thunderbird наткнулись на сообщение:

Send Message Error
Sending of message failed.
The message could not be sent using SMTP server smtp.***.com for an unknown reason. Please verify that your SMTP server settings are correct and try again, or contact your network administrator.

Причиной этой ошибки может быть недавно вышедшее обновление NSS 3.19.1 где самым важным является установка минимальной длинны ключей.

Notable Changes in NSS 3.19.1NSS reports the bit length of keys more accurately. Thus, the SECKEY_PublicKeyStrength and SECKEY_PublicKeyStrengthInBits functions could report smaller values for values that have leading zero values. This affects the key strength values that are reported by SSL_GetChannelInfo.
The minimum size of keys that NSS will generate, import, or use has been raised:

  • The minimum modulus size for RSA keys is now 512 bits
  • The minimum modulus size for DSA keys is now 1023 bits
  • The minimum modulus size for Diffie-Hellman keys is now 1023 bits
Проверим разные сервисы на сервере:

$ echo | openssl s_client -starttls smtp -connect SMTP.SERVER.YOURS:587 -cipher "EDH" 2>&1 | grep -i "Server Temp Key"
Server Temp Key: DH, 512 bits
$ echo | openssl s_client -connect IMAP.SERVER.YOURS:993 -cipher "EDH" 2>&1 | grep -i "Server Temp Key"
Server Temp Key: DH, 1024 bits
$ echo | openssl s_client -connect POP.SERVER.YOURS:995 -cipher "EDH" 2>&1 | grep -i "Server Temp Key"                               
Server Temp Key: DH, 1024 bits
$ echo | openssl s_client -connect WWW.SERVER.YOURS:443 -cipher "EDH" 2>&1 | grep -i "Server Temp Key"
Server Temp Key: DH, 1024 bits

Как видим длинны DH ключа не хватает только для StartTLS хотя все остальные ключи в пределах нормы на сегодняшний день. Поэтому если хотите подумать про день завтрашний ставьте ключи подлиннее — 4096 бит например.

Чтобы вернуть работоспособность Thunderbird необходимо либо увеличить длину DH ключа на сервере либо сделать downgrade библиотеки nss на клиентах. Но последнее очень не рекомендуется.

Для того чтобы sendmail стал пользоваться для StartTLS длинным ключом необходимо в файл /etc/mail/sendmail.mc добавить опцию

define(`confDH_PARAMETERS', `/etc/mail/sendmail.dh')dnl

и сгенерировать dh файл

cd /etc/mail/
openssl dhparam -out sendmail.dh 4096
Generating DH parameters, 4096 bit long safe prime, generator 2
This is going to take a long time
....

Запаситесь терпением: операция генерации ключа такой длинны занимет немало времени.

После чего скомпилировать конфиг и перезапустить sendmail

cd /etc/mail
make
service sendmail restart