どさにっき 2.0 〜2006年5月中旬〜

by やまや
<< = >>

2006年5月13日(土)

なんとなく、MTA ベンチマーク

_ postfix のおまけについてくる smtp-source を使用。SMTP で並列10セッション、合計1000通の送信。宛先はローカルの postmaster で、これはエイリアス展開されて yamaya のメールボックスに落ちる。

% time smtp-source -s10 -m1000 -t postmaster@hostname 127.0.0.1
機材は PenIII 800MHz、256MB の FreeBSD 6.1-STABLE で、sendmail は OS 標準のもの、それ以外は ports でインストール。設定は特記なき場合はインストール時のまま、あるいはホスト名などの最小の設定変更だけ。メールボックス形式は mbox。

_ sendmail-8.13.6: smtp-source 完了まで51秒、ローカル配送完了まで63秒。

_ postfix-2.3-20060430: smtp-source 完了まで11秒、ローカル配送完了まで13秒。

_ qmail-1.03: tcpserver -vRH で起動、ログは splogger 経由で syslog に吐くように設定。~alias/.qmail-postmaster で yamaya 宛に転送。smtp-source 完了まで27秒、ローカル配送完了まで62秒。qmail の場合、1通につき postmaster への配送と、そこから yamaya への転送でローカル配送が2回発生する。-t yamaya としてローカル配送が1回だけになるようにした場合はそれぞれ 25秒、31秒で完了。

_ exim-4.62: smtp-source 完了まで44秒、ローカル配送999通まで52秒。残り1通はメールボックスがロックされていたために配送失敗してリトライ待ち。

_ sendmail-X.0.0.0.0: ネイティブのローカル配送手段を持たないため、LMTP で mail.local を使って配送するよう設定。また、1分あたりの接続数制限(デフォルト100)を回避するため、qmgr { smtps { max_connection_rate=1000; } } と設定。が、やっぱり何百通か送ったとろで、

smtp-source: fatal: bad startup: 421 4.3.0 Too busy.
となって終了。内部プロセス間で情報をやりとりするソケットが詰まったらしい(?)。設定でいじれそうな気もするがよくわからん。

_ smtp-sink: postfix のオマケについてくる、すべてのメールを捨てるベンチマーク用 SMTP サーバ。1.4秒。

_ 注意点。

つまり、目安にはなるかもしれないが、この結果を元に何かもっともらしいことを考察するのは危険である。


2006年5月14日(日)

bash

_ いや、bash って大っ嫌いなんだけどさ。何の気紛れかインストールしちゃったり。FreeBSD だからあえて入れようとしないかぎりは入らないんだけど。

_ 何が嫌いって、C-u の挙動。コマンドラインで何文字か入力して、そこから C-b で数文字戻って入力中の行の途中にカーソルがある状態にしてくださいませ。そこで C-u を叩く。同じことを bash 以外のシェルや、その他コマンド行編集の機能があるアプリで試してくださいませ。ついでに stty -a の出力も眺めておいてくださいませ。

_ stty -a の出力で kill = ^U になっていない環境ってのはめったいにないと思うんだけど、この kill ってのは行全部消すって意味だ。つまり、端末は C-u を受け取るとその行をぜんぶ消す。キー入力を端末にそのまま投げずにアプリで処理するものでも、たいていはその挙動を引き継ぐ。だけど、bash をはじめとする readline を使ったものだけがこの C-u の動作が違う。

_ なんでそんなことするの? わしとしては C-u というのはわりとよく使うし、こういう基本的なキーバインドで一般的なものと異なる挙動を示されるのは非常に困る、っつーか激しくムカつく。直すには ~/.inputrc に

"\C-u": kill-whole-line
と書いた行を入れておけばいいことは知ってるけどさ、いちいち手間をかけてそれをやらにゃならん、というのがよろしくない。

