概要

Redmineサーバからリマインダーのメールが送信されない事象を解決したときのメモ書きです。

環境

  • Ubuntu 24.04
  • OpenSSL 3.3.3
  • Redmine 5.1
  • Apache 2.4
  • MySQL 8.0.41

特記事項

サーバにはメール送信の機能を有しておらず、gmailのアプリ連携でメールを飛ばしています。

事象確認

  • Redmine ルートディレクトリに移動
cd /path/to/redmine/root/directory && pwd

筆者環境/home/www-data/redmine

  • リマインダメールを送信
sudo -u www-data bundle exec rake redmine:send_reminders days=7 RAILS_ENV=production

リマインダメール送信されず。

そこで、production.logを確認したところ、メール送信時に以下のエラーログが出力されました:

ERROR -- : [ActiveJob] [ActionMailer::MailDeliveryJob] Email delivery error: SSL_connect returned=1 errno=0 peeraddr=xxx.xxx.xxx.xxx:587 state=error: certificate verify failed (unable to get local issuer certificate)

どうやら、証明書回りのエラーのようです。

確認したこと(原因確認)

メール設定の再確認

まず、メール設定を再確認しました。RedmineでのSMTP設定は特に変更していないため、問題は設定に起因するものではないと判断しました。

OpenSSLの設定を再確認

そこで思い当たる節。

パッケージ管理システムからではなく、手動で OpenSSL を更新した影響で、証明書ストアのパスが /usr/bin/openssl から /usr/local/ssl に変更されていたことが原因だと分かりました。

/usr/local/ssl/bin/openssl version -d

OPENSSLDIR: "/usr/local/ssl" を確認。

対処

CA証明書のコピー

新しい証明書ストア /usr/local/ssl にシステムの CA 証明書をコピーしました:

sudo cp /etc/ssl/certs/ca-certificates.crt /usr/local/ssl/cert.pem

また、証明書ディレクトリを作成し、必要な証明書を全てコピーしました:

  • ディレクトリ作成
sudo mkdir -p /usr/local/ssl/certs
  • システム内の証明書ストア一式をコピー
sudo cp -r /etc/ssl/certs/* /usr/local/ssl/certs/
  • 証明書ストア一式を再暗号化
sudo /usr/local/ssl/bin/c_rehash /usr/local/ssl/certs/

環境変数の設定

/etc/environmentに以下の内容を追記しました。

SSL_CERT_FILE=/usr/local/ssl/cert.pem
SSL_CERT_DIR=/usr/local/ssl/certs
  • 設定後の反映
sudo source /etc/environment

Redmine(Apache)再起動

  • apache再起動
sudo systemctl restart apache2.service ; echo $?

0を確認

  • apache再起動確認
systemctl status apache2.service

active(running)を確認

解決確認

  • Redmine ルートディレクトリに移動
cd /path/to/redmine/root/directory && pwd

筆者環境/home/www-data/redmine

  • リマインダメールを送信
sudo -u www-data bundle exec rake redmine:send_reminders days=7 RAILS_ENV=production

今度は正常に送信されることを確認しました。

まとめと教訓

Redmineからメールが送信できなかった問題は、手動で更新したOpenSSLの証明書ストアのパス設定が原因でした。

証明書ストアが適切に設定されていないと、SMTP 送信時に certificate verify failed エラーが発生。

証明書関連の問題が発生した場合、OPENSSLDIR を確認し、適切な CA 証明書が配置されているかチェックすることが重要。

また、証明書周りはシステム全体に影響を及ぼすため、確認が甘かったということも事実。これは、手動でOpenSSLをアップグレードする際にも、改めて手順を確認します。