ポストフィックスウイルスチェックセッテイメールサーバーは外部からの不正なファイルやウイルスの侵入経路となるため、ウイルス対策が重要となります。 しかし、Postfix などの MTA 単体ではウイルスチェック機能を備えていないため、ウイルス対策ソフトウェアとの連携が必要となります。 本記事では、一つの構成として Postfix と ClamAV を連携し、メール送受信時にウイルスチェックを行う設定方法について解説します。 ※本記事の手順は RHEL 9 環境で動作確認を行っています。目次ClamAV とはClamAV パッケージインストールClamAV の基本設定ClamAV 起動Postfix 設定ウイルスチェックテストまとめ1. ClamAV とはClamAV(Clam Antivirus:クラムアンチウイルス) は、Ciscoが提供するオープンソースのアンチウイルスソフトウェアであり、主にメールゲートウェイやサーバー環境でのウイルス検査を目的として利用されます。 主な特徴は以下の通りです。・ウイルス定義ファイルによるウイルス検知 ・メールやファイルのスキャンに対応 ・高速なスキャン電子メールスキャンを目的に設計されており、Postfix などの MTA と連携することで、メールの送受信時にリアルタイムでウイルスチェックを実施できます。2. ClamAV パッケージインストール以下のコマンドで ClamAV の各パッケージをインストールします。[root]# dnf -y install epel-release ←ClamAVはEPELリポジトリに含れているため実行 [root]# dnf --enablerepo=crb -y install \ ←「--enablerepo=crb」は依存ライブラリ解決のため指定 clamav \ clamav-server-systemd \ clamav-update \ clamav-scanner-systemd \ clamav-milter \ clamav-milter-systemd パッケージの解説各パッケージの役割は以下の通りです。パッケージ役割clamavClamAV本体clamav-server-systemd常駐スキャンclamav-update定義ファイル更新clamav-scanner-systemdスキャン補助clamav-milterPostfix連携用フィルタ(Milter)clamav-milter-systemdMilterサービス管理 3. ClamAV の基本設定インストールした ClamAV の基本設定を行います。(1) ウイルス定義ファイル更新設定以下の設定を行います。[root]# vi /etc/freshclam.conf ※以下を設定 NotifyClamd /etc/clamd.d/scan.conf ←設定追記 設定の解説・NotifyClamd [ファイルパス] ⇒ ウイルス定義ファイルの更新があった場合、clamd(ClamAVのデーモン)に通知を行い、ウイルス定義ファイルの再読み込みを行う(2) clamd 設定以下の設定を行います。[root]# vi /etc/clamd.d/scan.conf ※以下を設定 #User clamscan ←先頭「#」を入力し、コメントアウト LocalSocket /run/clamd.scan/clamd.sock ←設定追記 FixStaleSocket yes ←設定追記 設定の解説・User clamscan ⇒ コメントアウトした場合rootユーザーで動作する・LocalSocket [ファイルパス] ⇒ ソケットファイルのパスを指定する・FixStaleSocket yes ⇒ 古いソケットファイルが残っていた場合に自動削除する(3) ClamAV Milter 設定以下の設定を行います。[root]# vi /etc/mail/clamav-milter.conf ※以下を設定 #Example ←先頭「#」を入力し、コメントアウト MilterSocket /var/run/clamav-milter/clamav-milter.socket ←設定追記 MilterSocketMode 660 ←設定追記 ClamdSocket unix:/var/run/clamd.scan/clamd.sock ←設定追記 OnInfected Blackhole ←設定追記 AddHeader Yes ←設定追記 LogFacility LOG_MAIL ←設定追記 設定の解説・Example ⇒ コメントアウトすることで実運用設定として動作する・MilterSocket [ファイルパス] ⇒ clamav-milter のソケットファイルのパスを指定する・MilterSocketMode [権限] ⇒ 上記ソケットファイルのパーミッションを指定する (660=所有者/グループのみアクセス可)・ClamdSocket [ファイルパス] ⇒ 「(2)」で指定した clamd のソケットファイルを指定する・OnInfected Blackhole ⇒ ウイルス検知時にメールを破棄し、接続元に正常応答を返す ※「Blackhole」以外に以下の設定が可能です。 Accept : 正常応答を返す(何もしない) Quarantine: 接続元に正常応答を返し、隔離する Reject : 接続元に恒久エラー(5xx)を返し、破棄する Defer : 接続元に一時エラー(4xx)を返す・AddHeader Yes ⇒ ウイルスチェック結果のヘッダをメールに付与する・LogFacility LOG_MAIL ⇒ メールログにログを出力する4. ClamAV 起動ClamAV の起動を行います。(1) ウイルス定義ファイル更新起動する前に、以下のコマンドでウイルス定義ファイルの更新を行います。[root]# freshclam(2) スキャンデーモン起動・自動起動設定以下のコマンドでスキャンデーモンの起動、自動起動設定を行います。[root]# systemctl start clamd@scan [root]# systemctl enable clamd@scan (3) ウイルス定義ファイル更新デーモン起動・自動起動設定以下のコマンドでウイルス定義ファイル更新デーモンの起動・自動起動設定を行います。[root]# systemctl start clamav-freshclam [root]# systemctl enable clamav-freshclam (4) Milter デーモン起動・自動起動設定以下のコマンドで Milter デーモンの起動・自動起動設定を行います。[root]# systemctl start clamav-milter [root]# systemctl enable clamav-milter (5) ウイルスチェック動作確認以下のコマンドでウイルスチェックの動作確認を行います。[root]# clamdscan -c /etc/clamd.d/scan.conf --remove ※「Infected files: 0」と表示されれば正常。 5. Postfix 設定ClamAVのセットアップが完了したので、Postfix側で連携する設定を行います。(1) Postfix に Milter 設定を追加以下の設定を行います。[root]# vi /etc/postfix/main.cf ※以下を設定 milter_default_action = tempfail ←設定追記 smtpd_milters = unix:/var/run/clamav-milter/clamav-milter.socket ←設定追記 non_smtpd_milters = unix:/var/run/clamav-milter/clamav-milter.socket ←設定追記 設定の解説・milter_default_action = tempfail ⇒ Milterと通信できない場合の動作として、一時エラー(4xx)を返す。 ※tempfail以外に以下の設定が可能です。 accept:正常応答を返す reject:恒久エラー(5xx)を返す・smtpd_milters ⇒ 「2. ClamAV の基本設定」の「(3) ClamAV milter 設定」で指定した「MilterSocket」のファイルパスを指定 ※SMTPで受信したメールに対して適用するMilterのソケットファイル・non_smtpd_milters ⇒ 「2. ClamAV の基本設定」の「(3) ClamAV milter 設定」で指定した「MilterSocket」のファイルパスを指定 ※SMTP以外で受信したメールに対して適用するMilterのソケットファイル(2) Postfix ユーザーのグループ追加Postfix のユーザーを「clamilt」グループに追加します。 Clamav の Milter に接続するのに必要な設定となります。[root]# usermod -G clamilt -a postfix (3) Postfix 設定再読み込みPostfix の設定を再読み込みします。[root]# postfix reload 6. ウイルスチェックテスト設定が完了したので、ウイルスチェックテストを行います。(1) テストメール送信以下のコマンドでテストメールを送信します。 メール本文にウイルスチェックテスト用の文字列を指定することでウイルス検知されます。[root]# telnet [PostfixのIPアドレス] 25 ←25番ポート以外の場合、そのポート番号を指定 ※以下を1行ずつ実行 HELO localhost MAIL FROM: xxx@xxx.co.jp ←送信元メールアドレス指定 RCPT TO: yyy@yyy.co.jp ←宛先メールアドレス指定 DATA From: xxx@xxx.co.jp ←送信元メールアドレス指定 To: yyy@yyy.co.jp ←宛先メールアドレス指定 Subject: Virus Scan Test X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* . ←ピリオドのみ入力 QUIT ※telnet コマンドが存在しない場合は「dnf install telnet」と実行し、インストールしてください。(2) ログ確認以下のコマンドでウイルスチェック結果を確認します。[root]# cat /var/log/maillog ※「milter triggers DISCARD action」と出力されること [root]# cat /var/log/messages ※「Eicar-Signature FOUND」と出力されていること 7. まとめ本記事では、Postfix と ClamAV を連携し、メール送受信時にウイルスチェックを行う構成について解説しました。・Postfix 単体ではウイルス検査ができないため、ClamAV との連携が必要 ・clamav-milter を利用することで、メール受信時にウイルスチェックを実施可能 ・ウイルス検知時の動作(拒否・隔離など)を制御可能ウイルス対策を行うことで、ウイルスを含むメールの配送を未然に防ぎ、メールサーバーのセキュリティ向上につながります。 メールサーバーは外部と直接通信する特性上、常にリスクに晒されるため、ウイルス対策を行い、安全なメール運用を実現しましょう。
技術情報
技術情報
Postfix ウイルスチェック設定
最終更新日:
2026年4月7日ポストフィックスウイルスチェックセッテイ
メールサーバーは外部からの不正なファイルやウイルスの侵入経路となるため、ウイルス対策が重要となります。
しかし、Postfix などの MTA 単体ではウイルスチェック機能を備えていないため、ウイルス対策ソフトウェアとの連携が必要となります。
本記事では、一つの構成として Postfix と ClamAV を連携し、メール送受信時にウイルスチェックを行う設定方法について解説します。
※本記事の手順は RHEL 9 環境で動作確認を行っています。
目次
1. ClamAV とは
ClamAV(Clam Antivirus:クラムアンチウイルス) は、Ciscoが提供するオープンソースのアンチウイルスソフトウェアであり、主にメールゲートウェイやサーバー環境でのウイルス検査を目的として利用されます。
主な特徴は以下の通りです。
・ウイルス定義ファイルによるウイルス検知
・メールやファイルのスキャンに対応
・高速なスキャン
電子メールスキャンを目的に設計されており、Postfix などの MTA と連携することで、メールの送受信時にリアルタイムでウイルスチェックを実施できます。
2. ClamAV パッケージインストール
以下のコマンドで ClamAV の各パッケージをインストールします。
パッケージの解説
各パッケージの役割は以下の通りです。
3. ClamAV の基本設定
インストールした ClamAV の基本設定を行います。
(1) ウイルス定義ファイル更新設定
以下の設定を行います。
設定の解説
・NotifyClamd [ファイルパス]
⇒ ウイルス定義ファイルの更新があった場合、clamd(ClamAVのデーモン)に通知を行い、ウイルス定義ファイルの再読み込みを行う
(2) clamd 設定
以下の設定を行います。
設定の解説
・User clamscan
⇒ コメントアウトした場合rootユーザーで動作する
・LocalSocket [ファイルパス]
⇒ ソケットファイルのパスを指定する
・FixStaleSocket yes
⇒ 古いソケットファイルが残っていた場合に自動削除する
(3) ClamAV Milter 設定
以下の設定を行います。
設定の解説
・Example
⇒ コメントアウトすることで実運用設定として動作する
・MilterSocket [ファイルパス]
⇒ clamav-milter のソケットファイルのパスを指定する
・MilterSocketMode [権限]
⇒ 上記ソケットファイルのパーミッションを指定する
(660=所有者/グループのみアクセス可)
・ClamdSocket [ファイルパス]
⇒ 「(2)」で指定した clamd のソケットファイルを指定する
・OnInfected Blackhole
⇒ ウイルス検知時にメールを破棄し、接続元に正常応答を返す
※「Blackhole」以外に以下の設定が可能です。
Accept : 正常応答を返す(何もしない)
Quarantine: 接続元に正常応答を返し、隔離する
Reject : 接続元に恒久エラー(5xx)を返し、破棄する
Defer : 接続元に一時エラー(4xx)を返す
・AddHeader Yes
⇒ ウイルスチェック結果のヘッダをメールに付与する
・LogFacility LOG_MAIL
⇒ メールログにログを出力する
4. ClamAV 起動
ClamAV の起動を行います。
(1) ウイルス定義ファイル更新
起動する前に、以下のコマンドでウイルス定義ファイルの更新を行います。
(2) スキャンデーモン起動・自動起動設定
以下のコマンドでスキャンデーモンの起動、自動起動設定を行います。
(3) ウイルス定義ファイル更新デーモン起動・自動起動設定
以下のコマンドでウイルス定義ファイル更新デーモンの起動・自動起動設定を行います。
(4) Milter デーモン起動・自動起動設定
以下のコマンドで Milter デーモンの起動・自動起動設定を行います。
(5) ウイルスチェック動作確認
以下のコマンドでウイルスチェックの動作確認を行います。
5. Postfix 設定
ClamAVのセットアップが完了したので、Postfix側で連携する設定を行います。
(1) Postfix に Milter 設定を追加
以下の設定を行います。
設定の解説
・milter_default_action = tempfail
⇒ Milterと通信できない場合の動作として、一時エラー(4xx)を返す。
※tempfail以外に以下の設定が可能です。
accept:正常応答を返す
reject:恒久エラー(5xx)を返す
・smtpd_milters
⇒ 「2. ClamAV の基本設定」の「(3) ClamAV milter 設定」で指定した「MilterSocket」のファイルパスを指定
※SMTPで受信したメールに対して適用するMilterのソケットファイル
・non_smtpd_milters
⇒ 「2. ClamAV の基本設定」の「(3) ClamAV milter 設定」で指定した「MilterSocket」のファイルパスを指定
※SMTP以外で受信したメールに対して適用するMilterのソケットファイル
(2) Postfix ユーザーのグループ追加
Postfix のユーザーを「clamilt」グループに追加します。
Clamav の Milter に接続するのに必要な設定となります。
(3) Postfix 設定再読み込み
Postfix の設定を再読み込みします。
6. ウイルスチェックテスト
設定が完了したので、ウイルスチェックテストを行います。
(1) テストメール送信
以下のコマンドでテストメールを送信します。
メール本文にウイルスチェックテスト用の文字列を指定することでウイルス検知されます。
※telnet コマンドが存在しない場合は「dnf install telnet」と実行し、インストールしてください。
(2) ログ確認
以下のコマンドでウイルスチェック結果を確認します。
7. まとめ
本記事では、Postfix と ClamAV を連携し、メール送受信時にウイルスチェックを行う構成について解説しました。
・Postfix 単体ではウイルス検査ができないため、ClamAV との連携が必要
・clamav-milter を利用することで、メール受信時にウイルスチェックを実施可能
・ウイルス検知時の動作(拒否・隔離など)を制御可能
ウイルス対策を行うことで、ウイルスを含むメールの配送を未然に防ぎ、メールサーバーのセキュリティ向上につながります。
メールサーバーは外部と直接通信する特性上、常にリスクに晒されるため、ウイルス対策を行い、安全なメール運用を実現しましょう。