Linux/Mail/Rspamd
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
ns-lab
nowsky system-lab
DigiLoog
Linux
Windows
開始行:
*Rspamd [#kfbc9f81]
スパムメールチェック、電子署名付与、外部プログラム連携を...
スパムフィルタ・ウイルスチェックを実装する場合、従来は複...
Rspamdのみで管理する事が出来るのでメンテナンス性が向上す...
殆どのコンポーネントはSQLiteにデータを書き込むが、
ニューラルネットワーク、メール構文解析など高度・高速処理...
Redis(RemoteDictionaryServer)にデータを書き込む為、[[Redi...
~
*参考サイト [#k13967fe]
-[[Rspamd:+https://rspamd.com/]]
-[[Soukaku's HENA-CHOKO Blog:+https://www.downtown.jp/~so...
-[[Rspamdで迷惑メールを判定:+https://gato.intaa.net/archi...
~
*構築環境 [#r4abcaa7]
-[[配布サイト:+https://github.com/vstakhov/rspamd/release...
-[[公式ドキュメント:+https://rspamd.com/doc/]]
#block
|LEFT:80|LEFT:180|LEFT:180|c
|CENTER:~IP/FQDN|CENTER:~SERVER-A|CENTER:~SERVER-B|h
|&color(#2020ff){OS};|openSUSE Leap 42.3|openSUSE Leap 42...
|&color(#2020ff){IP};|10.0.0.1|10.0.0.2|
|&color(#2020ff){FQDN};|mx1.test.org|mx2.test.org|
|&color(#2020ff){SQLite};|localhost|localhost|
|&color(#2020ff){Redis};|127.0.0.1|127.0.0.1|
|&color(#2020ff){MAIL};|>|test-mail☆mail.test.org|
※ MAILの星マークは「@」に置換して下さい
|LEFT:80|LEFT:180|LEFT:180|c
|CENTER:~Parameter|CENTER:~SERVER-A|CENTER:~SERVER-B|h
|&color(#2020ff){USER};|>|rspamd|
|&color(#2020ff){GROUP};|>|rspamd|
|&color(#2020ff){VERSION};|>|v1.7.4|
|&color(#2020ff){PREFIX};|>|/usr/local/rspamd|
|&color(#2020ff){DB};|>|/var/lib/rspamd|
※ PREFIXは後でバージョン番号にリネームして下さい
#block(next)
#ref(Linux/Mail/Rspamd/wiki_rspamd_01.png,35%,left,nowrap)
#block(end)
~
*インストール [#n591e033]
-&size(16){&font(b){1. インストール};};
yum/apt-get/zypperなどのパッケージ管理でもインストール出...
Rspamd公式がオフィシャルパッケージを推奨している為、基本...
構築例ではopenSUSEを利用しているがCentOS/Debianでも同手順...
# zypper install ragel libevent-devel sqlite3-devel file...
# zypper install lua lua-devel lua51-luajit lua51-luajit...
# zypper install pcre-devel pcre2-devel libfann-devel li...
# zypper install jemalloc-devel libjemalloc2 gd-devel
# cd /usr/local/src
# wget https://github.com/vstakhov/rspamd/archive/1.7.4....
# tar zxvf 1.7.4.tar.gz
# cd rspamd-1.7.4
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/rspamd \
-DINSTALL_EXAMPLES=ON \
-DINSTALL_WEBUI=ON \
-DENABLE_JEMALLOC=ON \
-DENABLE_LUAJIT=ON \
-DENABLE_SQLITE=ON \
-DENABLE_REDIRECTOR=ON \
-DENABLE_URL_INCLUDE=ON \
-DENABLE_TORCH=ON \
-DENABLE_FANN=ON \
-DENABLE_PCRE2=ON \
-DENABLE_GD=ON
# make && make install
-&size(16){&font(b){2. 起動準備};};
実行ユーザ、systemdスクリプト、ログローテートを設定してお...
Rspamdはファイル入出力を多量に使う為、
systemdスクリプトには "LimitNOFILE" を埋め込み、ファイル...
また、設定ファイル・インストール先を変更しているので、環...
インストール先については、プレフィックス・パスでインスト...
バージョン番号付にリネームする事で、パッケージ管理をしや...
# vi /usr/lib/systemd/system/rspamd.service
---
[Unit]
Description=rapid spam filtering system
After=nss-lookup.target network-online.target
Documentation=https://rspamd.com/doc/
[Service]
LimitNOFILE=1048576
NonBlocking=true
ExecStart=/usr/local/rspamd/bin/rspamd -c /etc/rspamd/rs...
ExecReload=/bin/kill -HUP $MAINPID
User=rspamd
Group=rspamd
RuntimeDirectory=rspamd
RuntimeDirectoryMode=0755
Restart=always
[Install]
WantedBy=multi-user.target
# vi /etc/logrotate.d/rspamd
---
/var/log/rspamd/rspamd.log {
weekly
compress
rotate 4
missingok
ifempty
sharedscripts
create 0644 rspamd rspamd
postrotate
systemctl restart rspamd > /dev/null 2>/dev/null...
endscript
}
# groupadd rspamd
# useradd -g rspamd -s /sbin/nologin rspamd
# mkdir /var/log/rspamd /var/lib/rspamd
# chown rspamd.rspamd /var/log/rspamd /var/lib/rspamd
# cd /usr/local
# mv rspamd rspamd-1.7.4
# ln -s /usr/local/rspamd-1.7.4 rspamd
# ln -s /usr/local/rspamd/etc/rspamd /etc/rspamd
-&size(16){&font(b){3. 基礎設定};};
初期設定にはコンフィグウィザードを利用出来るが、細かい設...
Rspamdのコンフィグは優先度順に階層化されており、棲み分け...
-- 既存設定に追記修正する物は&color(#2020ff){ "local.d" }...
-- 設定を強制上書きする場合は&color(#2020ff){ "override.d...
-- デフォ設定を直編集する時は&color(#2020ff){ "modules.d"...
>ただし、基本的には&color(#2020ff){ "local.d" };にて設定...
モジュールを無効化する場合のみ&color(#2020ff){ "override....
設定ファイルの拡張子は ".conf/.inc" の二つが存在する。
対応する拡張子は設定ファイル毎に違う為、呼び出し元となる&...
# rspamadm configwizard
---
・コンフィグウィザードの開始
Do you wish to continue?[Y/n]: y
・WEB管理画面の設定
Controller password is not set, do you want to set one?[...
Enter passphrase:
・Redisの設定
Do you wish to set Redis servers?[Y/n]: y
Input read only servers separated by `,` [default: local...
Input write only servers separated by `,` [default: 127....
Do you have any password set for your Redis?[y/N]: y
Do you have any specific database for your Redis?[y/N]: y
・DKIM設定(後で設定)
Do you want to setup dkim signing feature?[y/N]: n
・トークンタイムアウト
Expire time for new tokens [100d]: 100d
・設定の出力
Reset previous data?[y/N]: y
・Redisのイニシャライズ
Do you wish to convert them to Redis?[Y/n]: y
・設定の保存
Apply changes?[Y/n]: y
-&size(16){&font(b){4. オプション設定};};
ウィザードだけでは細かい設定が出来ない為、モジュール毎の...
なお、下記は特に重要となる項目の参考値のみ記載。
各モジュールの概要・設定項目は[[公式ドキュメント:+https:/...
ただし、物によってはドキュメントに記載されていないが、モ...
必要に応じてソースコードも確認する。
--local.d/actions.conf
#region(&color(#ff0000){設定内容};)
[[コチラ:+https://gato.intaa.net/archives/12407]]でも解説...
閾値のパラメータは小数点も設定可能で、設定した値が迷惑メ...
reject = null;
add_header = 10;
greylist = null;
#endregion
--local.d/classifier-bayes.conf
#region(&color(#ff0000){設定内容};)
Rspamdのスパムメール学習データを格納するSQLite設定
SPAMのtrue/falseを切り替える事で、スパムメール・非スパム...
backend = "sqlite3";
languages_enabled = true;
min_tokens = 11;
min_learns = 200;
tokenizer {
name = "osb";
}
cache {
path = "/var/lib/rspamd/learn_cache.sqlite";
}
statfile {
symbol = "BAYES_HAM";
path = "/var/lib/rspamd/bayes.ham.sqlite";
spam = false;
}
statfile {
symbol = "BAYES_SPAM";
path = "/var/lib/rspamd/bayes.spam.sqlite";
spam = true;
}
#endregion
--local.d/dkim_signing.conf
#region(&color(#ff0000){設定内容};)
DKIM署名を付与する場合は "dkim_signingモジュール" を利用...
DKIM検証を行う場合は "dkimモジュール" を利用する。
DKIMはheader情報を元に制御するので、use_domainの設定をhea...
サブドメインメール環境でeSLDを有効化すると、
署名対象がサブドメインのFQDNから、ドメインに変わってしま...
証明書の作り方などは[[OpenDKIM構築手順:+https://www.ns-la...
allow_envfrom_empty = true;
allow_hdrfrom_mismatch = true;
allow_hdrfrom_multiple = false;
allow_username_mismatch = true;
use_esld = false;
use_redis = false;
use_domain = "header";
use_domain_sign_networks = "header";
use_domain_sign_local = "header";
domain {
mail.hoge.org {
path = "/etc/rspamd/dkim/mail.hoge.org";
selector = "20180401";
}
}
#endregion
--local.d/history_redis.conf
#region(&color(#ff0000){設定内容};)
Redisに書き込むデータ行数などの設定。nrowsは10000以上に変...
compressを有効化しないと、データが肥大化するので有効化し...
servers = 127.0.0.1:6379;
key_prefix = "rs_history";
nrows = 10000;
compress = true;
subject_privacy = false;
#endregion
--local.d/logging.inc
#region(&color(#ff0000){設定内容};)
Rspamdのログ保存設定。ファイル直書き・syslog出力の2種類が...
デバッグモジュールを設定すると、特定もモジュールのみデバ...
例えば、DKIMモジュールのデバッグを行う場合は、"debug_modu...
type = "file";
filename = "/var/log/rspamd/rspamd.log";
log_urls = true;
log_re_cache = true;
debug_modules = [];
#endregion
--local.d/milter_headers.conf
#region(&color(#ff0000){設定内容};)
スパム判定のヘッダー定義。汎用的な値を使うなら、extended_...
Rspamdで処理したメールに独自ヘッダーを付与するには、add-h...
ドキュメントは情報が古い為、最新の設定内容を使う場合はソ...
use = ["add-headers", "x-virus"];
extended_spam_headers = true;
routines {
add-headers {
headers {
X-Rspamd-Scanned = "X-Original-Header";
}
remove = 1;
}
x-virus {
header = "X-Virus";
symbols = ["CLAM_VIRUS", "FPROT_VIRUS"];
remove = 1;
}
}
#endregion
--local.d/mime_types.conf
#region(&color(#ff0000){設定内容};)
メールに添付されるファイル拡張子毎のスパムスコア設定
攻撃に使われやすい拡張子を高スコア設定にしつつ、強制削除...
添付ファイル拡張子での遮断が出来る
bad_extensions = {
ace = 4,
arj = 4,
bat = 2,
cab = 3,
com = 2,
exe = 1,
jar = 2,
lnk = 4,
scr = 4,
};
bad_archive_extensions = {
pptx = 0.1,
docx = 0.1,
xlsx = 0.1,
pdf = 0.1,
jar = 3,
js = 0.5,
vbs = 4,
};
archive_extensions = {
zip = 1,
arj = 1,
rar = 1,
ace = 1,
7z = 1,
cab = 1,
};
#endregion
--local.d/options.inc
#region(&color(#ff0000){設定内容};)
Rspamdの基本動作設定。参照先DNSサーバのロードバランス、Rs...
RspamdにはC言語モジュール・LUAモジュールの二つが存在する...
C言語モジュールの読込み設定はこのファイルの&color(#2020ff...
ただし、一部のLuaモジュールはC言語モジュールを必須として...
filters = "chartable,dkim,spf,surbl,regexp,fuzzy_check";
raw_mode = false;
one_shot = false;
dns {
# nameserver = "master-slave:127.0.0.1:53:10,8.8.8.8...
timeout = 1s;
sockets = 16;
retransmits = 5;
}
classify_headers = [
"User-Agent",
"X-Mailer",
"Content-Type",
"X-MimeOLE",
];
history_rows = 10000;
allow_raw_input = true;
words_decay = 10000;
local_addrs = "127.0.0.1/32";
#endregion
--local.d/phishing.conf
#region(&color(#ff0000){設定内容};)
フィッシングメールフィルターの設定
このモジュールはメールのURL解析・URLブラックリストとの参...
メモリを凄く使うのでモジュール利用時は注意する。
本格的に動かす場合は16GB以上の空きメモリが必要なので、自...
メモリを利用する箇所を明示的に無効化しておく
下記ではメモリを大量消費する全モジュールを無効化している
phishing {
openphish_enabled = false;
openphish_premium = false;
phishtank_enabled = false;
}
#endregion
--local.d/redis.conf
#region(&color(#ff0000){設定内容};)
参照先のRedis指定。対象サーバのIPアドレスを設定
Read/Writeの両方を設定出来る為、Redisをクラスタ構成にして...
write_servers = "127.0.0.1";
read_servers = "127.0.0.1";
#endregion
--local.d/worker-controller.inc
#region(&color(#ff0000){設定内容};)
RspamdコントローラとWebGUIログイン情報の設定。 &color(#20...
[password] はGUI閲覧のみ [enable] はGUIから設定変更も可能...
[secure_ip] に記載したIPからGUIを閲覧すると認証パスワード...
RspamdClusterを構築する際はAPI代わりにHTTP-GETを送ってい...
認証回避する為に [secure_ip] 設定が必須となる
password = "$2$...";
enable_password = "$2$...";
secure_ip = "127.0.0.1";
#endregion
-&size(16){&font(b){5. WebGUI画面};};
RspamdはWebUIを備えており、WebUIからメール解析状況の確認...
通常は、IP:127.0.0.1/TCP:11334で待ち受けているが変更する...
ただし、WebUIは通信暗号化に対応していない為、SSL化を行う...
設定方法は[[オフィシャル:+https://rspamd.com/doc/quicksta...
例としてSSL通信を強制しつつ、リバプロ動作させるNginx設定...
--nginx.conf
#region(&color(#ff0000){設定内容};)
location /rspamd/ {
# Reverse proxy
proxy_bind 127.0.0.1;
proxy_pass http://127.0.0.1:11334/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwa...
# IP access restrict
allow 10.0.0.1;
allow 10.0.0.2;
deny all;
# Force SSL/TLS request
if($server_port != 443){ return 403; }
}
#endregion
-&size(16){&font(b){6. クラスタリング};};
Rspamdはクラスタリング構成を取る事が出来る。
ただ、クラスタリングと言っても一般的なActive/Activeクラス...
WebUIを通した管理通信をクラスタ内のサーバへ同時適用する事...
ステータスをクラスタ全体で合算して表示するなど管理統合に...
例として &color(#2020ff){Master:10.0.0.1、Slave:10.0.0.2}...
--local.d/options.inc
#region(&color(#ff0000){設定内容};)
クラスタ構成するWebUIのURLを設定する。
下記ではhost/pathを設定しているがhostのみでも構築する事が...
pathの値はオフィシャルではトレイリングスラッシュ(最後の'/...
付けないとAPI接続エラーになるので、path設定時は付与させる。
neighbours {
server_a {
host = "https://10.0.0.1:443";
path = "/rspamd/";
}
server_b {
host = "https://10.0.0.2:443";
path = "/rspamd/";
}
}
#endregion
--local.d/worker-controller.inc
#region(&color(#ff0000){設定内容};)
クラスタ用のWeb通信を認証なしで通す為、
クラスタノードからの接続をパスワード認証無しにする。
secure_ip = "10.0.0.1";
secure_ip = "10.0.0.2";
#endregion
~
*スパム判定 [#p6f93cc3]
-&size(16){&font(b){A. 正規・迷惑メール学習};};
正確にスパムメール判定を行う為には、大量のスパムメールと...
本番環境で学習を行う場合、ユーザ領域を直接処理するとデッ...
ProcMail等で全メールを別ディレクトリにコピーしておき、ユ...
・迷惑メール学習(1通)
# rspamc -c bayes -h 127.0.0.1:11334 learn_spam /${FileP...
・迷惑メール学習(複数)
# rspamc -c bayes -h 127.0.0.1:11334 learn_spam /${FileP...
・正常メール学習(1通)
# rspamc -c bayes -h 127.0.0.1:11334 learn_ham /${FilePa...
・正常メール学習(複数)
# rspamc -c bayes -h 127.0.0.1:11334 learn_ham /${FilePa...
-&size(16){&font(b){B. 迷惑メールヘッダー};};
milter_headerの設定により迷惑メールヘッダーのスコアを変更...
大まかに、詳細パラメータで制御を行う物とシンボル制御の2種...
詳細は[[公式ドキュメント:+https://rspamd.com/doc/modules/...
--[x-spamd-bar]
#region(&color(#ff0000){ヘッダー情報};)
通常のメール <X-Spamd-Bar: ->
スパムメール <X-Spamd-Bar: +>
#endregion
--[x-spamd-result]
#region(&color(#ff0000){ヘッダー情報};)
通常のメール <X-Spamd-Result: default: False>
スパムメール <X-Spamd-Result: default: True>
#endregion
--[x-spam-status]
#region(&color(#ff0000){ヘッダー情報};)
通常のメール <X-Spam-Status: No, score=X.XX>
スパムメール <X-Spam-Status: Yes, score=X.XX>
#endregion
終了行:
*Rspamd [#kfbc9f81]
スパムメールチェック、電子署名付与、外部プログラム連携を...
スパムフィルタ・ウイルスチェックを実装する場合、従来は複...
Rspamdのみで管理する事が出来るのでメンテナンス性が向上す...
殆どのコンポーネントはSQLiteにデータを書き込むが、
ニューラルネットワーク、メール構文解析など高度・高速処理...
Redis(RemoteDictionaryServer)にデータを書き込む為、[[Redi...
~
*参考サイト [#k13967fe]
-[[Rspamd:+https://rspamd.com/]]
-[[Soukaku's HENA-CHOKO Blog:+https://www.downtown.jp/~so...
-[[Rspamdで迷惑メールを判定:+https://gato.intaa.net/archi...
~
*構築環境 [#r4abcaa7]
-[[配布サイト:+https://github.com/vstakhov/rspamd/release...
-[[公式ドキュメント:+https://rspamd.com/doc/]]
#block
|LEFT:80|LEFT:180|LEFT:180|c
|CENTER:~IP/FQDN|CENTER:~SERVER-A|CENTER:~SERVER-B|h
|&color(#2020ff){OS};|openSUSE Leap 42.3|openSUSE Leap 42...
|&color(#2020ff){IP};|10.0.0.1|10.0.0.2|
|&color(#2020ff){FQDN};|mx1.test.org|mx2.test.org|
|&color(#2020ff){SQLite};|localhost|localhost|
|&color(#2020ff){Redis};|127.0.0.1|127.0.0.1|
|&color(#2020ff){MAIL};|>|test-mail☆mail.test.org|
※ MAILの星マークは「@」に置換して下さい
|LEFT:80|LEFT:180|LEFT:180|c
|CENTER:~Parameter|CENTER:~SERVER-A|CENTER:~SERVER-B|h
|&color(#2020ff){USER};|>|rspamd|
|&color(#2020ff){GROUP};|>|rspamd|
|&color(#2020ff){VERSION};|>|v1.7.4|
|&color(#2020ff){PREFIX};|>|/usr/local/rspamd|
|&color(#2020ff){DB};|>|/var/lib/rspamd|
※ PREFIXは後でバージョン番号にリネームして下さい
#block(next)
#ref(Linux/Mail/Rspamd/wiki_rspamd_01.png,35%,left,nowrap)
#block(end)
~
*インストール [#n591e033]
-&size(16){&font(b){1. インストール};};
yum/apt-get/zypperなどのパッケージ管理でもインストール出...
Rspamd公式がオフィシャルパッケージを推奨している為、基本...
構築例ではopenSUSEを利用しているがCentOS/Debianでも同手順...
# zypper install ragel libevent-devel sqlite3-devel file...
# zypper install lua lua-devel lua51-luajit lua51-luajit...
# zypper install pcre-devel pcre2-devel libfann-devel li...
# zypper install jemalloc-devel libjemalloc2 gd-devel
# cd /usr/local/src
# wget https://github.com/vstakhov/rspamd/archive/1.7.4....
# tar zxvf 1.7.4.tar.gz
# cd rspamd-1.7.4
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/rspamd \
-DINSTALL_EXAMPLES=ON \
-DINSTALL_WEBUI=ON \
-DENABLE_JEMALLOC=ON \
-DENABLE_LUAJIT=ON \
-DENABLE_SQLITE=ON \
-DENABLE_REDIRECTOR=ON \
-DENABLE_URL_INCLUDE=ON \
-DENABLE_TORCH=ON \
-DENABLE_FANN=ON \
-DENABLE_PCRE2=ON \
-DENABLE_GD=ON
# make && make install
-&size(16){&font(b){2. 起動準備};};
実行ユーザ、systemdスクリプト、ログローテートを設定してお...
Rspamdはファイル入出力を多量に使う為、
systemdスクリプトには "LimitNOFILE" を埋め込み、ファイル...
また、設定ファイル・インストール先を変更しているので、環...
インストール先については、プレフィックス・パスでインスト...
バージョン番号付にリネームする事で、パッケージ管理をしや...
# vi /usr/lib/systemd/system/rspamd.service
---
[Unit]
Description=rapid spam filtering system
After=nss-lookup.target network-online.target
Documentation=https://rspamd.com/doc/
[Service]
LimitNOFILE=1048576
NonBlocking=true
ExecStart=/usr/local/rspamd/bin/rspamd -c /etc/rspamd/rs...
ExecReload=/bin/kill -HUP $MAINPID
User=rspamd
Group=rspamd
RuntimeDirectory=rspamd
RuntimeDirectoryMode=0755
Restart=always
[Install]
WantedBy=multi-user.target
# vi /etc/logrotate.d/rspamd
---
/var/log/rspamd/rspamd.log {
weekly
compress
rotate 4
missingok
ifempty
sharedscripts
create 0644 rspamd rspamd
postrotate
systemctl restart rspamd > /dev/null 2>/dev/null...
endscript
}
# groupadd rspamd
# useradd -g rspamd -s /sbin/nologin rspamd
# mkdir /var/log/rspamd /var/lib/rspamd
# chown rspamd.rspamd /var/log/rspamd /var/lib/rspamd
# cd /usr/local
# mv rspamd rspamd-1.7.4
# ln -s /usr/local/rspamd-1.7.4 rspamd
# ln -s /usr/local/rspamd/etc/rspamd /etc/rspamd
-&size(16){&font(b){3. 基礎設定};};
初期設定にはコンフィグウィザードを利用出来るが、細かい設...
Rspamdのコンフィグは優先度順に階層化されており、棲み分け...
-- 既存設定に追記修正する物は&color(#2020ff){ "local.d" }...
-- 設定を強制上書きする場合は&color(#2020ff){ "override.d...
-- デフォ設定を直編集する時は&color(#2020ff){ "modules.d"...
>ただし、基本的には&color(#2020ff){ "local.d" };にて設定...
モジュールを無効化する場合のみ&color(#2020ff){ "override....
設定ファイルの拡張子は ".conf/.inc" の二つが存在する。
対応する拡張子は設定ファイル毎に違う為、呼び出し元となる&...
# rspamadm configwizard
---
・コンフィグウィザードの開始
Do you wish to continue?[Y/n]: y
・WEB管理画面の設定
Controller password is not set, do you want to set one?[...
Enter passphrase:
・Redisの設定
Do you wish to set Redis servers?[Y/n]: y
Input read only servers separated by `,` [default: local...
Input write only servers separated by `,` [default: 127....
Do you have any password set for your Redis?[y/N]: y
Do you have any specific database for your Redis?[y/N]: y
・DKIM設定(後で設定)
Do you want to setup dkim signing feature?[y/N]: n
・トークンタイムアウト
Expire time for new tokens [100d]: 100d
・設定の出力
Reset previous data?[y/N]: y
・Redisのイニシャライズ
Do you wish to convert them to Redis?[Y/n]: y
・設定の保存
Apply changes?[Y/n]: y
-&size(16){&font(b){4. オプション設定};};
ウィザードだけでは細かい設定が出来ない為、モジュール毎の...
なお、下記は特に重要となる項目の参考値のみ記載。
各モジュールの概要・設定項目は[[公式ドキュメント:+https:/...
ただし、物によってはドキュメントに記載されていないが、モ...
必要に応じてソースコードも確認する。
--local.d/actions.conf
#region(&color(#ff0000){設定内容};)
[[コチラ:+https://gato.intaa.net/archives/12407]]でも解説...
閾値のパラメータは小数点も設定可能で、設定した値が迷惑メ...
reject = null;
add_header = 10;
greylist = null;
#endregion
--local.d/classifier-bayes.conf
#region(&color(#ff0000){設定内容};)
Rspamdのスパムメール学習データを格納するSQLite設定
SPAMのtrue/falseを切り替える事で、スパムメール・非スパム...
backend = "sqlite3";
languages_enabled = true;
min_tokens = 11;
min_learns = 200;
tokenizer {
name = "osb";
}
cache {
path = "/var/lib/rspamd/learn_cache.sqlite";
}
statfile {
symbol = "BAYES_HAM";
path = "/var/lib/rspamd/bayes.ham.sqlite";
spam = false;
}
statfile {
symbol = "BAYES_SPAM";
path = "/var/lib/rspamd/bayes.spam.sqlite";
spam = true;
}
#endregion
--local.d/dkim_signing.conf
#region(&color(#ff0000){設定内容};)
DKIM署名を付与する場合は "dkim_signingモジュール" を利用...
DKIM検証を行う場合は "dkimモジュール" を利用する。
DKIMはheader情報を元に制御するので、use_domainの設定をhea...
サブドメインメール環境でeSLDを有効化すると、
署名対象がサブドメインのFQDNから、ドメインに変わってしま...
証明書の作り方などは[[OpenDKIM構築手順:+https://www.ns-la...
allow_envfrom_empty = true;
allow_hdrfrom_mismatch = true;
allow_hdrfrom_multiple = false;
allow_username_mismatch = true;
use_esld = false;
use_redis = false;
use_domain = "header";
use_domain_sign_networks = "header";
use_domain_sign_local = "header";
domain {
mail.hoge.org {
path = "/etc/rspamd/dkim/mail.hoge.org";
selector = "20180401";
}
}
#endregion
--local.d/history_redis.conf
#region(&color(#ff0000){設定内容};)
Redisに書き込むデータ行数などの設定。nrowsは10000以上に変...
compressを有効化しないと、データが肥大化するので有効化し...
servers = 127.0.0.1:6379;
key_prefix = "rs_history";
nrows = 10000;
compress = true;
subject_privacy = false;
#endregion
--local.d/logging.inc
#region(&color(#ff0000){設定内容};)
Rspamdのログ保存設定。ファイル直書き・syslog出力の2種類が...
デバッグモジュールを設定すると、特定もモジュールのみデバ...
例えば、DKIMモジュールのデバッグを行う場合は、"debug_modu...
type = "file";
filename = "/var/log/rspamd/rspamd.log";
log_urls = true;
log_re_cache = true;
debug_modules = [];
#endregion
--local.d/milter_headers.conf
#region(&color(#ff0000){設定内容};)
スパム判定のヘッダー定義。汎用的な値を使うなら、extended_...
Rspamdで処理したメールに独自ヘッダーを付与するには、add-h...
ドキュメントは情報が古い為、最新の設定内容を使う場合はソ...
use = ["add-headers", "x-virus"];
extended_spam_headers = true;
routines {
add-headers {
headers {
X-Rspamd-Scanned = "X-Original-Header";
}
remove = 1;
}
x-virus {
header = "X-Virus";
symbols = ["CLAM_VIRUS", "FPROT_VIRUS"];
remove = 1;
}
}
#endregion
--local.d/mime_types.conf
#region(&color(#ff0000){設定内容};)
メールに添付されるファイル拡張子毎のスパムスコア設定
攻撃に使われやすい拡張子を高スコア設定にしつつ、強制削除...
添付ファイル拡張子での遮断が出来る
bad_extensions = {
ace = 4,
arj = 4,
bat = 2,
cab = 3,
com = 2,
exe = 1,
jar = 2,
lnk = 4,
scr = 4,
};
bad_archive_extensions = {
pptx = 0.1,
docx = 0.1,
xlsx = 0.1,
pdf = 0.1,
jar = 3,
js = 0.5,
vbs = 4,
};
archive_extensions = {
zip = 1,
arj = 1,
rar = 1,
ace = 1,
7z = 1,
cab = 1,
};
#endregion
--local.d/options.inc
#region(&color(#ff0000){設定内容};)
Rspamdの基本動作設定。参照先DNSサーバのロードバランス、Rs...
RspamdにはC言語モジュール・LUAモジュールの二つが存在する...
C言語モジュールの読込み設定はこのファイルの&color(#2020ff...
ただし、一部のLuaモジュールはC言語モジュールを必須として...
filters = "chartable,dkim,spf,surbl,regexp,fuzzy_check";
raw_mode = false;
one_shot = false;
dns {
# nameserver = "master-slave:127.0.0.1:53:10,8.8.8.8...
timeout = 1s;
sockets = 16;
retransmits = 5;
}
classify_headers = [
"User-Agent",
"X-Mailer",
"Content-Type",
"X-MimeOLE",
];
history_rows = 10000;
allow_raw_input = true;
words_decay = 10000;
local_addrs = "127.0.0.1/32";
#endregion
--local.d/phishing.conf
#region(&color(#ff0000){設定内容};)
フィッシングメールフィルターの設定
このモジュールはメールのURL解析・URLブラックリストとの参...
メモリを凄く使うのでモジュール利用時は注意する。
本格的に動かす場合は16GB以上の空きメモリが必要なので、自...
メモリを利用する箇所を明示的に無効化しておく
下記ではメモリを大量消費する全モジュールを無効化している
phishing {
openphish_enabled = false;
openphish_premium = false;
phishtank_enabled = false;
}
#endregion
--local.d/redis.conf
#region(&color(#ff0000){設定内容};)
参照先のRedis指定。対象サーバのIPアドレスを設定
Read/Writeの両方を設定出来る為、Redisをクラスタ構成にして...
write_servers = "127.0.0.1";
read_servers = "127.0.0.1";
#endregion
--local.d/worker-controller.inc
#region(&color(#ff0000){設定内容};)
RspamdコントローラとWebGUIログイン情報の設定。 &color(#20...
[password] はGUI閲覧のみ [enable] はGUIから設定変更も可能...
[secure_ip] に記載したIPからGUIを閲覧すると認証パスワード...
RspamdClusterを構築する際はAPI代わりにHTTP-GETを送ってい...
認証回避する為に [secure_ip] 設定が必須となる
password = "$2$...";
enable_password = "$2$...";
secure_ip = "127.0.0.1";
#endregion
-&size(16){&font(b){5. WebGUI画面};};
RspamdはWebUIを備えており、WebUIからメール解析状況の確認...
通常は、IP:127.0.0.1/TCP:11334で待ち受けているが変更する...
ただし、WebUIは通信暗号化に対応していない為、SSL化を行う...
設定方法は[[オフィシャル:+https://rspamd.com/doc/quicksta...
例としてSSL通信を強制しつつ、リバプロ動作させるNginx設定...
--nginx.conf
#region(&color(#ff0000){設定内容};)
location /rspamd/ {
# Reverse proxy
proxy_bind 127.0.0.1;
proxy_pass http://127.0.0.1:11334/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwa...
# IP access restrict
allow 10.0.0.1;
allow 10.0.0.2;
deny all;
# Force SSL/TLS request
if($server_port != 443){ return 403; }
}
#endregion
-&size(16){&font(b){6. クラスタリング};};
Rspamdはクラスタリング構成を取る事が出来る。
ただ、クラスタリングと言っても一般的なActive/Activeクラス...
WebUIを通した管理通信をクラスタ内のサーバへ同時適用する事...
ステータスをクラスタ全体で合算して表示するなど管理統合に...
例として &color(#2020ff){Master:10.0.0.1、Slave:10.0.0.2}...
--local.d/options.inc
#region(&color(#ff0000){設定内容};)
クラスタ構成するWebUIのURLを設定する。
下記ではhost/pathを設定しているがhostのみでも構築する事が...
pathの値はオフィシャルではトレイリングスラッシュ(最後の'/...
付けないとAPI接続エラーになるので、path設定時は付与させる。
neighbours {
server_a {
host = "https://10.0.0.1:443";
path = "/rspamd/";
}
server_b {
host = "https://10.0.0.2:443";
path = "/rspamd/";
}
}
#endregion
--local.d/worker-controller.inc
#region(&color(#ff0000){設定内容};)
クラスタ用のWeb通信を認証なしで通す為、
クラスタノードからの接続をパスワード認証無しにする。
secure_ip = "10.0.0.1";
secure_ip = "10.0.0.2";
#endregion
~
*スパム判定 [#p6f93cc3]
-&size(16){&font(b){A. 正規・迷惑メール学習};};
正確にスパムメール判定を行う為には、大量のスパムメールと...
本番環境で学習を行う場合、ユーザ領域を直接処理するとデッ...
ProcMail等で全メールを別ディレクトリにコピーしておき、ユ...
・迷惑メール学習(1通)
# rspamc -c bayes -h 127.0.0.1:11334 learn_spam /${FileP...
・迷惑メール学習(複数)
# rspamc -c bayes -h 127.0.0.1:11334 learn_spam /${FileP...
・正常メール学習(1通)
# rspamc -c bayes -h 127.0.0.1:11334 learn_ham /${FilePa...
・正常メール学習(複数)
# rspamc -c bayes -h 127.0.0.1:11334 learn_ham /${FilePa...
-&size(16){&font(b){B. 迷惑メールヘッダー};};
milter_headerの設定により迷惑メールヘッダーのスコアを変更...
大まかに、詳細パラメータで制御を行う物とシンボル制御の2種...
詳細は[[公式ドキュメント:+https://rspamd.com/doc/modules/...
--[x-spamd-bar]
#region(&color(#ff0000){ヘッダー情報};)
通常のメール <X-Spamd-Bar: ->
スパムメール <X-Spamd-Bar: +>
#endregion
--[x-spamd-result]
#region(&color(#ff0000){ヘッダー情報};)
通常のメール <X-Spamd-Result: default: False>
スパムメール <X-Spamd-Result: default: True>
#endregion
--[x-spam-status]
#region(&color(#ff0000){ヘッダー情報};)
通常のメール <X-Spam-Status: No, score=X.XX>
スパムメール <X-Spam-Status: Yes, score=X.XX>
#endregion
ページ名: