man clamd 日本語訳

# Clam Daemon(8)

Clam AntiVirus

## NAME

clamd - an anti-virus daemon

## SYNOPSIS

```bash
clamd [options]
```

## DESCRIPTION

Unix ソケットまたは TCP ソケットで受信接続を待ち受けるデーモンです。
ファイルまたはディレクトリのスキャンを実行します。
clamd は ``/etc/clamav/clamd.conf`` から設定を読み込みます。

## COMMANDS

コマンドが null 文字で区切られ、 clamd が null 文字を読み取るまで
コマンドデータを読み取り続けることを示すために、
clamd コマンドの前に文字 ``z`` (例: ``zSCAN``) を付けることをお勧めします。
null 区切り文字はコマンドの完遂と、
引数全体が単一のコマンドとして処理されることを保証します。
あるいは、コマンドの前に文字 ``n`` を付けて(例: ``nSCAN``)、
改行文字を区切り文字として使用することもできます。

clamd はリクエストの終了順に応答を返します。
clamd がコマンドを認識しない場合、
またはコマンドが以下に指定された要件に従っていない場合、
clamd はエラーメッセージを返してコネクションを閉じます。
clamd は以下のコマンドを認識します:

### PING

サーバーの状態を確認します。
応答として ``PONG`` を返します。

### VERSION

プログラムとデータベースのバージョンを出力します。

### RELOAD

ウィルスデータベースを再読込します。

### SHUTDOWN

終了を実行します。

### SCAN file/directory

ファイルまたはディレクトリを(再帰的に)スキャンします。
(``clamd.conf`` で無効になっていない場合)アーカイブサポートは有効です。
完全なパスが要求されます。

### CONTSCAN file/directory

ファイルまたはディレクトリを(再帰的に)スキャンします。
アーカイブサポートは有効です。
ウィルスが検出された場合でもスキャンを継続します。

### MULTISCAN file/directory

ファイルを標準の方法でスキャンまたは
(SMP マシン上でスキャンを高速化する為に)
マルチスレッドを使用してディレクトリを(再帰的に)
スキャンします。

### ALLMATCHSCAN file/directory

