Skip to content

lumail is complete

So, writing an email client, how did that turn out? Pretty damn well as it happens.

My views continue to range from "email is easy" to "email is hard". But I'm now using my home-grown mail-client for 100% of my personal mail-handling.

Writing a mail client did seem a little crazy when I started, but the problem breaks down into a few distinct steps and individually they're not so hard:

  • Display a list of folders.
  • Display a list of messages.
  • Display a single message.

Once you've got that you're almost 80% complete. You're just missing things like "delete", "reply", "compose", and those things are pretty simple to implement.

I definitely made the right call in making it scriptable with Lua, because I've been able to write so many functions for working with mail. For example marking messages in all folders matching a regular expression.

The code is pretty well structured, and now I've got TAB-completion support on all primitives and user-additions I'm finding it a lot nicer to use.

The future? I'm not sure. But right now I'm very happy.

Comments On This Entry

  1. [gravitar] Jon

    Congrats.

    Never thought you would finish it so quickly!

  2. [author] Steve Kemp

    I'm sure there will be more things added over time, as I spot issues with different MIME-types, character sets, etc.

    But unless people report issues I think it is "done enough". I'll keep working on it, as I spot things that are annoying, but it is usable and has been for a while now.

  3. [gravitar] Nux

    Hi Steve and congrats on the job.
    Would you say snapshot 0.121 is stable enough?

    [1] - http://lumail.org/download/lumail-0.12.tar.gz

  4. [author] Steve Kemp

    I'd say 0.12 is good, but 0.13 will be better and that will be released this evening!


  5. [gravitar] Nux

    Hello again, I noticed 0.13 is already available, but I'm having problems building it, check my mock build.log:
    http://paste.fedoraproject.org/25622/73972689/
    (the seds are there because there's no lua5.1 in Centos 6 and the path for the header files is wrong).

    0.12 gives a different error:
    http://paste.fedoraproject.org/25623/73972859/

    Any pointers?

  6. [gravitar] Nux

    Hello again, I noticed 0.13 is already available, but I'm having problems building it, check my mock build.log:
    http://paste.fedoraproject.org/25622/73972689/
    (the seds are there because there's no lua5.1 in Centos 6 and the path for the header files is wrong).

    0.12 gives a different error:
    http://paste.fedoraproject.org/25623/73972859/

    Any pointers?

  7. [author] Steve Kemp
  8. [gravitar] Nux

    Thanks, that seems to fix the screen.cc issue, but hit another build problem, pcre (v7.8) related:

    http://paste.fedoraproject.org/25638/39766071/


  9. [author] Steve Kemp

    Seems like you have " -lcurses -lmimetic", which causes it to link to curses and libmimetic, respectively.

    You're missing "-lpcrecpp -lpcre".

    The supplied makefile calls this:

    shelob ~ $ pcre-config --libs-cpp
    -L/usr/lib/x86_64-linux-gnu -lpcrecpp -lpcre
    

    So it looks like you're missing a pcre-config command, and that is silently causing you to not link to pcre.

    Does that help point you in the right direction?

  10. [gravitar] Nux

    Steve,

    Seems like the problem is the bundled pcre-config does not know about --libs-cpp parameter, probably too old version.
    Can you suggest any workarounds?

    [mockbuild@rpmbuilder lumail-0.13]$ pcre-config --libs-cpp
    Usage: pcre-config [--prefix] [--exec-prefix] [--version] [--libs] [--libs-posix] [--cflags] [--cflags-posix]

  11. [author] Steve Kemp

    The obvious thing to try would either be using "--libs", or just hard-wiring the libraries in the Makefile.

  12. [gravitar] Nux

    Yes, I already tried just --libs, forgot to mention it, does not fix the problem.
    Hard-wiring the libs in the Makefile seems a bit over my knowledge, I'd appreciate any help here.

  13. [author] Steve Kemp

    Well the error is clear; you're getting undefined references to pcre-code.

    So we need to link to libpcre. I'd try adding "-lpcre -lpcrecpp". This is assuming you've got libpcre3-dev, or whatever the package is called, present.

    If that doesn't fix it I'm a little stumped because I'm not familiar with Fedora.

    It doesn't feel like it should be too hard to fix, but without access to such a system I'm running out of things to suggest..

  14. [gravitar] Nux

    Thanks, Steven, that worked.
    Do you think the "official" Makefile can be modified to fix this issue or should I add one more sed line to my spec file?


  15. [author] Steve Kemp

    I suspect the best thing to do is to setup flags via pcre-config, and if that fails just default to "-lpcre -lpcrecpp".

    I'll think it over tonight.

    Glad you got there though; and if you hit problems do report them in the github tracker / mail me directly.