_ いちばん変わるのは勤務体系がフレックスタイムになることだろう。
_ と思ってたら異動だった。事前の内示なし:-)。まあ、しばらくの間は今やってることから離れるわけにもいかんだろうし、今日驚くか先月驚くかの違いだけなので事前の通知なんてどうでもいいんだけど。
_ というわけで、メール屋を廃業して今月から Web 屋になることになりました。最近のかっちょええ Web サービスとかをやるわけじゃないけど。これまでもメールの話をするのに Postfix のことをよく書いてたけど、仕事で使ってたのはもっぱら Sendmail だったわけだし、本業が Web 屋になってもそのことをここに書くつもりはないから、この日記はこれまでと変わらん。
_ わーい、ちゃんと DK の verify が通るようになったよ。って、この程度のことは自分で気づけよな。> わし
_ DKIM-Signature で a=rsa-sha256(未知の暗号化形式)になってるときって、Authentication-Results: dkim=permerror になるのが正しいんじゃないのかしらん。ヘッダつかないんだけど。DKIM の最新ドラフトを追いかけてるわけじゃないから実際のところは知らんけど。ついでに、DKIM の verify だけでなく、まったく無関係のはずの DK の verify もすっとばされる。バグだろうな、きっと。
_ 由緒正しい awk には日付時刻を扱う機能がないんですよっ。 この問題の締め切りが今日なので、がんばってなんとかしてみようかと手をつけてみたけど、割り算して余りを取ってうるう年とうるう秒の計算をして、とかちまちまやってるうちにイライラしてきて衝動的に :q! して rm しました。こんなのやってられっか。うわーん。
_ ちなみに、GNU awk には strftime() があるのでふつーに時刻計算できます。うちの日記スクリプトは awk で書かれてますが、日付計算が必要なので GNU awk でないと動きません。あなごるサーバで使われてる mawk も本来は使えないんだけど、 こいつは使えるように拡張されてたり。その昔お世話になりました。
_ それはそうと、ほかの人の解答を見てて初めて知ったんだけど、タイムゾーンを hoge じゃなくて right/hoge と指定すると、時刻の表現がうるう秒を考慮したものにかわるんだね。/usr/share/zoneinfo/hoge がうるう秒考慮なしのロケール、/usr/share/zoneinfo/right/hoge がうるう秒なロケール。これは Linux だけなのかな? 少なくとも FreeBSD ではできない。そういう機能がもともとないのか、機能はあるのにロケールが用意されてないのかどっちなのかしらん。たぶん前者なんだと思うけど。
_ (4/4 追記)なんだよロケールって。関係ないだろ。単にそういうタイムゾーンが用意されてるかどうかだけ。
_ さらにあなごる。 join linesに m4 で参戦してる人がいるんですけど。ええええええ。わしは include() したときに `,' が含まれているとマクロの引数の対応がおかしくなってエラーになるという 問題をいまだに解決できずにいるんだよね。これを回避できさえすればひじょーに簡単なんだけどなー。どうやってるんだろう。
_ まだ方法はわからないけど、方法が存在することがわかっただけでもよかった。何日かすると解答が公開されるので、それを待って勉強しよう。
_ エレベーターの開くボタンは、ほぼ左。だよね。ふつーそうだよね。
_ ところが、開ボタンが右にあるエレベーターってのもあるんだよね。
_ うちの職場が入居してるビルのエレベーターは開閉や階数ボタンのパネルがドアの左右にあるんだけど、ボタン配置がドアの左右で対称になっている。つまりドアの右側にあるボタンは開が左にあるけど、左側は開ボタンがなぜか右にある。閉まりかけのところに乗りこもうとした人を待ってあげようと、とっさに開ボタンを押したつもりが閉ボタンを押してしまって無情な冷血人間になってしまったことが何度か。そんなつもりはなかったんですほんとなんです信じてください。
tsharkはより上位のレイヤもdisplay filterに書ける(capture filterはpcapだけど)。ただし、正規表現でfilterは掛けない。そういうのはsnortで頑張ってもらいましょう。正規表現でフィルタしたいなら ngrepも。_ たとえば、robots.txt を取りにきているロボットのリクエストヘッダを覗き見る。
結果はこんな感じで。# ngrep -q '^GET /robots.txt' dst port 80T 66.249.72.242:51990 -> 192.168.1.3:80 [AP] GET /robots.txt HTTP/1.1..Host: ya.maya.st..Connection: Keep-alive..Accept: text/plain,text/html..From: googlebot(at)googlebot.com..User-Agent: Mozill a/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)..Accept- Encoding: gzip.... T 72.30.177.79:57611 -> 192.168.1.3:80 [AP] GET /robots.txt HTTP/1.0..Host: ya.maya.st..Accept: */*..User-Agent: Mozill a/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slur p)..Accept-Encoding: gzip, x-gzip.... T 65.55.209.177:60223 -> 192.168.1.3:80 [AP] GET /robots.txt HTTP/1.0..Host: ya.maya.st..User-Agent: msnbot/1.0 (+http:/ /search.msn.com/msnbot.htm)..Accept: */*..From: msnbot(at)microsoft.com...._ いっぱいあるなー。
% ls {,/usr{,/local}}/bin/*grep /bin/pgrep /usr/bin/grep /usr/local/bin/msggrep /usr/bin/bzegrep /usr/bin/pgrep /usr/local/bin/ngrep /usr/bin/bzfgrep /usr/bin/zegrep /usr/local/bin/pcregrep /usr/bin/bzgrep /usr/bin/zfgrep /usr/local/bin/zipgrep /usr/bin/egrep /usr/bin/zgrep /usr/bin/fgrep /usr/local/bin/lgrep
_ きのうの ngrepだが、 pf のログを読めないことに気がついた。
_ pflog は pcap をちょっとだけ拡張してるので、それを知らないツールでコケるのはしかたない。とはいっても、pcap のレベルで修正されてるんだから、それを使うアプリの側はほんのちょっといじるだけでふつーに使えるはずだ。つーわけで、 ほんのちょっといじってみた。
_ もっとも、pf ではふつー keep state な TCP のログは取らないので、pflog で ngrep が使えてうれしい場面なんてめったにないと思うけど。
_ ちなみに wireshark(旧 ethereal)はとくにいじらなくても pflog に対応してるみたい。ソースを grep しただけで実際の動作は確認してないけど。
_ dkim-milter の a=rsa-sha256 の件を調査。draft-ietf-dkim-base-10.txt によると、verifier では rsa-sha1 と rsa-sha256 の実装が MUST、signer は rsa-sha256 の実装が MUST でこれを使うのが SHOULD になってる。えー、じゃあ rsa-sha256 がエラーになっちゃううちの dkim-milter は仕様を満たしてないじゃん。なんでー。
_ なんと、OpenSSL 0.9.7 は sha256 をサポートしていないらしい。なので、dkim-milter のコンパイルにこのバージョンの OpenSSL を使うと自動的に rsa-sha256 も使えなくなる。少なくとも FreeBSD では 4.11 から 6.2 までのどれを使っても base でインストールされる OpenSSL は 0.9.7 なので、別途 sha256 をサポートした 0.9.8 が必要というわけだ。7-CURRENT がどうなってるのかは知らん。
_ ちうわけで、うちの dkim-milter も rsa-sha256 で署名/検証ができるようになった。
_ つーか、本来は DKIM を正しく verify できないときに、関係ないはずの DK の verify まですっとばされる件を調べなきゃいかんのだけどな。
_ sl の原作者って歌代さんだったのか。知らなんだ。しかも、「1997年に書いた記事」に「10年ほど前に」として出てくるってことは、つまり20年も前に作られたということで……。
_ sl にはいろんな実装があるけど、わしが最初に見たものは、
たったこれだけのシェルスクリプトだった。sl.Z は位置を少しずつずらした SL のアスキーアートを ^L (改頁コード)でつなげたものを compress で圧縮したファイル。これを今実行しても一瞬で終わってしまって SL が駆け抜けていく様子なんかさっぱりわからないだろうけど、昔は端末の表示が遅かったからウェイトなんか考えずにただ表示するだけで十分 SL が走ったんだろうね。#!/bin/sh zcat /path/to/sl.Z
_ うちのところは県議選だけ。が、議席数と立候補者数が同じで無投票。なんもなし。選挙権もらってこんなの初めてだ。
_ あなごる join lines締め切り。 m4 のカンマの扱いに苦慮していた件をどうやって解決していたのかやっとわかる。 というわけで、m4 で解いたスゴい人の解答を 見てみると……。
_ ……orz
_ 入力のカンマが引数の区切りに扱われちゃうのならば、可変個の引数を取るマクロで shift しながら取りだしてやればいい。なんでこんな単純な方法に気づけなかったんだ。どうかしてる。
_ ただ、この方法では m4 の仕様上、カンマのうしろのスペース、改行が捨てられてしまうので、「a,b」と「a, b」の区別がつかない。この問題ではカンマのうしろはかならずスペース1個だったから決め打ちでいけたけど、一般の場合にこれでいいわけではない。やっぱプログラム言語じゃないただのマクロプロセッサの m4 では限界があるよ。
_ apache で何の工夫もないただのフォワードプロクシを作るだけの 記事が はてブで大人気。なんだかなぁ。マニュアルにひととおり目を通しておけば、こんなつまらないネタなんかブックマークする必要なんかないことはわかるはずなのに、やっぱりみんな読んでないんだなぁ。
_ Debian の新しいのが出たらしい。ということで、実験環境の coLinux に入ってる debian sarge を etch にアップグレードする。
_ えーと、これとこれとこれのデーモンを再起動するよ、いい? という確認におっけーと答えると、画面に表示されたデーモンだけじゃなくて、親環境の Windows ごと再起動しやがるんですが。どういうことですかいったい。2回やって同じところで2回。たぶん3回目を試しても同じところでコケるだろう。ゲスト OS でへんな操作したからって親環境の Windows がリブートしてしまったらダメじゃん。
_ うーん、困った。アップグレードが中途半端になっちゃったせいで、とりあえず動いてはいるもののあちこちに不整合が出ちゃってる。Windows ごと再起動されないよう apt を使わずに復旧するのはかなりめんどくさいぞ。あくまで実験環境であって大事なデータなんて入ってないけど、実験ができなくなった実験環境なんて意味がないし、実験できるところまで環境を整備するのもそれなりに手間だし、なにより実験室のせいで生活環境が勝手に再起動を食らうのは困る。実験環境だからといってバックアップもなんもせずいきなりやってしまったのはさすがに失敗だったか。
_ 実験環境がぶっこわれたので、アップグレードをあきらめて新規インストールして実験環境を移すことを考える。仮想 OS は物理的なディスクを持たないからこのへん気楽にできていいよね。
_ colinux 用の debian イメージってどこに落ちてたっけなー、と探してるうちにふと気がついた。……べつに Linux でなくてもいいんじゃね?
_ この実験環境を作ったころはフリーでまともに使える仮想 OS って coLinux しかなかったけど、今は VMWare も使える。だいたい、Linux なんていまどきどこにでも転がってるから、こんなもの手元になくたって困りゃしないし、OS に依存した実験なんてめったにしない。だったら急速に生息数を減らしていてレッドデータブック入りするのも近いのではないかと思われる Solaris を手元に置いておく方が重要だろ。
_ ということで、coLinux + Debian を捨てて VMWare + Solaris10 に移行することを決断。環境整備はめんどくさいけどな。仮想 OS が気楽でいいなんて考えてたのはもう忘れた。debian はあとでヒマなときに復旧させればいいや。
_ VMWare Player と Solaris10 をダウンロードしてきてインストール開始。圧縮された DVD イメージを展開するだけで3時間ぐらいかかり、OS 自体のインストールもかなり時間がかかる。つーわけで、今日はインストールだけで時間切れ。
_ Solaris をゼロからインストールしたのは3年ぶりぐらいかな。インストーラで「先に進む」が enter じゃなくて F2 なのは相変わらずだった。なんでそんな変なキーにバインドされてんだか。いったい何度押し間違えたことか。
_ vmware ははじめて使うし、まだインストーラしか動かしてないけど、colinux と比べるとすげー重いような。仮想化のレベルが vmware と colinux ではぜんぜん違うからやっぱりしかたないのかなぁ。
_ きのうインストールした Solaris10 x86 on vmware はパーティションの切り方が気に入らなかったので捨ててインストールしなおした。せっかく sol10 で zfs で遊べるのにディスクのサイズが 10GB じゃ足らんでしょ。20GB にした。もっとあってもいいけど親環境のディスクが足りなくなるので。
_ 今日はパッチをダウンロードできるようにユーザ登録してから smpatch update したところまで。最近は巨大な Recommended Patch や Maintenance Update をダウンロードせずに必要なものをひとつずつパッチ適用できるようになったのはいいけど、Solaris ってパッチ1個適用するのに数分かかるからなぁ。帰宅前に実行しておいて無事終了したか翌朝確認するのがセオリーってのは、幹線道路脇の農道をのんびり走ってるトラクターみたいな趣があるね。まあ、Solaris と戯れる以外にもやらなきゃいかんことはいっぱいあるので、この程度のペースでいいや。
_ にしても、vmware おーもーいー。起動前からそうだから Solaris が重いわけではない。デスクトップ環境を使う予定はないので、そういうのはぜんぶ止めておいたけど、そもそもの vmware 自体が重いからほとんど効果ない。あと、Windows の起動時に勝手にバックグラウンドで vmware がサービスとして起動してほしいんだけど、これどうやるんだろ。vmware player だと無理なのかな。server にするともっと重くなりそうだけどだいじょうぶだべか。
_ ぶっこわれた debian 環境のイメージファイルを別 PC にコピー。こっちにはこれまで使ってた coLinux 0.6.2 ではなく 0.7.1-prerelease をインストールして動かしてみたら、きのうのように Windows ごと再起動することもなく、問題の箇所は無事通過。
_ あとは何回かひっかかったけど、なんかてきとーにコマンドを叩いていたらなんとなく復旧したみたい。ほんとに完全に整合性が取れた状態に戻ったのかどうかは知らんけど。
_ で、復旧したらしいイメージファイルを元 PC に戻して起動してみたら、うん、問題なく動きそう。実験するには困らんようにはなったな。やっぱり coLinux の不具合だったのかなー。colinux 自体のアップデートをした方がいいんだろうなー。めんどくさい。
_ ファイルをコピーするだけで環境をあっちこっちに移せる仮想 OS はやっぱ楽だわ。solaris の方もインストール直後の何もいじっていない状態のイメージをバックアップしてあるので、次からは手を抜けるし。