View Single Post
Old 31st August 2011, 11:20
CSsab CSsab is offline
Senior Member
Join Date: Apr 2010
Posts: 174
Thanks: 19
Thanked 32 Times in 27 Posts
Default Dovecot v.2 working.


My reason for posting this here is because the next thing I intend to try out is the work you have been doing on roundcube sieve.

I am trying out Dovecot v.2 with a managesieve daemon at the moment. In the testing distribution the managesieve protocol has been changed to a service.

Many BIG thanks to xabbu:

This is my dovecot.conf currently:

## SSL settings

ssl = yes
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem

auth_mechanisms = plain login
disable_plaintext_auth = no
first_valid_gid = 5000
first_valid_uid = 5000
last_valid_gid = 5000
last_valid_uid = 5000
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/var/vmail/%d/%n/Maildir
passdb {
driver = pam
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
plugin {
quota = maildir
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
protocols = imap pop3
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
unix_listener auth-master {
mode = 0600
user = vmail
user = root
service imap {
executable = /usr/lib/dovecot/rawlog /usr/lib/dovecot/imap
service pop3 {
executable = /usr/lib/dovecot/rawlog /usr/lib/dovecot/pop3
userdb {
driver = passwd
userdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
protocol imap {
# mail_plugin_dir = /usr/lib64/dovecot/modules/
mail_plugin_dir = /usr/lib64/dovecot/modules
mail_plugins = quota imap_quota
protocol pop3 {
# mail_plugin_dir = /usr/lib64/dovecot/modules/pop3
mail_plugin_dir = /usr/lib64/dovecot/modules
mail_plugins = quota
pop3_uidl_format = %08Xu%08Xv
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
mail_plugin_dir = /usr/lib64/dovecot/modules
mail_plugins = sieve quota
postmaster_address =

You will note that I am using SSL but it's fine to use
ssl = no instead.

This is the SQL file from dovecot-sql.conf (uncommented):

driver = mysql
connect = host=localhost dbname=xxxxxx user=ispconfig password=xxxxxxxxxxxxxxxx
default_pass_scheme = CRYPT
password_query = SELECT password FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
user_query = SELECT email as user, maildir as home, CONCAT(maildir, '/Maildir') as mail, uid, gid, concat('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'

MTA is up and running and ISPConfig is not reporting any problems except with local delivery which I am working on now.
I edited /usr/local/ispconfig/interface/web/mail/mail_user_edit.php and replaced all references to disabledeliver with disablelda and changed the table in the mysql database like xabbu said but I am not sure if I translated from German correctly!

These are the sieve specific settings in Dovecot v.2

## Settings for the Sieve interpreter

# Do not forget to enable the Sieve plugin in 15-lda.conf and 20-lmtp.conf
# by adding it to the respective mail_plugins= settings.

plugin {
# The path to the user's main active script.
sieve = ~/.dovecot.sieve

# A path to a global sieve script file, which gets executed ONLY
# if user's private Sieve script doesn't exist. Be sure to
# pre-compile this script manually using the sievec command line
# tool.
#sieve_global_path = /var/lib/dovecot/sieve/default.sieve

# Directory for ersonal include scripts for the include extension.
sieve_dir = ~/sieve

# Directory for :global include scripts for the include extension.
#sieve_global_dir =

# Which Sieve language extensions are available to users. By default,
# all supported extensions are available, except for deprecated
# extensions or those that are still under development. Some system
# administrators may want to disable certain Sieve extensions or
# enable those that are not available by default. This setting can
# use '+' and '-' to specify differences relative to the default.
# For example `sieve_extensions = +imapflags' will enable the
# deprecated imapflags extension in addition to all extensions
# enabled by default.
#sieve_extensions = +notify +imapflags

# The separator that is expected between the :user and :detail
# address parts introduced by the subaddress extension. This may
# also be a sequence of characters (e.g. '--'). The current
# implementation looks for the separator from the left of the
# localpart and uses the first one encountered. The :user part is
# left of the separator and the :detail part is right. This setting
# is also used by Dovecot's LMTP service.
#recipient_delimiter = +

# The maximum size of a Sieve script. The compiler will refuse to
# compile any script larger than this limit.
#sieve_max_script_size = 1M

# The maximum number of actions that can be performed during a single
# script execution.
#sieve_max_actions = 32

# The maximum number of redirect actions that can be performed during
# a single script execution.
#sieve_max_redirects = 4

# The maximum number of personal Sieve scripts a single user can have.
# (Currently only relevant for ManageSieve)
#sieve_quota_max_scripts = 0

# The maximum amount of disk storage a single user's scripts may occupy.
# (Currently only relevant for ManageSieve)
#sieve_quota_max_storage = 0

These are the managesieve specific settings in Dovecot v.2

## ManageSieve specific settings

# Service definitions

service managesieve-login {
#inet_listener sieve {
# port = 4190

#inet_listener sieve_deprecated {
# port = 2000

# Number of connections to handle before starting a new process. Typically
# the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0
# is faster. <doc/wiki/LoginProcess.txt>
#service_count = 1

# Number of processes to always keep waiting for more connections.
#process_min_avail = 0

# If you set service_count=0, you probably need to grow this.
#vsz_limit = 64M

service managesieve {
# Max. number of ManageSieve processes (connections)
#process_count = 1024

# Service configuration

protocol sieve {
# Maximum ManageSieve command line length in bytes. ManageSieve usually does
# not involve overly long command lines, so this setting will not normally need
# adjustment
#managesieve_max_line_length = 65536

# Maximum number of ManageSieve connections allowed for a user from each IP address.
# NOTE: The username is compared case-sensitively.
#mail_max_userip_connections = 10

# Space separated list of plugins to load (none known to be useful so far). Do NOT
# try to load IMAP plugins here.
#mail_plugins =

# MANAGESIEVE logout format string:
# %i - total number of bytes read from client
# %o - total number of bytes sent to client
#managesieve_logout_format = bytes=%i/%o

# To fool ManageSieve clients that are focused on CMU's timesieved you can specify
# the IMPLEMENTATION capability that the dovecot reports to clients.
# For example: 'Cyrus timsieved v2.2.13'
#managesieve_implementation_string = Dovecot Pigeonhole

# Explicitly specify the SIEVE and NOTIFY capability reported by the server before
# login. If left unassigned these will be reported dynamically according to what
# the Sieve interpreter supports by default (after login this may differ depending
# on the user).
#managesieve_sieve_capability =
#managesieve_notify_capability =

# The maximum number of compile errors that are returned to the client upon script
# upload or script verification.
#managesieve_max_compile_errors = 5

# Refer to 90-sieve.conf for script quota configuration and configuration of
# Sieve execution limits.

Ultimately I would like the sieve scripts of each client to be stored in their own folder with a quota limit and be able to manage their own webmail client folders and themes manageable entirely from the ISPConfig interface but I am still learning about the sieve protocol so it will take me a while.
Reply With Quote