[Mew-dist 644] Re: refile log
Yoshinari NOMURA
nom at example.com
1997年 3月 11日 (火) 12:10:32 JST
乃村@九大・情報です。mew-refile も直そうと思いつつ。。
> 使い勝手としては、
> ・自分で指定した auto-folder-alist にマッチしたときと、message-id,
> From で guess したときで、ちょっとした違いがあるとうれしい。
> 確認のアクションが増えるのはやだけど、ちょっと注意したい
priority の低いルールでマッチしたと、無意識のうちに ret たたいて
たりして、どこに行ったのか分かんなくなったりしますね。あくまでも
guess なので、ちゃんと確認しないといけないのですが、つい。
デフォルトで multi-refile にするってのはどうかと思ってます。する
と、guess の方法自体も変わるかなと。
+from/foo はデフォルトで入るとか、+date/yymm を guess してしまう
とか。summary-exec が遅くなりそうですが。
> とはいえ、最近は、やはり auto-refile + unseen mark の設定がよ
> さそうに思えてきたので、暇ができたらチャレンジしてみようと思っ
> ています。
出先で refile するのが面倒なときに使っている script です。以下の
ような ~/.arefrc を書いて、
To|Cc nom NOP
>From ushijima|cheng NOP
To|Cc kyushu-u-admin +adm/kyushu-u-admin
To|Cc wide\@wide +wide/wide
To|Cc mew-dist +wide/mew-dist
>From uucp\@kyu-cs +adm/uucp
>From news\@goma +rec/nspool
% aref |sh
ってやります。mew-dist は置いとこと思ったら、
% aref | grep -v mew-dist | sh
です。お試し下さい。
--
nom
#!/usr/local/bin/perl
# $Id: aref,v 1.4 1996/06/15 18:05:43 nom Exp nom $
#
# aref - auto refile.
#
# Usage: aref [+SrcFolder] | sh
#
# default +SrcFolder is +inbox
#
# ${HOME}/.arefrc -- see below.
#
# To|Cc nom NOP ; Don't refile.
# To|Cc ip-connection +ip-connection
# from monkey +animal
# : : :
# .* .* +misc
#
# todo:
# get $MailDir from .mh_profile or env MH.
# accept normal refile options.
# various error check.
# Global variables.
# %RefileTable;
# @RefileKey;
$USER = $ENV{'USER'} || $ENV{'LOGNAME'} || `whoami`;
$HOME = $ENV{'HOME'};
$USER =~ s/\n$//;
$SrcFolder = "inbox";
$SrcFolder = $1 if ($ARGV[$[] =~ /^\+(.*)/);
chop($MailDir = `mhpath +`);
$RcFile = "$HOME/.arefrc";
# Make %RefileTable, @RefileKey
#
&ReadRc($RcFile);
# Make @FieldArray and call Refile
#
foreach (`pick +$SrcFolder`)
{
chop;
$CurFileName = "$MailDir/$SrcFolder/$_";
$CurMessNo = $_;
open(MAIL, $CurFileName);
while(<MAIL>){
chop;
last if (/^$/);
if (/^\S+:/){
push(FieldArray, $_);
} elsif (/^\s/){
$FieldArray[$#FieldArray] .= $_;
}
}
close(MAIL);
&Refile($SrcFolder, $CurMessNo, @FieldArray);
undef(@FieldArray);
}
# Make %RefileTable, @RefileKey
#
sub ReadRc {
local($field, $key, $folder, $regexp);
local($rcfile) = $_[$[];
open(AREFRC, $rcfile) || die "Can't open $rcfile";
while(<AREFRC>)
{
next if (/^$/ || /^#/);
chop;
($field, $key, $folder) = split;
$regexp = "^($field):.*($key)";
$RefileTable{$regexp} = $folder;
push(RefileKey, $regexp);
}
close(AREFRC);
}
# Decide destination folder.
# Use, %RefileTable, @RefileKey.
#
sub Refile
{
local($k, $f);
local($srcfolder, $messno, @field) = @_;
foreach $k (@RefileKey){
foreach $f (@field){
if ($f =~ /$k/i && $RefileTable{$k} ne "NOP" ){
print "refile $messno -src +$srcfolder $RefileTable{$k}\n";
return $RefileTable{$k};
}
}
}
return 0;
}
Mew-dist メーリングリストの案内