vine-users ML アーカイブ



[vine-users:059045] Re: 最近、 fetchmail での取り込みが出来なく なりました。

  • From: Shinichiro HIDA <shinichiro@xxxxxxxxxxxxx>
  • Subject: [vine-users:059045] Re: 最近、 fetchmail での取り込みが出来なく なりました。
  • Date: Wed, 19 Mar 2003 15:46:21 +0900
飛田です。

;; なんとなくそちらの状況わかって来たかも..

>>>>> In [vine-users : No.059026] 
>>>>>	"matsui" <matsui888@xxxxxxxxxxx> wrote:
> matsuiです。返事が遅くリまして誠に申し訳有りませんでした。

> KIKUCHI Junichiさんは[vine-users:058904]で書きました。
> >> MHは1ファイルにメールを纏める形式で、maildirはメール1つ1つファイルにする
> 方法
> >> ですね(既述済み)。
> > MH 形式も1メール1ファイルです。
> > そういう点では Maildir 形式と同じです(1メール1ファイルと言う点で)。
> スイマセン。そのようでした。
> MH形式…mewで使用される形式

mew だけではありません。MH 自体が MUA の機能を持った物ですし、nmh や 
mh-e 等は、今でも利用者がいるはず。また、Sylpheed など様々な MUA がこ
の形式を扱えます。man mh あるいは man nmh とかってありませんか?

cf. http://www.chem.eng.himeji-tech.ac.jp/~hayashi/internet/mh_guide.html
    http://www.ics.uci.edu/~mh/book/overall/howwor.htm

;; MH って Mail Handler の略だって記憶があるのですが、違いましたっけ..

で、~/Mail/hoge/1 みたいな整数の番号を付けて、1メール1ファイルで扱いま
す。

> maildir形式…qmailで使用され形式
> なのですね。

maildir は qmail と供に提唱されメジャーな形式になったのですが、現在、
maildir で配送出来るのは、正確に言うと qmail だけではないのです。
postfix でも maildir へ配送出来ますし、もちろん procmail も出来ます。
受信側(popd や imapd)でも、多くはないですが、幾つかの選択肢があります。

で、こいつは、その思想(というかコンセプト)から、メールを MH のように単
純な番号ではなく、time.pid.host のような長いファイル名(先のメールのリ
ンク参照)を付けて、1メール1ファイルで保存します。で、メールを失わない
ようにする為、tmp new cur という 3つのディレクトリを慎重かつ複雑に使い
ます。

> Shinichiro HIDAさんは[vine-users:058905]で書きました。
> >> これは/var/spool/mail/user01にメールが届いたからですよね。
> > で、自動的に、なんか何ってるのですよね? その仕掛けを調べてみると面白い
> > かも、と言ったつもりだったのですが。

> すいません。ちょっと分かりませんでした。
> procmailでは振分けに失敗した場合に/var/spool/mail/user01にそのメールを配送す
> るような仕様になっているのではないでしょうか?
> ~/Maildir/.procmail.logや/var/log/maillogにもそれらしきログは無いようです。

procmail は、.procmailrc で記述されたルールを上から順にマッチするか試
して、最後にどれにもマッチしないと、抜けます。なので、一番最後にデフォ
ルトの(ルールにマッチしないメールの)配送先を記述し、全てのメールをフォ
ローしてから抜けるようにします。

例えば、私の場合は、

# if it got to this point, put it in my new mail folder
:0 Hw
inbox/.

exit

こんな感じで、私は、~/Mail/inbox へ MH 形式で配送させています。

もし、maildir でやるなら、適当な(そちらの inbox 相当の)ディレクトリの
最後に / を付ける(最後に"." はつけてはいけない)ようになると思います。

;; このあたり、私は maildir は良く知らないので、ご自分で調べて下さい。

想像でしかないですが、これがちゃんと指定されて無い(あるいは効いてない)
んじゃありませんか? あるいは、どこかで /var/spool/mail/hoge へ配送され
るように指定しているとか、指定しているけど、そこがディレクトリが無いと
か、パーミッション等なんらかの不都合がある、とか.. それで、procmail を
抜けて、/var/spool/mail/hoge とかへ配送されるのでは..

