Sendmail の ソケット通信機能 Milter を使用し、clamav-milter によるメール送受信時の ウイルスチェックを行なうための設定が必要になります。
Sendmail 8.12 以降のメールサーバが既に構築されている事が前提となります。Sendmail によるメールサーバ構築は、以下で紹介していますので割愛します。
参照 => セキュアメールサーバー構築-Fedora Core 2編
FedoraCore としていますが、RHL 系Linux であれば特に問題はないと思います。
sendmail の設定ファイルに該当する制御ファイルは、/etc/mail/sendmail.cf ですが、これは C言語で書かれています。sendmail 8.10 以降では、sendmail.mc を m4 プリプロセッサにより sendmail.cf を生成する手順を踏みます。
事実上、設定を行うファイルは、/etc/mail/sendmail.mc となります。
Sendmail Milter 設定のポイントは、ソケット通信を行うプログラムが出力する socket ファイルのパスと一致させる点です。これを間違えると sendmail は通信を受け取れず、メールキューが次々に溜って行くので慎重に設定された方が良いと思います。
clamav-milter が生成する socket ファイル、ディレクトリのパスは、/etc/sysconfig/clamav-milter で指定されています。
INPUT_MAIL_FILTER と記述されたあたりに以下を追記します。
INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav/clmilter.socket, F=, T=S:8m;R:8m;E:8m')dnl
S(通信手段) / F(通信不可時の対処) / T(タイムアウト) の値は、 Sendmail のマニュアルを参照して下さい。 取敢えず、ソケット通信が行えない状態に落入ってもメールが消滅する事はないと思います。
※複数のソケット通信を行う場合
SpamAssassin など複数のソケット通信を行う場合、以下の行を追加する必要があります。clamav (ウイルスフィルタ)だけであれば、必要ありません。
define(`confINPUT_MAIL_FILTERS', `spamassassin,clamav')
/etc/sysconfig/clamav-milter の パスに合わせます。 上記設定では動作しません。
INPUT_MAIL_FILTER(`clamav', `S=local:/var/clamav/clmilter.socket, F=, T=S:8m;R:8m;E:8m')dnl
sendmail.mc を修正したら、 sendmail.cf を make し、Sendmail を再起動する必要があります。
sendmail.mc が出来たら、sendmail.cf を生成します。FerdoraCore / RedHat / CentOS では、/etc/mail ディレクトリから直接行えると思います。
Sendmail を再起動するまで有効にはなりませんが、まだ、再起動はしないで下さい。
ここまででサービス起動に必要な設定は全て終わりました。次は、起動に関する設定を行います。