sda.io

Mike Sampson

Linux Systems Administrator

About

Archives

Feed

09 Feb 2010

Book database status and MUAs.

Have felt like a little break from my book database project. It needs one more weekend of polishing before it is usable. Hopefully I will get it done this weekend as it is the last weekend before it's back to the books.

I have been looking at MUAs recently and can't really find one that fits my needs exactly. Sup is probably the closest but I am not a huge fan of Ruby. Emacs' RMail and VM are interesting. RMail feels a little primitive. VM looks very nice but I don't like how it adds a bunch of headers to the message. Not sure if you can turn this off or not. Both RMail and VM do support tags/labels though. I'm currently using Google Apps and have become quite used to labels and am not sure I could now do without them. After giving it some thought I have started throwing together an MUA prototype in Python. The features of an ideal MUA for me would be:

  • Does not retrieve mail via POP3 or IMAP. This is the job of an MTA or MRA. I use getmail for this purpose.
  • Does not send mail via SMTP. This is the job of an SMTP client like msmtp.
  • Does not edit mail. I use Vim for my text editing needs and this is no different.
  • Does allow me to read, tag/label and search my mail.

Thanks to Python's email package I have the basic viewing functionality working. I am not sure whether to store the message tags/labels in the messages themselves as custom headers or externally. I assume I will need an index to make searching fast so it may be best to include tag/label management in that. Sup uses Xapian for it's indexing though I am thinking of writing my own and have been reading up on inverted indexes.

While Python has allowed me to get something running quickly I would like to eventually switch over to C. I would need to use a couple of third party libraries such as pcre, as well as ncurses of course, to make life easier. My ideal MUA is really only concerned with processing and displaying text. C will easily do this and I have been wanting to get my hands dirty with C again. The last time I did any significant C coding, GCC was at version 2.95. :)

Copyright © 2018 - Mike Sampson - Powered by cobalt.rs & Skeleton