Мне нужен был мой скрипт, чтобы написать администратору в случае возникновения проблемы, и компания использует только Gmail. Следуя нескольким инструкциям, я смог настроить mailx с помощью файла .mailrc. Сначала была ошибка nss-config-dir. Я решил это, скопировав некоторые файлы .db из каталога Firefox. к ./certs и нацеливаясь на него в mailrc. Письмо было отправлено.
Однако вышеприведенная ошибка возникла. Каким-то чудом был сертификат Google в .db. Это обнаружилось с этой командой:
~]$ certutil -L -d certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
GeoTrust SSL CA ,,
VeriSign Class 3 Secure Server CA - G3 ,,
Microsoft Internet Authority ,,
VeriSign Class 3 Extended Validation SSL CA ,,
Akamai Subordinate CA 3 ,,
MSIT Machine Auth CA 2 ,,
Google Internet Authority ,,
Скорее всего, это можно игнорировать, потому что почта все равно работала. Наконец, потянув за волосы и много гугля, я узнал, как избавиться от раздражения.
Сначала экспортируйте существующий сертификат в файл ASSCII:
~]$ certutil -L -n 'Google Internet Authority' -d certs -a > google.cert.asc
Теперь повторно импортируйте этот файл и пометьте его как доверенный для SSL-сертификатов, ala:
~]$ certutil -A -t "C,," -n 'Google Internet Authority' -d certs -i google.cert.asc
После этого, список показывает, что он доверяет:
~]$ certutil -L -d certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
...
Google Internet Authority C,,
И mailx отправляет без помех.
~]$ /bin/mailx -A gmail -s "Whadda ya no" somebody@acompany.com
ho ho ho
EOT
~]$
Я надеюсь, что это будет полезно для тех, кто хочет покончить с ошибкой.
Кроме того, мне интересно кое-что.
Как я могу получить этот сертификат, если его нет в базе данных Mozilla случайно? Есть ли, например, что-то подобное?
~]$ certutil -A -t "C,," \
-n 'gmail.com' \
-d certs \
-i 'http://google.com/cert/this...'
openssl s_client -showcerts -connect smtp.gmail.com:465 </dev/null
чтобы просмотреть их все.