I've set up dovecot with sieve:

protocol lda {
  # Address to use when sending rejection mails.
  #postmaster_address = postmaster@example.com

  # Hostname to use in various parts of sent mails, eg. in Message-Id.
  # Default is the system's real hostname.
  #hostname = 

  log_path = /var/mail/dovecot-deliver.log
  info_log_path = /var/mail/dovecot-deliver.log

  # Support for dynamically loadable plugins. mail_plugins is a space separated
  # list of plugins to load.
  mail_plugins = cmusieve
  mail_plugin_dir = /usr/lib/dovecot/modules/lda

  # If user is over quota, return with temporary failure instead of
  # bouncing the mail.
  #quota_full_tempfail = no

  # Format to use for logging mail deliveries. You can use variables:
  #  %$ - Delivery status message (e.g. "saved to INBOX")
  #  %m - Message-ID
  #  %s - Subject
  #  %f - From address
  #deliver_log_format = msgid=%m: %$

  # Binary to use for sending mails.
  #sendmail_path = /usr/lib/sendmail

  # Subject: header to use for rejection mails. You can use the same variables
  # as for rejection_reason below.
  #rejection_subject = Automatically rejected mail

  # Human readable error message for rejection mails. You can use variables:
  #  %n = CRLF, %r = reason, %s = original subject, %t = recipient
  #rejection_reason = Your message to <%t> was automatically rejected:%n%r

  # UNIX socket path to master authentication server to find users.
  #auth_socket_path = /var/run/dovecot/auth-master

I've enabled it with:

protocols = imap imaps managesieve lda

I've verified that /usr/lib/dovecot/modules/lda/ exists, and there are files in it:

lib01_acl_plugin.so     lib11_trash_plugin.so    lib20_fts_plugin.so    lib90_cmusieve_plugin.a
lib10_quota_plugin.so       lib20_convert_plugin.so  lib20_mail_log_plugin.so   lib90_cmusieve_plugin.la
lib11_autocreate_plugin.so  lib20_expire_plugin.so   lib21_fts_squat_plugin.so  lib90_cmusieve_plugin.so

I've adjusted postfix so that delivery happens via LDA:

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=:5000:5000 argv=/usr/lib/dovecot/deliver -d ${recipient}

And I've set the transport maps for the domain to use dovecot:.

I've restarted dovecot, but never see anything in the logs about cmusieve. What should I be looking for to fix this problem?


Try to set:


and check what it logs when trying to deliver a mail.

Also make sure that if you're logging to syslog, you need to write to the syslog socket (usually /dev/log) check that deliver has write permissions.

If you're logging to Dovecot's default log files, you'll need to give enough write permissions to the log files for deliver.

If you post your log it will be much easier to help finding out the problem.

  • mail_debug=yes is already set. I will try to get some log information posted shortly. – Glen Solsberry Sep 29 '09 at 15:38
  • Could you be more specific @rkthkr about "give right permission to deliver" ? or anyone could explain please? – MikZuit Apr 10 '15 at 16:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.