HOME > リナックスマスター.JP 公式ブログ > Linuxエラー対処法 > LibClamAV Warning: cli_scanxz: decompress file size exceeds limits|MaxFileSize・MaxScanSize・StreamMaxLength調整による恒久対処法
この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
この記事のポイント
・LibClamAV Warning: cli_scanxz: decompress file size exceeds limitsの正体は走査上限超過
・解決はclamd.conf/freshclam.confのMaxFileSize・MaxScanSize・StreamMaxLength調整
・clamdscan/clamscanどちらでも有効、コマンドラインは--max-filesize/--max-scansize
・調整後はsystemctl restart clamavまたはfreshclam再起動で反映確認まで実施
この警告はClamAVがxz圧縮ファイルを展開する際の上限サイズに引っかかったときに表示されるもので、放置するとマルウェアの一部走査漏れにつながります。本記事ではdecompress file size exceeds limitsの意味と、MaxFileSize/MaxScanSize/StreamMaxLengthの設定変更による恒久対処法を整理します。
ClamAVでスキャン実行中に次の警告が表示された場合、
その意味と対策を紹介します。
警告メッセージ
LibClamAV Warning: cli_scanxz: decompress file size exceeds limits - only scanning 27262976 bytes
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 /
詳細はこちら
LibClamAV Warning: cli_scanxz: decompress file size exceeds limitsが発生する仕組み
ClamAVのスキャン対象の上限ファイルサイズは、デフォルトで約25MBになっており、
これ以上大きいサイズのファイルはスキップする仕様になっています。
スキャン対象のファイルサイズ上限を変更するには、
max-filesizeオプションを変更することで対応します。
--max-filesize=
また、ファイルの先頭からどれくらい走査するかを
指定するには、max-scansizeオプションを設定します。
--max-scansize=
cli_scanxzはClamAVのxz圧縮ファイル展開ルーチンの名称です。tar.xzやログローテートされた*.xzアーカイブを走査する際に、展開後サイズが内部上限を超えるとdecompress file size exceeds limitsの警告がログ出力されます。only scanning 27262976 bytesは「先頭から27262976バイト(約26MB)だけ走査して残りはスキップした」という意味で、走査範囲が打ち切られているサインです。
ClamAVがこの上限を設けている理由は、悪意ある巨大zip/圧縮爆弾(zip bomb/xz bomb)対策でCPU・メモリを枯渇させない自衛機構として機能しているためです。したがって警告が出ること自体は異常ではなく、運用上「上限超過アーカイブが許容されるか」「スキャン漏れを許容できないか」をシステム要件に照らして判断する必要があります。
LibClamAVのMaxFileSizeとMaxScanSizeの違い
ClamAVには走査上限を司る2つの似たパラメータが存在し、それぞれ役割が違います。| パラメータ | 役割 | 既定値 |
|---|---|---|
| MaxFileSize | 個別ファイル単位のスキャン上限(このサイズを超えるファイルは丸ごとスキップ) | 25M |
| MaxScanSize | アーカイブ展開も含めた累計走査バイト数の上限 | 100M |
| StreamMaxLength | clamdのstreamスキャン(INSTREAM)における1ストリーム上限 | 25M |
| MaxRecursion | アーカイブのネスト展開深さ上限 | 17 |
| MaxFiles | 1アーカイブ内で展開する最大ファイル数 | 10000 |
cli_scanxz警告のdecompress file size exceeds limitsを解消する設定方法
恒久対処はclamd.confとfreshclam.confの編集です。配布パッケージにより配置場所は異なります。RHEL系: /etc/clamd.d/scan.conf
Debian/Ubuntu: /etc/clamav/clamd.conf
ソースビルド: /usr/local/etc/clamd.conf
clamd.confでMaxFileSize/MaxScanSizeを引き上げる
エディタでclamd.confを開き、コメントアウトされている上限項目を有効化します。
[root@host ~]# vi /etc/clamd.d/scan.conf
MaxFileSize 200M
MaxScanSize 800M
StreamMaxLength 200M
MaxRecursion 30
MaxFiles 50000
書き換えたあとはclamdを再起動して反映します。MaxFileSize 200M
MaxScanSize 800M
StreamMaxLength 200M
MaxRecursion 30
MaxFiles 50000
[root@host ~]# systemctl restart clamd@scan
[root@host ~]# systemctl status clamd@scan
Debian/Ubuntu系はサービス名がclamav-daemonです。[root@host ~]# systemctl status clamd@scan
root@host:~# systemctl restart clamav-daemon
clamscanコマンドラインでMaxFileSizeとMaxScanSizeを指定する
clamd(常駐デーモン)を経由せずclamscanで都度走査する場合は、コマンドラインオプションで上書きできます。
[root@host ~]# clamscan --max-filesize=200M --max-scansize=800M -r /var/log/
シェルスクリプトでバッチ走査するときは、--max-filesizeと--max-scansizeをペアで指定するのが安全です。--max-filesizeだけ引き上げてもMaxScanSizeで打ち切られて意味がなくなるケースが多いので注意してください。
freshclam.confのStreamMaxLengthを揃える
clamavmilterなどのストリーミング系で大きい添付ファイルを走査する構成では、freshclam.confまたはclamavmilter.confのStreamMaxLengthもclamd.confと揃える必要があります。
[root@host ~]# grep StreamMaxLength /etc/clamd.d/scan.conf /etc/freshclam.conf
ここで値が食い違っているとPostfixやSMTPゲートウェイ経由でメール添付がスキャン未完のまま通過する事故になり得ます。
cli_scanxz警告を放置するリスクとファイルサイズexceeds limitsの判断軸
警告が出ても処理自体は止まらないため、つい放置されがちですが、only scanning N bytesと出ているということは「残りのバイト列にマルウェアが入っていても検出できなかった」状態です。特にxz圧縮されたlinuxカーネルソース・rpmパッケージ・バックアップアーカイブを定期スキャンしている環境では、25MB/100MBの既定値は2026年現在の運用実態に対して小さすぎる場合が多いです。
| 運用状況 | 推奨対応 |
|---|---|
| バックアップ.tar.xzを毎日走査 | MaxFileSize/MaxScanSizeを実バックアップサイズ+20%へ拡張 |
| SMTPゲートウェイ/添付スキャン | StreamMaxLengthをmessage_size_limitと整合 |
| エンドユーザー端末/ホームディレクトリ | 既定のまま放置可(zip bomb耐性優先) |
| CIサーバー/アーティファクト保管庫 | --max-filesize/--max-scansizeをジョブ毎に指定 |
cli_scanxz警告と関連するLibClamAV Warningログを切り分ける
cli_scanxz以外にも、似た形のLibClamAV Warningがいくつかあります。原因と対処を切り分けるための一覧です。| 警告メッセージ | 主な原因 | 対処 |
|---|---|---|
| cli_scanxz: decompress file size exceeds limits | xz展開上限超過 | MaxFileSize/MaxScanSize拡張 |
| cli_scangzip: decompress file size exceeds limits | gzip展開上限超過 | 同上、加えてMaxRecursion確認 |
| cli_scanzip: Maximum file size exceeded | zip内の単一ファイル上限 | MaxFileSizeのみ拡張 |
| LibClamAV Warning: cli_scanbzip: BZ_DATA_ERROR | bzip2展開不整合 | 対象ファイル自体の破損確認 |
| LibClamAV Warning: Bytecode: signature too old | 定義ファイル鮮度 | freshclam実行 |
file size exceeds limits対処後の動作確認手順
設定変更後、本当に走査範囲が広がったか確認する手順です。1. clamd.confの最終値を確認する
[root@host ~]# grep -E "MaxFileSize|MaxScanSize|StreamMaxLength" /etc/clamd.d/scan.conf
コメント記号#が外れていること、値が想定通りであることを目視確認します。
2. clamdのconfに変更が読み込まれているか確認する
[root@host ~]# systemctl restart clamd@scan
[root@host ~]# journalctl -u clamd@scan --since "1 minute ago"
起動時のログにLOG_VERBOSEが入っていればMaxFileSizeの実値が出力されます。
[root@host ~]# journalctl -u clamd@scan --since "1 minute ago"
3. 大きめのアーカイブで実スキャンする
[root@host ~]# clamdscan --verbose /var/backup/full_$(date +%Y%m%d).tar.xz
完走してdecompress file size exceeds limitsの警告が出なければ調整成功です。再発する場合は上限値をさらに引き上げるか、対象ファイルを除外する判断に切り替えます。
cli_scanxz警告に関するよくある質問
Q. cli_scanxz警告が出てもウイルス検知は動いていますか
A. 警告で示されたバイト数(only scanning Nbytes)まではシグネチャ照合が走っています。それ以降のバイト列は照合されていないため「先頭が無害でも末尾に潜むペイロードは見逃す」状態です。Q. MaxFileSizeを大きくし過ぎる副作用はありますか
A. 巨大ファイル1つでスキャン処理が長時間ロックされ、CPU・メモリ使用量が跳ね上がります。SMTPゲートウェイに統合している場合はメール配送遅延・タイムアウトに直結するため、StreamMaxLengthとmessage_size_limitを揃えて運用してください。Q. cli_scanxzが出るxzファイルだけ除外する方法はありますか
A. clamd.confのExcludePathで除外パターンを指定するか、clamscanの--exclude=でファイル名パターンを除外できます。zip bombリスクが高いダウンロード領域などはあえて除外しない方が安全です。Q. clamavのバージョン違いで挙動は変わりますか
A. ClamAV 0.103以降、デフォルト上限値の見直しと項目名整理が行われています。0.102以前のバージョンを使っている場合は項目名が異なる場合があるので、必ず使用バージョンに対応した公式ドキュメントを参照してください(clamconf -V/clamscan --versionで確認可能)。本記事のまとめ
| 項目 | 対処要点 |
|---|---|
| 警告の意味 | xz展開後サイズが上限を超え、only scanning N bytesで打ち切られている |
| 主な調整パラメータ | MaxFileSize/MaxScanSize/StreamMaxLength |
| 設定ファイル | clamd.conf(RHEL=/etc/clamd.d/scan.conf, Deb=/etc/clamav/clamd.conf) |
| コマンドライン指定 | --max-filesize=/--max-scansize=でペア指定 |
| 反映確認 | systemctl restart clamd→journalctl→大きめアーカイブで実走査 |
| 放置リスク | マルウェア走査漏れ、特にバックアップ・SMTPゲートウェイで致命 |
| トレードオフ | zip bomb耐性を犠牲にするため、走査領域ごとに値を分ける運用 |
暗記不要・1時間後にはサーバーが動く
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
Linux無料マニュアル(図解60P)
名前とメールで30秒登録
- 次のページへ:Ubuntu20.04でFailed to fetch 404 Not Foundエラーが発生した場合の対処法
- 前のページへ:Ubuntu20.04+Apacheのインストールエラー対策
- この記事の属するカテゴリ:Linuxエラー対処法へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます