Debian buster/sid で玄人志向の USB3.1 インタフェースボードを動かしてみる[性能編]

前のエントリーから、時間が空いてしまいましたが、簡単にパフォーマンステストをしてみた結果をまとめておきます。

測定対象の HDD について

まず、内蔵 SATA インターフェースに繋がっている方。

root@vhost01:~# smartctl --info /dev/sda -d sat
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.17.0-rc7-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family: Hitachi Deskstar E7K1000
Device Model: Hitachi HDE721010SLA330
Serial Number: STN****S0UWL1K
LU WWN Device Id: 5 000cca 35ecbc4d1
Firmware Version: ST6OA3AA
User Capacity: 1,000,204,886,016 bytes [1.00 TB]
Sector Size: 512 bytes logical/physical
Rotation Rate: 7200 rpm
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 4
SATA Version is: SATA 2.6, 3.0 Gb/s
Local Time is: Thu Jul 19 22:50:48 2018 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

今回増設した USB3.1 インタフェースボード経由で接続した HDD 増設スタンドに挿した方が、こちら。

root@vhost01:~# smartctl --info /dev/sdb -d sat
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.17.0-rc7-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family: Hitachi Ultrastar 7K3000
Device Model: Hitachi HUA723020ALA640
Serial Number: MK0****FJ4XZVA
LU WWN Device Id: 5 000cca 223de6d56
Firmware Version: MK7OAA10
User Capacity: 2,000,398,934,016 bytes [2.00 TB]
Sector Size: 512 bytes logical/physical
Rotation Rate: 7200 rpm
Form Factor: 3.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 4
SATA Version is: SATA 2.6, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Thu Jul 19 22:50:41 2018 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

どちらも、回転数 7200rpm 、セクタサイズ 512byte のもので、違いは容量と SATA のリンクスピード。
測定を厳密にやるのであれば、同じ型番の HDD 2 台用意して、内蔵 SATA と USB3.1 にそれぞれを繋ぐのが良いのでしょうけど、機材を揃える時間もなかったので、大体の傾向だけつかめれば良いことにします。

Debian buster/sid で玄人志向の USB3.1 インタフェースボードを動かしてみる

Mac mini などのバックアップを TimeMachine でやっているですけどね。そのバックアップ先にしてたサーバの HDD がお亡くなりになったようで、OS レベルで認識されなくなりまして…。

まあ、 HDD 買ってきて載せ替えて、ちょいと設定修正すれば話は終わりなんですが、それじゃ面白くないよねぇ(誰が?)ということで、いろいろと考えて「USB 3.1 のボード載せてみるか?」ということに。
最初は、サーバに HDD 内蔵してしまうと、なにかあったときに交換するが面倒だから、いわゆる「お立ち台」タイプの HDD 増設スタンドを USB 経由で繋ぐだけでいっかな〜、と思ってたんですけど、ちょっと調べてみたら USB3.1 Type-C コネクタ付きのカードで比較的お安いの見つけることができたので、それに合わせて HDD 増設スタンドの方も、 USB3.1 Type-C コネクタを持つものにして一緒に Amazon でポチッと…。

カードを増設して、 OS からの認識状態を確認

でモノが届いたので、早速取り付け~。
バックアップサーバとして使っているのは、1年ほど前に手に入れた Express5800/53Xg 。こいつ、スリムタイプの筐体なのだけど、3.5 インチ HDD を 2 台搭載可能、PCI Express スロットとも x16 と x4 ぞれぞれフルハイトのカードが使えるというのがちょっと嬉しかったり…。

久しぶりに自分用のノート PC を手に入れた

久しぶりに、持ち出し用にノートPCを買うなどしてみた。ま、買ったと言っても、ヤフオクで競り落とした中古なんですけど。
モノは、マウスコンピューターの m-Book E シリーズの2つぐらい前のエントリーモデル。付属してたマニュアルとか見ると Windows 10 入ってたみたいで、終売になって1年程度のモデルの模様。(すでに、公式サイトには情報がないので、詳細は不明ですが…。)

14型 m-Book E シリーズ [ノートパソコン(PC)]|BTOパソコンの通販ショップ マウスコンピューター【公式】

