Saturday, November 06, 2010

You have been unsubscribed from the Obm mailing list

Nice move from my past employer, pushing me out of our free (?) software mailing list.

I guess helping people without getting anything in return does not comply with the new rules...

Thursday, August 19, 2010


Few things fixed in this release :

  • login with complicated characters in password

  • html email was not correctly indexed

This should fix opush problems as opush & minig IMAP lib are shared.

Thursday, August 12, 2010

Singleton for dummies

While searching for some coding practices, I realized some people are wondering how to do a singleton in Java (I know, this is considered an anti-pattern when badly used) :

public class Controller {

private static final Controller ctrl;

static {
ctrl = new Controller();

private Controller() {


public static Controller get() {
return ctrl;


That's the _only_ way to do it correctly in Java. Your static block is protected by the classloader lock, so everything is fine. This implementation _can_ bug, but that supposes you know how to subclass/implement a ClassLoader. In a webapp it's fine if you're wondering (well tomcat will leak your singleton memory if you abuse hot deploy).

I made this post as I'm reviewing some opush contributed code. What you can find on the net about java & singleton is quite fun. Nice article by someone who didn't know what are static blocks. Static blocks are "Java approved" since 2000.

Wednesday, August 04, 2010

Leaving my current job

I'll switch to another job in october. My work on MiniG & OPush will continue. I created those projects and I'm proud of them. is a working email to reach me.

I'll have some time to fix flawed things in MiniG with my next assignment ;-)

Saturday, July 17, 2010

Bigger than free software

Having fun with all our co-workers

Tuesday, April 06, 2010

New minig feature

MiniG can now handle email priority in its conversation list. Threads with a high priority email are shown in red. They can be found using is:important.

Tuesday, March 30, 2010

Working late

Answered flag is now handled by minig (on conversations & messages).

Monday, March 22, 2010

BigG, GrosG, MaxiG, you name it....

First step is complete : BigG now has an ltmp compliant daemon. At least it's compliant with postfix lmtp client which is sufficient for my needs.

It does not do a lot for now, just outputs some logs while doing the LMTP dialog:
2010-03-22 22:49:59,458 RunnableExtensionLoader INFO - DeliveryFactory loaded.
2010-03-22 22:49:59,462 RunnableExtensionLoader INFO - ValidatorFactory loaded.
2010-03-22 22:49:59,462 RunnableExtensionLoader INFO - Loaded 2 implementors of org.obm.lmtp.lmtpbackendfactory
2010-03-22 22:49:59,499 LMTPDaemon INFO - Starting LMTP daemon...
2010-03-22 22:49:59,565 MinaServer INFO - mina lmtp server created
2010-03-22 22:49:59,578 MinaCodecFactory INFO - mina codec factory created
2010-03-22 22:49:59,589 MinaLmtpServer INFO - Starting listener. active: true h: org.obm.mina.MinaIoHandler@128ae45a
2010-03-22 22:49:59,589 LmtpServer INFO - server started
2010-03-22 22:49:59,589 LMTPDaemon INFO - LMTP daemon started.
2010-03-22 22:50:17,969 BiggLmtpBackend INFO - addressStatus(
2010-03-22 22:50:17,969 LdapValidator INFO - validating
2010-03-22 22:50:18,039 BiggLmtpBackend INFO - deliver(org.obm.lmtp.backend.LmtpEnvelope@7a19a37a, blob: Blob: { path=/tmp/blob2739528671992765153.bin, size=null }
2010-03-22 22:50:18,040 CassandraAgent INFO - delivering to a cassandra node... in the near feature :/
2010-03-22 22:50:18,043 MinaIoHandler INFO - session closed

Postfix is happy with that:
Mar 22 22:50:17 obm23 postfix/pickup[6601]: E27B85E82: uid=0 from=
Mar 22 22:50:18 obm23 postfix/cleanup[6827]: E27B85E82: message-id=<20100322215017.E27B85E82@lenny.buffy.kvm>
Mar 22 22:50:18 obm23 postfix/qmgr[1996]: E27B85E82: from=, size=284, nrcpt=1 (queue active)
Mar 22 22:50:18 obm23 postfix/lmtp[6829]: E27B85E82: to=, relay=[]:2400, delay=0.48, delays=0.21/0.05/0.15/0.07, dsn=2.1.5, status=sent (250 2.1.5 Delivery OK)
Mar 22 22:50:18 obm23 postfix/qmgr[1996]: E27B85E82: removed

Next step is to parse the mail with mime4j before giving it to CassandraAgent. The agent will push everything to a cassandra node.

Coming soon to BigG (mostly empty) website.

Saturday, February 13, 2010

Jabber in minig

After a first experiment, we are now committed to complete chat support in minig.

Here is a screenshot showing what already works.

Tuesday, February 09, 2010

Filters in MiniG for 2.3.2

After 6 month with filters code disabled in MiniG, I finally took the last steps to enable them : vacation & forward handling using OBM infos.

The finishing touch was pretty boring :
  • adding APIs to OBM sync for updating forward and vacation infos in the UserObm table.
  • Completing the vacation ui in MiniG
  • Adding an interface to set email forwarding

Well it's done and will be available with all 2.3.2+ obm installs.

Everything is not perfect : obm vacation & forward modules must be disabled as they have no knowledge of the filters stored in minig private database. A quick fix is possible as making an HTTP POST to minig-backend/ (login/password required) will generate a correct sieve script with forward, vacation & filter rules.

Friday, January 29, 2010

Back in Toulouse

Just spent one month in Paris to meet few customers and give some training to our Paris "obm core team".

Some projects are now on track : Gilles Blanc is working on a BES (Blackberry Enterprise Server) connector for OBM. Nicolas Chauvet is deploying OBM+MiniG servers and should soon work on improving our redhat packages.

While in Paris, Thomas Chemineau gave Sylvain & I a big training session on LemonLDAP. While I hate having all my code proxied by some perl crap, LemonLDAP is pretty cool. At least it is the only SSO solution that works as a proxy and gives you clean single sign out. I did a simple diagram on how we could implement minig sso using lemon.

This week I'll work on finishing MiniG sieve filtering code :
  • handle vacation settings from obm
  • use email forwarding infos from the obm database