Tutorial: Sieve, Managesieve filters with Dovecot and Roundcube.

Questions regarding the Mail Server
Dovecot, Exim, RoundCube
Forum rules
Before creating a new topic or reply on the forum you should fill out additional fields "Os" and "Web" in your profile section.
In case of violation, the topic can be closed or response from the support will not be received.
zdi
Posts: 6
Joined: Fri May 06, 2016 5:34 pm

Tutorial: Sieve, Managesieve filters with Dovecot and Roundcube.

Postby zdi » Fri May 06, 2016 5:40 pm

I want to thank Jeffery Tay for his help.

Without further ado:


#Install Dovecot Manage Sieve

yum install dovecot-pigeonhole

#edit 20-managesieve.conf
nano /etc/dovecot/conf.d/20-managesieve.conf

#Uncomment protocols
protocols = $protocols sieve

#Edit 10-master.conf
#add in section listed in blue

nano /etc/dovecot/conf.d/10-master.conf

service auth {
unix_listener auth-client {
group = mail
mode = 0660
user = dovecot
}
unix_listener auth-master {
group = mail
mode = 0660
user = dovecot
}

user = dovecot
}

#Append this to the end of 10-master.conf
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
service managesieve {
}
protocol sieve {
managesieve_max_line_length = 65536
managesieve_implementation_string = dovecot
log_path = /var/log/dovecot-sieve-errors.log
info_log_path = /var/log/dovecot-sieve.log
}
plugin {
sieve = ~/.dovecot.sieve
sieve_global_path = /etc/dovecot/sieve/default.sieve
sieve_dir = ~/sieve
sieve_global_dir = /etc/dovecot/sieve/global/
}
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
protocol lda {
mail_plugins = $mail_plugins autocreate sieve quota
postmaster_address = postmaster@testdomain.com
hostname = srv.testdomain.com
auth_socket_path = /var/run/dovecot/auth-master
log_path = /var/log/dovecot-lda-errors.log
info_log_path = /var/log/dovecot-lda.log
}
protocol lmtp {
mail_plugins = $mail_plugins autocreate sieve quota
log_path = /var/log/dovecot-lmtp-errors.log
info_log_path = /var/log/dovecot-lmtp.log
}

#touch and set the permissions on the log files, else you will get permission errors
touch /var/log/dovecot-lda-errors.log
chmod 660 /var/log/dovecot-lda-errors.log
chown dovecot.mail /var/log/dovecot-lda-errors.log

touch /var/log/dovecot-lda.log
chmod 660 /var/log/dovecot-lda.log
chown dovecot.mail /var/log/dovecot-lda.log

touch /var/log/dovecot-lmtp-errors.log
chmod 660 /var/log/dovecot-lmtp-errors.log
chown dovecot.mail /var/log/dovecot-lmtp-errors.log

touch /var/log/dovecot-lmtp.log
chmod 660 /var/log/dovecot-lmtp.log
chown dovecot.mail /var/log/dovecot-lmtp.log

#Create default sieve rule

mkdir /etc/dovecot/sieve
nano /etc/dovecot/sieve/default.sieve
require ["fileinto"];
# rule:[SPAM]
if header :contains "X-Spam-Flag" "YES" {
fileinto "Spam";
}

touch /etc/dovecot/sieve/default.sieve
chmod +w /etc/dovecot/sieve/default.sieve
chown dovecot.mail /etc/dovecot/sieve/default.sieve

#Restart dovecot, if service starts, means configuration is successful
service dovecot restart

#Configure roundcube

nano /etc/roundcubemail/config.inc.php
$rcmail_config[‘plugins’] = array(‘managesieve’);

nano /usr/share/roundcubemail/plugins/managesieve/config.inc.php.dist

// default contents of filters script (eg. default spam filter)
$config[‘managesieve_default’] = ‘/etc/dovecot/sieve/default.sieve’;

#Configure Exim, modify part in purple
nano /etc/exim/exim.conf
localuser:
driver = accept
#transport = local_delivery
transport = dovecot

condition = ${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}{true}{false}}



######################################################################
# TRANSPORTS CONFIGURATION #
######################################################################
begin transports

dovecot:
driver = pipe
command = /usr/libexec/dovecot/dovecot-lda -e -d $local_part@$domain -f $sender_address -a $original_local_part@$original_domain
return_path_add
log_output = true
delivery_date_add
envelope_to_add
user = ${extract{2}{:}{${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}}}}
group = mail
return_output


#Restart exim, if service starts, means configuration is successful
service exim restart

gogoi
Posts: 7
Joined: Tue Dec 01, 2015 3:20 am

Re: Tutorial: Sieve, Managesieve filters with Dovecot and Roundcube.

Postby gogoi » Thu Dec 22, 2016 7:21 am

Hello!

This solution works fine with real linux accounts.

This send a single autoresponser message for all virtual email accounts in a domain under a linux vestacp account

BUT how can this work with virtual email accounts under a linux account?

plvsouza
Posts: 1
Joined: Wed Sep 27, 2017 2:36 am

Re: Tutorial: Sieve, Managesieve filters with Dovecot and Roundcube.

Postby plvsouza » Wed Sep 27, 2017 2:42 am


Updated tutorial to work with centos7 and virtual mail accounts

