インターネットなこと: 2011年2月アーカイブ

既に qmail が動いている状態で make setup check を実行すると、

./install
install: fatal: unable to write .../bin/qmail-lspawn: text busy
make: *** [setup] Error 111

というエラーが出ちゃうので、必ず一旦 qmail を止めてから行おう。

具体的には、

# make clean
# make
# service qmail stop
# make setup check
# service qmail start

という感じやね。

まあ、apache や mysql や、その手の大概のデーモンプログラムは実行させたままで make install しても(restart するまで新しいプログラムが反映せんだけで)問題ないので、いきなりエラーが出るとナニゴトかとビビってしまうわな。(^^;

JPRS が JP ドメインの DNSSEC 対応を開始したので、日本国内でも自社 DNS で DNSSEC 対応を始める企業がポツポツと出始めたようである。

で、そうなると、その企業に向けて qmail からのメールが送信できなくなるという障害が発生するのだ(^^;

qmail は、DNS からのレスポンスを 512byte までのサイズしか受け取らない。
しかし、DNSSEC 対応した DNS サーバからのレスポンスが 512byte 以内で収まることはまずない・・・らしい。まあ、今までのアドレス情報に、更に電子証明の公開鍵の情報などが付加されるので、512byte なんかじゃ収まらんわなあ(^^;
つまり、qmail が「あるドメイン」の MX レコード(メールサーバのアドレス)を引きに行った時、相手の DNS が DNSSEC に対応していた場合、MX レコードを正しく引けないということだ。

メールをどこに送信していいかわからないってことである。

つーことで、方法としては DNS からのレスポンスを受け取る qmail のバッファを大きくしてやる必要がある。

一応、DNSSEC 対応のためのものかどうかはわからないが、バッファの量を 512byte 以上取るためのパッチが 1998年に作られている。

http://www.ckdhr.com/ckd/qmail-103.patch

↑このパッチを取ってきて、

# cd qmail-1.03
# patch < ../qmail-103.patch
# make clean
# make setup check

と qmail の再セットアップをしてから DNSSEC 対応しているユーザ宛にメールを送ってみたら、ちゃんと届いたとのこと。(実は、このユーザへのメールが届かなくなったので異常に気づいた(^^;)

ふむふむ。このパッチでうまくいくようだ。

さて、qmail を動かしているサーバ、全部対応せねばならん(^^;しんど・・・

某 WebService に Perl プログラムから SOAP で接続する案件があった。

で、何度やっても VersionMismatch(SOAPエンベロープの名前空間が合わない・・・というエラー)が発生する。

なんか、SOAP::Lite モジュールではよくあることのようで、ググってたら SOAP::Data で明示的に SOAP要素に値、名前を指定してやったらOKになった・・・なんて記述もあったのでやってみたのだが、今度は namespace mismatch なエラーが。
つーか、これも名前空間が合わないってエラーじゃん。

エラー時に Only SOAP 1.1 or SOAP 1.2 messages are supported in the system って言われたので、SOAP v1.1 でずっと通信してたのだが、ここで、SOAP v1.2 での処理に変えてみると・・・

・・・あっけなく上手くいってしまった・・・

例えば、ID,Password を投げてユーザ情報を取ってくる処理なら、

use SOAP::Lite +trace;

my $client = SOAP::Lite->service('https://service.exsample.com/ServiceHandler?wsdl');

# SOAP 1.2 で接続
$client->soapversion('1.2');
$client->envprefix('soap12');
$client->readable('true');

$result = $client->getUserInfo('hogehoge', 'hogepass');

print "Name=" . $result->{'name'} . "\n";
print "Phone=" . $result->{'phone'} . "\n";
print "Address=" . $result->{'address'} . "\n";

みたいな感じ。

まあ、上手くいったので取りあえずはOKなのだが、SOAP v1.1 の時は何がいけなかったのか気になってしまう、45の冬。

このアーカイブについて

このページには、2011年2月以降に書かれたブログ記事のうちインターネットなことカテゴリに属しているものが含まれています。

前のアーカイブはインターネットなこと: 2011年1月です。

次のアーカイブはインターネットなこと: 2011年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら