Since: January 19, 2008
Time-stamp: "Mon Apr 28 17:25:15 JST 2008"


Mailing list と Google カレンダーの活用・設定


作成者: 木村哲士
tetsuji@yukawa.kyoto-u.ac.jp


基研素粒子グループのメンバーに対する Mailing list の活用と管理を まとめる。また基研行事を把握するツールとして Google カレンダーを使用し、 そのサービスの一つである自動配信システムの設定を紹介する。
後半では soronyi@yukawa アカウントを Mailing list として活用するための設定を記載する。

主旨

Mailing list の活用と管理
soronyi@yukawa の活用
転送先 email address の登録管理

Google カレンダーの使用
カテゴリー
更新方法
管理


Mailing list 設定
ファイル作成の準備
.forward の作成
.procmailrc の作成
forwardmail.pl と .forwardlist の作成
mlfilter.pl の作成


主旨

基研全体が共有するメーリングリスト「kiken-kouseiin@yukawa」は、素粒子グループ に特化した情報を配信するにはいささか不適当である。しかしやはり特化した 情報を共有できるシステムがあれば便利であろう。
基研全体の情報ではなく、基研素粒子論メンバーに特 化した共有すべき情報としては以下のものが考えられる(だろう):
  • セミナーや文献紹介の日程の通知の透明化
  • 素粒子分野に特化したビジターや研究会などの案内の通知の簡略化
  • カレンダー、及び行事通知の自動配信システムを共有

この、「特化した情報をメールにて通知し、かつ共有する」 目的を達成するためには新たにネットワークシステムを構築するか何かを しなければならない。ここに、構築作業を最小限にする方法がある。それは

soronyi _at_ yukawa.kyoto-u.ac.jp

というアカウントを、素粒子論メンバーに対する「Mailing list」として有効利用することである。 (2008年1月まで、このアカウントはしばらく「休眠状態」であった。) ここにメールを送ることで、基研素粒子論メンバーにメールが配信されれば良い わけだ。実に単純な仕組みだが、厄介な作業がある。それは「不要なメールは 配信しないように設定する」作業である。Google カレンダーの自動通知は便 利であるが、余計なものまで配信してくれる。その他基研計算機からのアナウ ンスも多重受信するのは避けたい。他にもいろいろ理由は生じるであろう (2008年1月24日現在ではこの2つが理由)。 概念図を描くとこんな感じ:

そんなわけで、手作りでフィルターを作りましょう、という流れになりました。
このシステムを有効に使用していきましょう。

[注意1] この Mailing list の活用は毎年度の soronyi@yukawa の更新を前提とします。
[注意2] 基研計算機室職員の方々はここの一切の設定を把握していません。
あくまで素粒子グループの内部での活動です。



[top]

Mailing list の活用と管理

soronyi@yukawa を Mailing list として設定する方法は 「Mailing list の設定」を参照すること。ここでは Mailing list の活用と、メンバーの email address の登録および管理を説明する。

soronyi@yukawa の活用

