Re: Permissions for shared mail don't work

2014-10-20 Thread Steffen Kaiser

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Sun, 19 Oct 2014, Damien Desfontaines wrote:


On Sun, Oct 19, 2014 at 10:52:59AM +0200, Steffen wrote:

how do you deliver new messages to spam's INBOX?


By sending an e-mail to spam.whate...@desfontain.es ?

(I'm not sure I understand the question?)



How does your MTA deliver the messages to the INBOX, do you use
Dovecor LDA, LMTP or the MTA?


The MTA itself delivers it, I think. Here are my config files :
- http://paste.fulltxt.net/xx31R (/etc/postfix/main.cf)
- and http://paste.fulltxt.net/t9iXRBIH (/etc/postfix/master.cf)


I don't use Postfix, but neither Postfix nor Maildrop honor Dovecot's 
permission settings obviously. So, you need to re-configure those to set 
the Unix permissions, too.


I'd recommend to reconfigure Postfix to use Dovecot LMTP:
http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP

or Dovecot LDA. However, if you use maildrop filtering, you have to 
switch to Dovecot Pigeonhole Sieve filtering.


- -- 
Steffen Kaiser

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)

iQEVAwUBVESrcHz1H7kL/d9rAQIDlggAgN1l0PA0yWYVIMIpuehVb0bKkdiKsDh1
adP899zThrl8/gKC6TQLldbCi92Kxnudt+yCZef07oFoiZxy3Xj+o7jECJrWI900
LLG1TrwR2IX2jmwKL3XNR2F5nOJl2ePp8YI5LxYZiys2eZ1Ug9Ks0klJTEBzKCY3
cZqad5+T7C1Lp39IjJF9ILPUWaCIFgkTgWBt/TvgXx6zj4zYxFL1bweN2zZOteFz
m3nm8GcWlfXs2R9zc7Lpn+SM8IjRAZKB+/PtF2eqDHxQ+D8mddIqDFQhSK30sjfq
Cf5ZMB7/+jEzSi4DdEnNwrsSGyuoJCEA5Ekoj1zR5M0HNOWMKy4V6A==
=1q+8
-END PGP SIGNATURE-


Re: last_login plugin with MySQL

2014-10-20 Thread Steffen Kaiser

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Sun, 19 Oct 2014, Michael Cramer wrote:


Gedalya wrote on 18/10/2014 17:36:


The code looks at shared/$last_login_key, so shared/last-login/username,
but your map says /shared/last-login/$user, note the leading slash! That's
probably all it is.



BINGO!

Now that we killed the mosters of this level, let's move to the next 
level.


I was expecting an UPDATE...WHERE but I got this:

INSERT INTO mailbox (lastlogin,username) VALUES ('1413647370','username') 
ON

DUPLICATE KEY UPDATE lastlogin='1413647370'


anybody knows how this can be achieved with postgresql, because 'ON DUPLICATE 
KEY UPDATE' syntax is mysql specific


http://wiki2.dovecot.org/Quota/Dict see the section about If you're using 
PostgreSQL, you'll need a trigger


- -- 
Steffen Kaiser

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)

iQEVAwUBVESzD3z1H7kL/d9rAQLX8wf/WoO/J8GSf5ht2ZH7tV731jxvjd29epJr
LzyqJ9DdwAt/4doR7/RK+3TKYfEzvkP7wkzOr7j6IkWhM9R2NXdXRLpYmKYG0GOb
oPueNHQ3ibAcGgYHNL14UJve/H+laxJXOWYhlxM8CgR2IT+EBeJIGiHmVWjUm3DL
f1Wxwzf4Ozdl0nRwZGr0nToVklaDabB9wdNNdBno+42UcbdENZdloWbAEs/2HjfA
0ckbJ4BXf+SR/TgeRmMPXMIN7/n4iIJnikTQuuE0MhV5DgdTfY0Xa1p+sE0Q1qSO
pxC7FxYaaI+Yxk9q/NT8HJRwMbx3T0GQ0zyh8Bo0DH/v1QSvbgtJrg==
=nZET
-END PGP SIGNATURE-


2.2.14 Panic in sync_expunge_range()

2014-10-20 Thread Hans Morten Kind
I am getting some panics after upgrading from 2.2.13 to 2.2.14