;; procmail の ログは、VERBOSE=yes で取ってますよね?

このあたりは、読みづらいかもしれませんが、procmail, procmailrc,
procmailsc, procmailex あたりの man (あれば jman) をじっくり読んで、自
分の使おうとしている .procmailrc を繰り返し眺めてみるしかないと思います。

http://www.procmail.org/ からたどれるリンクも参照すると良いかもしれま
せん。(英語ですが)

> > man login.defs あたり。
> このマニュアルは無いの事でした。

;; あぁ、じゃ man login (Vine だと jman login ?) かな?

> >> え! 逆流ってPOPサーバに戻っちゃうんですか?
> > いえ、ML -> 誰かの spool -> 誰かが設定に失敗したfetchmail -> ML -> ルー
> > プ.. みたいな..
> MLってメールサーバの事ですかね?

MailingList のつもりでした。

> > man procmail は読まれましたか?
> > -d recipient ...

[...]

> 取り敢えずは。。。
> 「-d recipint
> これは明示的なデリバリモードになり、デリバリはローカルユーザ受取人になりま
> す。
> これは勿論、もしprocmailがroot権限をもっているなら(或いはprocmailが既に受取
> 人のeuidとegidで走っているならば)可能と言うだけです。

[...]

> という事ですよね(よく意味が分かりませんが)。

fetchmail や procmail をシステム全体の基幹として使う場合と、一般ユーザ
の権限で使う場合には、扱いが大きく異なります。で、一般ユーザ権限で間に
合う場合は、-d は使う必要はないと思いますが。

root 権限で動かす(あるいはシステムワイドに使う)のには、危険度が上がり
ますので、もっと慎重に(よく理解した上で)使った方が良いと思います。

;; もっとも -d には他の利用法もありそうですが。

> >>> そこを ls -l した結果とかは?
> >> ~/.fetchmailrcや~/.procmailrcは
> >> -rw------- user01 user01
> >> となっています。

> > なぜ、その後を省略されるのか分かりませんが、
> その後とはメールボックスの中ですかね。

> $ls -al

[...]

> drwx------    5 user01   user01       4096 Feb 19 17:22 .vine-users/
> -rw-r--r--    1 user01   user01         46 Nov 24 18:08 courierimapsubscribed
> -rw-r--r--    1 user01   user01       3290 Mar 16 14:25 courierimapuiddb
> drwx------    2 user01   user01     172032 Mar 16 14:25 cur/
> drwx------    2 user01   user01     143360 Mar 18 03:30 new/
> drwx------    2 user01   user01       4096 Mar 18 03:30 tmp/

ひょっとして courier-imapd 使ってますか?

> $ls -al
> drwx------    2 user01   user01     172032 Mar 18 03:49 ./
> drwx------   24 user01   user01       4096 Mar 18 03:49 ../
> -rw-------    1 user01   user01      36193 Feb 28 00:22 1046359353.2327.host1.dyndsn.net:2,S
> -rw-------    1 user01   user01       3693 Feb 28 00:22 1046359368.2333.host1.dyndsn.net:2,S
> -rw-------    1 user01   user01      36899 Feb 28 00:23 1046359386.2337.host1.dyndsn.net:2,
> -rw-------    1 user01   user01      43530 Feb 28 00:23 1046359394.2342.host1.dyndsn.net:2,
> -rw-------    1 user01   user01      87072 Feb 28 00:23 1046359418.2346.host1.dyndsn.net:2,S
> -rw-------    1 user01   user01        891 Mar 14 00:30 1047569400.2349.host1.dyndsn.net:2,
> -rw-------    1 user01   user01        869 Mar 15 02:30 1047663000.5418.host1.dyndsn.net:2,
> -rw-------    1 user01   user01       3203 Mar 16 20:47 1:2,S
> -rw-------    1 user01   user01       3853 Mar 15 22:47 2:2,
> -rw-------    1 user01   user01       4450 Mar 13 23:53 2:2,S
> -rw-------    1 user01   user01       3292 Mar 16 14:23 3:2,
> $

