[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]