2023年04月28日

【備忘録】rsyslogでリモートホストからのログを別ファイルに振り分ける

リモートホストから受けたログを、ローカルのログと混ざらないように別ファイルに保存したいことって、よくありますよね?
伝統的なsyslogだとファシリティ(facility)と深刻度(severity)に応じた振り分けしかできないので、ファシリティ(このような目的にはlocal0~local7がよく使われます)で区別するしかなかったんですが、Debianに標準インストールされているrsyslogだと送信元のホスト名やIPアドレスに応じて振り分けることもできるんです。
まあrsyslogのマニュアルを見れば書いてあることなんですが、少なくとも日本語の資料はあまり見当たらなかったので、誰かの役に立てばと思ってここに書いておきます。

ちなみにrsyslogの大元の設定ファイルは/etc/rsyslog.confですが、/etc/rsyslog.d/*.confはすべて読み込まれるようになっているので、ローカルな設定ファイルはここに適当な名前で新規に作成するのがいいでしょう。

方法1:property-based filtersを使う

例として、IPアドレスが正規表現「192.168.1.20[0-9]」にマッチするホストから受けたログを、/var/log/wlx212/<ファシリティ名>.logという名前のファイルに振り分けたいとします。
設定ファイルを編集して、まず、上記のファイル名を生成するテンプレートを作成します(ここではwlx212というテンプレート名にしています)。
$template wlx212,"/var/log/wlx212/%syslogfacility-text%.log"
次に、送信元のIPアドレスが正規表現にマッチしたら、上記テンプレートが生成する名前のファイルにログを書き込むフィルターを作成します。
:fromhost-ip, regex, "192.168.1.20[0-9]" ?wlx212
この2行を設定ファイルに書き込んだら、あとはrsyslogdを再起動して設定ファイルを読み込ませればOKです。
sudo systemctl restart rsyslogd
これだけ。簡単ですね!

方法2:Rainer scriptを使う

ホスト名が"rtx"から始まるホストから受けたログをすべて/var/log/rtx.logに保存し、深刻度warn以上のログを/var/log/rtx.warnに保存するには:
if $fromhost startswith "rtx" then {
action(type="omfile" file="/var/log/rtx.log")

if prifilt("*.warn") then {
action(type="omfile" file="/var/log/rtx.warn")
}
}


posted by ぽそこし at 22:40| Comment(0) | TrackBack(0) | 日記 | 更新情報をチェックする

2023年04月03日

【コントラクトブリッジ】フォールスカードにやられた!

先日のウィークリーで、ちょっと面白い手があったので報告します。
ハンドレコードのないチーム戦、確かボスバルでディーラーはEだったので10番ボードか26番ボードだったはず。
私はこんなハンドを持って、Nに座っていました。

K x
10 x x
x x x x x
x x x

ビッドは次のように進み、

NESW
1D 2D* P
2H P 4H! //
*:が5-5以上

なんと、3HCPしか持っていない私がディクレアラーになってしまいました。
オープニングリードはK。
こんなダミーが開きました。

A Q J 8 x
A K Q x x
x
Q x

Sは18HCPあるとはいえ、Qが浮いているので4Hはちょっとオーバービッド。
でもまあ許容範囲でしょう。3Hと言われても、私が4Hと言っただろうし。

とにかく、このコントラクトを作らなければいけません。とはいえも取れる見込みはないので、を全部取る必要があります。ある意味とてもシンプル。
Kを勝ったEは、次にAを取ります。このときWは2を出しました。ダブルトンぽい。
当然のことながら、Eは3トリック目にスモールを出します。
ここで私も考えました。Wはフォールスカードしているのかもしれない。でも本当にダブルトンだった場合の被害が大きすぎるので、トップラフ!
するとWからは、実は3枚持ってるんだよね、とが出てきました。
ああ、やはりフォールスカードだったか…。できるコントラクトを落としてしまった、とがっかりしながらトランプをA、Kと取ってみると、なんとEからJが落ちてくるではありませんか!
これでまた元気になった私は、トランプを3回で狩り切ってスペードに着手しましたが、Eからは1巡目に10が出てきて2巡目にはショウアウト。
5巡目の8がWの9に負けて、あえなくワンダウンとなってしまいました。
全体の手は(覚えている限りで)次の通り。

K x
10 x x
x x x x x
x x x
9 x x x x N

 W     +      E 

S
10
9 x x J x
A x K Q J x x
x x 2 A K J x x
A Q J 8 x
A K Q x x
x
Q x

心優しいパートナーは「スペードの分かれが悪いので、どのみちダウンするでしょう」と言ってくれたんですが、実はスモールラフした場合にはでき目があるんですね~。
スモールラフした場合、トランプを2巡だけ狩ってから、スペードをK、Aと取ってハンドで1回ラフする余裕が生まれるからです。(追記:ダミーに戻るエントリーがないので、正しいディフェンスをされるとやっぱりダウンだね)
トップラフした場合には、3巡目のトランプをハンドの10で勝たないといけないので、ラフする余裕がないんですね~。
そんなわけで、フォールスカードにしてやられたボードでした。
posted by ぽそこし at 22:06| Comment(0) | TrackBack(0) | コントラクトブリッジ | 更新情報をチェックする

2023年02月24日

【備忘録】Debian 11 (bullseye) でMailman 3に移行する

これまでメーリングリスト管理プログラムとしてMailman 2を使っていたのだが、Debian 11 (bullseye) ではなくなってしまった。
いちおうMailman 3が後継のパッケージなのだが、中身が全然違うしドキュメントが整備されていないので、移行作業にはかなり苦労した(今でも苦労している最中)。
誰かの役に立つかもしれないので、雑然とまとめておく。

1. まずMailman 3をインストールして動かすのが大変

$ sudo apt install mailman3-full

でインストールできるはずなのだが、私の場合なぜか設定スクリプトが走らなかったので明示的に実行する必要があった。
$ sudo dpkg-reconfigure mailman3
$ sudo dpkg-reconfigure mailman3-web
$ sudo dpkg-reconfigure python3-mailman-hyperkitty

設定の詳細については省略。たぶんググると出てくる。(無責任)

2. Webサーバーとしてnginxを使っている場合には設定を変更する必要あり

Mailman3ではメッセージのアーカイブもWebサーバーを経由して行われるので、その辺の設定ができていないとメッセージがアーカイブされないことになってしまう。ググると設定例がいくつか出てくるが、これがみなApacheの場合なんだな。私のようにnginxを使っている場合には、いくつか設定変更が必要。

(1) まず、Mailman3専用のホスト名を用意し、/etc/mailman3/nginx.confを適宜書き換える。Apacheと同じように、URLのサブディレクトリをMailman3に割り当てることもできるのかもしれないが、私の場合、いろいろ試してみてもうまくいかなかった。
(2) /etc/mailman3/mailman-hyperkitty.cfgで、base-urlを「http://localhost/mailman3/hyperkitty/」から「<Webサーバーの外部URL>/hyperkitty/」に変更する。
(3) /etc/mailman3/mailman-web.pyで、MAILMAN_ARCHIVER_FROMを「('127.0.0.1', '::1')」から「('<Webサーバーの外部IPv4アドレス>', '<Webサーバーの外部IPv6アドレス>')」に変更する。
(4) 下記を実行して、変更後の設定を読み込ませる。
$ sudo systemctl reload nginx
$ sudo systemctl force-reload mailman3-web

私の場合、(3) になかなか気が付かなくて苦労した。テスト用に作ったメーリングリストにテストメッセージを送り、/var/log/mailman3/web/mailman-web.logを見ると「hyperkitty.views.mailman Access to the archiving API endpoint was forbidden from IP XXXX:XXXX:XXXX:XXXX::XXXX, your MAILMAN_ARCHIVER_FROM setting may be misconfigured」というエラーが出ていたので気が付いた。

ちなみにアーカイブされなかったメッセージは/var/lib/mailman3/archives/hyperkitty/spool/にたまって行く。つまりここに何かあるときは、アーカイブがうまくできていないことを示している。

3. Mailman 2.1からMLを移行するには

https://docs.mailman3.org/en/latest/migration.htmlに書いてある通り。
簡単に言うと、次のようにすればよい。ここではML名を「test」、ドメイン名を「example.com」としている。Mailman3ではドメイン名込みでMLを指定する必要があることに注意。
$ sudo mailman-wrapper create test@example.com
$ sudo mailman-wrapper import21 test@example.com /var/lib/mailman/lists/test/config.pck
$ sudo /usr/share/mailman3-web/manage.py hyperkitty_import -l test@example.com /var/lib/mailman/archives/private/test.mbox/test.mbox


4. その他雑多な情報

Mailman3の場合、REST APIを使ってWeb上で設定することが想定されているようで、Mailman2のように便利なコマンドは用意されていない。MLの細かい(でもないんだけど)設定を行うには、Pythonの知識が必要になってくる。

ちなみに私の場合、なぜかREST APIが使えない(「AttributeError at /postorius/lists/test.example.com/ 'NoneType' object has no attribute 'preferred_address'」などとエラーになってしまう)ので、コマンドラインからやるしかない状態。

(1) MLを非公開にする

mailman-wrapper createで作成したMLは、デフォルトで公開になっている。非公開で作成するオプションは提供されていないみたい。
mailman-wrapper import21でMailman2のMLをインポートした場合には、ちゃんと公開/非公開の設定も引き継がれる。
ちなみに公開/非公開はMailman2ではpublic/privateと呼ばれていたが、Mailman3ではadvertised/unadvertisedと呼ばれている。ややこしい。
Mailman3でMLを非公開にするには、以下のようにすればよい。
$ sudo mailman-wrapper withlist -l test@example.com
>>> m.advertised = False
>>> commit()
>>> quit()


(2) アーカイブを非公開にする

なんかMLの非公開とは別に設定しないといけないみたい。
$ sudo mailman-wrapper withlist -l test@example.com
>>> m.archive_policy = ArchivePolicy.private
>>> commit()
>>> quit()


(3) 保留されたメッセージを配送/破棄する

配送するには:
$ sudo mailman-wrapper unshunt

破棄するには:
$ sudo mailman-wrapper unshunt --delete

posted by ぽそこし at 11:55| Comment(0) | TrackBack(0) | 備忘録 | 更新情報をチェックする

2023年02月12日

【備忘録】Debian 11 (bullseye) で systemctl が実行できない

具体的には、systemctl を実行しようとすると「Value is required after -K」というエラーになってしまう。

ちょっとググってみたら、こちらのブログ記事がヒットした。
このエラーメッセージは、実際には jless が吐いているらしい。
/etc/alternatives/pager が jless へのシンボリックリンクとなっているときに発生するようである。
「--no-pager」オプションを指定することで回避できるが、いちいち指定するのはめんどくさい。
export SYSTEMD_PAGER="/usr/bin/less"
とページャを明示的に設定してみたが、なぜか無視される。
export SYSTEMD_LESS="FRSXM"
として、(j)less に渡すオプションから "K" を削除して解決。
/etc/environment に書いておくのが良いだろう。
posted by ぽそこし at 21:42| Comment(0) | TrackBack(0) | 備忘録 | 更新情報をチェックする

2019年05月04日

【コントラクトブリッジ】令和初のウィークリー

今日は仙台ブリッジクラブで令和初のウィークリーがあり、せっかくだったので参加してきました。
参加者が17人だったので4チームのチーム戦となり、運よく1位になることができました。

スローインして4Hを作ったハンドがあったので紹介します。
私がNです。

Board #7, Both Vul, Dealer S

Q 9
A J 6 4
A K 8 4
K 7 2
K 8 4 2 N

 W     +      E 

S
J 10 7 3
Q 10 9 7 3
7 3 2 Q J 10
9 3 A J 10 5 4
A 6 5
K 8 5 2
9 6 5
Q 8 6

NESW
P P
1NT P 2C P
2H P 3H P
4H //

Sは4333のハンドなので、3Hではなく2NTリビッドを選択する人もいるでしょう。実際、4テーブル中1テーブルではNの3NT3メイクでした。

オープニングリードはQ。
ダミーを見ると、潜在的なルーザーが各スートに1個ずつありそうです。クラブは2つ負けるかもしれません。
オープニングリードをハンドのAで勝ち、スモールトランプをダミーのAで勝ち、ダミーからスモールトランプを出してハンドのJでフィネスすると、良いニュースと悪いニュースが明らかになります。
よいニュースは、フィネスが効いたこと。悪いニュースは、Eがショウアウトしたことです。

…続きは「続きを読む」をクリック!

続きを読む
posted by ぽそこし at 21:23| Comment(0) | コントラクトブリッジ | 更新情報をチェックする