[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 以
降はOKみたいです。
#変数のスコープとかの問題らしいのだが…

ちなみに、非常に機種依存です;_;。
ターゲットマシンの 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]