"Rspamd 1.6.0 has been released" ということなので

あまり周りで使っているという話を聞かない、 Rspamd ですが、1.6 のリリースがアナウンスされておりました。

Today, we release the new major version 1.6.0 of Rspamd. The most significant change in this version is the addition of Milter protocol support in Rspamd.

[From Rspamd 1.6.0 has been released]

実際は、アナウンスよりも先に、パッケージがアップデートされたので気がついたんですけど。

で、 1.6 から、rmilter の利用が非推奨(使えないわけではないが)となり、その代わりに Rspamd Proxy を利用して、 MTA との milter 接続を行うように変更されています。

The introduction of this feature also finally obsoletes the Rmilter project in honor of the new integration method.

[From Rspamd 1.6.0 has been released]

ということで、設定を一部変更してみた。

Rspamd 側は、 /etc/rspamd/local.d/worker-proxy.inc を、次のように。

milter = yes;	# enable milter mode
timeout = 120s;

#upstream "local" {
# default = yes;
# self_scan = yes;
#}

upstream "scan" {
default = yes;
hosts = "round-robin:127.0.0.1:11333:10";
# compression = yes;
}

この場合だと、ローカルで稼働する Rspamd でスキャンするようになってます。 "hosts" に Rspamd の稼働するサーバを複数羅列すると負荷分散が出来るようですが、自分のことはそこまでは必要ないので、その設定はしてないです。
で、 Rspamd 自身を再起動して、正しく起動できれば、OK。

rspamd の Web UIの URLを 書き換える

さて、前回の落穂拾いです。

ところが、実際 Apache に対して設定してみたのだけど 500 Internel Server Error が出て上手く行かなかったので、結局 rspamd 側の設定でポート開放して、 iptables でアクセス元を絞る形に。