This panic happens for one user only, he is subscribed to 86 folders,
on two of them this panic happens quite often - several times a day.

The mbox folders seems OK, less than 30M with 30 and 200 messages.

Panic: file mail-index-sync-update.c: line 250 (sync_expunge_range): assertion 
failed: (count  0)

hmk


GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type show copying
and show warranty for details.
This GDB was configured as i386-pc-solaris2.10...
Reading symbols from 
/datapool/local/dovecot-2.2.14/lib/dovecot/libdovecot-storage.so.0...done.
Loaded symbols for /local/dovecot-2.2.14/lib/dovecot/libdovecot-storage.so.0
Reading symbols from 
/datapool/local/dovecot-2.2.14/lib/dovecot/libdovecot.so.0...done.
Loaded symbols for /local/dovecot-2.2.14/lib/dovecot/libdovecot.so.0
Reading symbols from /datapool/local/program/lib/libssl.so.1.0.0...done.
Loaded symbols for /local/program/lib/libssl.so.1.0.0
Reading symbols from /datapool/local/program/lib/libcrypto.so.1.0.0...done.
Loaded symbols for /local/program/lib/libcrypto.so.1.0.0
Reading symbols from /datapool/local/program/lib/libz.so...done.
Loaded symbols for /local/program/lib/libz.so
Reading symbols from /lib/libm.so.2...done.
Loaded symbols for /lib/libm.so.2
Reading symbols from /datapool/local/program/lib/libiconv.so.2...done.
Loaded symbols for /local/program/lib/libiconv.so.2
Reading symbols from /lib/librt.so.1...done.
Loaded symbols for /lib/librt.so.1
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libsocket.so.1...done.
Loaded symbols for /lib/libsocket.so.1
Reading symbols from /lib/libsendfile.so.1...done.
Loaded symbols for /lib/libsendfile.so.1
Reading symbols from /lib/libc.so.1...done.
Loaded symbols for /lib/libc.so.1
Reading symbols from /lib/libdl.so.1...done.
Loaded symbols for /lib/libdl.so.1
Reading symbols from /usr/lib/libz.so...done.
Loaded symbols for /usr/lib/libz.so
Reading symbols from /lib/libaio.so.1...done.
Loaded symbols for /lib/libaio.so.1
Reading symbols from /lib/libmd.so.1...done.
Loaded symbols for /lib/libmd.so.1
Reading symbols from /lib/ld.so.1...done.
Loaded symbols for /lib/ld.so.1
Core was generated by `dovecot/imap imap-postlogin'.
Program terminated with signal 6, Aborted.
[New process 76621]
#0  0xfe7fc8e5 in _lwp_kill () from /lib/libc.so.1
#0  0xfe7fc8e5 in _lwp_kill () from /lib/libc.so.1
No symbol table info available.
#1  0xfe7f7765 in thr_kill () from /lib/libc.so.1
No symbol table info available.
#2  0xfe7a376f in raise () from /lib/libc.so.1
No symbol table info available.
#3  0xfe7829e1 in abort () from /lib/libc.so.1
No symbol table info available.
#4  0xfeda13ba in default_fatal_finish (type=LOG_TYPE_PANIC, status=0) at 
failures.c:152
backtrace = 0x8093660 0xfeda22d7 - 0xfeda15d3 - 0xfef31e5f - 
0xfef32d65 - 0xfef3349e - 0xfef33b77 - 0xfef1dcbd - 0xfef170e4 - 
0xfef173a4 - 0xfef1767d - 0xfef03e09 - 0xfeea5540 - 0xfeea5714 - 
0xfeea5857 - 0xfe...
#5  0xfeda22d7 in i_internal_fatal_handler (ctx=0x8047400, 
format=0xfef5ebc8 file %s: line %d (%s): assertion failed: (%s), 
args=0x8047424 .ìõþú)
at failures.c:152
status = 0
#6  0xfeda15d3 in i_panic (format=0xfef5ebc8 file %s: line %d (%s): assertion 
failed: (%s))
at failures.c:152
ctx = {type = LOG_TYPE_PANIC, exit_status = 0, timestamp = 0x0, 
timestamp_usecs = 0}
args = 0x8047424 .ìõþú
#7  0xfef31e5f in sync_expunge_range (ctx=0x8047600, seqs=0x80474d8) at 
../../src/lib/array.h:197
map = (struct mail_index_map *) 0x80c5d90
range = (const struct seq_range *) 0x8093430
i = 134509780
count = 0
dest_seq1 = 562
prev_seq2 = 562
orig_rec_count = 4277606968
__FUNCTION__ = sync_expunge_range
#8  0xfef32d65 in mail_index_sync_record_real (ctx=0x8047600, hdr=0x80b5d28, 
data=0x80b5df8)
at ../../src/lib/array.h:197
rec = (const struct mail_transaction_expunge_guid *) 0x80b8968
end = (const struct mail_transaction_expunge_guid *) 0x80b8968
seqs = {arr = {buffer = 0x8093410, element_size = 8}, v = 0x8093410, 
v_modifiable = 0x8093410}
seq = 0
modseq = 32612
ret = 0
__FUNCTION__ = mail_index_sync_record_real
#9  0xfef3349e in mail_index_sync_record (ctx=0x8047600, hdr=0x80b5d28, 
data=0x80b5df8)
at ../../src/lib/array.h:197
_data_stack_cur_id = 5
ret = 1
#10 0xfef33b77 in mail_index_sync_map (_map=0x80b5400, 
type=MAIL_INDEX_SYNC_HANDLER_HEAD, force=true)
at ../../src/lib/array.h:197
map = (struct mail_index_map *) 0x0
index = (struct mail_index *) 0x80b53b0
view = (struct mail_index_view *) 0x80ab8b0

2.2.14 Panic in imap_fetch_more()

2014-10-20 Thread Hans Morten Kind
This panic happens with different users, and it also occured in 2.2.13

Panic: file imap-fetch.c: line 556 (imap_fetch_more): assertion failed:
  (ctx-client-output_cmd_lock == NULL || ctx-client-output_cmd_lock == cmd)

hmk


GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type show copying
and show warranty for details.
This GDB was configured as i386-pc-solaris2.10...
Reading symbols from 
/datapool/local/dovecot-2.2.14/lib/dovecot/libdovecot-storage.so.0...done.
Loaded symbols for /local/dovecot-2.2.14/lib/dovecot/libdovecot-storage.so.0
Reading symbols from 
/datapool/local/dovecot-2.2.14/lib/dovecot/libdovecot.so.0...done.
Loaded symbols for /local/dovecot-2.2.14/lib/dovecot/libdovecot.so.0
Reading symbols from /datapool/local/program/lib/libssl.so.1.0.0...done.
Loaded symbols for /local/program/lib/libssl.so.1.0.0
Reading symbols from /datapool/local/program/lib/libcrypto.so.1.0.0...done.
Loaded symbols for /local/program/lib/libcrypto.so.1.0.0
Reading symbols from /datapool/local/program/lib/libz.so...done.
Loaded symbols for /local/program/lib/libz.so
Reading symbols from /lib/libm.so.2...done.
Loaded symbols for /lib/libm.so.2
Reading symbols from /datapool/local/program/lib/libiconv.so.2...done.
Loaded symbols for /local/program/lib/libiconv.so.2
Reading symbols from /lib/librt.so.1...done.
Loaded symbols for /lib/librt.so.1
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libsocket.so.1...done.
Loaded symbols for /lib/libsocket.so.1
Reading symbols from /lib/libsendfile.so.1...done.
Loaded symbols for /lib/libsendfile.so.1
Reading symbols from /lib/libc.so.1...done.
Loaded symbols for /lib/libc.so.1
Reading symbols from /lib/libdl.so.1...done.
Loaded symbols for /lib/libdl.so.1
Reading symbols from /usr/lib/libz.so...done.
Loaded symbols for /usr/lib/libz.so
Reading symbols from /lib/libaio.so.1...done.
Loaded symbols for /lib/libaio.so.1
Reading symbols from /lib/libmd.so.1...done.
Loaded symbols for /lib/libmd.so.1
Reading symbols from /lib/ld.so.1...done.
Loaded symbols for /lib/ld.so.1
Core was generated by `dovecot/imap imap-postlogin'.
Program terminated with signal 6, Aborted.
[New process 79111]
#0  0xfe7fc8e5 in _lwp_kill () from /lib/libc.so.1
#0  0xfe7fc8e5 in _lwp_kill () from /lib/libc.so.1
No symbol table info available.
#1  0xfe7f7765 in thr_kill () from /lib/libc.so.1
No symbol table info available.
#2  0xfe7a376f in raise () from /lib/libc.so.1
No symbol table info available.
#3  0xfe7829e1 in abort () from /lib/libc.so.1
No symbol table info available.
#4  0xfeda13ba in default_fatal_finish (type=LOG_TYPE_PANIC, status=0) at 
failures.c:152
backtrace = 0x8093560 0xfeda22d7 - 0xfeda15d3 - 0x806d60b - 
0x805d326 - 0x806aa61 - 0x80699d2 - 0x8069cb7 - 0x8069d15 - 0x8069e57 - 
0x8069fe0 - 0xfedba96d - 0xfedbc0cc - 0xfedbab06 - 0xfedbaa5d - 0xfed41db1 
-...
#5  0xfeda22d7 in i_internal_fatal_handler (ctx=0x80479e0, 
format=0x807f310 file %s: line %d (%s): assertion failed: (%s), 
args=0x8047a04 \236ó\a\b,\002)
at failures.c:152
status = 0
#6  0xfeda15d3 in i_panic (format=0x807f310 file %s: line %d (%s): assertion 
failed: (%s))
at failures.c:152
ctx = {type = LOG_TYPE_PANIC, exit_status = 0, timestamp = 0x0, 
timestamp_usecs = 0}
args = 0x8047a04 \236ó\a\b,\002
#7  0x0806d60b in imap_fetch_more (ctx=0x80c20e0, cmd=0x80c2018) at 
../../src/lib/array.h:158
ret = 135365712
__FUNCTION__ = imap_fetch_more
#8  0x0805d326 in cmd_fetch (cmd=0x80c2018) at cmd-fetch.c:37
client = (struct client *) 0x80b17b8
ctx = (struct imap_fetch_context *) 0x80c20e0
args = (const struct imap_arg *) 0x80c99f0
next_arg = (const struct imap_arg *) 0x80c9a20
list_arg = (const struct imap_arg *) 0x8047a98
search_args = (struct mail_search_args *) 0x0
qresync_args = {qresync_sample_seqset = 0x80c20a8, 
qresync_sample_uidset = 0x807ee7e}
messageset = 0x80c9ab8 1899
send_vanished = false
ret = 1
#9  0x0806aa61 in command_exec (cmd=0x80c2018) at imap-commands.c:101
hook = (const struct command_hook *) 0x809bfd8
ret = 8
#10 0x080699d2 in client_command_input (cmd=0x80c2018) at imap-client.c:130
client = (struct client *) 0x80b17b8
command = (struct command *) 0x3
__FUNCTION__ = client_command_input
#11 0x08069cb7 in client_command_input (cmd=0x80c2018) at imap-client.c:130
client = (struct client *) 0x80b17b8
command = (struct command *) 0x809d41c
__FUNCTION__ = client_command_input
#12 0x08069d15 in client_handle_next_command (client=0x80b17b8, 
remove_io_r=0x8047b9d)
at imap-client.c:130
No locals.
#13 0x08069e57 in client_handle_input 

