Need help to compile and install a minimal dovecot imap plugin

Stefan Arentz stefan at arentz.ca
Sat Aug 30 17:36:35 UTC 2014


I am trying to create a plugin that adds a new IMAP capability. So far I have this:



const char *foo_plugin_version = DOVECOT_ABI_VERSION;

static struct module *foo_module;
static imap_client_created_func_t *next_hook_client_created;

static void foo_client_created(struct client **client)
{
    str_append((*client)->capability_string, " XFOO");

    if (next_hook_client_created != NULL) {
      next_hook_client_created(client);
    }
}

void foo_plugin_init(struct module *module)
{
  i_info(“init”);
  foo_module = module;
  next_hook_client_created = imap_client_created_hook_set(foo_client_created);
}

void foo_plugin_deinit(void)
{
  i_info(“deinit”);
  imap_client_created_hook_set(next_hook_client_created);
}

const char foo_plugin_binary_dependency[] = "imap”;



On Fedora 20, with the dovecot and dovecot-devel packages installed, I compile this with:

cc -Wall -shared -fPIC -DHAVE_CONFIG_H -I/usr/include/dovecot -o lib20_foo_plugin.so foo-plugin.c



And then install with:

sudo cp lib20_foo_plugin.so /usr/lib64/dovecot/

(I also have mail_plugin_dir = /usr/lib64/dovecot in 10-mail.conf)



I enable this plugin in /etc/dovecot/conf.d/20-imap.conf with:

protocol imap {
  mail_plugins = $mail_plugins foo
}


But … nothing happens. No warnings, no errors, no crashes.

How do I debug this? Am I missing something obvious?

Does the naming of the plugin matter?

 S.



More information about the dovecot mailing list