概要
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をアップグレードする際にも、改めて手順を確認します。
コメントを残す