Redmine からメールを送信する時に、接続先のメールサーバーが自己署名証明書や内部 CA の証明書を使っていると、証明書検証に失敗してメール送信できないことがあります。
エラーだけを見ると Redmine 側の問題に見えますが、実際には Redmine が動いている Ruby / コンテナ / OS から見て、メールサーバーの証明書チェーンを信頼できていない状態です。
発生するエラー
Redmine のメール送信テストで、次のようなエラーが出ることがあります。
メール送信中にエラーが発生しました
SSL_connect returned=1 errno=0 peeraddr=xxx.xxx.xxx.xxx:25 state=error:
certificate verify failed (unable to get local issuer certificate)本来の対応は CA を信頼させること
本来の対応は、Redmine が動作している環境に内部 CA 証明書を配置し、メールサーバーの証明書チェーンを正しく検証できるようにすることです。コンテナで Redmine を動かしている場合は、ホスト OS ではなく Redmine コンテナ内の信頼ストアも確認します。
- メールサーバーが提示する証明書チェーン
- Redmine コンテナ内の CA 信頼ストア
- SMTP 接続先名と証明書 SAN の一致
- STARTTLS / SMTPS / 平文 SMTP のどれで接続しているか
暫定回避として検証を無効化する設定
どうしても一時的に送信確認だけを行いたい場合、Redmine の config/configuration.yml で証明書検証を無効化する設定があります。ただし、これは根本対応ではなく、通信相手の正当性を検証しない設定です。恒久運用では避けるべきです。
default:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: mail.example.internal
port: 25
domain: redmine.example.internal
openssl_verify_mode: none運用上の判断
内部システムでは、自己署名証明書や内部 CA 証明書を使うこと自体は珍しくありません。ただし、検証を無効化して動かすのではなく、Redmine が動作する環境に CA を正しく配布し、証明書チェーンを検証できる状態にするのが基本です。
一時回避として openssl_verify_mode: none を使う場合も、なぜ検証に失敗しているのかを確認し、CA 信頼、証明書チェーン、接続先名を後から直せるようにしておくべきです。
書籍
暗号技術入門 第3版 秘密の国のアリス
公開鍵暗号、電子署名、証明書など、TLS や内部 PKI の前提になる暗号技術を確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。



