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

[debian-devel:09621] Re: popularity-contest



佐野@浜松です。こんばんは。

Keita Maehara <maehara@debian.or.jp> writes:

> その際に official maintainer がどの JP Package を優先的に upload して
> いくかという参考にするため、popularity-contest というパッケージを利用
> して、パッケージの人気調査を行ないたいと思います。
> 
> 参加方法は、
> 
>   1. popularity-contest パッケージをインストールする。
>   2. /etc/popularity-contest.conf に MAILTO=popcon@debian.or.jp と記述。
> 
> と非常に簡単ですので、ぜひ参加してみてください。

自分は slink への移行に合わせて MTA を exim にして、ついでに
デフォルトのローカルオンリーな設定にしているので、上記の方法の
ままでは外へ送られません。

# この設定だと、ローカルでメールの設定をミスしても外部にエラー報告が
# まったく飛ばないので、一種の保険を効かせているようなものです。
# 先日は柳原さんからエラーメールが届きましたが、それ以外にも今まで
# ちょくちょく (中には数ヶ月〜半年以上前のメールに対して) エラーが
# 返ってくることがありました。どうしても直接外とやり取りする必要の
# あるシステム (メールサーバーとか) 以外は、MTA の設定をローカルオンリーに
# しておいたほうが安心です。(実は設定ミスって大量のエラーメールを
# ローカルに溜め込んだことのある奴 > ^^;;)

そこで、とりあえず自分宛てに送って、それを今まで数回手で転送して
いたのですが、いかにも面倒です。

自分が外へメールを出す時は、im の imput を使っているので、
なんとかそれを使う方法が無いか、考えてみました。

im の設定は個人毎なので、root で /etc/cron.daily を実行して
一般ユーザである個人の imput を使うのはちょっと手順が複雑に
なります。そこで、どうしようかな、と思っていたのですが、
 /usr/sbin/popularity-contest は一般ユーザでも実行できることに
気がついて、最初から一般ユーザの crontab に入れておけば済むと
思いつきました。

具体的には、以下の手順です。

1) まず /etc/popularity-contest.conf の MAILTO= の設定は
コメントアウトして、/etc/cron.daily/popularity-contest が
動作しないようにします。

2) 次に、一般ユーザで個人のツールを入れておく場所 ($HOME/bin) に
 /etc/cron.daily/popularity-contest の内容を編集した、以下の
スクリプト (popcon-cron) を置いておきます。

  --- $HOME/bin/popcon-cron ---
#!/bin/sh

POPCON=/usr/sbin/popularity-contest
MAILTO="popcon@debian.or.jp"
SENDMAIL="$HOME/bin/imput.popcon"

# Config file for Debian's popularity-contest package.
#
# MAILTO specifies the address to e-mail statistics to each
# night.  If you comment it out, the cron job will be disabled.
#
# MAILTO="apenwarr-survey@debian.org"
# MAILTO="popcon@debian.or.jp"

# don't run if this package is removed but not purged
if [ ! -f "$POPCON" ]; then
	exit 0
fi

# get configuration information
# . /etc/popularity-contest.conf

# don't run if MAILTO address is blank!
# if [ -z "$MAILTO" ]; then
# 	exit 0
# fi

# generate and transmit the popularity contest data
( echo 'From: <nobody@debian.org>';
  echo 'Subject: popularity-contest submission';
 echo;
 "$POPCON" ) | "$SENDMAIL" -oi -f nobody@debian.org "$MAILTO"

そして、メール送信用に、もうひとつ別のスクリプトを $HOME/bin に
用意しておきます。

  --- $HOME/bin/imput.popcon ---
#! /usr/bin/perl
require 5.004;
use strict;

my $myarg = "--JustQueuing=on ";


if (defined $ARGV[0]) {
    while (defined $ARGV[0]) {
      if ($ARGV[0] eq "-f") {
        shift @ARGV;
        my $name = shift @ARGV;
	$name =~ /^(.*)\\@(.*)$/;
        my $acnt = $1;
        my $dmin = $2;
        $myarg = $myarg . " --User='$acnt' --FromDomain='$dmin'";
      }
      if ($ARGV[0] eq "-F") {
        shift @ARGV;
        my $name = shift @ARGV;
	$name =~ /^\((.*)\)$/;
        my $gcos = $1;
        $myarg = $myarg . " --Name='$name'";
      }
      if ($ARGV[0] eq "-oi") {
        shift @ARGV;
        $myarg = $myarg . " --IgnoreDot=on ";
      }
      my $name = shift @ARGV;
      $myarg = $myarg . " $name";
     }
 }

my $mailer = "/usr/bin/imput --Config=nifty " . $myarg;

exec $mailer;

このスクリプトの imput の --Config オプションは、お使いの環境に
合わせて適切に設定してください。

# どちらのスクリプトも、ユーザに実行許可が必要です。
# chmod 755 (or 744 or 700) しておいてください。

あとは crontab -e で $HOME/bin/popcon-cron が適当な時間に
実行されるように設定します。昼間しか活動しないマシンなら
お昼休みとか、夕方とか。

 imput のオプションで --JustQueing=on としているので、imput の
送信キューに popcon メールが溜まるはずです。後はダイアルアップ
での接続時に送信するだけ。この部分はもともと /etc/ppp/ip-up.d 
経由でキューに溜まったメールを自動で送信するように設定してあった
ので、そのまま使っています。

> これにより毎日パッケージの利用状況が popcon@debian.or.jp に送信される
> ようになりますが、送信者は匿名になり、また送信された情報を人気調査以外
> の目的で使用することはありませんので、安心して参加してください。
> 
> 結果を公開できるようになったら、改めてこちらでアナウンスする予定です。

なるべくたくさんの方のデータが欲しいと思いますので、御協力を
お願いします。ダイアルアップ接続で exim をローカルオンリーの
設定にしてあっても、上記の方法で参加できます。

-- 
     #わたしのおうちは浜松市、「夜のお菓子」で有名さ。
    <xlj06203@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)