Djangoからメールを送信する際に、SMTP over SSL/TLSを使おうとしたところエラーが出ました。
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)
開発で使用していたMacOSでも本番用のLinux上でも同様のエラーが出てしまいました。どうやらSSL(TLS)証明書の検証に失敗しメールの送信が出来ない状態のようです。
OSに依存する以外の方法を探していたところ、certifiというモジュールを使えば解決することが分かりました。
certifiをインストールします。
pip install certifi
Djangoであればsettings.py等に下記コードを追加します。
import certifi, os
os.environ['SSL_CERT_FILE'] = certifi.where()
これでcertifiが提供するルート証明書コレクションを使うことができるようになります。