_ が、FreeBSD 6.x の libreadline.so.6 や bash 3.1 同梱の readline ではこの設定が効かんようだ。なぜだー。5.x の libreadline.so.5 や bash 2.05b に同梱の readline ではちゃんと動作するのに。困るんですがー。

_ bash、つーか readline の嫌いなところをもうひとつ。ヒストリを C-p でさかのぼって、それをてきとーに編集する。でもやっぱやーめた、と編集したものを実行せずにさらにヒストリを行ったり来たりする。うろうろしているうちに、やっぱりさっき編集した行の編集前のコマンドを見たい、と思ってもそれは叶わぬ夢。readline はとっても賢いので、編集後の状態をちゃんと覚えていてくれる。つまり、逆に編集前の状態を見ることができない。コマンドラインの編集をいったんやめたんだから編集したものは破棄してほしいんだけどそういうことはしてくれないらしい。長いワンライナーを少しずつ修正しながら何度も実行するときは、このようなヒストリを行ったり来たりということは頻繁にやるので、一度実行したコマンドを実行していないもので上書きしてほしくないんだけど、この動作が便利だと思う人っているんだろうか。設定でこれを変更できればいいんだけど、できるのかどうかわからん。誰か教えて。

_ つーわけで、bash は機能以前の基本操作が激しく肌に合わず、使っているとイライラが溜まって発狂しそうになる。これを便利に使ってらっしゃる方々はたいへん忍耐強いんだろうと想像しますよ、ええ。

_ 対話型シェルとしてではなく、スクリプト言語としての bash は、……なんでそんなもんが必要なの? sh より機能が増えたのは知ってるけど、それはつまり sh と互換性がないってことだし、sh の機能で困ることはないし。

_ ところで、なんでまたイライラすることがわかっていてわざわざインストールしたんだろうな。


2006年5月15日(月)

無題

いつのまにか 2ch に YouTube 板なんてのができてたのね……。いや、見ないけど。しかしほんとすごい勢いだな。

MaxRequestsPerChild

_ えーと、Apache 1.3 の httpd.conf-dist にはコメントで、

# MaxRequestsPerChild: the number of requests each child process is
# allowed to process before the child dies.  The child will exit so
# as to avoid problems after prolonged use when Apache (and maybe the
# libraries it uses) leak memory or other resources.  On most systems, this
# isn't really needed, but a few (such as Solaris) do have notable leaks
# in the libraries. For these platforms, set to something like 10000
# or so; a setting of 0 means unlimited.
という記述があるんだけど、わしはこれを Solaris では OS 側のライブラリがアホだからメモリリークするよ、Apache のせいじゃないよ、という意味だと理解しております。

_ 同じような記述は Apache 2.0 の httpd-std.conf にはないんだけど、1.3 でリークするのが Apache のせいではなくライブラリのせいなんだから、バージョンが上がって 2.x になってもあいかわらずリークしちゃうよ、ということでいいのかしらん。それとも、2.0 ではお漏らしする原因部分を避ける実装になって記述が消えたのかしらん。実際の挙動を見るとリークしてるような気がするけど、正確なところはわからん。だれかおしえて(←自分で調べるつもりはないらしい)。

_ それとも mod_php かなー?


2006年5月16日(火)

postfix milter

_ キタ

_ というわけで、遊んでみるです。実験環境は coLinux 上で動いてる Debian sarge。

_ postfix の前に、まずは milter のセットアップ。apt-cache search milter して効果がわかりやすそうなものを探す。うーんと、clamav-milter かな。こいつと libmilter0、libmilter-dev を apt-get install しておく。

_ clamav-milter って自分で sendmail.cf を読んで、そこに適切な設定がされてないと起動を拒否するみたい。今は sendmail を使うわけじゃないのに、まさに小さな親切大きなお世話。しかたないので /etc/mail/sendmail.mc に

