Giter VIP home page Giter VIP logo

flim's Introduction

Wanderlust - Yet Another Message Interface on Emacsen

Wanderlust is a mail/news management system with IMAP4rev1 support for Emacs. It was originally developed by Yuuichi Teranishi.

For documentation, see also: bundled document and Wanderlust on EmacsWiki

Features

  • Implementation in elisp only.

  • Support of IMAP4rev1, NNTP, POP(POP3/APOP), MH and Maildir.

  • Integrated access to messages based on Folder Specifications like Mew.

  • Key bindings and mark processing like Mew.

  • Management of threads and unread messages.

  • Folder mode to select and edit subscribed folders.

  • Message cache, Disconnected Operation.

  • MH-like Fcc (Fcc: %Backup is possible).

  • Full support of MIME (by SEMI).

  • Draft editing of mail and news as a same interface.

  • Icon based interface for the list of Folder.

  • Skip fetching of a large message part of MIME(IMAP4).

  • Server side searching (IMAP4), internationalized searching is available.

  • Virtual folder.

  • Compressed folder.

  • Automatic expiration of old messages.

  • Automatic refiling.

  • Draft templates.

Installation

See: `INSTALL'

Mailing List

You can get information and help via the mailing list at:

  • English: [email protected] (news://news.gmane.io/gmane.mail.wanderlust.general for archives)

  • Japanese: [email protected] (news://news.gmane.io/gmane.mail.wanderlust.general.japanese for archives)

Emails to the English list are forwarded to the Japanese list.

To subscribe, send an email to [email protected] (Japanese) or [email protected] (English). Use subscribe YOUR NAME as subject and body. To unsubscribe, use unsubscribe as body. To get help, use # guide as body.

Development

The source code repository is available at Github. Patches that fix bugs and improve Wanderlust are welcome and can be sent to the Wanderlust mailing list.

flim's People

Contributors

ari-gunadarma avatar chise avatar conao3 avatar egh avatar ikazuhiro avatar jech avatar ptroja avatar robohack avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flim's Issues

Change default branch to master

Hi.
Now this project's default branch set flim-1_14-wl but it is not common.
Are there any reasons to change the default branch?
It's hard to remember the rules for each project, so could you change it to a generic branch name?

make check fails

flim-80b8121f05a5a0d7fcfe3e54085467a646dd2028 $ make check
emacs -batch -q -no-site-file -l FLIM-MK -f check-flim NONE NONE \
	NONE package-user-dir

Loading /tmp/portage/app-emacs/flim-1.14.9_p20230809/work/flim-80b8121f05a5a0d7fcfe3e54085467a646dd2028/FLIM-CFG...
Loading /tmp/portage/app-emacs/flim-1.14.9_p20230809/work/flim-80b8121f05a5a0d7fcfe3e54085467a646dd2028/FLIM-ELS...

Loading /tmp/portage/app-emacs/flim-1.14.9_p20230809/work/flim-80b8121f05a5a0d7fcfe3e54085467a646dd2028/tests/test-hmac-md5.el (source)...
Eager macro-expansion failure: (error "Attempt to change byte length of a string")
PACKAGE_LISPDIR=~/.emacs.d/elpa
PREFIX=/usr
LISPDIR=/usr/share/emacs/site-lisp

Error: error ("Eager macro-expansion failure: (error \"Attempt to change byte length of a string\")")
  mapbacktrace(#f(compiled-function (evald func args flags) #<bytecode 0x1229c1aba9ae87ed>))
  debug-early-backtrace()
  debug-early(error (error "Eager macro-expansion failure: (error \"Attempt to change byte length of a string\")"))
  signal(error ("Eager macro-expansion failure: (error \"Attempt to change byte length of a string\")"))
  error("Eager macro-expansion failure: %S" (error "Attempt to change byte length of a string"))
  internal-macroexpand-for-load((let ((func (lambda (case) (lunit-assert (string= (encode-hex-string (hmac-md5 (make-string 50 221) (make-string 16 170))) "56be34521d144c88dbb8c733f0e8b3f6")))) (sym (luna-class-find-or-make-member (luna-find-class 'test-hmac-md5) 'test-hmac-md5-3)) (cache (get 'test-hmac-md5-3 'luna-method-cache))) (and cache (fboundp sym) (mapatoms (lambda (s) (if (memq (symbol-function sym) (symbol-value s)) (unintern s cache))) cache)) (fset sym func) (put sym 'luna-method-qualifier nil)) t)
  eval-buffer(#<buffer  *load*> nil "/tmp/portage/app-emacs/flim-1.14.9_p20230809/work/flim-80b8121f05a5a0d7fcfe3e54085467a646dd2028/tests/test-hmac-md5.el" nil t)
  load-with-code-conversion("/tmp/portage/app-emacs/flim-1.14.9_p20230809/work/flim-80b8121f05a5a0d7fcfe3e54085467a646dd2028/tests/test-hmac-md5.el" "/tmp/portage/app-emacs/flim-1.14.9_p20230809/work/flim-80b8121f05a5a0d7fcfe3e54085467a646dd2028/tests/test-hmac-md5.el" nil nil)
  load("/tmp/portage/app-emacs/flim-1.14.9_p20230809/work/flim-80b8121f05a5a0d7fcfe3e54085467a646dd2028/tests/test-hmac-md5.el" nil nil t)
  load-file("/tmp/portage/app-emacs/flim-1.14.9_p20230809/work/flim-80b8121f05a5a0d7fcfe3e54085467a646dd2028/tests/test-hmac-md5.el")
  (progn (load-file (car files)) (lunit-test-suite-add-test suite (lunit-make-test-suite-from-class (intern (file-name-sans-extension (file-name-nondirectory (car files)))))))
  (if (file-regular-p (car files)) (progn (load-file (car files)) (lunit-test-suite-add-test suite (lunit-make-test-suite-from-class (intern (file-name-sans-extension (file-name-nondirectory (car files))))))))
  (while files (if (file-regular-p (car files)) (progn (load-file (car files)) (lunit-test-suite-add-test suite (lunit-make-test-suite-from-class (intern (file-name-sans-extension (file-name-nondirectory (car files)))))))) (setq files (cdr files)))
  (let ((files (directory-files "tests" t "^test-.*\\.el$")) (suite (lunit-make-test-suite))) (while files (if (file-regular-p (car files)) (progn (load-file (car files)) (lunit-test-suite-add-test suite (lunit-make-test-suite-from-class (intern (file-name-sans-extension (file-name-nondirectory (car files)))))))) (setq files (cdr files))) (lunit suite))
  check-flim()
  command-line-1(("-l" "FLIM-MK" "-f" "check-flim" "NONE" "NONE" "NONE" "package-user-dir"))
  command-line()
  normal-top-level()
make: *** [Makefile:38: check] Error 255

Looks like a problem with unibyte vs multibyte representation. hmac-md5 expects an unibyte string, but (make-string 50 ?\xdd) isn't.

mime-visible-field-p should use case-fold-search

mime-visible-field-p should set case-fold-search -- it is used in various places to compare header field names, which are supposed to be case-insensitive (all quoted strings in the syntax definitions given in RFC 5322 are case-insensitive). As-is it is very tedious (and/or requires the help of a program) to write settings for the likes of wl-message-ignored-field-list. This has been bothering me for a very long time and today I finally found the root of at least this one place causing the problem.

luna.el: Problems with emacs nativecomp branch

I've been using the emacs nativecomp branch, and most everything works well. Luna, however, seems to have a problem when used with nativecomp. The error is that luna-next-method and luna-current-method-arguments are not defined when loaded from the byte-compiled file. When the file is eval'd, everything works.

I believe that this is due to changes in the compilation, and possibly lexical binding. I've fixed the error by moving the stanza

 (eval-when-compile
  (defvar luna-next-methods nil)
  (defvar luna-current-method-arguments nil))

above the function luna-send, which seems to have fixed the error. I'm not entirely sure why.

SASL works after first authentication, but not later. access-token is nil

I set up Wanderlust to use XOauth2 to connect to Gmail.
I'm not sure my setup is complete, but it seems to work the first time: I'm able to send e-mails through SMTP.

But some days later (sorry, I still don't know how many), when I try to send an e-mail I see:

Exit MIME editor mode.
Sending...
Decrypting /home/dc/.emacs.d/sasl-xoauth2/7860ab959c9f51baf1babb863483f8f6.plstore...done
Contacting host: www.googleapis.com:443
Saving file /home/dc/.emacs.d/sasl-xoauth2/7860ab959c9f51baf1babb863483f8f6.plstore...
Wrote /home/dc/.emacs.d/sasl-xoauth2/7860ab959c9f51baf1babb863483f8f6.plstore
condition-case: Wrong type argument: arrayp, nil

I debugged the error and I saw it happens here:

Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
  sasl-step-data(nil)
  (if (sasl-step-data step) (base64-encode-string (sasl-step-data step) t) "")
  (smtp-send-command connection (if (sasl-step-data step) (base64-encode-string (sasl-step-data step) t) ""))
  (while t (setq response […]
  (catch 'done (while t (setq […]
  (let* ((connection (smtp-find-connection […]
  smtp-primitive-auth([smtp-package [0 0 0 0 0 0 0] "n……………@gmail.com" ("n……………@gmail.com") #<buffer  *wl-draft-sending-buffer*>])

As mentioned, the first use works:

  • the first use is when I do the manual synchronization: I need to go to a URL, authorize the access, and receive a code that I paste into Emacs. The e-mails I send after this, work
  • the second use is when there's no manual authentication step and Wanderlust is trying to read the tokens from the .plstore file
  • if I delete the .plstore file and retry, then Wanderlust starts from the first step again, and asks me to do the manual synchronization, and then it works again

If I look at the .plstore file after I get the error, I see something like:

(("e016……………" :access-token nil :refresh-token "1//037dLqk8…………………………" :access-response
  ((auth_time 25733 26284 693202 360000)
   (access_token . "ya29.a0Ae………………………………………………")
   (expires_in . 3599)
   (refresh_token . "1//037d…………………………………")
   (scope . "https://mail.google.com/")
   (token_type . "Bearer"))))

I think the access-token nil could be part of the problem. Right after manual synchronization (the first time I set it up) it has a value and it works.

The SMTP communication when it fails is:

Process SMTP deleted
220 smtp.gmail.com ESMTP g24-20020a1709063b1800b0096f6a131b9fsm3480986ejf.23 - gsmtp
EHLO sonn.gmail.com
250-smtp.gmail.com at your service, [188.27.180.89]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
STARTTLS
220 2.0.0 Ready to start TLS
EHLO sonn.gmail.com
250-smtp.gmail.com at your service, [188.27.180.89]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
AUTH XOAUTH2 dXNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==
334 eyJzXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==
QUIT
535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8  https://support.google.com/mail/?p=BadCredentials g24-20020a1709063b1800b0096f6a131b9fsm3480986ejf.23 - gsmtp

If I decode the base64-encoded parts above (where I wrote XXXXX), I see that the first one is user=n……………@gmail.comauth=Bearer nil and the 2nd one {"status":"400","schemes":"Bearer","scope":"https://mail.google.com/"}.
In .comauth=Bearer nil, between .com and auth there's a the ASCII byte 01. And after Bearer nil there's 01 01

The Bearer nil is bad; it should be the access-token. It comes from (format "user=%s\001auth=Bearer %s\001\001" in sasl-xoauth2-response, and I verified that it's nil. It was nil in the plstore file, and it's nil here.

I suggest adding a check somewhere in (setq access-token (oauth2-token-access-token oauth2-token)) (sasl-xoauth2-response at sasl-xoauth2.el) to verify that it got the token (not nil). This would detect and inform about the error in an easy way before the nil is base64-encoded and sent through SMTP.

And I still don't know why or who wrote access-token nil into the plstore file. Probably there can be some verification before writing, to make sure we don't write nil.

Versions: Wanderlust/2.15.9 (Almost Unreal), latest flim as of today (2cf5a78)

I can provide more information as I find it, or at your request. I want to keep this error documented here, to help others that see it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.