2010/05/24 (月)

2010-05-24:tircd+plum

twitter と IRC との接続に tircd.pl を使っているが、

  • 同時接続がどうやら1
  • 不意の接続断があったときに、tircd.pl 側になにか残るのか、しばらく再接続できない

というのがあったので、tircd.pl 実行のサーバ上に plum も専用に立ててみた。
これで複数クライアントからの接続もできるようになり、満足。

comment

2010/05/21 (金)

2010-05-21:熱でマシンダウン

仕事場のデスクの PC がいきなり落ちる。
本体の電源ボタンを押すと BIOS 起動画面が出るが、そこで

The CPU was previously shutdown due to a thermal event (overheating).

しくしくしくしく。。。

とりあえず筐体ごと棚から出し、屋外でフタ開けてエアダスターでほこりを飛ばす。
再度電源を入れたら、無事動いてくれた。ほっ。。。

comment

2010/05/07 (金)

2010-05-07:tircdを試してみる

そろそろまじめに(?) twitter を使ってみようということで、IRC gateway を入れてみた。
IRC サーバとしてデーモン起動して、ユーザーは IRC クライアントでつなぐと、みんなのつぶやきが IRC のふつうの発言っぽく表示され、自分の発言は twitter に自分のつぶやきとして登録される、というもの。

自分が試したのは tircd。http://code.google.com/p/tircd/

サーバ上に CPAN から必要なものを入れた上で、設定ファイル編集して、tircd.pl を実行すればよい。わりと簡単。

$ sudo cpan -i POE POE::Filter::IRCD Net::Twitter::Lite
$ tar xvzf tircd_v0.10.tgz
$ cd tircd/
$ cp tircd.cfg.example ~/.tircd
$ vi ~/.tircd
$ grep -v '^#' ../.tircd | grep .
address 127.0.0.1
port 6664
use_ssl 0
https_ca_dir
https_ca_file
storage_path /tmp/tircd
logtype file
logfile tircd.log
debug 0
update_timeline 180
update_directs 180
timeline_count 20
long_messages ignore
min_length 20
join_silent 0
filter_self 1
shorten_urls 1
convert_irc_replies 0
$ ./tircd.pl &

IRC クライアント上で /invite <USERNAME> すると、twitter 上の USERNAME の人をフォローするようになったりする。
なかなか面白いアイディアね。

comment

2010/04/01 (木)

2010-04-01:新年度最初のムキー

年度替わりのタイミングでシステムを入れ替える、というお客さんがいて、うちのシステムとの連動もしているので、お客さんのシステムの切り替わりと同時にうちのシステムもアップデート。
なので、現地では午前1時からお客さんの切替作業。私は仕事場から遠隔で切り替えるよ、ということでその時間より前から待機。

。。。しかし待てども待てども連絡が来ない。
おーい、なにかトラブってるのかーーー?

で、ようやく連絡が来たのは4時50分でした。
やれやれです。
修羅場で大変だったのは同じエンジニアとして同情はする。
でもねぇ、早めに一報くらいあってもいいと思いません?

# ちなみにこっちの切替は10数分でさくっと終了。はっはっは。。。

comment

2010/02/12 (金)

2010-02-12:ふつかめの freenode

昨日の続き。
クライアント側の問題だろうか、と思って Limechat をインストールしてみた。

そしたら、さっくりと /msg nickserv register bakaaho naishonaisho@gmail.com に成功。
うーん、cotton がコマンド発行の際になにか余計なものをつけたりしてる?
パケットキャプチャとかする元気もないので、調べたりはしませんが。

register に成功すると、登録のアドレス宛にメールが届く。
そこに「/msg NickServ VERIFY REGISTER waaaa XXXXXXX」と入力しなさい書かれていたので、続けて Limechat から入力。
無事に

10:00 (NickServ) waaaa has now been verified.
10:00 (NickServ) Thank you for verifying your e-mail address! You have taken steps in ensuring that your registrations are not exploited.

と、登録が完了したよメッセージが出た。わーい。

