2006/10/03

ezmlmはやめときゃよかったね

とりあえず、なんとかかんとか運用を開始したezmlmですが、macユーザから件名が化けるとお叱りを受けた。
ここで作ったフィルタのせいなんだけど、考えてみればそりゃそーだ。decodeだけして元に戻してなかった。
というわけでこんな感じに修正しました。

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 = ){
if( $flag == 1){
if( $line =~ /^Subject: / ){
$flag = 0;
$line = mimedecode($line);
$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/;
$line = mimeencode($line);
}elsif( $line =~ /^$/){
$flag = 0;
}
}
print $line;
}

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をやり直して見ると、、、おぉばっちりじゃん。

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

2006/08/26

AWStatsにローカルのロボットを認識させる

携帯のホームページを作ったので、アクセスアップだと意気込んであちこちの検索エンジンに登録しまくって暫くすると、どんどんアクセス数が上がります。ロボットのねorz。最初の頃は気付かなくってバカみたいによろこんじゃったよ。
そんなお馬鹿さんな自分がこれ以上踊らされないために、AWStatsにローカルのロボットを認識させておきます。

ロボットデータベースの編集
[root@ ~]# vi /usr/share/awstats/lib/robots.pm
ロボットのFQDN

@RobotsSearchIDOrder_list1 = (
以下を追加
# Japanese Search Engine Robots
'iyappo',

画面上に表示される名前
%RobotsHashIDLib = (
以下を追加
# Japanese Search Engine Robots
'iyappo','<a href="http://i.yappo.jp/" title="Bot home page [new window]" target="_blank">iYappo</a>',

検索エンジン
%RobotsAffiliateLib = (
以下を追加
# Japanese Search Engine Robots
'iyappo'=>'iYappo',

修正内容の確認
[root@ ~]# perl -c /usr/share/awstats/lib/robots.pm
/usr/share/awstats/lib/robots.pm syntax OK

2006/08/25

ファイアウォール(Firewall)を越えてNFSマウントしたい

Fedora 5 でファイアウォールを越えてマウントするときのメモ

■NFSサーバー設定
XXX.XXXX.XXX.XXX からのアクセスを許可する
[root@ ]# vi /etc/exports
/ XXX.XXXX.XXX.XXX/255.255.255.0(rw)

/etc/sysconfig/nfs を以下の内容で作成。
STATD_PORT=32765
STATD_OUTGOING_PORT=32766
MOUNTD_PORT=32767

rpcinfo -pで、状態を確認
プログラム バージョン プロトコル ポート
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 32768 status
100024 1 tcp 40993 status
100011 1 udp 932 rquotad
100011 2 udp 932 rquotad
100011 1 tcp 935 rquotad
100011 2 tcp 935 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100021 1 udp 32786 nlockmgr
100021 3 udp 32786 nlockmgr
100021 4 udp 32786 nlockmgr
100021 1 tcp 60776 nlockmgr
100021 3 tcp 60776 nlockmgr
100021 4 tcp 60776 nlockmgr
100005 1 udp 32767 mountd
100005 1 tcp 32767 mountd
100005 2 udp 32767 mountd
100005 2 tcp 32767 mountd
100005 3 udp 32767 mountd
100005 3 tcp 32767 mountd

[root@ ]# chkconfig nfs on
[root@ ]# chkconfig --list nfs
nfs 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ

■NFSクライアント設定
[root@ ]# mkdir /mnt/nfs
[root@ ]# mount -t nfs サーバーIPアドレス:/ /mnt/nfs

■Linuxクライアント起動時自動マウント設定
[root@ ]# vi /etc/fstab ← 自動マウント設定ファイル編集
サーバーIPアドレス:/ /mnt/nfs nfs rw 0 0 ← 起動時にNFSサーバーの/(ルート)ディレクトリをマウントする

Google Analytics