Archive for qmail

qmail-date-localtime.patch

あちらこちらでリンク切れになっているのでコピーしておきます。

qmail-date-localtime.patch

こんな風にすれば適応できます。

% wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
% wget http://www.tymy.net/%7Ematsu/blog/wp-content/uploads/2008/03/qmail-date-localtime.patch
% tar zxf qmail-1.03.tar.gz
% cd qmail-1.03
% patch < ../qmail-date-localtime.patch

Wordpressによる複数blog運用。(10行追加し、シンボリックリンクを張る)

こんな人向け

  • 1つのWordpressで複数のblogを運用したい。
  • ここに複数運用するための手順がいろいろ紹介されているけど、どれもめんどくさい。
  • Wordpress-MUは、Wordpress用のプラグインが使えなくなるので、使いたくない。
  • 日本のblogで紹介されている手法は、blogごとにWordpressの管理ディレクトリが作成されてしまって気持ち悪い。
  • サーバ上でシンボリックリンクを張れる。

私がとったアプローチは、アクセスされてきたpathに応じてテーブル名を動的に決定する手法。 公式サイトに紹介されている内容は大がかりなので、自分で書いちゃいました。

Wordpress管理ディレクトリのトップにあるwp-config.phpに10行程度を追加して、あとはシンボリックリンクを張るだけです。

下の例は、

http://www.tymy.net/~matsu/blog/ をメインとして運用して、 http://www.tymy.net/~matsu/milklog/ をサブとして運用する場合の例です。

/~matsu/blog/でアクセスされた場合は、テーブルのプレフィックスにデフォルトである”wp_”を利用します。

$prefix_arrayは連想配列です。キーにURIを定義し、値に利用するテーブルのprefix($table_prefixに代入する値)を定義します。以下にdiffを載せておきます。Wordpressをアップグレードするときに上書きしないように気をつけてくださいな。

% rcsdiff -r1.1 -r1.3 wp-config.php
===================================================================
RCS file: RCS/wp-config.php,v
retrieving revision 1.1
retrieving revision 1.3
diff -r1.1 -r1.3
17a18,31
> // determine table prefix according to the REQUEST_URI
> $prefix_array = array(
>   '/~matsu/milklog' => 'wp_milklog_'
> );
>
> if($prefix_array){
>   $uri = $_SERVER['REQUEST_URI'];
>   foreach($prefix_array as $search_uri => $search_table_prefix){
>     if(strpos($uri, $search_uri) === false){ continue; }
>     $table_prefix = $search_table_prefix;
>   }
> }
>
>

※注意
WP-Sitemapで出力するファイル名はそれぞれのblogで別々の名前にしないといけません。
Wordpressの管理ディレクトリ1つに対して1つのサービスを提供するプラグインはうまく動きません。たとえば、robots.txtの配置などです。

もっと詳しく >>

ezmlmのprefix設定方法

—————
ezmlm設定メモ
—————
■説明
ezmlmをインストールした後,デフォルトの設定では
いろいろ不便なのでこれらの設定を行う.

ezmlmのprefixの振り方はとっても頭が悪いので,
fmlなどと同じようなprefixがふれるようにした.
—————
■デフォルトで,Reply-toがつくようにする

/usr/local/bin/ezmlm/ezmlmrc
の321行目あたりに
Reply-to: < #L#>@< #H#>

—————
■デフォルトでprefixナンバーがつくように
/usr/local/bin/ezmlm/ezmlmrc
の440行目あたりに
[< #L#> #]

—————
■きれいな通し番号を
http://www.ep.sci.hokudai.ac.jp/~epnetfan/tebiki/server-ml/prefix.html
参照

/home/vpopmail/ に置く.
# chown vpopmail.vchkpw /home/vpopmail/prefix.pl
# chmod u+x /home/vpopmail/prefix.pl

250行目あたりコメントアウト
#|< #B#>/ezmlm-send ‘< #D#>‘

これを追加
|/usr/bin/nkf -em |/home/vpopmail/prefix.pl < #L#> ‘/home/vpopmail/domains/< #H#>/< #L#>/num’ |/usr/bin/nkf -j |/usr/local/bin/ezmlm/ezmlm-send ‘/home/vpopmail/domains/< #H#>/< #L#>‘

———prefix.pl————————

#!/usr/bin/perl
#
#  This is a pert of the Dongury Perl library.
#  Copyright (C) 1999 Dongury Entertainment Corporation
#  All rights reserved.
#
#  Based on the program written by Kyoma TAKAHASHI.
#  Many thanks for his advice!
#
#  prefix.pl		ver 0.3.6
#  modified by Yuki Matsukura 2003/10/11 
#
#########################################

$UseLock     = 1;			# True : 1, False : 0
$FormatIndex = 4;			# Index の桁数

#########################################

sub lock_file {
    local(*FILE) = @_;
    if ($UseLock) {
        eval("flock(FILE, 2)");
        if ($@) {
            return 0;
        }
    }
    return 1;
}

sub unlock_file {
    local(*FILE) = @_;
    if ($UseLock) {
        eval("flock(FILE, 8)");
    }
}

sub increment {
    my ($path) = @_;
    local $num;
    open(INDEX, "+< " . "$path") or return 0;
    if (!&lock_file(INDEX)) {
        close(INDEX);
        return 0;
    }
    chop ($num = );
# Stop duplicated incrementation.
#    $num += 1;
    seek(INDEX, 0, 0);
    print INDEX "$num\n";
    &unlock_file(INDEX);
    close(INDEX);
    return $num;
}

sub main {
    my ($prefix, $index, $result);

    shift; $prefix = $ARGV[0];
    if (-e $ARGV[1]) {
        $index = &increment($ARGV[1]);
    }
    if ($index) {
        $index = sprintf('%.' . $FormatIndex . 'd', $index);
    }
    else
    {
        $index = "" unless $index;
    }

    while () {
        chop;
        if (s/^Subject:\s//) {
            s/((\|\s|RE):\s)+/Re: /gi;
            s/^\[$prefix\s?\d+\]\s*//;
# disable extra prefix
#            s/Re:\s\[$prefix\s?(\d+)\]\s*/Re:[$1] /g;
            s/Re:\s\[$prefix\s?(\d+)\](\s*)/Re: $2/g;
            s/Re:\s*Re:\s*/Re: /g;

            foreach $s (split) {
                if ($s =~ /Re:\[\d+\]/ and $pre =~ /Re:\[\d+\]/) {
                    $pre = $s;
                    $s =~ s/Re://g if (($s =~ /Re:\[/) && (!$` or $` =~ /(Re:)+/));
                    $result .= $s;
                    next;
                }
                $pre = $s; $result .= " $s";
            }
            print "Subject: [$prefix $index]" . $result . "\n";
            last;
        }
        print; print "\n";
    }
    print ;
    exit(0);
}

&main;
 

リンク