This howto describes howto install a sieve manager in squirrelwebmail to do server based filtering.
It will work only with the dovecot e-mail daemon. (See http://www.isp-control.net/documentation/doku.php?id=howto:mail:replace_courier_with_dovecot for install instructions)
> apt-get install cogito curl python subversion
> cd /usr/local/lib > cg-clone http://woozle.org/~neale/repos/pysieved > mkdir /usr/local/etc > mv /usr/local/lib/pysieved/pysieved.ini /usr/local/etc > mkdir /var/run/pysieved/ > chown vmail:mail /var/run/pysieved
Create a startup skript /etc/init.d/pysieved:
#!/bin/sh case $1 in start) /usr/bin/python /usr/local/lib/pysieved/pysieved.py echo "Starting sieve daemon: pysieved." ;; stop) kill $(cat /var/run/pysieved/pysieved.pid) echo "Stopping sieve daemon: pysieved." ;; *) echo "Usage: /etc/init.d/pysieved {start|stop}" ;; esac
Set execute permission to the file:
> chmod +x /etc/init.d/pysieved
Create the file /usr/local/etc/pysieved.ini with following content:BR (There are uids and gids 'hardcoded'. The uid must be changed to the uid of the vmail user and the gid to the gid of the mail group. Debian IspCP defaults are: uid 1001, gid 8)
[main] auth = Dovecot userdb = Dovecot storage = Dovecot port = 2000 pidfile = /var/run/pysieved/pysieved.pid [Virtual] base = /var/mail/virtual/ uid = 1001 gid = 8 hostdirs = True [Dovecot] mux = /var/run/pysieved/auth master = /var/run/pysieved/auth-master sievec = /usr/lib/dovecot/sievec scripts = .pysieved uid = 1001 gid = 8
Open your /etc/dovecot/dovecot.conf and add this line
mail_plugins = cmusieve
to the “protocol lda” like this:
protocol lda { postmaster_address = postmaster@yourdomain.tld auth_socket_path = /var/run/dovecot/auth-master mail_plugins = cmusieve }
After that add the following lines to end of the file:
auth pysieved { mechanisms = plain passdb sql { args = /etc/dovecot/dovecot-sql-domain.conf } userdb sql { args = /etc/dovecot/dovecot-sql-domain.conf } passdb sql { args = /etc/dovecot/dovecot-sql-subdomain.conf } userdb sql { args = /etc/dovecot/dovecot-sql-subdomain.conf } socket listen { client { path = /var/run/pysieved/auth mode = 0660 user = vmail group = mail } master { path = /var/run/pysieved/auth-master mode = 0660 user = vmail group = mail } } user = vmail }
Change the following line in /etc/postfix/master.cf accordingly:
dovecot unix - n n - - pipe flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
Be careful with the line above. There is a space where
> cd /var/www/ispcp/gui/tools/webmail/plugins/ > svn export https://email.uoa.gr/repos/squirrelmail/avelsieve/main_plugin/trunk/ avelsieve
add following line to /var/www/ispcp/gui/tools/webmail/config/config.php below the already defined $plugins. (26 is the correct index for new ispCP installation. If you have added some plugins you have to change the number accordingly)
$plugins[26] = 'avelsieve';
set the correct permissions:
> chown -R vu2000:www-data /var/www/ispcp/gui/tools/webmail/plugins/avelsieve/
create config file:
> cd /var/www/ispcp/gui/tools/webmail/plugins/avelsieve/config > cp config_sample.php config.php
the following configuration item has to be changed in the config.php:
$avelsieve_striproot = 'INBOX.';
8. Fix a problem with imap namespaceBR (This is only nescessary if you use dovecot 1.0. In version 1.1 of dovecot, deliver supports the namespace prefix INBOX.)
Add the following lines to the fileBR /var/www/ispcp/gui/tools/webmail/plugins/avelsieve/include/sieve_buildrule.inc.php after case '5': (around line 560)
if (substr($rule['folder'],0,6) == 'INBOX.') { $rule['folder'] = substr($rule['folder'],6); }
> /etc/init.d/pysieved start > /etc/init.d/dovecot restart > /etc/init.d/postfix restart
> update-rc.d pysieved defaults 92 08
You should now find a register Message Filtering in the 'Options' menu from squirrel mail where you can add your server based filtering rules.
If your squirrelmail is installed in another language as en_US you translate avelsieve too:
> apt-get install gettext > cd /var/www/ispcp/gui/tools/webmail/plugins/avelsieve/po > ./compileallpo > ./xgetpo > /etc/init.d/apache2 restart
But the translations are not very complete. Updated german language-file is available in the board: http://www.isp-control.net/forum/new-german-languagefile-for-avelsieve-t-2130.html