NTLM authentication module for IMAP

岡田 健一 / Kenichi OKADA okada @ opaopa.org
2001年 2月 17日 (土) 06:30:17 JST


おかだです。

お世話になります.

In the message <sgvgqaucul @ opaopa.org>
okada @ opaopa.org (岡田 健一 / Kenichi OKADA) wrote:

> とりあえず、slim-1_14 にcommitしました.
> commit しただけで、まだ使える状態ではないです.
> 今からいじってみます.

いじっている途中のものが、
cvs -d ":pserver:anonymous @ cvs.m17n.org:/cvs/root" co -r slim-1_14 flim
にあります.

> また既存のものは修正を加えたくなかったのですが、
> 	wl-2.4.1/elmo/elmo-imap4.el
> 	wl-2.4.1/elmo/elmo-util.el
> 	wl-2.4.1/utils/sasl/lisp/sasl.el
> を変更しています。

本体にコミットすべく、いろいろいじっていたのですが、
いくつか質問があります.

1. sasl-next-step-exists-p が新設されていますが、
   sasl-next-step ではだめですか?
2. わたしもところでは、elmo-get-passwd-or-hash でいくつか
   問題が起りました.
   hash-func が Non-nil の場合、添付1のようなエラーが出ました.
   hash-func が nil の場合、添付2のようなエラーが出ました.
   ;; これは簡単な修正で直りそうです.
   一番問題なのは、sasl-ntlmがロードされた後、
   sasl-passwd-hash-function は 'ntlm-get-password-hashes と
   なりますが、以後 別の認証方式を使おうが全部 hash されてしまう
   のではないでしょうか?
3. そもそも、elmo-get-passwd-or-hash の hash 部分は、elmo の担当でしょ
   うか? ntlm.el 側で持った方がいいような気がします.

コードを読んだだけで、実際のサーバに対してテストしていないので、
間違っていたらごめんなさいです.

あと、いまさらですが、scram-md5 も使えるようにしてみました.
あいかわらず、わたしのところのqpopperは壊れているようで、
認証に成功しないのですが、どなたか認証に成功したら教えてください.
;; qpopper は SASL の実装には消極的なように感じます.

-- 
岡田 健一  URLs: mailto:okada @ opaopa.org
	   	 http://www.opaopa.org

-------------- next part --------------
Signaling: (args-out-of-range "HOGE" 4)
  smb-str-to-key("HOGE")
  smbhash([75 71 83 33 64 35 36 37] "HOGE" t)
  smbdes-e-p16("HOGE")
  smb-passwd-hash("hoge")
  ntlm-get-password-hashes("hoge")
  apply(ntlm-get-password-hashes "hoge")
  (cons (apply hash-func (cons passwd nil)) nil)
  (setq entry (cons (apply hash-func ...) nil))
  (if hash-func (setq entry (cons ... nil)) (setq entry (elmo-base64-encode-string passwd)))
  (if pair (if (stringp ...) (elmo-base64-decode-string entry) (car entry)) (setq passwd (elmo-read-passwd ... t)) (if hash-func (setq entry ...) (setq entry ...)) (setq elmo-passwd-alist (append elmo-passwd-alist ...)) (if elmo-passwd-life-time (run-with-timer elmo-passwd-life-time nil ...)) (car entry))
  (let (pair entry passwd) (if (not elmo-passwd-alist) (setq elmo-passwd-alist ...)) (setq pair (assoc key elmo-passwd-alist)) (if pair (if ... ... ...) (setq passwd ...) (if hash-func ... ...) (setq elmo-passwd-alist ...) (if elmo-passwd-life-time ...) (car entry)))
  elmo-get-passwd-or-hash("IMAP:kokada/plain @ murasak:143" ntlm-get-password-hashes)
  eval((elmo-get-passwd-or-hash "IMAP:kokada/plain @ murasak:143" sasl-passwd-hash-function))
  eval-interactive((elmo-get-passwd-or-hash "IMAP:kokada/plain @ murasak:143" sasl-passwd-hash-function))
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp)

-------------- next part --------------
Signaling: (wrong-type-argument listp "aG9nZQ==")
  car("aG9nZQ==")
  (if pair (if (stringp ...) (elmo-base64-decode-string entry) (car entry)) (setq passwd (elmo-read-passwd ... t)) (if hash-func (setq entry ...) (setq entry ...)) (setq elmo-passwd-alist (append elmo-passwd-alist ...)) (if elmo-passwd-life-time (run-with-timer elmo-passwd-life-time nil ...)) (car entry))
  (let (pair entry passwd) (if (not elmo-passwd-alist) (setq elmo-passwd-alist ...)) (setq pair (assoc key elmo-passwd-alist)) (if pair (if ... ... ...) (setq passwd ...) (if hash-func ... ...) (setq elmo-passwd-alist ...) (if elmo-passwd-life-time ...) (car entry)))
  elmo-get-passwd-or-hash("IMAP:kokada/plain @ murasak:143" nil)
  eval((elmo-get-passwd-or-hash "IMAP:kokada/plain @ murasak:143" nil))
  eval-interactive((elmo-get-passwd-or-hash "IMAP:kokada/plain @ murasak:143" nil))
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp)


More information about the Emacs-mime-ja mailing list