Extend require line for dovecot.sieve-files

Discussion in 'Installation/Configuration' started by osterhase, Aug 31, 2011.

  1. osterhase

    osterhase New Member

    [Moved from here]

    Hi there!

    Maybe someone can give me a hand here: Due to the fact that the sieverules-plugin of roundcube allows more complex filtering solutions than ISPConfig we found the require-line which is written by ispconfig insufficient:

    require ["fileinto", "regex", "vacation"];
    Because some of our users are utilizing the copy-function for instance the require line would read:

    require ["fileinto","regex","vacation","copy"];
    As far as I'm concerned the require line is written statically to the dovecot.sieve-file. In which file is this directive defined so we can simply add more sieve-filter-features?

    Best regards
  2. till

    till Super Moderator Staff Member ISPConfig Developer

    All config file templates are in the directory /usr/local/ispconfig/server/conf/. Store your modified copy of the file in the conf-custom directory, so that it does not get overwritten on updates.
  3. osterhase

    osterhase New Member

    Thanks for the quick reply and the answer - learned a bit more about ISPConfig today. ;-)
  4. CSsab

    CSsab New Member

    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/lib11_imap_quota_plugin.so
    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 = [email protected]

    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 :personal 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.
  5. osterhase

    osterhase New Member

    So what is actually your problem / question? Sorry if I got lost between the lines...
  6. CSsab

    CSsab New Member

    I do not have a question or problem other than my local delivery at the moment.
    I am thinking that it would be a better idea to manage sieve as a service rather than a protocol. That is all.:)
  7. osterhase

    osterhase New Member

    Sorry - but I needed a while to think of that.

    You should have no problem with that because isp_sieverules does not care about how managesieve is run. As far as I'm concerned also managesieve (run as a daemon) utilizes *.sieve files (or am I wrong here?).

    So all isp_sieverules does is to catch the script BEFORE it is actually written and pass it on to ISPConfig. The via the api-functions it is integrated. So it does not matter if its a daemon or whatever. You should have not problems actually.
  8. CSsab

    CSsab New Member

    No you are right - previously when I tried the managesieve plugin for roundcube I had to install pidgeonhole and it was a headache because my libtool was broken - I gave it up in the end. Like yourself and others here I am really only interested in adding functionality to ISPConfig 3 without having to install everything but the kitchen sink :D

    Haven't gotten that far yet - I modified ISPConfig installer slightly to allow me to use Dovecot v2 out of the box (mainly just the SQL file to change the table "disabledeliver" to "disablelda" in dbispconfig and also changed all php references to "disabledeliver" in the installer to read as "disablelda".

    Installer runs fine so far but I am still testing.

Share This Page