Sieve: carry global variables from sieve_before to user sieve scripts

2014-10-20 Thread Alexander 'Leo' Bergolth
Hi!

Is there a way to initialize global variables with default values in
sieve_before scripts that can be used in the sieve_default script or in
user scripts?

I've tried the following code but this doesn't work..

before.d/10-set-defaults.sieve:
 8 
require [variables, include];
require vnd.dovecot.debug;
set global.S_TESTVAR leo;
debug_log LEO SIEVE: in before.d/10-set-defaults, S_TESTVAR:
${global.S_TESTVAR};
 8 

default.sieve:
 8 
require [variables, include];
require vnd.dovecot.debug;

global S_TESTVAR;
debug_log LEO SIEVE: in default.sieve: S_TESTVAR: ${global.S_TESTVAR},
${S_TESTVAR};
 8 

Is there any other way to set up defaults in a global sieve script?

Cheers,
--leo
-- 
e-mail   ::: Leo.Bergolth (at) wu.ac.at
fax  ::: +43-1-31336-906050
location ::: IT-Services | Vienna University of Economics | Austria


Re: fixes for quota support on NetBSD

2014-10-20 Thread Thomas Klausner
This patch still applies cleanly against 2.2.14, and is still needed.
 Thomas

On Fri, Oct 10, 2014 at 05:07:38PM +0200, Thomas Klausner wrote:
 Hi!
 
 dovecot-2.2.13 already has quota support for NetBSD, but it's buggy.
 The attached patches by Manuel Bouyer bou...@netbsd.org fix the
 issues.
 
 There is one thing that's not nice in them: one include is now for
 /usr/include/quota.h since dovecot comes with its own file quota.h
 which is earlier in the search path. Perhaps dovecot's copy can be
 renamed to dovecot-quota.h or to some other non-conflicting name?
 
 Cheers,
  Thomas

 $NetBSD: patch-src_plugins_quota_quota-fs.c,v 1.4 2013/08/05 23:12:42 bouyer 
 Exp $
 
 fix support for NetBSD's libquota
 
 --- src/plugins/quota/quota-fs.c.orig 2013-02-26 09:42:04.0 +0100
 +++ src/plugins/quota/quota-fs.c  2013-08-06 01:00:32.0 +0200
 @@ -672,34 +672,38 @@
  {
   struct quotakey qk;
   struct quotaval qv;
 + struct quotahandle *qh;
 + int ret;
  
 - if (root-qh == NULL) {
 - if ((root-qh = quota_open(root-mount-mount_path)) == NULL) {
 - i_error(cannot open quota for %s: %m,
 - root-mount-mount_path);
 - fs_quota_root_disable(root, group);
 - return 0;
 - }
 - } 
 + if ((qh = quota_open(root-mount-mount_path)) == NULL) {
 + i_error(cannot open quota for %s: %m,
 + root-mount-mount_path);
 + fs_quota_root_disable(root, group);
 + return 0;
 + }
  
   qk.qk_idtype = group ? QUOTA_IDTYPE_GROUP : QUOTA_IDTYPE_USER;
   qk.qk_id = group ? root-gid : root-uid;
   qk.qk_objtype = bytes ? QUOTA_OBJTYPE_BLOCKS : QUOTA_OBJTYPE_FILES;
  
 - if (quota_get(root-qh, qk, qv) != 0) {
 + if (quota_get(qh, qk, qv) != 0) {
   if (errno == ESRCH) {
   fs_quota_root_disable(root, group);
   return 0;
   }
   i_error(quotactl(Q_GETQUOTA, %s) failed: %m,
   root-mount-mount_path);
 - return -1;
 + ret = -1;
 + goto end;
   }
  
   *value_r = qv.qv_usage * DEV_BSIZE;
   *limit_r = qv.qv_softlimit * DEV_BSIZE;
  
 - return 1;
 + ret = 1;
 +end:
 + quota_close(qh);
 + return ret;
  }
  #endif
  

 $NetBSD: patch-src_plugins_quota_quota-fs.h,v 1.4 2013/08/05 23:12:42 bouyer 
 Exp $
 
 fix support for NetBSD's libquota
 
 --- src/plugins/quota/quota-fs.h.orig 2013-08-06 00:53:34.0 +0200
 +++ src/plugins/quota/quota-fs.h  2013-08-06 00:54:29.0 +0200
 @@ -7,7 +7,8 @@
  #endif
  
  #ifdef HAVE_QUOTA_OPEN
 -#  include quota.h /* NetBSD with libquota */
 +/* absolute path to avoid confusion with ./quota.h */
 +#  include /usr/include/quota.h /* NetBSD with libquota */
  #endif
  
  #ifdef HAVE_SYS_QUOTA_H


replication sieve settings

2014-10-20 Thread Martin Schmidt

Hello,

can someone give me a hint, where to find an info, how to setup dovecote 
replication with sieve?


On my active.active setup, it replicates the user mdboxes
and sieve works also, on the active destination fileserver.

Client changes the sieve, tests work fine. But the sieve file won't get 
replicated to the replica server.


As i've researched, it was introduced in dovecot v2.2.rc3

Is it default, that doveadm replicator replicate '*'
includes the sieve and i made a config error?
Or is there an option to set for the replication service?



On dovecot director server, i've set director
in conf.d/20-managesieve.conf

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

and added sieve to plugins
in conf.d/20-lmtp.conf
protocol lmtp {
  mail_plugins = $mail_plugins sieve
}



doveconf -n
...
director_mail_servers = 192.168.200.10 192.168.200.11
director_servers = 192.168.200.1:9090 192.168.200.2:9090
disable_plaintext_auth = no
doveadm_port = 24245
lmtp_proxy = yes
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope 
encoded-character vacation subaddress comparator-i;ascii-numeric 
relational regex imap4flags copy include variables body enotify 
environment mailbox date ihave duplicate


plugin {
  sieve = file:~/sieve;active=~/.dovecot.sieve
}
protocols =  imap lmtp sieve pop3
...

service managesieve-login {
  executable = managesieve-login director
  inet_listener sieve {
port = 4190
  }
}
...
protocol lmtp {
  auth_socket_path = director-userdb
  mail_plugins =  sieve
}
...




Thank you

Martin Schmidt
Germany


90-sieve.conf syntax - moving from v2.0.x to v2.2.x

2014-10-20 Thread deoren

Hi,

I'm currently running version v2.0.x in production (using Maildir 
storage) and it's been working well. I'm interested in moving to version 
2.2.x and am preparing a test server to do so. As I have been merging 
the conf file changes between the two versions I noticed syntax changes 
for the 90-sieve.conf file.


