2006/09/23

ezmlmはやめときゃよかった

MLを立ち上げて欲しいとのご要望を受けてezmlmを入れてみましたが、、、やめときゃよかった。今からインストールしようとしているあなた、もう一度よく考えたほうがいいかもしれません。
ezmlmのポリシーというか、思惑から外れる運用をしようとすると結構面倒。
かといって、もう後戻りできないところまで進んじゃったのでなんとかしてみるメモ。

Subject: のプレフィックスの連番の桁数を何とかしてみる
[hoge-ml:1] を [hoge-ml:0001] にしたいですよね。で、

個人的な告知板 -2003年 8月19日
をみてソースをこんな感じに修正して、
make clean && make
make ja
make setup


Subject: のプレフィックスを何とかしてみる
ezmlm は 同じ件名 or Re: がついている Subject を同じスレッドとみなすようだ。「一連のスレッドを取り寄せる」とかいう機能のためにね。でもふつうそんなことしないような気がするんだけど。そんで、その影響で Re: [hoge-ml:0001] ほげほげ を送信すると そのまま Re: [hoge-ml:0001] ほげほげ って送られてきちゃう。
でも、やっぱり [hoge-ml:0002] Re: ほげほげ って送られてきて欲しいよね、って何とかしてみる。

課題をクリアするには、2つ

  • メールの Subject: から [ML名:番号]を削除して、ezmlmに番号を新たにふらせる
  • Outlookなどの Subject を全部 MIME encode するメーラのために MIME decode してチェック


生田昇 さんが開発された MIME エンコード・デコード用 perl ライブラリ mime_pls を、ezmlm と同じディレクトリにコピー
# cp mimer.pl /usr/local/bin/ezmlm
# cp mimew.pl /usr/local/bin/ezmlm

フィルタを作成
※このフィルタには問題があるのでここをみて下さい。
vi /usr/local/bin/ezmlm/rewrite
#!/usr/bin/perl

use strict;

require '/usr/local/bin/ezmlm/mimer.pl';
require '/usr/local/bin/ezmlm/mimew.pl';

if( @ARGV != 1){
die "Usage: $0 ML-prefix\n"
}

my $flag = 1;

while( my $line = ){
$line = mimedecode($line);

if( $flag == 1){
if( $line =~ /^Subject: / ){
$flag = 0;
$line =~ s/^Subject:\s(R[Ee]:\s*)*\[$ARGV[0]:\s*[0-9][0-9]*\]\s*(R[Ee]:\s*)*(.*)/Subject: $1$2$3/;
$line =~ s/^Subject:\s(F[Ww]:\s*)*\[$ARGV[0]:\s*[0-9][0-9]*\]\s*(F[Ww]:\s*)*(.*)/Subject: $1$2$3/;
}elsif( $line =~ /^$/){
$flag = 0;
}

}
print $line;
}


フィルタをかます
vi /home/vpopmail/domains/hoge.jp/ML名/editor

|/usr/local/bin/ezmlm/ezmlm-send '/home/vpopmail/domains/hoge.jp/ML名'

|/usr/local/bin/ezmlm/rewrite ML名 | /usr/local/bin/ezmlm/ezmlm-send '/home/vpopmail/domains/hoge.jp/ML名'

2006/09/13

PostgreSQLで16進数を10進数に変換

こんだけ
db=> SELECT X'80'::integer;
int4
------
128
(1 row)

2006/09/05

P_BLOG ver.1.2β3 と MySQL 5.0.22 の組み合わせでいきまっしょい

このBloggerやGMailなんかに触発されて、タグ付けで情報管理するのがマイブームです。
そんな私のハートにピッタンコ(死語)のBlogツール、P_BLOGですが、ちょっと問題があったのでメモ。

具体的にどんな問題かというとですね、P_BLOG_ver.1.2β3 と MySQL 5.0.22 の組み合わせで、タグが検索できないんですよ。これは致命的です。そもそも私の目的を全否定です。

これはイカンとさっそくGoogle先生に聞いて見ました(他力本願)。

えっとなになに、ぱんぴーまっしぐら さんの、PHPとMySQLの個人的まとめ によると、
MySQL4.1以降はサーバとは別にクライアントの文字コードが設定されている。
クライアント、サーバ間で違う文字コードがセットされていると、一度ucs2変換を通る。
よって、クライアント、サーバ間で違う文字コードを指定することとなり文字化けが起こる可能性がある。
ということらしい。んでもって、
MySQLの4.1.15以降、5.0.13以降で「skip-character-set-client-handshake」というオプションが追加された。
クライアントからリクエストがあった場合、クライアントの文字コードをサーバの文字コードと同じものをセットする。
だそうだ。
よし、早速やってみよう。

[ ~]# vi /etc/my.cnf
[mysqld]
skip-character-set-client-handshake

[ ~]# /etc/init.d/mysqld restart

そんでもって、もいっぺん、P_BLOGのSETUPをやり直して見ると、、、おぉばっちりじゃん。

やれやれ、これにて一件落着。

Google Analytics