fix: SMTPパスワードSecretのmodeを0600から0644に修正 (v8.5.6-f)
Helm Chart Release / release-chart (push) Successful in 5s

smtp-secrets ボリュームの mode: 0600 により、Secretファイルの所有者は
rootだが、msmtp は PHP mail() 経由で PHP-FPMワーカー(www-data等の
非rootユーザー)として実行されるため読み取れず、
'cat: can't open ... Permission denied' で認証失敗していた。

mode を 0644(全ユーザー読み取り可)に変更。ファイルはPod内にのみ
存在し外部からアクセス不可のため許容できるトレードオフ。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-20 07:33:28 +09:00
co-authored by Claude Fable 5
parent 85b7f69ccb
commit ffb760b913
4 changed files with 40 additions and 2 deletions
+29
View File
@@ -0,0 +1,29 @@
# Changelog - Version 8.5.6-f
## 修正
### SMTPパスワードファイルをPHP-FPMワーカーから読めない問題を修正
`smtp.auth.enabled: true` でSMTP送信メールを設定した際、msmtpが以下のエラーで認証情報を取得できず、メール送信に失敗する問題を修正しました。
```
cat: can't open '/etc/smtp-secrets/password': Permission denied
```
**原因**: `/etc/smtp-secrets/password` を投影するSecretボリュームの `mode``0600`(所有者=rootのみ読み取り可)になっていました。msmtp は PHP の `mail()` 呼び出し経由で **PHP-FPMワーカー(`www-data` 等の非rootユーザー)** として実行されるため、rootのみ読み取り可のファイルを読めませんでした。
**対応**: `templates/deployment.yaml``smtp-secrets` ボリュームの `mode``0644`(全ユーザー読み取り可)に変更しました。このファイルはPod内にのみ存在し外部からアクセスできないため、許容できるトレードオフです。
## アップグレード手順
```bash
helm repo update
helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.6-f -f values.yaml
```
Pod再起動後、SMTP経由のメール送信が正常に動作するようになります。
---
**リリース日**: 2026-07-19
**担当**: プロサーバーエンジニア(Claude)
+6
View File
@@ -22,6 +22,12 @@ Raspberry Pi などのベアメタルで稼働することを想定した、Kube
## チャート改修履歴 ## チャート改修履歴
### SMTPパスワードSecretの権限を0600→0644に修正(2026-07-19, v8.5.6-f
`smtp-secrets` ボリュームの `mode: 0600` が原因で、rootではなく `www-data`(PHP-FPMワーカー)として動く msmtp が `/etc/smtp-secrets/password` を読めず、SMTP認証に失敗する不具合を修正。`0644` に変更(Pod内にしか存在しないファイルのため許容範囲)。
**対象ファイル**: `templates/deployment.yaml`, `Chart.yaml`, `CHANGELOG-8.5.6-f.md`
### PVCルートを /var/www にマウント + /composer を使い捨て化(2026-07-19, v8.5.6-e ### PVCルートを /var/www にマウント + /composer を使い捨て化(2026-07-19, v8.5.6-e
php-fpm コンテナのマウントを「`html` サブパスのみ」から「PVCルート → `/var/www`」に変更。`html/` は公開フォルダ、それ以外(`/var/www/<任意>`)は非公開ファイルの格納先として使える。nginx は `html` サブパスのみマウントするため非公開分は公開されない。あわせて `/composer` のPVC永続化マウントを廃止し、Pod再起動ごとにクリーン再構築される使い捨て領域とした(マルウェア混入対策、ユーザー要望)。永続化したい場合は `workingDir``/var/www/composer` 等を指定。 php-fpm コンテナのマウントを「`html` サブパスのみ」から「PVCルート → `/var/www`」に変更。`html/` は公開フォルダ、それ以外(`/var/www/<任意>`)は非公開ファイルの格納先として使える。nginx は `html` サブパスのみマウントするため非公開分は公開されない。あわせて `/composer` のPVC永続化マウントを廃止し、Pod再起動ごとにクリーン再構築される使い捨て領域とした(マルウェア混入対策、ユーザー要望)。永続化したい場合は `workingDir``/var/www/composer` 等を指定。
+1 -1
View File
@@ -2,6 +2,6 @@ apiVersion: v2
name: phpfpm name: phpfpm
description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support
type: application type: application
version: 8.5.6-e version: 8.5.6-f
appVersion: "8.5.6" appVersion: "8.5.6"
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png
+4 -1
View File
@@ -287,6 +287,9 @@ spec:
items: items:
- key: password - key: password
path: password path: password
mode: 0600 # 0600だとSecretボリュームの所有者はroot、
# msmtpはPHP-FPMワーカー(www-data等の非root)から実行されるため読めない
# → 全ユーザー読み取り可にする(ボリュームはPod内にしか存在しないため許容範囲)
mode: 0644
{{- end }} {{- end }}
{{- end }} {{- end }}