エントリーモデルなだけあって、14 インチディスプレイ、 Celeron N3060(デュアルコア 1.6GHz)、メモリ 4GB、内蔵SSD 32GB というスペックですけど、メモリスロットが2スロットあって、うち 1 が空き。2.5 インチ HDD/SDD の搭載スペースもあるので、ちょっとリソース不足かな、と思ったら追加できる余裕はあるので、そこそこ使えそうな感じ。
実際、裏蓋開けての確認はしてないんですけど、型番をキーにググると、2.5 インチ SSD を増設したというレポートを見つけることができるので、あまりそのへんは心配していなかったり…。

そもそも、勉強会に参加したりするときにテキストベースでメモ取れればいいかな、ぐらいの用途しか想定してないので、スペックが低めなところは、使い方を工夫することでカバーできる範囲かな〜、と。(データはできる限り、Google ドライブの方に置いてしまうとか。)

rpmパッケージのダウンロードだけ実行する

以前、書いたエントリーなんだけど、割りと頻繁にアクセスされているよなので、ちょっと落ち穂拾いをしておこうと思う。

外部ネットワークへのアクセスが容易ではないネットワーク上に接続されたサーバに、最新状態の CentOS を入れてから、システム構築って話って意外とあるように思うのだけど、そういう環境で更新されたパッケージをどうやってアップデートする,というのは結構大変。
#逆に、そういう要求って少ない?

