[PREVIOUS CHAPTER] [NEXT CHAPTER]

9 古い記述(か？)

    9.1	ガイドとかが なぜか返送されない（no file in Sub SendFile[logfile]）

    妙に SUN OS 4.1.3 (+JLE) の場合が多かったんですが、perl の file test
    operator が（-T なんでもけっこう変みたい）おかしくて Plain Text か否か？
    のチェックをしているところがちゃんと動作していません。

    とりあえず config.ph  の最初の方で

    	$SENDFILE_NO_FILECHECK = 1;

    としておいてください。

    9.2	記事番号が変わらない。seq file の中が数字で一杯です…

    seq fileがこんなかんじに

    1
    2
    2

    みたいになってる。「OSのバグ（kernel libraryだよね?）でlseek system
    callがおかしい。」が原因でこうなってしまいます;_;。

    	$USE_FLOCK    = 0;

    として flock を使わない方式にすればseekは使わないので大丈夫です。

    [備考]

        seek(LOCK, 0, 0);

    は以下と同じだろうけど、きっとどっちも動かないと思うよぉ？

        require 'sys/unistd.ph';
        require 'sys/syscall.ph';
        syscall &SYS_lseek, fileno(LOCK), 0, &SEEK_SET;

    [おかしい OS ]
    少なくとも以下の機種はおかしいようだ

    	NetBSD  0.9
    	NetBSD current(1/29)
    	Sun-OS 4.1.3C
    	Sun-OS 4.1.3 JLE1.1.3

    9.3	PC-VAN がちゃんとうけとってくれない 事件

    message-id で < > がちゃんとついてないと だーめ。

    PC-VAN は、<uja@aja.or.jp> という Message-Id: を@の前で切り取って、
    <uja> にする？ んだそうです。＃なんだ、それ？？？

    9.4	自動登録したときにファイルが送られない事件 (fml 1.6 〜 1.6.1?)

    推測？：
    libutils.pl[AutoRegist] -> libsmtp.pl[SendFile]
    GenerateHeaders のパラメータがうまく渡ってない
    原因は 変数空間のスコープ かな？

    sub SendFile
    {
        local(@to, *e, *rcpt);
        local($to, $subject, $file, $zcat, @to) = @_;

    つまり *to -> @to にしたら動いたりとか？
    ついでに、
    	local(@to, *e, *rcpt);
    を
    	local(@to, %e, *rcpt);
    とか、
    	local(@to, *e, *rcpt);

    をなくすとうごくとか ？

    9.5	bin/expire.plで“N個のファイルを残す"のを間違えます

    	該当範囲：libexpire.pl のないバージョン(95/11/11以前)

     ”spool/数字” 全体に対して qsort() をかけちゃうんで
    sort 後の結果が間違ってしまいます。

      # sort ->  1 , 2, 3, ... increasing order.
      @f = sort {$a <=> $b} @f;

    は spool/数字 ではなく 数字 だけで実行しなければならないわけです。
    いまのはなおってます。

    逆に、spool/数字 を sort するには、たとえばこんなことをすればできます
    けど…どうも美しくないね…

    @f = sort fp_sort {$a <=> $b} @f;
    sub fp_sort
    {
        local($na, $nb, $wa, $wb);
        $xa = $a;
        $xb = $b;

        $xa =~ s/^(\D+)(\d+)/$wa = $1, $na = $2/e;
        $xb =~ s/^(\D+)(\d+)/$wb = $1, $nb = $2/e;

        if ($na || $nb) {
    	# print STDERR "($wa cmp $wb) || ($na <=> $nb);\n";
    	($wa cmp $wb) || ($na <=> $nb);
        }
        else {
    	$a cmp $b;
        }
    }

    9.6	ファイルがちゃんとおくりかえされない(自動登録とかガイド請求の時)

    なんなんでしょうねぇ〜 1.6.{0,1} の頃の話なんですが… 1.6.2 Current 以
    降はＯＫみたいです。
    ＃変数のスコープとかの問題らしいのだが…

    ちなみに、非常に機種依存です;_;。
    ターゲットマシンの perl 4 on News OS4.2 では 1.6 は正常に動きますんで
    ＃ 記： Wed Nov 22 07:02:26 JST 1995

    9.7	[X-ML-NAME:ID]日本語の題名[X-ML-NAME:ID]

    From:    easy@pfu.co.jp

    Subjectを、[X-ML-NAME:ID] real subject という形式にした場合、日本語の
    Subjectを使うと、CyberDog 1.1J beta User は、

    [X-ML-NAME:ID]日本語の題名[X-ML-NAME:ID]

    と、なってしまう。
    CyberDog正式版に期待しましょう。

    9.8	'macro:s'

    昔はMessage-ID もこの変数使っていたので @localhost とかついちゃいました。
    そういうことをすると、Message-ID が Unique でなくなるからだめです。

    この辺の話をすると

       Sendmail に HELO と呼びかける時に使う変数が	$Envelope{'macro:s'}
       Message-ID につけてるのが			$FQDN
    	例： "<$CurrentTime.FML$$\@$FQDN>" フォーム

       fml の $FQDN 	は sendmail.cf の $j
       fml の $DOMAINNAME	は sendmail.cf の $m

    9.9	Can't locate auto/Socket/AF_INET.al in @INC at libsmtp.pl ...

    Perl 5 が正しくインストールされてないと起きるみたいですね。
    #それも 5.000 のようだが…

    0.	なんとかして use Socket; を実行しなければいいと(^^)
    1.	use Socket;(libsmtp.pl)	 の部分をカットする
    2.	$START_HOOK .= q# $_cf{'perlversion'} = 4;#;
    3.	とにかく
    	なんとかして、require sys/socket.ph ; だけをやらせる

    あー、でも まとめおくり で START_HOOK って存在しないので、2はまずい。
    #というわけで、msend.pl にもフックをつくりました。

[PREVIOUS CHAPTER] [NEXT CHAPTER]