#Install Dovecot Manage Sieve

Code: Select all

yum install dovecot-pigeonhole


#edit 20-managesieve.conf

Code: Select all

nano /etc/dovecot/conf.d/20-managesieve.conf


#Uncomment protocols

Code: Select all

protocols = $protocols sieve


#Edit 10-master.conf

Code: Select all

nano /etc/dovecot/conf.d/10-master.conf


#add auth-master unix-listener to service auth

Code: Select all

service auth {
  unix_listener auth-client {
    group = mail
    mode = 0660
    user = dovecot
  }
  unix_listener auth-master {
    group = mail
    mode = 0660
    user = dovecot
  }
  user = dovecot
}


#Append this to the end of 10-master.conf

Code: Select all

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

service managesieve {
}

protocol sieve {
  managesieve_max_line_length = 65536
  managesieve_implementation_string = dovecot
  log_path = /var/log/dovecot-sieve-errors.log
  info_log_path = /var/log/dovecot-sieve.log
}

plugin {
  sieve = ~/mail/%d/%n/dovecot.sieve
  sieve_global_path = /etc/dovecot/sieve/default.sieve
  sieve_dir = ~/mail/%d/%n/sieve
  sieve_global_dir = /etc/dovecot/sieve/global/
}

lda_mailbox_autocreate = yes

lda_mailbox_autosubscribe = yes

protocol lda {
  mail_plugins = $mail_plugins autocreate sieve quota
  postmaster_address = postmaster@testdomain.com
  hostname = srv.testdomain.com
  auth_socket_path = /var/run/dovecot/auth-master
  log_path = /var/log/dovecot-lda-errors.log
  info_log_path = /var/log/dovecot-lda.log
}

protocol lmtp {
  mail_plugins = $mail_plugins autocreate sieve quota
  log_path = /var/log/dovecot-lmtp-errors.log
  info_log_path = /var/log/dovecot-lmtp.log
}


#edit 90-sieve.conf

Code: Select all

nano /etc/dovecot/conf.d/90-sieve.conf


Code: Select all

plugin {
  # The path to the user's main active script. If ManageSieve is used, this the
  # location of the symbolic link controlled by ManageSieve.
  #sieve = ~/.dovecot.sieve
  sieve = ~/mail/%d/%n/dovecot.sieve

  # The default Sieve script when the user has none. This is 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.
  # --> See sieve_before fore executing scripts before the user's personal
  #     script.
  #sieve_default = /var/lib/dovecot/sieve/default.sieve

  # Directory for :personal include scripts for the include extension. This
  # is also where the ManageSieve service stores the user's scripts.
  #sieve_dir = ~/sieve
  sieve_dir = ~/mail/%d/%n/sieve


#touch and set the permissions on the log files, else you will get permission errors

Code: Select all

touch /var/log/dovecot-lda-errors.log
chmod 660 /var/log/dovecot-lda-errors.log
chown dovecot.mail /var/log/dovecot-lda-errors.log

Code: Select all

touch /var/log/dovecot-lda.log
chmod 660 /var/log/dovecot-lda.log
chown dovecot.mail /var/log/dovecot-lda.log

Code: Select all

touch /var/log/dovecot-lmtp-errors.log
chmod 660 /var/log/dovecot-lmtp-errors.log
chown dovecot.mail /var/log/dovecot-lmtp-errors.log

Code: Select all

touch /var/log/dovecot-lmtp.log
chmod 660 /var/log/dovecot-lmtp.log
chown dovecot.mail /var/log/dovecot-lmtp.log


#Create default sieve rule

Code: Select all

mkdir /etc/dovecot/sieve
nano /etc/dovecot/sieve/default.sieve

Code: Select all

require ["fileinto"];
# rule:[SPAM]
if header :contains "X-Spam-Flag" "YES" {
  fileinto "Spam";
}

Code: Select all

touch /etc/dovecot/sieve/default.sieve
chmod +w /etc/dovecot/sieve/default.sieve
chown dovecot.mail /etc/dovecot/sieve/default.sieve


#Restart dovecot, if service starts, means configuration is successful

Code: Select all

service dovecot restart


#Configure roundcube

Code: Select all

nano /etc/roundcubemail/config.inc.php

Code: Select all

$config['plugins'] = array(
    'archive',
    'zipdownload',
    'password',
    'managesieve',
);

// default contents of filters script (eg. default spam filter)
$config['managesieve_default'] = '/etc/dovecot/sieve/default.sieve';


#Configure Exim

Code: Select all

nano /etc/exim/exim.conf

Code: Select all

localuser:
  driver = accept
  #transport = local_delivery
  transport = dovecot
  condition = ${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}{true}{false}}



######################################################################
# TRANSPORTS CONFIGURATION #
######################################################################
begin transports

dovecot:
  driver = pipe
  command = /usr/libexec/dovecot/dovecot-lda -e -d $local_part@$domain -f $sender_address -a $original_local_part@$original_domain
  return_path_add
  log_output = true
  delivery_date_add
  envelope_to_add
  user = ${extract{2}{:}{${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}}}}
  group = mail
  return_output


#Restart exim, if service starts, means configuration is successful

Code: Select all

service exim restart


Return to “Mail Server”



Who is online

Users browsing this forum: No registered users and 3 guests

cron