基本的にどんなアナウンスもありである。本文、題目共に日本語、英語が問題 なく表記できる。
2008月2月17日現在において頻度の高い使用例は次のものである:

  • Google カレンダーを用いた、当日の行事予定通知の自動配信メールを転送
  • 毎週水曜日に開かれるグループミーティングの議事録
  • Informal seminars の案内

    これ以外にも次の活用例を奨励したい:

    1: Seminar の日程が確定した時点で通知
    2: Journal club の通知
    3: Visitor 情報の通知

    上記 1:2: は Google カレンダーにスケジュールを迅速に反映させることが可能になる。 それぞれ、セミナー係(いれば)と Journal club 係が通知をその都度行ってほ しい。ここで、 Google カレンダーの更新についてのごく簡単な説明は[ここ]を参照。 上記 3: は滞在しているビジターの、メンバーに よる把握である。通知そのものは [ここ]にも掲載されているため必然ではないかもしれないが、通知があると交流がスムーズに進むと考えられる。これはビジターのホストに通知をお願いしたい。

    特にセミナーなど、Google カレンダーに反映される内容を Mailing list で 通知する場合は、Google カレンダーに誰かが更新し、管理するという責任が発生する。 これについては[ここ]を参照のこと。


    転送先 email address の登録管理

    soronyi@yukawa を Mailing list として活用するためにはもちろん登録が必 要である。登録の「手法」は 「forwardmail.pl と .forwardlist の作成」 に譲る。そこで紹介している様に、.forwardlist を更新すれば良いだけの設定になっている。 なお、ここでは soronyi@yukawa のパスワードを認 識している人、つまり管理責任者が一人いて、その人が更新などの管理を行う という前提で記述する。

    ここでは「誰を」「どのような場合に」登録するのかを考えたい

  • 基研素粒子メンバー
    登録されるべき第一義的なメンバーは、もちろん基研素粒子グループメンバー 全員(staff, postdoc, students)である。 このメンバーに対する更新頻度は非常に少ない。年度始めに新しい postdoc と大学院生が新規所属する時に更新する。postdoc に関しては、年度途中で基 研に異動してくる時があるので、その都度新規追加をするのを忘れないこと。

  • ビジター
    基研に1週間くらい滞在するビジターに対しては、 そのビジターのホストが個別に基研行事(セミナーや Journal club など)を通 知すれば問題はないであろう。 しかし長期ビジターに関してはこの作業は非常に大変であるため、Mailing list を活用した方が良い。この長期ビジターについては、 そのホストが少なくとも soronyi@yukawa 管理者にビジターの email address を通知し、Mailing list に反映してもらうように接触した方が良い。 この「業務」を簡略化するためにも、「soronyi@yukawa の活用」 で述べたように、ビジターの情報を Mailing list で通知するという活用を提 案したい。


    なお、ここの記述は2008年2月17日現在のものであり、また木村個人の考えに基づ く事を断っておく。
    基研素粒子グループの運営の一つとしてこの Mailing list をとらえると、 ここはメンバーからの意見をいただきたいところである。


  • [top]

    Google カレンダーの使用

    設定上、Google カレンダーは soronyitp _at_ gmail.com という google ア カウントで管理する。 適切なパスワードを入力してサインインに成功すると、 例えば次のような画面が現れる(クリックで拡大表示):

    設定の詳細は省略する。例えば [ここ] [ここ] [ここ] を参照。
    ただし、設定言語は「Englsih (US)」とする。 理由は、下で紹介される「毎日の予定リスト」を用いて配信されるメールの言 語を英語に設定しているという前提で、Mailing list の設定の「.procmailrc」 を作成しているからである。もし設定が英語でないと、 予定がない日を配信しないという設定がうまく機能 しなくなる。


    カテゴリー

    上記画面の左側に表示される 一覧がカレンダーのカテゴリーである。 soronyitp@gmail が作成したカテゴリーは次の とおり(2008年2月18日現在):

    Seminar 基研セミナーのうち素粒子論に特化したものを掲載。
    Conferences/Workshops 基研研究会や国内の関連する研究会、(国際)会議を掲載。
    Defense 修士論文発表会や博士論文発表会などのカレンダー(年度末のみ主に使用)。
    Group meeting 基研素粒子グループのメンバーが集まっていろいろな事を決めたり紹介したりする会合。
    Informal Seminars 例えばインフォーマル勉強会を掲載。 新規で立ち上げる勉強会なども掲載可能。
    Journal Club 素粒子グループの文献紹介の日程、講演者、タイトルと文献を掲載。
    Lunch meeting 毎週水曜日に行われている昼食会のカレンダー。講演者を記載。
    Visitor Schedule ビジターの滞在日程リスト。(2008年2月14日現在、この管理は大変であると認識。 外部非公開。)
    YITP Colloquium 基研コロキウムはセミナーと独立にリストを作成。
    YITP events お茶会や消防訓練など、基研全体のイベントのうち特に重要なものを掲載。
    テスト 名前そのままのテストカレンダー。外部非公開。

    他に、有益なカレンダーをインポートすることで「他のカレンダー」に掲載さ れるものがある。とりあえずここでは次をインポートしている:

    日本の祝日 基研のイベントを効率よく決定するためにとても重要。

    ここで掲載されているカテゴリーは、Google カレンダー運営開始当初に用意 したものである。運営するに従い、他のカテゴリーが必要と感じたら適宜追加 すれば良い。

    ここに掲載されたカテゴリーを用いて、Google カレンダーの自動通知システ ムを活用する。実は各イベント毎に「reminder」の設定が可能で、 「5分前」「10分前」から始まって「3時間前」「12時間前」などが揃っている。 しかしこれを自動配信するように設定すると、 各イベント毎に1通のメールが配信されてしまうの で、受信する側としてはかなり迷惑である。そこで代わりに目をつけたのが、 カテゴリー毎に設定できる「毎日の予定リスト」である。これは 最初の画面 の左下にある「カ レンダーの管理」をクリックして、次の画面を表示させてから設定する(クリッ クで拡大):

    各カテゴリーの右側に「通知」という欄が見えるので、それをクリックすると、 通知方法のリストが表示される。この欄の一番下にある「毎日の予定リスト」 にチェックを入れておくだけで良い。チェックされたカテゴリーの予定は、毎 日午前5時11分に Google カレンダーから 一つのメールに情報をまとめられて配信される。 なお、予定がない日も配信されているが、これは soronyi@yukawa に送信されたのち、このアカ ウントでフィルターをかけることで基研素粒子メンバーには転送されないようにしている。 (「.procmailrc」を参照。)

    2008年2月19日現在でこの「毎日の予定リスト」のチェックを入れているのは 次のカテゴリーである:
    Defense, Group meeting, Lunch meeting, YITP events, YITP Colloquium, Informal Seminars, Seminar, Journal Club


    更新方法

    カレンダーに記載されるイベントの追加更新をしよう。画面左上にある「予定を作成」をクリックすると 次の画面が登場する(クリックで拡大):

    ここではすでに記入したものを紹介している。一目瞭然だ。記載する情報はこ れで大体十分だと思われる。記載に関して細かなルールはいらないだろうが、 困ったときは前例を見れば良い。


    管理

    カレンダーの更新方法は上で記載されているが、問題は「誰が」更新するのか? である。やはりここは担当者を決めて、責任を持って管理をお願いしたい。 2008年2月17日現在は、soronyi@yukawa と soronyitp@gmail のパスワード管 理などの関係上、一切の更新を木村が行っているが、この役割を少数ではあるが複数のメンバーに担ってもらいたい。

    更新すべきカテゴリーを次の2系統に分けて考えよう:

    系統1: Seminar, Journal Club, YITP Colloquium, Informal Seminars
    系統2: Conferences/Workshops, Defense, Group meeting, Lunch meeting, YITP events

    「系統1」は担当者としてその行事の運営者にお願いしたい。 つまりここでは、円滑な運営をするためにも
    素粒子グループのセミナーを統括する人
    を決め ていただきたい。Journal Club はその担当の学生、YITP Colloquium は笹倉 さんに更新をお願いしたい。Informal Seminars に関しては、その運営者にお 願いしたい。

    「系統2」の更新担当者として
    Google カレンダーを統括する人
    を一人決めて、そ の人に管理してもらいたい。特に問題がないようであれば、2008年2月現在、 グループミーティングの書記を担当している学生達(M1)にこの更新をお願いし たい。

    それぞれの担当者は、Google カレンダーを更新するために soronyitp@gmail のパスワードを把握して、 運営にあたってもらいたい。ここでは soronyi@yukawa のパスワードまで認識する必 要はない。



    [top]

    Mailing list の設定

    ここでは基研のアカウント soronyi@yukawa を Mailing list の送信アドレスとして使用するための設定を紹介する。 前提としてここの設定更新を行う人は soronyi@yukawa のパスワードを認識し ておく事。

    ファイル作成の準備

    ここの作業は yukawa server 上で行うため、操作は UNIX コマンドである。 なお定義として、ここでは
    % command ...
    は通常のユーザー(つまり soronyi@yukawa)でコマンドを実行することを表す。

    仮定として soronyi@yukawa というユーザーは mew (emacs 上などで起動するメール送受信アプリケーション) を通じて作業を行っているとする。 なお、メールは /home/usr10/soronyi/Mail/ に格納されるとする。これらの情報はすぐ下で定義する 「.procmailrc」 で確認する。
    お話ついでに、受信するメールの格納フォルダとして次の 2 つをあらかじめ 用意しておこう:
    soronyi/Mail/GoogleCalendar
    soronyi/Mail/yitpnetwork
    両者ともその役割を .procmailrc に見出せる(はずである)。

    メールの内容を判別しつつ転送させるには最低でも
    .forward
    .procmailrc
    といった 2 つのファイルが必要で、かつこれらがきちんと機能する必要があ る(yukawa server では procmail は機能する)。
    ここではそれらの作成を説明する。 ただしこれらの一般的な定義、解説などは省略。 例えば [ここ] [ここ] [ここ] [ここ] [ここ] を参照すること。


    .forward の作成

    soronyi のホームディレクトリ /home/usr10/soronyi に、以下の内容でファイル .forward を作成する(file はこちら):
    "|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 #soronyi"


    .procmailrc の作成

    soronyi のホームディレクトリ /home/usr10/soronyi に、以下の内容で .procmailrc を作成する(file はこちら):
    # setting .procmailrc (2008 1/19, by Tetsuji Kimura)
    # setting Log
    SHELL=/bin/tcsh
    PATH=/home/usr10/soronyi/bin:/usr/bin:/usr/local/bin
    LOGFILE=$HOME/procmail.log
    # setting folders to keep mails
    MAILDIR=/home/usr10/soronyi/Mail/
    # setting the default folders
    DEFAULT=/home/usr10/soronyi/Mail/inbox/.
    # define the Lock files
    LOCKFILE=/home/usr10/soronyi/.lockmail
    # other settings (since 2008 1/19, last update: 2008 4/28)
    
    :0 Wh: msgid.lock
    | formail -D 8192 msgid.cache
    
    # no events in Google calendar
    :0 
    *^Subject: .*no.*
    *^From: .*calendar-notification@google\.com
    GoogleCalendar/.
    
    # from computer network, YITP
    :0
    *^From: .*comproom@yukawa\.kyoto-u\.ac\.jp
    sasakura _at_ yukawa.kyoto-u.ac.jp
    
    # from computer network, YITP
    :0
    *^From: .*admin@yukawa\.kyoto-u\.ac\.jp
    sasakura _at_ yukawa.kyoto-u.ac.jp
    
    :0 fw
    | /home/usr10/soronyi/bin/mlfilter.pl
    
    :0 c
    | /home/usr10/soronyi/bin/forwardmail.pl
    
    # keep Google calendar mails in GoogleCalendar folder
    :0 
    *^From: .*calendar-notification@google\.com
    GoogleCalendar/.
    
    :0 E
    $DEFAULT
    
    このファイルの解説をごく簡単に行っておこう:
    email の格納ディレクトリは /home/usr10/soronyi/Mail/ であり、その中の inbox/ が通常メールの格納先で ある。
    受信メールの操作記録を /home/usr10/soronyi/procmail.log というファイルに上書き 保存する。
    そしてレシピであるが、それぞれ確認する。最初のレシピ

    # no events in Google calendar
    :0
    *^Subject: .*no.*
    *^From: .*calendar-notification@google\.com
    GoogleCalendar/.
    の操作は、受信メールの subject (タイトル) に no という文字列が含まれつつ、かつ送信アドレスが calendar-notification_at_google.com の時、そのメールは soronyi/Mail/GoogleCalendar/ フォルダに格納され、操作を終了する(転送しない)。
    ちなみに、ここでは Google カレンダーの設定言語が 「English (US)」であるという前提がある。例えば もし日本語の設定だと、この」「no」という文字列が含まれないので、 配信されてしまう。Google カレンダーの設定言語毎にここの .procmailrc に 「配信ないという禁止事項」を列挙するのは馬鹿げているので、 Google カレンダーの設定言語は必ず「English (US)」 を選択すること。
    次のレシピ
    # from computer network, YITP
    :0
    *^From: .*comproom@yukawa\.kyoto-u\.ac\.jp
    sasakura _at_ yukawa.kyoto-u.ac.jp
    の定義では、受け取るメールの送信アドレスが comproom_at_yukawa.kyoto-u.ac.jp の時、これは soronyi@yukawa で格納させるのではなく、笹倉さんに転送する様に設定されている(2008 1/24)。

    上記条件に沿わない時(つまり転送されるべきメールの時)、次のレシピ

    :0 fw
    | /home/usr10/soronyi/bin/mlfilter.pl
    に従い、受け取るメールを /home/usr10/soronyi/bin/mlfilter.pl という下記で定義するファイルに渡しつつ、
    :0 c
    | /home/usr10/soronyi/bin/forwardmail.pl
    で、 /home/usr10/soronyi/bin/forwardmail.pl というファイルに作業を渡す。 この作業が実質的に Mailing list の機能を果たしており、登録されている email address に、soronyi@yukawa が受け取ったメールを転送する。 (forwardmail.pl の説明はここmlfilter.pl の説明はここ。)

    .procmalircを作成後、
    % chmod 600 .procmailrc
    としておこう。


    forwardmail.pl と .forwardlist の作成

    soronyi@yukawa に送られたメールを転送する作業を行うファイルがこの forwardmail.pl である。 まずホームディレクトリ /home/usr10/soronyibin/ ディレクトリを作成して、 forwardmail.pl というファイル名で以下の文章を保存する (file はこちら:小川軌明氏提供):
    #!/usr/local/bin/perl
    #
    # forwardmail.pl
    # 2008.02.16 by OGAWA Noriaki
    # 2008.02.20 last updated by OGAWA Noriaki
    #
    
    $HOME = $ENV{'HOME'};
    $addresslistfile = "$HOME/.forwardlist";
    $rmailpath = "/usr/bin/rmail";
    
    if(!open(AL, "<$addresslistfile")){
      exit -1;
    }
    flock(AL, 1);
    @addresslist = <AL>;
    close AL;
    
    $addresses = join(" ", @addresslist);
    $addresses =~ s/#.*?(\n|\r|$)+/\n/g;   # remove comments
    $addresses =~ s/(\s|,)+/ /g;
    
    if(!open(RMAIL, "| $rmailpath $addresses")){
      exit -1;
    }
    while(<>) {
      print RMAIL;
    }
    close RMAIL;
    
    そして転送されるべき email address が記載される .forwardlist という ファイルを、ホームディレクトリ /home/usr10/soronyi に作成する:
    # staff
    someone@yukawa.kyoto-uv.ac.jp     # Someone, None
    somebody@gmail.co.ip              # Somebody, Hello
    sugoihito@arxiv.ac.jq             # Sugoi, Hito
    
    # postdoc
    abcde@yugawa.ne.jp                # ABC, DE
    
    # student
    xyzzz@sleepy.ca.kp                # XY, ZZZ
    
    
    ここでは email address をただ羅列するだけで良い。羅列の方法は「半角ス ペースで」もしくは「改行で」もしくは「半角カンマ(,)」もしくは Tab で区切りを入れる。 ここでは例として改行で email address 同士の区切りを入れている。 さらに # 記号でコメントアウトにもなる。 (例として挙げているメールはもちろん架空のものである。)
    forwardmail.plを作成後、
    % chmod 700 forwardmail.pl
    としておこう。同様に .forwardlist に対しては
    % chmod 600 .forwardlist
    としておく。


    mlfilter.pl の作成

    さらに soronyi@yukawa からのメールに [soronyi 073] といった番号を与える設定を行う。 /home/usr10/soronyi/bin/ ディレクトリの中に mlfilter.pl というファイル名で以下の文章を保存する (file はこちら:小川軌明氏提供):
    #!/usr/local/bin/perl
    #
    # mlfilter.pl
    # 2006.07.28 by OGAWA Noriaki
    # 2008.02.20 last updated by OGAWA Noriaki
    #
    
    $mlname = "soronyi";
    $mladdress = "soronyi\@yukawa.kyoto-u.ac.jp";
    
    $appendstr = "[$mlname %03d] ";
    $appendstrreg = "\\[$mlname [[:digit:]]+\\] ";
    
    $HOME = $ENV{'HOME'};
    $mlnumfile = "$HOME/.mlnum";
    $mlfooterfile = "$HOME/.mlfooter";
    
    open NUM, "+<$mlnumfile";
    flock(NUM, 2);
    $mlnum = <NUM>;
    $mlnum ++;
    truncate(NUM, 0);
    seek(NUM, 0, 0);
    print NUM $mlnum;
    close NUM;
    
    $nosubject = 1;
    
    while(<>) # header
    {
    	if(/^$/) { # end of the header.
    		if($nosubject) {
    			printf "Subject: $appendstr\n", $mlnum;
    		}
    		printf "Reply-To: %s\n", $mladdress;
    		print "\n";
    		last;
    	}
    	elsif(/^Subject: (.*)$/) {
    		$nosubject = 0;
    		$_ = $1;
    		$replyregex = "^(((RE:|Re:|re:|FW:|Fw:|fw:)\\s*)*)$appendstrreg(.*)\$";
    		if(/$replyregex/) {
    			printf "Subject: $appendstr", $mlnum;
    			print "$1$+\n";
    		}
    		else {
    			printf "Subject: $appendstr", $mlnum;
    			print "$_\n";
    		}
    	}
    	elsif(/^Reply-To: (.*)$/) {
    	}
    	else {
    		print;
    	}
    }
    
    while(<>) # content
    {
    	print;
    }
    
    # add footer
    if(!open(FT, "<$mlfooterfile")) {
    	exit 0;
    }
    flock(FT, 1);
    while(<FT>) {
    	print;
    }
    close FT;
    
    ここで、Mailing list soronyi@yukawa に投 稿されるすべてのメールに対し、 「Calendar: Particle Theory Group, YITP」の URL とこのマニュアルの URL の情報が自動添付される仕様になっている。具体的には ホームディレクトリ /home/usr10/soronyi.mlfooter という名前で以下の内容を保存す る:
    
    
    ===== Mailing List for Particle Theory Group, YITP =====
    
    Calendar page:
    http://www2.yukawa.kyoto-u.ac.jp/~soronyi/calendar.html
    
    Manual of this mailing list:
    http://www2.yukawa.kyoto-u.ac.jp/~soronyi/Manual_soronyi/manual.html
    
    上の二行を空欄にしているのは、メールの本文との区別を明確にするためであ る。なお、この footer は 2008年2月20日現在、まだカレンダーとマニュアル の所在がそれほど認知されていないであろう事を考慮したものになっているが、 完全に軌道に乗ればマニュアルの URL 情報は特に必要なくなるであろう。
    そしてこの .mlfooter についても
    % chmod 600 .mlfooter
    としておこう。

    ちなみに、mlfilter.plの文頭にある
    $appendstr = "[soronyi %03d] ";
    では実際の番号の表示を定義している。ここでは 001 から始まるが、もし 1 から始めたいなら
    $appendstr = "[soronyi %d] ";
    にしておけば良い。さて、 mlfilter.pl の作成が終わるとこれも
    % chmod 700 mlfilter.pl
    としておこう。これだけでは番号はつかないので、ホームディレクトリにて次 の操作を行う:
    % touch .mlnum
    % chmod 600 .mlnum
    この「.mlnum」が番号を記憶するファイルである。これを削除して新たに作る と、番号も最初からとなる。



    [top]