There are now 'locations' and presumably to keep referring to local 
content I'll need to use the 'file:' location type.


On my production box (v2.0.x) I have 90-sieve.conf configured like so:

sieve = /var/vmail/sieve/%d/%n/.dovecot.sieve
sieve_default = /var/vmail/sieve/global.sieve
sieve_dir = /var/vmail/sieve/%d/%n/sieve_dir

Inside of the /var/vmail/sieve/%d/%n/ directory (i.e., 
/var/vmail/sieve/example.com/testuser/) I find:


drwxr-xr-x 3 vmail vmail   64 Oct 19 12:07 .
drwxr-xr-x 9 vmail vmail  101 Jun 21 10:47 ..
lrwxrwxrwx 1 vmail vmail   25 Jun 21 11:10 .dovecot.sieve - 
sieve_dir/roundcube.sieve

-rw--- 1 vmail vmail 3694 Oct 19 12:07 .dovecot.svbin
drwx-- 3 vmail vmail   38 Oct 19 11:58 sieve_dir

and that works well.

I look at the current wiki documentation:

http://wiki2.dovecot.org/Pigeonhole/Sieve/Configuration

and I find that the 'seive_dir' conf option is still listed, but the 
comments for it appear very similar to the comments that precede the 
'sieve' conf option in the stock 90-sieve.conf file:


  # The location of the user's main Sieve script or script storage. The 
LDA
  # Sieve plugin uses this to find the active script for Sieve filtering 
at

  # delivery. The include extension uses this location for retrieving
  # :personal scripts. This is also where the ManageSieve service will 
store

  # the user's scripts, if supported.

Assuming that the 'sieve' and 'sieve_dir' conf settings have not been 
merged into just 'sieve' (and that I need to use the 'file:' location 
specifier), is this how I would configure the two settings for Dovecot 
2.2.x?


sieve = file:/var/vmail/sieve/%d/%n;active=~/.dovecot.sieve
sieve_dir = file:/var/vmail/sieve/%d/%n/sieve_dir

If the two have been merged, how would I go about configuring the 
90-sieve.conf file to get the same results?


Thanks for your help.


Re: last_login plugin with MySQL

2014-10-20 Thread Joseph Tam

Michael Cramer mich...@bigmichi1.de writes:


anybody knows how this can be achieved with postgresql, because 'ON
DUPLICATE KEY UPDATE' syntax is mysql specific


A clear, concise explanation of consistency problems with SQL
update-or-insert (upsert) operation, including a PostgreSQL
implementation:

http://www.depesz.com/2012/06/10/why-is-upsert-so-complicated/

Joseph Tam jtam.h...@gmail.com