> となりました。(dyndsn.netはダイナミックDNSで取得したドメイン名です)

> > 配送されたメールのファイル
> > 名はどうなってますか? ~/.procmailrc で 指定する配送先が hoge/.  と
> > hoge/ では結果が異なる筈なので。

> 「hoge/.」とした場合、hoge@xxxxxxxxxxxxxxxxxxx宛てメールは上記のように
> 「2:2,S」や「2:2,」とかいうファイル名になるようです。
> 「hoge/」賭した場合には/var/spool/mail/user01ファイルに入るみたいです。

なぜ :2,S とか付いてるのかは、誰か(courier-imapd?)が maildir で扱おう
とした為ではないかと思うのですが、これ (1:2,S とか)、多分 MH で配送さ
れてますね。

配送された直後は、1 とかの単純な整数だったのではないかと想像します。

104756900.2349.host1.dyndsn.net:2,S とかの長ったらしい方は、maildir 形
式で配送されたっぽいです。すくなくとも、MH ではこういうファイル名は扱
いません。maildir の場合、"time.pid.host" な形式となるはずです。

;; maildir での配送は、昔、テストした程度なので、はっきり断言出来なく
;; て申し訳ないですが。

> > で、先のメールで最後に示したリンクは参照して頂けました?
> はい、「.ML.sylpheed/」という風に「.」は必要ないのですね。

そうです。それと、先のメールでは、 

[...]

>> やはり、/home/user01/Maildir/下ディレクトリに落としたい場合には
>> :0
>> * ^X-Ml-Name: hospital
>> .PC-Hospital/new/.
>> にしとかないといけないのではないですかね。

と書かれていて、.PC-Hospital/new/. とか指定されてた
様ですが、new tmp cur は、内部で使う物で、これらを指定するとお
かしな事になると思います。指定するのは、それら(new とか)の上位のディレ
クトリ(この例の場合 .PC-Hospital/)です。

> Shinichiro HIDAさんは[vine-users:058908]で書きました。
> > これももちろん参照して欲しいのですが、なかなか信じて貰えないようなので、
> > 追加してポインタを示してみます。慌てずにゆっくり読んでみて下さい。
> >  http://man.qmail.jp/jman5/maildir.html
> > 解くに "メイルが配られる様子" の所。
> > あと、
> >  http://www.kusm.kyoto-u.ac.jp/~yositomi/computer/qmail/qmail_guide.html
> > も、良くまとまっていて詳しいので、参考になるかと思います。

> ありがとうございます。これでchmod -tやchmod +tコマンドって何なのですかね。(t
> オプションってmanにも載ってないんですね)

 http://www.linux.or.jp/JM/html/gnumaniak/man1/chmod.1.html

手元(Debian sid)で man chmod すると、↑が出ます。
で、
       文 字 `rwxXstugo' は影響を与えるユーザーに対する新しいアク
       セス権を選択する: 読取り (r)、 [...]

あたりから下、"sticky bit" に注意して読んでみて下さい。
あと、google とかでも "sticky bit" とかで検索してみると良いでしょう。

> 兎に角、fetchamil+procmailで振分けを行なう場合には「.」はつけてはいけないの
> ですね。

なんだか、ここだけ読むと誤解を与えそうなので、補足します。


procmail を使って maildir 形式で配送する場合は、配送先のディレクトリ指
定で、.hoge/ の "/" の後に "." は付けてはいけない。最後は "/" (例:
.hoge/)で終る。

"/" に続けて "." を付ける(例: .hoge/.)と、procmail は MH 形式で配送する。

maildir 形式と MH 形式は、"1メール1ファイルで扱う" という部分は共通し
ているが、まったくの別物である。

あたりが良いのではないかと思います。

-- 
  Shinichiro HIDA  mailto:shinichiro@xxxxxxxxxxxxx
  GPG fingerprint = 5F2D 1656 FFF6 F691 A51C  5E61 E416 D398 470C 1CE9