あと、freenode について書かれたページ見てた中で「/msg nickserv set hidemail on」しなさいというのがあったんだけど、
やってみたら

10:07 (NickServ) The HIDEMAIL flag is already set for account waaaa.

だった。デフォルトでメアド隠すようになっているのかな。

comment

2010/02/11 (木)

2010-02-11:はじめての freenode

freenode をはじめてみようと思い立った。
最初なので、bot は使わず、クライアントの cotton から直接接続。
サーバに chat.freenode.net を指定し、ポート番号は 6666。
とりあえずつながりはした。

freenode についての web をいくつか見ると、nick を登録しなさいとある。
曰く「/msg nickserv register <password> <e-mail>と打ちなさいということらしい。
しかし、実際にやってみると、「Error(421) : msg :Unknown command」と言われる。おーい。。。

ふと気づいて「/help」と打ってみたら、出てきたコマンドリストに msg はない。が、privmsg があったので、これを使う。
「/privmsg nickserv register bakaaho naishonaisho@gmail.com」

しかし、またしても新しいエラー。

14:06 waaaa > REGISTER bakaaho naishonaisho@gmail.com
14:06 NickServ > Insufficient parameters for REGISTER.
14:06 NickServ > Syntax: REGISTER <password> <email>

: 何 :    /:|::’,:ト、::::::ヽ、:.\:.:.:.\:.:.ヽ:.:.:\.:.:.:.:.:::.:.:.:.:::.::::_;:-‘´   : : :
: が :   //:/:::|::’,|::’、:::::::::\:.:\.:.:.ヽ:.:.:\:.:..\::::::::::::\、::::\    : : :
: 何 :  /!::|::l::::/|:::l:ヽ:\::ヽ:.:\:.:\.:::ヽ:.:.:ヽ:.:.:.:\::::::::::::\ ̄   : : :
: だ :   |/l::|::|::|:ト、:::::::::、、:ヽ、:.:.:.:::::::::::::::ヽ::::.:ヽ:.:.:.:.\:.:.:.ヽ:::\.   : : :
: か :   |::|::/l::|::|r‐ヽ:::::ヽ(ヽー,―\::::::、::::::::::ヽ::.:.::::::.:::::::ヾ. ̄   : : :
:    :   }//l::|:::|{(:::)ヾ、:::ヽ \!(:::) ヽ,:::ヽ:::::::::::::::::::::::::::::::::::ヾ、   : : :
: わ :.  |/l::|::|:::|ヽ==”” \:ヽ、ヽ=='” |:::::::::::::::::::::::::::::::::::ヽ、::::\
  か     / ’,|::|:::|   /   `゛       |!::::::::::::::::::::::::::::ト、::ト、_` ゛`
  ら      l::!::::ト、  ’、 _         ||::::::::::::::::::::::::ト:ヽヾ| | ̄ ̄ ̄`ヽ、
  な     r'”´||’,::::’,                 |:::::/l:::::|\:::ト、ヾ | |     / / \
  い   /   ll ’,::’, 、 ーこニ=-       /!::/ ヽ:::|  ヾ、  ノ ノ  /  ,イ   ヽ、

なお、上ではメールアドレスの@を全角で書いてますが、実際には半角で入力してます。
なんかもう、よく分からないので、登録は放置。

comment

2009/10/08 (木)

2009-10-08:バッテリーあげ

帰宅しようと車のドアを開けると、ルームランプがつかない。
イヤな予感。。。
キーを差し込み、まわすも、反応しない我が愛車。

えーん、バッテリーあげちゃったよーーー

どっかランプつけっぱなしだったか。
トランクからブースターケーブル出して、同僚に車を出してもらい、エンジン起動。仲間のいるところで助かった。
エンストかまさないように、注意深く、かつ時間稼ぎに遠回りしながら帰る。

comment

2009/10/05 (月)

2009-10-05:サーバルームのケーブル

わたしはケーブル類がこんがらがってスパゲッティになっているのは大キライだーーー。
というわけで、建物自体が停電になるのを機に、ケーブルの切った張った大会を敢行。

サーバラックの各サーバには、基本的に2本ずつのLANケーブルが出ている。
それぞれ別のセグメントにぶら下がっているんだけど、後からのつけ足しにつけ足しの歴史のようで、見るも無残な状況に。
それに、サーバの電源が冗長化されているが、電源をとってるコンセントの系統が一緒だったりしてて、ここいらも作業対象。

停電なので、憂いもなく全ケーブルをいったん外せるのがいいね。
この手のスパゲッティの場合、「無駄に長いケーブルが使われている」のもガンだったりするので、外したケーブルはまずは長さごとに仕分け。電源ケーブルも同様。

グループ化できるケーブルたちはチューブでまとめるなど、格闘すること3時間で、キレイスッキリな状況になった。
さて、次にスパゲッティになるまで、どれくらいの年月もつかしら。

comment

2009/10/02 (金)

2009-10-02:再起動なしのホスト名変更

cron とかで送られてくるメールの送信元ホスト名を変更したい、対象は現在進行形でサービス中のサーバなので再起動はなしにしたい、さてどうしよう、という話題。
答えを見つけるまでに2時間くらい試行錯誤してしまった。
ホスト名なんてそうは変えないものだし、再起動ヤダというわがままも少ないのか、ググっても同様事例を見つけられなかったので、メモを残しておくことにした次第。

相手は CentOS 5.3。
RedHat 系なので、/etc/sysconfig/network ファイルの HOSTNAME を書き変えて、sudo /etc/init.d/network restart じゃないの? と思ったら、そう一筋縄にはいかない。
答えは

$ sudo su -
# echo "newhostname" > /proc/sys/kernel/hostname
# /etc/init.d/sendmail restart

だった。
この /proc に直接書き込んでしまう、というのに辿りつくまで時間がかかってしまったよ。

しかし、hostname “newhostname” でのホスト名変更では、sendmail 再起動しても送信元ホスト名が変わってくれないのだなぁ。なんでかは謎。

ちなみに、今日知ったびっくり事実。

/etc/init.d/network はホスト名を変更してくれない

すっかり勘違いしていた。
何度もスクリプトを読み返したんだけど、hostname 実行するところないのね。/etc/sysconfig/network を読みこんではいるが、NETWORKING の設定ろ見るだけのようだ。
これって以前から変わった動作? それとも以前からこうだった?

サーバ起動時の /etc/rc.sysinit の中では、/etc/sysconfig/network 内の HOSTNAME を hostname コマンドで実行しているけど、起動時動作のホスト名設定はここだけのよう。

ちょっと調べるのに時間かかってしまったけど、サーバの再起動せずに(できれば /etc/init.d/network restart もせずに)ホスト名変更をさせたかったので、いい答えを見つけることができてよかったよかった。

comment

2009/09/29 (火)

2009-09-29:postfix+bsfilter で spam 排除

ユーザーサイド(?)で procmail+bsfilter での spam よけを自分自身のアカウントではやっていたんだけど、最近、同じサーバの fml でやってる ML 宛に支那から spam が定期的に来てうざいので、サーバサイド(言い方ただしいんだろか)で撥ねることにした。

ロジックは
  postfix がメールを pipe で bsfilter に渡す
  → bsfilter が X-Spam-Flag: {Yes|No} をつけて postfix に投げる
  → postfix が header_checks でフラグを見て通しか廃棄かする
という形。

サーバは debian lenny つかっている。
bsfilter は自分はすでに入れていたのだけど、まだの人(と将来のサーバ再セットアップする私)向けにメモを整備。
まずは bsfilter 自体の環境作り。

% sudo groupadd -g 115 bsfilter
% sudo useradd -u 115 -g bsfilter bsfilter
% sudo mkdir /var/lib/bsfilter
% sudo chown -R bsfilter.bsfilter /var/lib/bsfilter
% sudo vipw
% grep bsfilter /etc/passwd
bsfilter:x:115:115::/var/lib/bsfilter:/bin/false
% sudo -u bsfilter vi /var/lib/bsfilter/bsfilter.conf
% cat /var/lib/bsfilter/bsfilter.conf
homedir /var/lib/bsfilter
jtokenizer kakasi
pipe
insert-flag
insert-probability

postfix 用のフィルタは以下。

% sudo -u bsfilter vi /var/lib/bsfilter/postfix_bsfilter.sh
% cat /var/lib/bsfilter/postfix_bsfilter.sh
#!/bin/sh
HOME="/var/lib/bsfilter"
FILTER="/usr/bin/bsfilter"
CONF="/var/lib/bsfilter/bsfilter.conf"
SENDMAIL="/usr/sbin/sendmail -i"
cat | $FILTER --config-file $CONF --auto-update | $SENDMAIL "$@"
exit $?
% sudo chmod +x /var/lib/bsfilter/postfix_bsfilter.sh

続けて、postfix が bsfilter へパイプする設定。master.cf を編集する。
変更部分だけ抜粋。

% sudo vi /etc/postfix/master.cf
% tail -n5 /etc/postfix/master.cf
smtp      inet  n       -       -       -       -       smtpd -o content_filter=filter:dummy
# anti spam filter
filter    unix  -       n       n       -       -       pipe
  flags=Rq user=bsfilter argv=/var/lib/bsfilter/postfix_bsfilter.sh -f ${sender} -- ${recipient}

最後に、ヘッダを見てメールを撥ねる postfix の header_checks の設定。

% sudo vi /etc/postfix/main.cf
% tail -n1 /etc/postfix/main.cf
header_check = regexp:/etc/postfix/header_checks

% sudo vi /etc/postfix/header_checks
% cat /etc/postfix/header_checks
/^X-Spam-Flag: Yes/ REJECT sorry

header_checks ファイルの REJECT のところ、最初は WARN にして様子を見るのが吉。WARN はログに残したうえで、撥ねずに通す設定。false-positive もあるかもしれないからね。
設定値については man 5 header_checks しましょう。

最後に postfix を再起動して、おしまい。

—-

以上で設定終了なんだけど、上記をまとめるまでにぐぐって調べていたら、罠があったので注意書き。
世のサイトには「header_checks ファイルを書いたら postmap しろ」と書かれていることがある。これ、「正規表現でのレシピを書いている場合はやらないこと」なのだ。
もし、考えずに盲目的に postmap してしまうと、

warning: /etc/postfix/header_checks, line 1: record is in “key: value” format; is this an alias file?

といったオコられ方をする。
もし、やってしまった場合は、/etc/postfix/header_checks.db ファイルを削除してから postfix を再起動すればよい。

comment

2009/09/24 (木)

2009-09-24:OpenSSH形式鍵と PuTTYgen の鍵

OpenSSH 形式で作った鍵を Putty 系で使えるように変換したり、PuTTYgen で作った鍵を OpenSSH 形式に変換したり、ということをしたので、今後のためにやり方をメモ。

◆PuTTYgen で作った鍵を OpenSSH 形式に
その1: puttygen.exe を使う方法

  1. puttygen.exe を実行
  2. [File]->[Load private key] で、変換したい鍵を選択(必要に応じてパスフレーズ入力)
  3. [Conversions]->[Export OpenSSH key] で、ファイル名を決めて保存

その2: ssh-keygen を使う

  1. ssh-keygen -i -f [made_with_puttygen_key] > [key_for_openssh]

◆OpenSSH 形式で作った鍵を Putty 系で使う

  1. puttygen.exe を実行
  2. [Conversions]->[Import key] で、鍵を選択
  3. id_dsa などの形式を正しく選択
  4. Save private key を押して保存
comment

2009/09/16 (水)

2009-09-16:trac+subversion

trac をいまさらながら初めてセットアップ。
これ、subversion と連動できてとても便利ね。svn commit 時のログメッセージのキーワードを見て trac 内のチケットがクローズされたりするのはアタマいいなぁ。
trac 上で subversion レポジトリ内のファイルを気軽に見れるのはうれしい。
wiki も変更履歴つきで保存されるのがよい。

ちょっとはまったのは、trac が自動的に出すメールを wanderlust で開こうとして、Wrong type argument: arrayp, nil とオコラレタこと。
UTF-8 なメールをデフォルトでは出しちゃうのね。

comment

2009/09/15 (火)

2009-09-15:XP で nslookup できるのに ping できない

イントラネット内で DNS を用意して、クライアントの XP で DNS サーバの登録をするも、イントラ内のサーバの名前が引けないぞ、という罠をくらった。
cmd.exe で nslookup すると名前引きにちゃんと成功する。でも firefox で見に行くことあたわずで、ping も通らない。

こういうときは、

ipconfig /flushdns

とするものらしい。
それでもダメな場合は、

net stop dnscache

を試そう。

うーん、これでまた、無駄な XP 知識がひとつ。。。

comment

2009/09/14 (月)

2009-09-14:apache の keepalive

apache の keep alive を off にしているシステムがあって、なんでそうしているのかが不明。
だめなクライアントがいたとかだったかなぁ。。。うーむ。

comment

2009/09/11 (金)

2009-09-11:Emacs23 font setting

Emacs23 でのフォント設定でいろいろ格闘した。せっかくなのでメモ。
前提としての私の環境を書くと、Vine 5 を WindowsXP 上の VMwareServer 内で動かし、Windows 上で Xming を起動して、Vine の中の Emacs23 を X 飛ばしで利用している。xfs は Vine の中のを参照する設定。

最初は Vine のデフォルト設定で VL Gothic を使っていたのだが、なぜかこのフォントは半角英数が等幅フォントにならない不具合があった。

画面キャプチャは wanderlust のメールのスレッド一覧画面。縦棒がずれてしまっていることがお分かりいただけると思う。
しばらくは我慢して使っていたのだけど、やっぱり桁が揃ってない画面はいらいらするので、フォント設定の格闘を始めた次第。

ネットでフォントを探して以下のものを用意し、いくつか組み合わせて試してみた。

  • Inconsolata
  • M+ と IPA フォントの混在
  • DejaVu Sans Mono

Vine の場合、/usr/share/fonts/ 以下に otf や ttf や ttc といったファイルを置いて、

xset fp rehash

とすることで、フォントが使えるようになる。カンタンらくちん。

フォントを組み合わせて表示を試すものの、いいものが見つかるまでは時間がかかった。
そもそも等幅にならないものもあれば、等幅になっても半角英数と全角(?)日本語との横幅比が1:2になってなかったり、無理やり1:2にさせようとするとバランスがいまいちすぎたり、、、と。
結局、1時間以上の格闘の結果、「DejaVu Sans Mono + MS Gothic」が今日のところの妥協点になった。
以下、スクリーンショット。

.emacs.el は以下のような設定に。

(setq vine-default-faces nil)

(set-frame-font "DejaVu Sans Mono 9")
(set-fontset-font (frame-parameter nil 'font)
		  'japanese-jisx0208
		  (font-spec :family "MS Gothic" :size 14))

半角英数の DejaVu を9ポイント、日本語フォントを14ポイント指定でちょうど折り合いがついた。

ちなみに、Vine ではユーザーが .emacs-hoge を用意しなくても最低限の環境になるように、vine-default というのが用意されている。
実はこいつ、ユーザーの .emacs-hoge の後に評価されるのだ。
知らないと、起動時に自分の設定がなぜか効かないという現象にしか見えない。残念だが、おせっかいが迷惑になっているパターン。
そこで、上では vine-default-faces を nil にして、face 関係のデフォルト設定を抑制している。

参考:http://trac.vinelinux.org/wiki/Emacs

あと、どうも C-x 5 2 でウィンドウを増やしたときに、フォント設定が受け継がれないのか、でかいフォントが出てしまうようだ。
これは .Xresources に

Emacs*font: DejaVu Sans Mono-9

と書くことでうまくいった。

comment