[ALLMATCHSCAN](#allmatchscan-filedirectory) は、ファイル内で一致が見つかった後も
スキャンを続行するモードを設定することを除いて、
[SCAN](#scan-filedirectory) と同様の動作を実行します。

### INSTREAM

コマンドの接頭辞 ``n`` または ``z`` を必須とします。
データのストリームをスキャンします。
ストリームは、コマンドが送信されたのと同じソケット上で、
[INSTREAM](#instream) の後にチャンク単位で clamd へ送信されます。
これにより、新しい TCP 接続を確立する際のオーバーヘッドと
NAT の問題が回避されます。

チャンクの形式:

```
<length><data>
```

``<length>`` は後に続く ``<data>`` のサイズ(バイト単位)を、
ネットワークバイトオーダーの 4 バイト符号なし整数として表します。
``<data>`` は実際のチャンクです。
ストリーミングは 0 長のチャンク送信によって終了します。

**Note:**
``clamd.conf`` で定義した ``StreamMaxLength`` を超えないようにしてください。
超えてしまった場合、 clamd は応答として
[INSTREAM](#instream) サイズ制限超過を返してコネクションを閉じます。

### FILDES

このコマンドは必ず改行で終了するか、
接頭辞 ``n`` または ``z`` を付けてください。
このコマンドは UNIX ドメインソケット上でのみ機能します。

ファイル記述子をスキャンします。
[FILDES](#fildes) コマンドを発行した後、
後続の rfc2292/bsd4.4 スタイルのパケット
(少なくとも 1 つのダミー文字を含む)が
clamd に送信され、補助データ内で
スキャンされるファイル記述子が運ばれます。
あるいは、追加文字を含むファイル記述子を
同じパケットで送信することもできます。

### STATS

このコマンドは必ず改行で終了するか、
接頭辞 ``n`` または ``z`` を付けてください。
接頭辞 ``z`` の使用のみを推奨します。

キューのスキャン、キューのスキャン内容、
メモリー使用量についての統計を応答として返します。
正確な返信形式は将来のリリースで
変更される可能性があります。

### IDSESSION, END

このコマンドは必ず改行で終了するか、
接頭辞 ``n`` または ``z`` を付けてください。
[IDSESSION](#idsession-end) 内の全コマンドに接頭辞が必須となります。

clamd セッションを開始/終了します。
セッション内の複数のコマンド(下記のコマンド)は
新しいコネクションを開くことなく
同じソケット上で送信することができます。

* [SCAN](#scan-filedirectory)
* [INSTREAM](#instream)
* [FILDES](#fildes)
* [VERSION](#version)
* [STATS](#stats)

clamd からの応答は ``<id>: <response>`` の形式で返されます。
``<id>`` はリクエスト番号(アスキー文字。 ``1`` から開始)、
``<response>`` は通常の clamd の応答です。
応答行の区切り文字は、コマンドで使用されている区切り文字と同じです。
clamd はコマンドを非同期的に処理し、処理が終わり次第応答を返します。

clamd は ``send()`` のデッドロックを防ぐために
追加でコマンドを送信する前に、
clamd が送信した全返信の読取りを
クライアントへ要求します。
[IDSESSION](#idsession-end) を使用するクライアントを実装する推奨方法は、
非ブロッキングソケットと ``select()/poll()`` ループを使用することです。
送信がブロックされるたびに、さらにデータを書き込むか、
さらに応答を読み取ることができるまで、
``select/poll`` でスリープします。
``select/poll`` ループを使用しない非ブロッキングソケットの使用と、
``recv()/send()`` の代替使用は、clamd の要求仕様に反します。

clamd がクライアントの持つデッドロックを検出した場合、
コネクションを終了します。
ユーザーがプロトコル要求仕様に従わない場合も、
clamd は [IDSESSION](#idsession-end) コネクションを終了します。
クライアントは [PING](#ping) コマンドを
コネクションの確立の為に使用することができます。

### VERSIONCOMMANDS

このコマンドは必ず接頭辞 ``n`` または ``z`` を付けてください。
``nVERSIONCOMMANDS`` の使用を推奨します。

プログラムとデータベースのバージョンを出力し、
その後に ``| COMMANDS:`` と、スペースで区切られた
サポートされているコマンドのリストを出力します。
clamd < 0.95 はこのコマンドを [VERSION](#version) コマンドとして認識し、
バージョンのみを出力します。
コマンドリストは出力しません。

このコマンドは、例えば [IDSESSION](#idsession-end) のサポートを確認する
簡単な方法として使用できます。

## DEPRECATED COMMANDS

### STREAM

ストリームをスキャンします。
このコマンドでは clamd は、ユーザーが接続して
スキャン対象とするデータを送信すべき
``PORT number`` を返します。
(非推奨です。 [INSTREAM](#instream) を代わりに使用してください)

## NOT SUPPORTED COMMANDS

### SESSION, END

TCP セッション毎に複数のコマンド実行を許可する
clamd セッションを開始/終了します。
(代わりに [IDSESSION](#idsession-end) を使用してください)

## OPTIONS

### -h, --help

ヘルプ情報を出力して終了します。

### -V, --version

バージョン番号を出力して終了します。

### -F, --foreground

フォアグラウンドで実行します。
デーモン化しません。

### --debug

デバッグモードを有効化します。

### -c FILE, --config-file=FILE

設定を ``FILE`` から読み込みます。

## ENVIRONMENT VARIABLES

clamd は以下の環境変数を使用します:

### LD_LIBRARY_PATH

起動時に ``libclamunrar_iface`` 共有ライブラリモジュールを検索して、
RAR アーカイブサポートを有効にするために使用できます。

## SIGNALS

clamd は以下のシグナルを認識します:

### SIGHUP

ログファイルを再度開きます。

### SIGUSR2

シグネチャーデータベースを再読込します。

### SIGTERM

クリーンな終了を実行します。

## FILES

``/etc/clamav/clamd.conf``

## SEE ALSO

* clamd.conf(5)
* [clamdscan(1)](https://qiita.com/JhonnyBravo/items/a82b4658fa32d7380a3e)
* freshclam(1)
* freshclam.conf(5)
* clamav-milter(8)