[From rspamd の Web GUI にアクセスしてみる - Soukaku's HENA-CHOKO Blog]

rspamd の Web UI の書き換え、 FAQ 通りに設定したのに上手く行かなかったといういうのは、前回書いた通り。

/var/log/apache2/error.log を眺めると、

[Thu Apr 27 16:18:59.762601 2017] [proxy:warn] [pid 14798] [client xxx.xxx.xxx.xxx:55948] AH01144: No protocol handler was valid for the URL /rspamd/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

と出力されているので、改めてその内容でクグってみたところ、

こんなエラーが出た.Pを指定したのにapacheにproxyに関するモジュールが入っていなかったのが原因の様だった.proxy,proxy_httpをロードするようにしたら解決した.

[From mod_rewriteによるURLの書きかえ - yuu_nkjm blog(2014-04-13)]

と書かれているサイトがあったので、早速 mod_proxy 関連のモジュールを有効にしてみることに。

rspamd の Web GUI にアクセスしてみる

rspamd をアップデートしたことで、使えるようなった機能があるので、いろいろと試してみよう

アップデートだけで結構な分量になってしまったので、フィルタについては別エントリーにて。バージョン上がったことで追加された機能もあるようなので、そのあたりの話もおいおい書いてきたいですね〜。

[From rspamd と rmilter をアップデート - Soukaku's HENA-CHOKO Blog]

ということで、まずは Web GUI から

Web GUI を有効にしてみる

と言っても、実際のところデフォルトの設定の状態でも、Web GUI は待受ポート 11334 で起動していて、下のような形で待ち受けしています。ただ、そのままでは localhost からの接続要求しか受け付けてくれないので、外部からも見れるように設定を変える必要があるというわけです。

root@vps2:~# lsof -i:11334
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rspamd 13943 root 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13943 root 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13945 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13945 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13946 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13946 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13948 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13948 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13949 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13949 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)

手っ取り早いのは、 rspamd 自身が待ち受けしている 11334/tcp を localhost 以外からアクセスできるよう設定することなんだけど、それはそれで芸がないし、無制限にアクセスを許可するのもよろしくないので、rspam の FAQ の中にある WebUI questions の部分に記述されている httpd からリダイレクトさせる方法で。

ところが、実際 Apache に対して設定してみたのだけど 500 Internel Server Error が出て上手く行かなかったので、結局 rspamd 側の設定でポート開放して、 iptables でアクセス元を絞る形に。

rspamd と rmilter をアップデート

ここ 2 年半ぐらい、rspamd を使い続けているサーバ、動作上特に不満があるわけでもなかったのだけど、

以前、インストールメモをエントリーとしてあげていた、 rspamdrmilter の組み合わせ、なかなか調子良く動作してくれている。

[From rspamd + rmiter の組み合わせに、ClamAV を連携させてみた - Soukaku's HENA-CHOKO Blog]

2週間ほど前から、そのサーバが受信・配送したメールに Spam がチラホラ紛れ込んでくるようになったので、「こりゃ自前でフィルタ書かんと駄目かな~」と思いつつ、公式サイトをチェックしてしてみたら…。

Rspamd is also available in some versions of Debian and Ubuntu. However, we are looking for an active maintainer for rspamd in these ‘official’ repos, as now rspamd is terribly outdated there.

Please DO NOT use those packages, as they are no longer supported.

[From Downloads]

「パッケージ、アップデートされねぇなぁ、 sid なのに…」とは感じてたんですけどね、「メンテナ探してるんだけど、 Debian/Ubuntu の公式サイトで配布してるのは古いんで使わないでね。」という状況だったはつゆ知らず…。

ということでフィルタを書く前に、公式サイトに書いてある手順を元に、最新バージョンの rspamd / rmilter にアップデートしてみた。

ということで、以下作業手順とログ

まず、現時点で、インストール済みのバージョンは、以下の通り。

root@vps2:~# dpkg -l rspamd rmilter
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name               Version        Architecture   Description
+++-==================-==============-==============-=========================================
hi  rmilter            1.6.3          amd64          Another sendmail milter for different mai
hi  rspamd             0.9.9+b1       amd64          Rapid spam filtering system

公式サイトで見ると、 rspamd は 1.4.4 、rmilter は 1.10 が最新のようなので、随分とバージョンが上がってますね…。

【メモ】VyOSのパッケージレポジトリ、引っ越した?

VyOS のパッケージリポジトリ、移動したのか、以前設定したものでは、パッケージのアップデートチェックに失敗していたので、移動した先を調べて設定し直した。ざっとチェックしたところでは、移動した云々に関するアナウンスは見つけられてないんだけど、なんか見落としてるのかな…。

以下、その差分。

@@ -275,9 +275,9 @@
         auto-sync 7
         repository community {
             components main
-            distribution helium
+            distribution squeeze
             password ""
-            url http://packages.vyos.net/vyos
+            url http://dev.packages.vyos.net/debian/helium
             username ""
         }
         repository squeeze-main {

#かと言って、 VyOS 1.1.7 を構成するパッケージが、個々にアップデートされている様子もなかったりしたわけだが…。

PIXEL for PC and Mac を HDD からブートさせてみた

PIXEL for PC and Mac を動かしてみました。
そもそもRaspbian 自体が Debian ベースなんで、x86 対応は技術的には難しことではなかったわけですから、 PIXEL for PC and Mac の登場はある意味自然な流れなのかな、という感じ。 Linux のディストリビューションの一つとしてみると、初学者向けのプログラミング学習に重点を置いたもの、という見方もできるかな、と。

同団体創設者のエベン・アプトンCEOは、PIXELを使ってもらうためにRaspberry Piを買ってもらわなくても、既に手元にあるx86マシンにインストールしてもらえばいいと思いつき、3カ月かけてx86版を開発したと語る。

[From Raspberry Piの「PIXEL」が旧型PCやMacで稼働可能に - ITmedia ニュース]

And bringing PIXEL to the PC and Mac keeps us honest. We don’t just want to create the best desktop environment for the Raspberry Pi: we want to create the best desktop environment, period. We know we’re not there yet, but by running PIXEL alongside Windows, Mac OS, and the established desktop GNU/Linux distros, we can more easily see where our weak points are, and work to fix them.

[From PIXEL for PC and Mac - Raspberry Pi]

累計出荷数が 1,000 万台越えたとはいえ、買わないと使うことの出来ない Raspberry Pi と同等なデスクトップ環境を、 PC でも気軽に試せるようになったというのは、良い話ではないかと思います。利用者が増えれば PIXEL の改良に役立つフィードバックが得られやすくなりますし、いわゆる「パソコン」としての利用を考えれば、 Raspberry Pi よりも PC プラットフォームの方がパフォーマンス的には優位性ありますしね。

Zabbix のダッシュボード代わりに grafana を使えるようにしてみる(その2)

ということで、前回からの続きです。

"Installed Apps" のところに、おなじみのアイコンと Zabbix と表示されていれば、プラグインのインストールも無事に完了しています。

[From Zabbix のダッシュボード代わりに grafana を使えるようにしてみる(その1) - Soukaku's HENA-CHOKO Blog]

とりあえず、インストールして Zabbix プラグインまでのインストールまで完了した状態になったわけですが、ここからもう少し設定をいじっていきます。

バックエンドのデータベースを MariaDB に変更

インストールした素のままだと、バックエンドに使っているデータベースは sqlite3 が使われるようになっているのですが、ここを MariaDB (or MySQL) に変更してみます。もちろん、必須ではないですけどね。

まず、 MariaDB に grafana 用の grafana というデータベースを作成。そこに、 session という名前のテーブルをひとつだけ作成します。

soukaku@vpsdb:~$ mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 731303
Server version: 10.0.28-MariaDB-2 Debian unstable

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database grafana character set utf8; Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> grant all privileges on grafana.* to grafana identified by '**********'; Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> use grafana Database changed MariaDB [grafana]> create table `session` ( `key` char(16) not null, `data` blob, `expiry` int(11) unsigned not null, primary key (`key`) ) ENGINE=MyISAM default charset=utf8; Query OK, 0 rows affected (0.01 sec)
MariaDB [grafana]> show tables; +-------------------+ | Tables_in_grafana | +-------------------+ | session | +-------------------+ 1 row in set (0.01 sec)
MariaDB [grafana]> quit Bye

session テーブルを作る必要がある点は、ドキュメントに記載されてますので、それも参考に。データベースへのアクセス権の設定は、各自調べてください。
今回のうちの環境では、grafanaが稼働するサーバと、DB サーバを別にしているので、そのあたりにも注意。

Zabbix のダッシュボード代わりに grafana を使えるようにしてみる(その1)

Zabbix に関して言えば、このところずっと開発版を追っかけているわけですけど、ダッシュボードでグラフを表示させた後、グラフの自動再描画がかかっても、ずっと更新されずにいる、という状況が起きています。DB を MySQL から MariaDB に変えたタイミングぐらいから、のような気もするんですが、いまいち原因が判らずに困っているわけですが…。

それとは別に、 grafana というダッシュボードを統合できるツールがあるということで、コレを機会にちょっと使ってみようか思いまして、インストールしてみた次第。

kibana等でも使用されているOSSのダッシュボードツールです。zabbixだけでなく、ElasticsearchやGraphite、AWS CloudWatchなど複数のデータソースのものを可視化することができます。ライブデモもあるので、実際どういうものか気になったらまずは見てみてください。

[From grafanaを使用してzabbixのモダンなダッシュボードを簡単作成! - Catcher in the tech]

複数の Zabbix サーバのコンソールを統合できるようなので、そのあたりにも興味があったりしますし。

さくっとインストール

まず、 grafana 関連のパッケージがどれだけあるのか、チェック。

root@vps2:~# aptitude search grafana
p   grafana                                 - feature rich metrics dashboard and graph editor
p   grafana-data                            - feature rich metrics dashboard and graph editor -
p   grafana-zabbix                          - Zabbix datasource for Grafana

結果からみれば、 grafana-zabbix を指定してインストールすれば、依存関係の解消が行われるので、念のためシミュレーションモードで、どんなパッケージがインストールされるのかを確認。

root@vps2:~# aptitude -s install grafana-zabbix
以下の新規パッケージがインストールされます:
  adwaita-icon-theme{a} at-spi2-core{a} dconf-gsettings-backend{a} dconf-service{a}
  fonts-font-awesome{a} glib-networking{a} glib-networking-common{a}
  glib-networking-services{a} golang-1.7-go{a} golang-1.7-src{a} golang-go{a} golang-src{a}
  grafana{a} grafana-data{a} grafana-zabbix gsettings-desktop-schemas{a}
  gstreamer1.0-plugins-base{a} libatk-bridge2.0-0{a} libatspi2.0-0{a} libcairo-gobject2{a}
  libcdparanoia0{a} libcolord2{a} libdconf1{a} libepoxy0{a} libevdev2{a} libglew2.0{a}
  libgstreamer-plugins-base1.0-0{a} libgstreamer1.0-0{a} libgtk-3-0{a} libgtk-3-bin{a}
  libgtk-3-common{a} libgudev-1.0-0{a} libinput-bin{a} libinput10{a}
  libjs-jquery-metadata{a} libjs-jquery-tablesorter{a} libjs-twitter-bootstrap{a}
  libjson-glib-1.0-0{a} libjson-glib-1.0-common{a} libmtdev1{a} libproxy1v5{a}
  libqt5core5a{a} libqt5dbus5{a} libqt5gui5{a} libqt5network5{a} libqt5opengl5{a}
  libqt5printsupport5{a} libqt5qml5{a} libqt5quick5{a} libqt5sql5{a} libqt5sql5-sqlite{a}
  libqt5svg5{a} libqt5webkit5{a} libqt5widgets5{a} librest-0.7-0{a} libsoup-gnome2.4-1{a}
  libsoup2.4-1{a} libvisual-0.4-0{a} libwacom-bin{a} libwacom-common{a} libwacom2{a}
  libwayland-cursor0{a} libxcb-icccm4{a} libxcb-image0{a} libxcb-keysyms1{a}
  libxcb-render-util0{a} libxcb-util0{a} libxcb-xinerama0{a} libxcb-xkb1{a}
  libxkbcommon-x11-0{a} libxkbcommon0{a} mesa-utils{a} phantomjs{a}
  qt5-gtk-platformtheme{a} qttranslations5-l10n{a}
更新: 0 個、新規インストール: 75 個、削除: 0 個、保留: 96 個。
アーカイブの 79.5 MB を取得する必要があります。展開後に 346 MB のディスク領域が新たに消費されます。

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

今回、grafana のインストールを試みるサーバでは 75個のパッケージを追加することになるようですね。
あとは、シミュレーションモードを外して、"aptitude install grafana-zabbix" でインストール。

インストールが完了すると、grafana が自動的に起動、3000/tcp に web ブラウザでアクセスして、ログイン画面が表示されれば、まずは OK 。

Movable Type 6 の挙動がおかしかった原因が判明

正常になった、と書いてはいたんですけど、実際のところ管理画面でエントリーを修正した後の保存のところでエラーがで続けていた Movable Type 6 ですが、やっと原因がわかりましたよ。

正常に動作しているの確認してから、 GoogleAnalytics プラグインと Zenback プラグインを戻してみたのですが、やはりエラーが出てしまうので、この二つが問題だったようです。

[From 結局、GoogleAnalyticsプラグインが悪さしていたようで - Soukaku's HENA-CHOKO Blog]

GoogleAnalytics プラグインが原因ではなくて、 PostTweet というプラグインの中に含まれていた Perl モジュールが引き起こしていた問題だった模様。
Twitter のサービスが始まった後に暫くしてから、ブログの記事更新と同時に Twitter につぶやいてくれるということで入れておいたプラグインだったんですけどね…。

PostTweet をバッサリと plugins ディレクトリから削除したら、アッサリ問題解消してしまいました。
Movable Type はちまちまとバージョンアップしてましたけど、自分で入れたプラグインを新しくしたり整理するのはサボっていたんで、そのツケが回ってきていた、ということなんだと思います。

とりあえず、問題なくなくなったようなので、一安心といったところ。

ansible のお試しがてら、 Raspberry に Python MPI 環境を作ってみる

サーバを同一用途で複数台用意してある環境って、仕事関係ではフツーにある環境なわけですが、それらの設定変更となると、同じ手順を台数分だけ繰り返し。なるべく作業者のレベルに左右されないような手順を用意したとしても、稀に手順ミスってトラブルなんてことも起きちゃうわけですよ。
作業者しても、出来る限り楽したいですし、定型化可能な作業だったら、コマンド一発で対象全台に設定適用したり、必要なファイルを配布したり出来れば、余計な手順やミス発生のリスクも減らせて、万々歳。

というわけで、オープンソース界隈でも「構成管理ツール」と言われるものが、いくつか開発されているんですが、その中でも ansible が、最近はお薦めらしので、ちょっといじってみようかと思った次第。

Ansible seamlessly unites workflow orchestration with configuration management, provisioning, and application deployment in one easy-to-use and deploy platform.

[From Ansible Use Cases]

Ansible(アンシブル)は、レッドハットが開発するオープンソースの構成管理ツールである。構成管理に加え、オーケストレーションやソフトウェアデプロイメントの機能を持つ。

[From Ansible (ソフトウェア) - Wikipedia]

同じようなツールだと、 Chef や Puppet と言うものもあるようですが、

  • エージェントレスで、管理したい側へは ssh 接続出来れば良い

と、利用するまでの敷居が低い、というのもお薦めのポイントになっているようです。

とりあえず、ラズパイ Cluster (モドキ)を構成してみる準備

まずは構成

今のところ、Raspberry Pi3 は1台しかないので、それを管理対象に。それと別に管理サーバとして Debian sid を仮想マシンで準備して、ここに ansible をインストール、という非常にミニマムな構成です。

ansibleのテスト環境

図にも書いてある通り、ホントは何台も並べて、クラスタリングしたいんですけどね…。

これに関してはどっちかというと、親である自分のほうが複数台並べて Rasp Pi クラスタ組んでみたいという気持ちのほうが大きかったりしますけど、息子もプログラミング自体には興味があるようなので、作ったクラスタで一緒に遊ぶってのも出来るなぁ、とかとか。

[From 子供に PC を渡そうと思ってるんですけどね - Soukaku's HENA-CHOKO Blog]

ま、 ansible に慣れることが目的なので、このまま進めます。