[From アップデートサーバにダイレクトアクセス出来ない環境下で、CentOS をアップデート - Soukaku's HENA-CHOKO Blog]

現状での最適解は、yum コマンド自身のオプションである --downloadonly オプションを使う、ってやつになるでしょうね。

パッケージをインストールせずにダウンロードだけ行う方法は 2 つあります。

yum の downloadonly プラグインを使用する方法と、yumdownloader ユーティリティを使用する方法です。

[From yum を使用して、パッケージをインストールせずにダウンロードだけ行う - Red Hat Customer Portal]

RHEL6/CentOS6 以降であれば、基本的に --downloadonly オプションが使えるんで、余分な手間ひまかけなくて良ですし…。

あと、以前のエントリーでやった方法の欠点としては、 epel レポジトリのものや、ソフトウェア開発元の提供しているレポジトリ(例えば、 Zabbix とか)をまとめて扱うのが難しかったりするんですよね…、実は…。

自分的によくやる方法

他の人達も書いているのでやり方自体はググればたくさん見つかるので、主に自分がよくやる手順を書いときます。

  1. まず、パッケージダウンロード専用の環境を用意します。
    • 常時起動しておく必要もないですし、リソースも使わないので、VMware Player や VirtualBox 上の仮想マシンで OK。
    • ここに、RHEL/CentOSをインストール。RHEL の場合は、サブスクリプションの手続きを忘れずに。
    • 当然ですが、ネット上のリポジトリにアクセス出来ること。
  2. 構築するシステムに合わせて、公式以外に必要なリポジトリ(epel とか Zabbix とか)の追加をします。
  3. 準備ができたら、 "yum --downloadonly update" とか "yum --downloadonly install zabbix-server-mysql" を実行。これでインストールに必要になるパッケージが、まとめてダウンロードされます。
    • デフォルトでのダウンロード先は、 /var/cache/yum ディレクトリの下。
      CentOS7だと、/var/cache/yum/x86_64/7/base/packages/ や /var/cache/yum/x86_64/7/extras/packages/ 。
    • デフォルト状態でダウンロードしてしまうと、ターゲットへの移動時に抜けが出ちゃったりすることのありえるので、大抵は --downloaddir オプションも一緒につけて、ダウンロード先を任意に指定してます。
  4. ダウンロードされたパッケージは、実際にシステムを構築したいサーバ上にファイル転送するなり、USB メモリなどのリムバブルメディアを用いて移動。移動先で "yum install *" か "rpm -ivh *" で、インストール。
  5. ターゲット側でのインストール/アップデートが終わったら、ダウンロード専用環境側でもパッケージのインストール/アップデートを実施。

と、いう感じ。

NTPsec その2 :ntpviz で統計情報を取得する

んで、前エントリーの続き。
NTPsec に変えた一番の目的は、 ntpviz という ntp に関する統計情報を出力するコマンドがある、ってことなので、それを含む ntpsec-ntpviz パッケージをインストールして、統計情報が取れることを確認します。

まずは、 aptitude コマンドに -s オプションつけて、依存関係を確認。

root@vhost01:~# aptitude -s install ntpsec-ntpviz
以下の新規パッケージがインストールされます:
aglfn{a} gnuplot{a} gnuplot-data{a} gnuplot-qt{a} libwxbase3.0-0v5{a} libwxgtk3.0-0v5{a}
ntpsec-ntpviz
更新: 0 個、新規インストール: 7 個、削除: 0 個、保留: 24 個。
アーカイブの 6,863 kB を取得する必要があります。展開後に 24.3 MB のディスク領域が新たに消費されます。

注意: 'シミュレーション' モードを使用します。
先に進みますか? [Y/n/?] y
パッケージのダウンロード/インストール/削除を行います。

削除されるものはないようなので、このままインストールするなら、-s を外して、aptitude を実行すれば、完了。

ntpviz コマンドを実行してみる

細かい使い方とかオプションは、 "man ntpviz" するか、NTPsec サイトに有るドキュメントを参照してもらうとして、実際に特定に NTP サーバとの Offset に関する統計情報を出力するには、以下のようにコマンドを実行します。

root@vhost01:~# ntpviz --peer-offsets ntp-a2.nict.go.jp
set grid
set autoscale xfixmin
set autoscale xfixmax
set xdata time
set xlabel "Time UTC"
set xtics format "%d %b\n%H:%MZ"
set timefmt "%s"
set lmargin 10
set rmargin 10
set terminal png size 1340,720
set title "vhost01.local.downtown.jp: Peer Offset ntp-a2.nict.go.jp"
set ylabel ""
set ytics format "%.1f ms" nomirror
set yrange [-0.8955:3.5569]
set key top right
plot 0.3909 title '50th percentile', '-' using 1:($2*1000.0) title 'ntp-a2.nict.go.jp' with line, \
'-' using 1:(($2+$3/2)*1000.0) title 'offset+rtt/2' with line, \
'-' using 1:(($2-$3/2)*1000.0) title 'offset-rtt/2' with line

1520082169.9069996 0.000877718 0.006074248
1520082171.9029999 0.000886769 0.005951494
1520082173.9040003 0.001002837 0.006294607
1520082175.9029999 0.000845034 0.006395244
1520082177.9029999 0.000154835 0.006268685
1520082179.9029999 0.000068847 0.006168117
1520082238.9029999 0.000573531 0.006166704
1520082305.9029999 0.001171861 0.006490722
1520082371.9029999 0.001739808 0.006436721
1520082437.9029999 0.002143953 0.006363756
1520082506.9029999 0.002659486 0.006837424
1520082574.9029999 0.000615921 0.006515450
1520082641.9029999 -0.000142259 0.006613719
1520082710.9029999 -0.000232807 0.006154115
1520082778.9029999 -0.000240509 0.006034757
1520083317.9020004 0.000009325 0.005811048
1520083857.9029999 0.000189473 0.006146113
1520083994.9029999 0.000548237 0.006358728
1520084467.9029999 0.000307157 0.006439212
1520084737.9020004 0.000390939 0.005914518
1520085779.9029999 0.000421743 0.006194988
1520085908.9029999 0.000345647 0.006118246
1520086307.9029999 0.000400457 0.005986258
1520086571.9020004 0.000375874 0.005964945
1520086835.9020004 0.000262098 0.005901524
1520088949.9029999 0.000424563 0.005911586
1520089471.9029999 0.000545216 0.006119386
1520090532.9029999 0.000681996 0.006185292
1520091598.9029999 0.000646152 0.006545365
1520092139.9029999 0.000566383 0.006364219

-- snip --

NTPsec その1 :既存のntpパッケージを置き換える

ほぼ、日課と化しているパッケージのアップデートチェック。
NTPsec というパッケージに目を引かれたので、実際にインストールしてみた。

サーバの運用をしていると、各サーバの時刻同期しておくのが当たり前というか、サーバ間で時刻にズレが有ると、トラブルの原因調査する際のログの突き合わせがめんどくさくなったり、デーモンによっては正しい動作をしてくれなかったりと、割と重要。
そんなわけで、ntp の実装もオリジナル以外にも幾つか存在してるわけですが、 NTPSec もその一つのようです。Debian だと、今回紹介する NTPsec とオリジナルの ntp 以外に OpenNTPD のパッケージが提供されてますね。

root@vhost01:~# aptitude show ntpsec
パッケージ: ntpsec
バージョン: 1.0.0+dfsg1-3
状態: インストールされていません
優先度: 任意
セクション: net
メンテナ: Richard Laager
アーキテクチャ: amd64
展開サイズ: 750 k
依存: adduser, lsb-base (>= 3.2-13), netbase, python3 (>= 3.3), python3-ntp, tzdata (>=
2015d-1), libc6 (>= 2.15), libcap2 (>= 1:2.10), libssl1.1 (>= 1.1.0)
推奨: systemd | cron | cron-daemon
提案: apparmor, ntpsec-doc, ntpsec-ntpviz
競合: ntp, time-daemon
破損: apparmor-profiles-extra (< 1.8)
置換: ntp, time-daemon
提供: time-daemon
説明: Network Time Protocol daemon and utility programs
NTP, the Network Time Protocol, is used to keep computer clocks accurate by synchronizing them
over the Internet or a local network, or by following an accurate hardware receiver that
interprets GPS, DCF-77, or similar time signals.

This package contains the NTP daemon and utility programs. An NTP daemon needs to be running
on each host that is to have its clock accuracy controlled by NTP. The same NTP daemon is also
used to provide NTP service to other hosts.

This is the NTPsec version of NTP. NTPsec is a secure, hardened, and improved implementation derived from the original NTP project.

For more information about the NTP protocol and NTP server configuration and operation, install
the package "ntpsec-doc".
ホームページ: https://www.ntpsec.org

havp を我が家の Web アクセスの経路に組み込んでみた

ということで、前エントリーからの続き。

我が家のネットワーク環境については、さらにちょっと前のエントリーで既出なわけですが

我が家のネットワーク構成概要 2017/12/16版

概略としては上の図の通りで、 Web アクセスの流れだけを抜き出してみたのが、下の図。

Webアクセス時の経路

まぁ、まんまこの図の通り、家中の PC やスマホからの Web アクセスを内部サーバ上で動いている Squid に集約して、更にそれを VyOS で有効にした webproxy (これも Squid なわけだが)を上位プロキシにしている、というわけ。
で、内部サーバで動いてる Squid 周りの設定を変更して、インストール済みの havp を更に挟み込む、というのが今回の内容。

HAVP (HTTP Anti Virus Proxy) を利用してWebアクセスにもアンチウィルス

多分、自分が見落としていただけなのだと思うのだけど、 Web アクセス時のアンチウィルスを実現するためのものとして、 HAVP というのがあるのに気がついた。

Short Description

HAVP (HTTP Antivirus Proxy) is a HTTP proxy with an antivirus scanner. It supports the free ClamAV , but also commercial solutions e.g. Kaspersky, Sophos and F-Prot.

[From HAVP – HTTP Anti Virus Proxy – The Free HTTP Anti Virus Proxy]

プロキシとして機能して、ウィルスチェックについては ClamAV などを呼び出して実行するというもの、だそうで。

「子供たちにネット使わせるには、Web アクセスのタイミングでもウィルスチェックしたほうがいいんだろうなぁ…。」と漠然と考えていたんですが、どう実現させるかというとこまでは至っていなかったので、コレは渡りに船とばかりに試してみた次第。

インストールは、コマンド一発!

インストールはそんなに難しいものではなくて、 Debian の場合( jessie 以降)であればコマンドラインから "aptitude install havp" 一発で関連パッケージまで含めてインストール完了。

root@vhost01:~# aptitude install havp
以下の新規パッケージがインストールされます:
clamav{a} clamav-base{a} clamav-freshclam{a} havp libclamav7{a}
更新: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
アーカイブの 2,100 kB を取得する必要があります。展開後に 4,666 kB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?]
取得: 1 http://debian-mirror.sakura.ne.jp/debian sid/main amd64 libclamav7 amd64 0.99.3~beta1+dfsg-4 [936 kB]
取得: 2 http://debian-mirror.sakura.ne.jp/debian stable/main amd64 havp amd64 0.92a-4+b2 [135 kB]
取得: 3 http://debian-mirror.sakura.ne.jp/debian sid/main amd64 clamav-base all 0.99.3~beta1+dfsg-4 [303 kB]
取得: 4 http://debian-mirror.sakura.ne.jp/debian sid/main amd64 clamav-freshclam amd64 0.99.3~beta1+dfsg-4 [362 kB]
取得: 5 http://debian-mirror.sakura.ne.jp/debian sid/main amd64 clamav amd64 0.99.3~beta1+dfsg-4 [364 kB]
2,100 kB を 0秒 秒で取得しました (3,778 kB/s)
パッケージを事前設定しています ...
以前に未選択のパッケージ libclamav7:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 381379 個のファイルとディレクトリがインストールされています。)
.../libclamav7_0.99.3~beta1+dfsg-4_amd64.deb を展開する準備をしています ...
libclamav7:amd64 (0.99.3~beta1+dfsg-4) を展開しています...
.../havp_0.92a-4+b2_amd64.deb を展開する準備をしています ...
havp (0.92a-4+b2) を展開しています...
以前に未選択のパッケージ clamav-base を選択しています。
.../clamav-base_0.99.3~beta1+dfsg-4_all.deb を展開する準備をしています ...
clamav-base (0.99.3~beta1+dfsg-4) を展開しています...
以前に未選択のパッケージ clamav-freshclam を選択しています。
.../clamav-freshclam_0.99.3~beta1+dfsg-4_amd64.deb を展開する準備をしています ...
clamav-freshclam (0.99.3~beta1+dfsg-4) を展開しています...
以前に未選択のパッケージ clamav を選択しています。
.../clamav_0.99.3~beta1+dfsg-4_amd64.deb を展開する準備をしています ...
clamav (0.99.3~beta1+dfsg-4) を展開しています...
clamav-base (0.99.3~beta1+dfsg-4) を設定しています ...
libclamav7:amd64 (0.99.3~beta1+dfsg-4) を設定しています ...
libc-bin (2.25-6) のトリガを処理しています ...
havp (0.92a-4+b2) を設定しています ...
グループ `havp' (グループ ID 138) を追加しています...
完了。
There is already /var/lib/havp/havp.loop, maybe from an earlier or custom installation, not building loopback-device
Job for havp.service failed because the control process exited with error code.
See "systemctl status havp.service" and "journalctl -xe" for details.
invoke-rc.d: initscript havp, action "start" failed.
● havp.service - LSB: HAVP virus-scanning HTTP proxy
Loaded: loaded (/etc/init.d/havp; generated; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2018-01-03 15:49:19 JST; 14ms ago
Docs: man:systemd-sysv-generator(8)
Process: 26029 ExecStart=/etc/init.d/havp start (code=exited, status=1/FAILURE)

1月 03 15:49:19 vhost01 systemd[1]: Starting LSB: HAVP virus-scanning HTTP proxy...
1月 03 15:49:19 vhost01 havp[26029]: Cleaning up /var/spool/havp... done
1月 03 15:49:19 vhost01 havp[26029]: Starting havp: Starting HAVP Version: 0.92
1月 03 15:49:19 vhost01 havp[26029]: LibClamAV Error: cli_loaddbdir(): No supported database files found in /var/lib/clamav
1月 03 15:49:19 vhost01 havp[26029]: One or more scanners failed to initialize!
1月 03 15:49:19 vhost01 havp[26029]: Check errorlog for errors.
1月 03 15:49:19 vhost01 havp[26029]: Exiting..
1月 03 15:49:19 vhost01 systemd[1]: havp.service: Control process exited, code=exited status=1
1月 03 15:49:19 vhost01 systemd[1]: havp.service: Failed with result 'exit-code'.
1月 03 15:49:19 vhost01 systemd[1]: Failed to start LSB: HAVP virus-scanning HTTP proxy.
E: Error starting service (could be due to port 8080 already in use), ignoring...
systemd (236-2) のトリガを処理しています ...
man-db (2.7.6.1-4) のトリガを処理しています ...
clamav-freshclam (0.99.3~beta1+dfsg-4) を設定しています ...
Created symlink /etc/systemd/system/multi-user.target.wants/clamav-freshclam.service → /lib/systemd/system/clamav-freshclam.service.
clamav (0.99.3~beta1+dfsg-4) を設定しています ...
systemd (236-2) のトリガを処理しています ...

と、インストール時に表示されるメッセージ、 havp のインストール後の起動のところで、エラーが出ている。

AppArmor に蹴躓く

11 月末ぐらいから、 bind9 のログが出力できないとか統計情報のファイルが作れないという状況になっていたのですが…。
ログに関しては syslog 経由で出すように設定変えて凌いだんですが、統計情報( rndc stats で出力されるやつ)が出力できないのが正常にならなくて、「 bind の設定いじってないのに、なんででなくなった?」と悩んでいたわけです。

で、今日。ふと思い立って出力ファイル名である named.stats をキーにして、/varlog/syslog に grep を実行してみたところ…。

Dec  6 10:20:14 nexus01 kernel: [927197.495080] audit: type=1400 audit(1512523214.458:3455): apparmor="DENIED" operation="open" profile="/usr/sbin/named" name="/var/log/bind9/named.stats" pid=13306 comm="named" requested_mask="ac" denied_mask="ac" fsuid=109 ouid=109
Dec 6 10:25:01 nexus01 kernel: [927484.822757] audit: type=1400 audit(1512523501.782:3456): apparmor="DENIED" operation="open" profile="/usr/sbin/named" name="/var/log/bind9/named.stats" pid=13306 comm="named" requested_mask="ac" denied_mask="ac" fsuid=109 ouid=109

apparmor って、コレかよ、原因は…。 orz

「何かの依存関係で、インストールされてたなぁ…」というのは、微かに記憶の片隅にあったのだけど、これが原因になっていたとは、予想だにせず。
パッケージのインストールログ( /var/log/aptitude )を漁ってみたら、確かにインストールしてるし、bind のログ出力周りがおかしくなったタイミングとインストールした日時が、ほぼ合致しているので、間違いなく AppArmor をインストールしたことの影響だったようです。

Aptitude 0.8.10: log report
Fri, Nov 24 2017 14:42:09 +0900

IMPORTANT: this log only lists intended actions; actions which fail
due to dpkg problems may not be completed.

Will install 8 packages, and remove 0 packages.
252 MB of disk space will be used
========================================
[HOLD, DEPENDENCIES] openssl:amd64 1.1.0f-5
[HOLD] libssl1.1:amd64 1.1.0f-3
[INSTALL] apparmor:amd64 2.11.1-3
[INSTALL] linux-compiler-gcc-7-x86:amd64 4.14-1~exp1
[INSTALL] linux-headers-4.14.0-trunk-amd64:amd64 4.14-1~exp1
[INSTALL] linux-headers-4.14.0-trunk-common:amd64 4.14-1~exp1
[INSTALL] linux-image-4.14.0-trunk-amd64:amd64 4.14-1~exp1
[INSTALL] linux-kbuild-4.14:amd64 4.14-1~exp1
[UPGRADE] libmariadbclient18:amd64 1:10.1.29-5 -> 1:10.1.29-6
[UPGRADE] mariadb-common:amd64 1:10.1.29-5 -> 1:10.1.29-6
========================================

Log complete.

===============================================================================

# bind9 側に何か変更があった?と思って調べてたんだけど、そちらは全部ハズレだったよ。

Rspamd の設定を細かくやってみる - 力技で正規表現フィルタリング

正規表現でのフィルタリング、「一応」出来るようになったので、メモとして残しておく。

modules.d ディレクトリの中を見ると、 SpamAssassin と連携するための spammassassin.conf や メールヘッダや本文中の文字列を正規表現で引っ掛けるための regexp.conf といったものがあるので、このあたりを使いこなせれば更に検知精度が上げられそうです。正規表現での検知は、実際には Rspamd デフォルトのものが有効化されているので、使われていないわけではないんですけど。

[From Rspamd の設定を細かくやってみる - Soukaku's HENA-CHOKO Blog]

但し、「正しい」方法ではないので、参考にしたいという方は、その点自己責任でお願いします。

本来の「正しい」設定方法

/etc/rspamd/local.d/regexp.conf というファイルを作って、そこにブロックしたいメールのヘッダ情報から、フィルタしたい条件を正規表現で記述します。

nexus01:/etc/rspamd# more local.d/regexp.conf
--
config['regexp']['RECEIVED_worldstream'] = {
re = 'Received=/ customer\\.worldstream\\.nl/i',
score = 2.5,
group = 'header'
}

--
config['regexp']['RECEIVED_93034net'] = {
re = 'Reveived=/\\.93034\\.net/i',
score = 2.5,
group ='header'
}

それが終わったら、rspamadm コマンド使って、フィルタしたい内容が認識されているところ確認して〜、と書きたいところなんですが、これが上手くいかない。
ドキュメント通りに設定書いてるのに、local.d/regexp.conf の記述内容が反映されない…。反映されなので、正しく記述できているのかもわからないという困った状況に陥ってしまいました。