GUARDIANWALL では、指定期間の保存メールログを取得し、
管理者にメールで送付するメールログレポート機能がございます。
本機能について、レポート対象の保存メール件数が一定量を超える場合に送信エラーが発生することが確認されました。
詳細につきましては、以下をご参照いただけますようお願いいたします。
1 対象バージョン
本注意事項は、以下の製品・バージョンを対象としております。
製品名 |
バージョン |
GUARDIANWALL |
7.2.00 ~ 7.4.00 (Linux版) |
2 内容
管理画面の以下にて「メールログレポート」を送信する設定を行っている場合、
レポート対象期間内の保存メール件数が多いことでレポートメールに添付される
CSV ファイルのサイズが大きくなると、メモリ不足によるエラーが発生する場合があります。
このエラーが発生すると、メールログレポートが管理者に送信されません。
[共通] - [管理サーバー管理] - [拡張機能] - [スケジューラー]
また、管理サーバの /opt/Guardian/Admin/logs/script_error
ファイルに以下のようなメッセージが出力されます。
PHP Fatal error: Allowed memory size of (数値) bytes exhausted
(tried to allocate (数値) bytes) in
/opt/Guardian/Admin/php/lib/Net/SMTP.php on line (数値)
3 原因
メールログレポート送信時の CSV ファイルのサイズが大きくなると、
レポートデータの文字列変換処理で大量のメモリが消費され、
メモリ使用上限値に達してしまうことが発生原因となります。
デフォルトでは使用メモリの上限値として 128MB が割り当てられておりますが、
CSV ファイルに記録される 1 レコードあたりの大きさを約 200 バイトとして見積もった場合、
保存メール件数 50,000 通 (CSV ファイルサイズ約 9.7MB) でメモリ上限に達します。
4 対策
上記の現象が発生したことを確認された場合、以下の手順にて PHP スクリプトのメモリ使用上限値の設定
(memory_limit) を変更することで回避可能です。
※本対策で変更する設定値は、管理サーバ内部で動作する PHP スクリプトが確保できるメモリの上限値です。
常に設定した値をメモリ上に確保するものではありません。
また、本対策の実施によるハードウェアサイジング変更の必要はありません。
(1) 管理サーバの設定ファイルを編集
設定ファイル: /opt/Guardian/Admin/php/conf/php.ini
・変更前 (デフォルト値)
memory_limit = 128M
・変更後 (例: メモリ使用上限値を 300MB に変更する場合)
memory_limit = 300M
設定値につきましては、下表「memory_limit 設定値の目安」を参考にしていただき、
保存メール件数に合わせた値を設定してください。
memory_limit 設定値は使用メモリの限界値より余裕を持った設定値を提示しております。
また、保存メール 1 件あたりの CSV レコードを 200 バイトとして見積もっております。
※下表では最大 6MB ~ 30MB の CSV ファイルが作成できる設定値を示しておりますが、
該当するサイズの CSV ファイルを添付したメールが実際に送受信可能かどうかはお客様環境に依存します。
memory_limit 設定値の目安
メール件数 |
memory_limit 設定値 |
CSV 最大ファイルサイズ |
~ 30,000 通 |
128MB (デフォルト値) |
6MB |
30,000 ~ 50,000 通 |
175MB |
10MB |
50,000 ~ 75,000 通 |
250MB |
15MB |
75,000 ~ 100,000 通 |
300MB |
20MB |
100,000 ~ 125,000 通 |
350MB |
25MB |
125,000 ~ 150,000 通 |
425MB |
30MB |
(2) 管理サーバのサービス再起動
管理サーバで以下のコマンドを実行し、管理サーバのサービスを再起動します。
# /etc/init.d/Guardian.admin restart