[mew-dist 27010] Re: IMAP関連

Kazu Yamamoto ( 山本和彦 ) kazu at example.com
2006年 6月 1日 (木) 16:25:18 JST


山本です。

> # wu-imapd は、1フォルダに3万通程度が限界のようですね。
> # ソースを見ると、いろいろ最適化できそうなのですが、パフォーマンスを
> # 向上させるためのパッチがどこかにあったりはしないのでしょうか?

IMAP サーバとして、WU を使うのは論外です。。。

> ・IMAP で %inbox を scan(?) すると Seen フラグが立ってしまう。
>   たぶん FETCH RFC822 をしているためだと思うのですが、Unseen の
>   まま保持したい人っていらっしゃらないのでしょうか。Mew で scan
>   してしまうと、Thunderbird から見ると全て Seen になってしまって
>   悲しいです。BODY.PEEK[] を FETCH すると Unseen が保持されると
>   思うので、とりあえずこの挙動が切替えられるようになっていると
>   嬉しく思います(最後に安直なパッチをつけておきます)。

これは後で調べてみます。

> ・(setq mew-imap-delete t) の挙動はよくわかりませんでしたが、
>   とりあえずデフォルトのままでも scan してメッセージが失われる
>   ことはなかったので困りませんでした。今は (setq mew-imap-delete nil)
>   にしています。デフォルトは nil の方が安全かなぁ、と思ったりしますが、
>   どうでしょう。

mew-imap-delete は、IMAP を POP 風に使う場合のみ、意味があります。
すなわち、"i" で +inbox にメールを取ってくる場合に作用します。

> ・scan の時にメールの本文も取りに行くのは遅いので、
>   (setq mew-imap-header-only t) を試してみました。速くて嬉しいです。
>   で、T のついたメッセージで I を押したときに、読み込まれたメッセージが
>   すぐに表示されるとさらに嬉しいのですが、今だと例えば I して . しないと
>   いけないのでしょうか? また n とかで次のメッセージに進んだときに、
>   自動的に I してくれるようにできると、さらに嬉しいかもしれません。

タイムリーですが、mew-int で要望があったので、昨日実装し、一晩寝かして
たった今 commit しておきました。

> ・IMAP からローカルへのリファイル
>   IMAP のフォルダ間でリファイルすれば良いことなのですが、IMAP の
>   サーバ上で Mew を使っているので、どちらからでもアクセスできる
>   環境になっています。で、ついつい区別無く操作してしまいますが、
>   IMAP からローカルへはリファイルできないんですね。

できません。"lc" でコピーします。

> ・まだ試していませんが(gnutls-cliをまだインストールしていない)、
>   IMAP/TLS (STARTTLS) には対応しているんでしょうか?

なぜ、gnutls-cli が出てくるのは分かりません。Mew は SSL/TLS 用に
stunnel を利用します。

IMAP/SSL は、問題なく使えます。IMAP/TLS は、stunnel がさぼっていて使え
るようになっていません。パッチは10分でかける程度です。以前、パッチを作
者に送ったんですが、梨の礫です。

#以前、stunnel の作者から KAME に IPv6 化の質問が来たのですが、こちら
#が梨つぶったそうです。だから、おあいこ。全然、記憶はないんだけど。。。

--かず

*** protocol.c-dist	Thu Oct 28 12:08:18 2004
--- protocol.c	Thu Oct 28 12:26:57 2004
***************
*** 40,45 ****
--- 40,47 ----
  static int pop3_server(CLI *);
  static int nntp_client(CLI *);
  static int nntp_server(CLI *);
+ static int imap_client(CLI *);
+ static int imap_server(CLI *);
  static int RFC2487(int);
  
  int negotiate(CLI *c) {
***************
*** 58,63 ****
--- 60,67 ----
          retval = options.option.client ? pop3_client(c) : pop3_server(c);
      else if(!strcmp(c->opt->protocol, "nntp"))
          retval = options.option.client ? nntp_client(c) : nntp_server(c);
+     else if(!strcmp(c->opt->protocol, "imap"))
+         retval = options.option.client ? imap_client(c) : imap_server(c);
      else {
          log(LOG_ERR, "Protocol %s not supported in %s mode",
              c->opt->protocol, options.option.client ? "client" : "server");
***************
*** 280,283 ****
--- 284,315 ----
      }
  }
  
+ static int imap_client(CLI *c) {
+     char line[STRLEN];
+ 
+     if(fdscanf(c, c->remote_fd.fd, "%[^\n]", line)<0)
+         return -1;
+     if(strncasecmp(line,"* OK",4)) {
+         log(LOG_ERR, "Unknown server welcome");
+         return -1;
+     }
+     if(fdprintf(c, c->local_wfd.fd, "%s", line)<0)
+         return -1;
+     if(fdprintf(c, c->remote_fd.fd, "tag STARTTLS")<0)
+         return -1;
+     if(fdscanf(c, c->remote_fd.fd, "%[^\n]", line)<0)
+         return -1;
+     /* should remove untagged line?  */
+     if(strncasecmp(line,"tag OK",6)) {
+         log(LOG_ERR, "Server does not support TLS");
+         return -1;
+     }
+     return 0;
+ }
+ 
+ static int imap_server(CLI *c) {
+     log(LOG_ERR, "Protocol not supported in server mode");
+     return -1;
+ }
+ 
  /* End of protocol.c */




Mew-dist メーリングリストの案内