どさどさにっき(RC2) 〜2008年1月下旬〜

by やまや
<< = >>

2008年1月21日(月)

神様仏様ドコモ様

_ 3ヶ月ほど前、docomo が送信ドメイン認証を採用するにあたり、わしは こう書きました

docomo に蹴られちゃかなわん、とあわてて設定するドメインは多いだろうから、今後数ヶ月で普及率が一気に上がると思う。
はい、 こうなりました

_ 効果テキメン。そっち方面の専門家が声をはりあげるよりも、大手が一社採用する方がずっと効果的。もちろん、大手が採用するに至ったのはそっち方面の専門家の地道な活動の成果でもあるので、それを否定するつもりはまったくないのだが。

_ 送信ドメイン認証は docomo 以前から au でも採用されているわけだけど、実施にあたりとくに大きなプレスリリースを出さずにひっそりはじめた au と、大きく宣伝してからはじめた docomo とでは影響力が段違い。なんだかんだいって、大手が口を開けばみんなそっちになびくわけだよ。

aliases からスクリプトを正しく叩く

_ PHPとsendmailで任意のメールアドレスに来たメールを処理する方法。極めて危険。マネしないように。

_ その1。aliases から直接プログラムを起動してはいけない。プログラムは aliases のファイル所有者の権限で実行される。通常 root の持ち物なので、外部から root 権限でプログラムの実行を許可することになる (*1)。どーしても root でなければならない理由があるのなら話は別だが、そうでなければ aliases から直接起動するのではなく、他ユーザ権限の別ファイルを :include: し、その中から起動するように設定すべし。

_ その2。RTFM!!!

sendmailのシェルがPHPにアクセスできるように以下のように設定。
#ln -s /usr/local/bin/php /etc/smrsh/php
smrsh が実行を許可するプログラムを置くディレクトリの中にシェルやら perl(1) やらのようなプログラムはぜっっっったいに入れてはいけないと man に書いてある(なぜかは自分で考えてみよう)。とーぜん php も該当する。そのディレクトリには php を置くのではなく、#!/usr/local/bin/php なスクリプト自体を置くようにすべし。


(*1): postfix の場合は root のかわりに $default_privs で設定したユーザに権限を落として実行されるが、sendmail ではたしかそんな防御はしてなかったはず。

2008年1月31日(木)

*BSD の便利ツール

_ daemontools の setlockを使わなくても、FreeBSD ならば標準で lockf(1)というのが装備されてたりなんかするのでこれを使えばいい((3)じゃないよ、(1)だよ)。こういう便利ツールは他の OS もマネしてほしい。まあ、あったところでビミョーに仕様が違って環境依存性を考えたら使えねー、というオチになりそうな気もするが。

_ その他、BSD 系 OS でのみ使えるお便利コマンドをいくつか。

_ apply(1)。引数を変えながらコマンドを連続実行。たとえば、

% apply 'scp hoge %1:' host1 host2 host3
hoge というファイルを一発で host1-3 に転送する。これがない場合、
% for i in host1 host2 host3; do scp hoge $i:; done
とか(シェルが csh の場合は for じゃなくて foreach で書き直す)、
% echo host1 host2 host3 | xargs -n1 | sed 's/.*/scp hoge &:/' | sh
とか(どこでも使えるけどトリッキー)、いろいろめんどくさい。

_ daemon(8)。なんでもデーモン化。

#!/bin/sh
while sleep 1; do
    pgrep hoge >/dev/null || hoge
done
hoge というプロセスが死んでたら起動しなおす、という監視スクリプトだけど、このスクリプトを daemon(8) の引数にして実行すると、ただのシェルスクリプトがデーモンとして動いてくれる。UNIX の慣例を無視してフォアグラウンドで動き続ける djb の各種サーバをデーモン化するのに便利。そういう意味では fghackの逆の動作か。


<< = >>
やまや