[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00246] Re: ML archive




古川竜雄です。

メールのアーカイブを Web で公開する件です。

Web の公開そのものに関しては異論はないようですね。FreeWnn はオープンな
開発体制をとりたいので ML のアーカイブがオープンになるのはいいことだと
思います。

メールアドレスの件ですが、これは「別に伏せなくてもいいよ」って感じです
ね。でも、「メールアドレスを公開したくない人が FreeWnn の ML で発言し
なくなる」のは FreeWnn にとって損なので、やっぱ念のためメールアドレス
は伏せる方向でいきたいと思いますがどうでしょう? (なんか強引な気がしな
いでもないけど、「メールアドレスを書き換えるな」という人もいなかったの
で別にいいですよね?)

ただ、当初思っていたほど神経質になる必要はないのだということがわかりま
したので、

    1. From, To, Cc, Sender といったメールアドレスが入るヘッダにのみ
       書き換えを行なう。

    2. 本文は書き換えない。書き換えを行なうことで情報の質が下がるのを
       避けるため。(ML にはパッチも流れるが、これが書き換えの対象にさ
       れるとアーカイブの価値が下がってしまう)

    3. 書き換えは、メールアドレスの @ の右側を伏せるという形にする。

           frkwtto@osk3.3web.ne.jp → frkwtto@XXXX

       @ の左側を見せることで誰が誰に書いたメールなのかを明らかにでき
       る。(当初は XXXX@XXXX だったので何も情報が残らなかった)

    4. というわけなので、メールアドレスを公開したくない人は本文やシグ
       ネチャにメールアドレスを書かないようにしましょう。

というのでどうでしょうか?


私> Spam 業者においしい思いをさせるのはちょっと気に入らないので、以下
矢吹さん>                                                        ^^^^
私> のようなフィルタを通して
矢吹さん>   ^^^^^^^^^^^^^^^^

矢吹さん> これはどれでしょうか?:-)


すいません。ねぼけていたようです。今度はちゃんとつけますので。

# はじめに添付するはずだったものよりも数段複雑になりました。:-)

#!/usr/local/bin/perl
#
#   FreeWnn ML 用フィルタ
#
#                         古川竜雄(frkwtto@osk3.3web.ne.jp) 作
#
#  
#   $REPLACEHEADER に指定されたヘッダのみに対し、メールアドレスの秘匿を
#   行なう。
#
#  【使い方】
#
#        $ mlfilter < メール
#
#    もしくは
#
#        $ mlfilter メール
#
#   結果は標準出力に出る。
#

use strict;

# メールアドレスとみなす正規表現
my $MAILADRS = '[\w\.\-]+\@[[\w\.\-]+';

# 置き換えを行なうヘッダ
my $REPLACEHEADER = 'From|To|Cc|Sender';

# 置き換えを行なう関数
#
#  この関数には、メールアドレスが引数として渡る。
#  これを好きな文字列に書き換えることでメールアドレスを伏せることができる。
#
sub changename {
  my ($mailadrs) = @_;
  my $retval;

  $mailadrs =~ m/\@/;
  my $username = $`;
  my $fqdn = $';

  #
  #  ユーザー名が freewnn の場合は ML のアドレスだから伏せる必要なし
  #  それ以外の場合はユーザーだから伏せる必要がある。
  #
  if ($username ne "freewnn") {
    $fqdn = "XXXX";
  }

  return $username.'@'.$fqdn;
}

# ============================================================================

#  
#  ここからプログラム本体
#

#
#  ヘッダ行の処理
#
my $mustchange = 0;
while (<>) {
  last if (! m/\S/);  # 空白行がきたらヘッダはおわり

  # 行頭に空白がない行はヘッダ行であるから、置き換えの対象にするか
  # どうかを判断する必要がある。
  # 空白で始まる行は継続行であるから、前回の結果を引き継げば良い。
  if (! m/^\s/) {
    if (m/^($REPLACEHEADER)/i) {
      $mustchange = 1;
    } else {
      $mustchange = 0;
    }
  }

  if ($mustchange) {
    s/$MAILADRS/changename($&)/ge;
  }

  print $_;
}

#
# ヘッダと本文を区切る空白行の出力
#
print $_;

#
#  本文の出力
#
while (<>) {
  print $_;
}

#
#
#
exit 0;

#
#  【メモ】
#
#   ヘッダすべてを対象にしないのは、References, Message-ID, In-Reply-To
#   を書き換えたくないから。これらは話の筋を追うために必要なので。
#   (ML の Web アーカイブにその機能が追加されるかどうかは知らない)
#   
#   本文や、シグネチャに書かれるメールアドレスは秘匿されない。秘匿され
#   るのはあくまでも $REPLACEHEADER に指定されたヘッダのみである。
#
#   本文のメールアドレスを秘匿しないのは、メールアドレス以外のものまで
#   書き換えられることで情報の質が下がるのを避けるため。
#
#   シグネチャに書かれるメールアドレスを秘匿しないのは、技術的に困難な
#   ため。"draft-ietf-usefor-article-00" には一応 "-- " 以降がシグネチャ
#   であると定められているらしいが、メールにも適用されるものなのか私は
#   知らないし、仮にそうであったとしても "-- " をシグネチャの区切りに
#   使っている人は少ないので、頑張って実装しても効果ははあまりないと思う。




-- 
古川竜雄 (frkwtto@osk3.3web.ne.jp) / FreeWnn Project