include(`m4/clamav-milter.m4')dnl
と書いて sendmail.cf を作り直してから /etc/init.d/clamav-milter start で起動。念のため書いておくと、debian の sendmail でしか意味がない記述だから検索で飛んできた人は真似しちゃダメよ。

_ postfix-2.3-20060516-milter のセットアップ。といっても、ふつーにコンパイル、インストールして main.cf に

cleanup_milters = unix:/var/run/clamav/clamav-milter.ctl
の1行を追加するだけか。

_ 動かすよ。……動かないよ(泣)。

451 4.3.0 Error: queue file write error
タイムアウトまで待たされたあげくに蹴られた。ログもこんな感じで。
May 16 16:33:26 colinux postfix/cleanup[27114]: warning: milter unix:/var/run/clamav/clamav-milter.ctl: can't read packet header: Connection timed out
May 16 16:33:26 colinux postfix/smtpd[27113]: warning: premature end-of-input on public/cleanup socket while reading input attribute name
May 16 16:33:26 colinux postfix/master[26554]: warning: process /usr/libexec/postfix/cleanup pid 27114 killed by signal 11
というわけで、ウィルスつきのメールを投げると、cleanup がお亡くなりになってしまう。ログには Connection timed out とか出てるけど、ウィルスなしのメールを投げた場合には正常に処理されて
X-Virus-Scanned: ClamAV version 0.84, clamav-milter version 0.84e on colinux.local
X-Virus-Status: Clean
というヘッダが付加されてちゃんと配送されてるので、milter に処理がわたっているのは間違いないはず。じゃあ、milter の方の問題かというと、sendmail で試してみると何の問題もなく処理されてるので、そういうわけでもないようだ。↓sendmail の場合のログ。
May 16 16:43:42 colinux sm-mta[27308]: k4G7h5LE027308: Milter add: header: X-Virus-Scanned: ClamAV version 0.84, clamav-milter version 0.84e on colinux.local
May 16 16:43:42 colinux sm-mta[27308]: k4G7h5LE027308: Milter add: header: X-Virus-Status: Infected with Eicar-Test-Signature
May 16 16:43:42 colinux sm-mta[27308]: k4G7h5LE027308: Milter: data, reject=554 5.7.1 virus Eicar-Test-Signature detected by ClamAV - http://www.clamav.net

_ $cleanup_milters ではなく、$smtpd_milters の方に設定してもやっぱりダメ。ただ違うのは、ちゃんとウィルス検知されて警告メールが出てるということ。

Received: by colinux.local (Postfix, from userid 108)
	id 6C20A24C6F; Tue, 16 May 2006 17:04:24 +0900 (JST)
From: MAILER-DAEMON@colinux.local
To: postmaster@colinux.local
Cc: yamaya@colinux.local
Auto-Submitted: auto-submitted (antivirus notify)
Subject: Virus intercepted
Message-Id: <20060516080424.6C20A24C6F@colinux.local>
Date: Tue, 16 May 2006 17:04:24 +0900 (JST)
X-Virus-Scanned: ClamAV version 0.84, clamav-milter version 0.84e on colinux.local
X-Virus-Status: Clean

A message sent from yamaya to
        yamaya
contained Eicar-Test-Signature and has not been delivered.

The infected machine is likely to be here:
from hoge (localhost [127.0.0.1])
        by colinux.local (Postfix) with ESMTP id 3D01824C6B
        for <yamaya>; Tue, 16 May 2006 17:04:05 +0900 (JST)
そこまでできてるのに何でコケるんじゃー。milter から返ってきた結果の取り扱いでコケてるのかなー?

_ unix ドメインソケットじゃなくて TCP で milter と通信させると、

May 16 19:10:00 colinux postfix/smtpd[29751]: check_milter_reply 450 4.7.1 Service unavaliable - please try later
May 16 19:10:00 colinux postfix/smtpd[29751]: NOQUEUE: milter-reject: CONNECT from localhost[127.0.0.1]: 450 4.7.1 Service unavaliable - please try later; proto=SMTP
ふぇぇぇん。わからん。まだ milter の一部の機能の実装はまだなんだけど、それを突いちゃってるのかしらん。


2006年5月17日(水)

ISPが迷惑メールを受信時に排除することは「通信の秘密」の侵害か?

_ という記事。

_ この記事にある基準を素直に解釈すると OCN の IP25Bはクロだよなぁ。どういうひねくれた解釈をしたらとシロと判断できるんだろう。つーか、オプションではなくユーザ全員強制加入のメールウィルスチェックもアレだっつーのに。

_ 目新しい意見があるよ、というわけじゃないね。どっちかというと、その見解を示しているのがどこぞの馬の骨じゃなくて総務省のお役人さんだよ、ということに意味があるという程度。

.tel

_ 新ドメイン「.tel」が承認だそうな。.xxx を議論してた(そして 却下された)のは知ってたけど、その裏で .tel の論議をやってるのは知らんかった。

_ 電話番号やらの連絡先を DNS に載せるための TLD ということらしいけど、 ENUMとはまったく別ものなんだよね? あっちは .e164.arpa であって .tel じゃないから。っていうか、素人考えだが、.tel ってのは ENUM への流れに思いっきり逆行する存在になりそうな気が。


2006年5月18日(木)

Winny 遮断は違法

_ という総務省見解が出た。それ見たことか。> ぷらら
もっとも、あくまで「その可能性が高い」であって、実際にどうなのかは総務省ではなく司法の判断が必要なわけだが。

_ 主な記事。

_ ところで、帯域制限までであれば通信の秘密に抵触しない、との見解で Nifty の規制は OK としたようだけど、「Winny だったら帯域をしぼる」という措置ならば、わしはやっぱり侵害だと思う。判断の別れ目は正当業務行為か否かということみたいだが、「いっぱい使ってたら帯域をしぼる」という判断で十分なはずであって、Winny かどうかを調べる必要はないはずだから。もちろん、もっと根本的な「通信が存在しているか否か」ということ自体すらも通信の秘密で守られるべき内容だから、大量のトラフィックを理由にしぼることだって厳密には侵害なんだろうけど、これはさすがにサービスの安定提供のために必要な行為とみなして問題ないと思う。


2006年5月19日(金)

postfix + milter

_ この前のつづき。postfix-2.3-20060518-milter に上げてみた。設定はとくにいじってないんだけど、

May 19 11:38:07 colinux postfix/cleanup[17022]: 2FBED24C5D: milter-reject; from=<yamaya@colinux.local> to=<yamaya@colinux.local> proto=ESMTP helo=<hoge>: 5.7.1 virus Eicar-Test-Signature detected by ClamAV - http://www.clamav.net
動いた!

_ でも、milter と UNIX ドメインソケットで通信する場合のみ。TCP/IP でやりとりするよう設定するとやっぱり temp error になっちゃうなぁ。

_ ……あれ、dkim-milter は TCP でも動いたぞ。めんどうで DNS に TXT レコードを設定しなかったから結果が正しいのかどうかわからんけど。clamav-milter だけの問題なのか?

_ まあとりあえず、いくらか怪しいところもあるけど、postfix で milter が動きましたよ、と。

スパム対抗キャンペーンのBlue Security、スパムに降伏

_ はぁ?と思ったけど、

50万の同社の顧客に、受信したスパムに返信するよう呼びかけた。スパムを受け取った人全員がトラフィックを送り返すことで、スパム事業者のサーバに負荷をかけ、スパムを送ることができなくなると考えたのだ。
こういうアホな対抗キャンペーンなら、いいや潰れても。スパマーが無実の第三者を詐称して送ってた場合はどう責任取るつもりだったんだ。詐称でなかったとしても、到達性のないアドレスで送ってくるスパマーは多いが、そういう輩に返信すると、届かないで中継 ISP のメールサーバのキューに滞留することになる。生きてるアドレスか判断する材料になるからがスパムに返信したらダメだ、とよく言われるが、そんなことじゃなくてそもそも送信元に届かない可能性が高いから返信するのはよろしくないんだよ。


<< = >>
やまや