管理者向け クイックスタート Postfix + Rspamd + ClamAV

管理者クイックスタート
最小構成での組み込み手順

ここでは 最小手順に絞って、Postfix の Milter チェーンへ ZipCloudMilter を組み込み、Rspamd / ClamAV と共存させる流れを示します。
先に 導入チェックリスト で要件を確認しておくとスムーズです。

本番適用前に ステージング で検証してください。ポリシー変更や宛先別の切替は段階的に。
1
📦

ZipCloudMilter の配置とサービス起動

# 例:/usr/local/zipcloudmilter/ に配置(仮)
# Python venv & 依存導入(例)
python3 -m venv /opt/zcm-venv
. /opt/zcm-venv/bin/activate
pip install -r /usr/local/zipcloudmilter/requirements.txt

# systemd / rc.d などで常駐化(例は systemd)
# /etc/systemd/system/zipcloudmilter.service
[Unit]
Description=ZipCloudMilter
After=network.target

[Service]
User=postfix
Group=postfix
Environment="VIRTUAL_ENV=/opt/zcm-venv"
ExecStart=/opt/zcm-venv/bin/python /usr/local/zipcloudmilter/zipcloudmilter.py
Restart=always

[Install]
WantedBy=multi-user.target

systemctl daemon-reload && systemctl enable --now zipcloudmilter

※ 実際の配置・起動コマンドは環境に合わせて調整してください。

2
✉️

Postfix へ Milter として組み込み

送信(submission)/ 受信(smtp)いずれに適用するか設計。まずは submission から段階導入が安全です。

# /etc/postfix/main.cf(例)
# 既存の Rspamd/ClamAV と併用する順序を確認
# 推奨:①ウイルス/スパム等の判定 → ②ZipCloudMilter(添付→リンク化)
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:11332, unix:/var/run/zipcloudmilter.sock
non_smtpd_milters = $smtpd_milters

# Rspamd(例): 127.0.0.1:11332
# ZipCloudMilter(例): /var/run/zipcloudmilter.sock
順序の目安: スパム・ウイルス判定で拒否/隔離した後に、残った正規メールをリンク化する流れが運用上シンプルです。
3
🧪

Rspamd / ClamAV との共存チェック

Rspamd
# /usr/local/etc/rspamd/local.d/milter_headers.conf(例)
extended_spam_headers = true;

※ ヘッダ追加と ZipCloudMilter の本文置換が競合しないかを確認。

ClamAV
# clamd.conf の TimeOut / StreamMaxLength 等の見直し
# 大容量添付のスキャン時間・サイズ上限が厳しすぎないか確認

※ スキャンで拒否されたメールはリンク化フェーズに到達しません。

4
☁️

Nextcloud 側の接続テスト

  • WebDAV/アプリ経由のアップロード動作(API認証/トークン)
  • 保存先クォータ/残容量の確認、公開リンクポリシーの整合
  • 証明書/TLS 設定の妥当性
体験段階では「体験用クォータ」「体験用フォルダ」で分離しておくと安全です。
5
⚙️

既定ポリシーの決定(最小)

項目推奨初期値メモ
#EXPIRE7日案件クローズ基準で短めに。延長は個別上書き。
#LIMIT5回二次配布抑止と利便性のバランス。
#ZIP重要案件は必須パスワード別送の徹底。
配布方式cloud(ストリーミング)相手ドメインにより zip/reply へ切替。
6
🧪

試験送受信(サンプル)

# 件名サンプル
#ZIP #REPLY #LIMIT=3 #EXPIRE=3 見積書送付の件

# 想定確認
# - 本文に安全なダウンロードリンクが挿入される
# - 受信者は「ダウンロード開始」→ 別送パス入力 → 取得
# - 送信者に初回DL通知が届く
# - 公開停止リンクで即時無効化できる

受信側で URL ブロックがある場合は トラブルシュート を参照。

7
📝

運用開始前チェック

  • 誤送信訓練(公開停止 → 再発行)の実施
  • 監査:初回DL通知・履歴の確認手順を共有
  • 問い合わせ・エスカレーションフローの整備
8
📊

ログ/監視の目安

  • MTA ログ:送信経路・Milter 適用確認
  • アプリログ:アップロード完了/リンク生成のタイムライン
  • Nextcloud:I/O, WebDAV 応答、クォータ/残容量
運用後は 件数 停止件数 エラー率 を月次で振り返り、既定値を最適化。