[Dovecot] libsieve problems / wishes
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hello,
I'm trying libsieve (853:42e154b8792e) to cope with our current installation, the following issues arise:
- vacation addresses are compared case-sensitivly, e.g.:
vacation :addresses [ "Steffen.Kaiser@example.com" ] "";
it won't match "steffen.kaiser@...".
attached patch makes a first shot about that problem, leaving:
1a) maybe one should lower-case :addresses argument at compile time and my_address at run-time and then use strcmp() again.
1b) duplicate checks are case-sensitive, too. This is probably no big issue, because if the same person uses different variants of his/her mail address for sending, s/he does not deserve better.
1c) Suppression of replies to own mails are case-sensitive, too. Well, many people I know test that "it just works" by sending themselves a mail. I would disable this check.
- we have about 157 ways to write the domain part. Not all accounts are available in all of them, but it's close to it. The old vacation program we used prior to "cmusieve" didn't care about the domain unless explicitly given. It was quite painful.
Attached patch adds a "domainless" variant of :addresses arguments in such way, that
vacation :addresses [ "Steffen.Kaiser" ] "";
matches any domain.
Ideally, it would be better to specify all valid domains, but perhaps one can leave that for another approach with a different syntax, e.g. with "@*" as domain? Maybe, there is a better approach. Now there is possibility that common local parts are matched from alien domains easily.
If to specify a set of "default" domains would be an option for libsieve, what is the suggested way:
- as user-option via dovecot.conf?
- as admin-enforced Sieve-script that sets some internal variables? aka using the multi-script capability
- ???
- Because I try to migrate from cmusieve v1.0, I have a name issue with "imapflags".
README sec "* Supports all extensions provided by the original CMUSieve plugin:" and sec "Implementation Status" explains that "imapflags" is available.
This is not true entirly: "imapflags" is not, lib-sieve uses the name "imap4flags" as defined by RFC.
So, it leaves me with two options: 3a) convert all user scripts and hack Horde-Ingo, or 3b) have libsieve accept the alias "imapflags" for the extension "imap4flags".
Would it be worhtwhile for libsieve to implement aliases for extensions, so that they are available in require by more than one name?
About Horde-Ingo, maybe they have an update to use "imap4flags", too, but it looks like that I upgrade Dovecot before Horde.
Bye,
Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux)
iQEVAwUBSYccg3WSIuGy1ktrAQLlaQf+NHtyBxMb3aqnaw58zapo3/5kgqMM4GA+ 68el9d1CK4URjuk9io3MBsSzEJ4lRy6VFHNLw0jyNEnZp7l0vv5UoiK/+af7LCW5 H2T/qYL+lG/ul870t0/3q5wHmtrriAGQqE215C1u5/trJRX/sQLzDq1tbOtV4/vQ xUa8P0TXvCsgGSzCCmNiU0AenTIRGnxo+sCiyxnDKhgmWph/t06GYHX77CKwumK8 O57rh3RD9hA5yjicTbEZVLzeDDPEmCFliiSR6qMukfxOwX6LIxqhfw8n3cmSm8+X QyK6d/pBxy6EC14XhRQ7Jjtse+gWraiVJ/kcXKuW8sNPphtrGM1fdQ== =uuB6 -----END PGP SIGNATURE-----
Hi Steffen,
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hello,
I'm trying libsieve (853:42e154b8792e) to cope with our current installation, the following issues arise:
- vacation addresses are compared case-sensitivly, e.g.:
vacation :addresses [ "Steffen.Kaiser@example.com" ] "";
it won't match "steffen.kaiser@...". Hmm, not sure whether I should change this in general. For the domain
Steffen Kaiser wrote: part, yes, it is definitely a bug if it compares case-sensitively. However, to my knowledge, the local part of rfc822 addresses is usually considered case-sensitive. I'll give this a look tonight.
I could of make the case-sensitivity of local parts configurable. Timo, any ideas on this?
(...)
Attached patch adds a "domainless" variant of :addresses arguments in such way, that
vacation :addresses [ "Steffen.Kaiser" ] "";
matches any domain.
Ideally, it would be better to specify all valid domains, but perhaps one can leave that for another approach with a different syntax, e.g. with "@*" as domain? Maybe, there is a better approach. Now there is possibility that common local parts are matched from alien domains easily.
If to specify a set of "default" domains would be an option for libsieve, what is the suggested way:
- as user-option via dovecot.conf?
- as admin-enforced Sieve-script that sets some internal variables? aka using the multi-script capability
- ??? Hmm, I need to give this some more thought. I'd rather not introduce non-standard behavior that some users start depending on. Sieve is supposed to be portable. There is usually a reason why things are specified as they are. I could have a chat on this with a few of the RFC editors.
Are you trying to solve the situation where one user can have many (domain-)aliases on the local server? This could be solved (for the most part) by adding the user's local aliases using some sort of background configuration, e.g. returned from a userdb lookup. This avoids the need for each user to specify all its local aliases explicitly. Then, only externally forwarded mail addresses need to be specified explicitly in :addresses by the user, but those addresses should be no concern for the local Sieve administrator.
- Because I try to migrate from cmusieve v1.0, I have a name issue with "imapflags".
README sec "* Supports all extensions provided by the original CMUSieve plugin:" and sec "Implementation Status" explains that "imapflags" is available. Oh, it is mentioned in the wiki, but obviously I forgot to mention this in the package documentation.
This is not true entirly: "imapflags" is not, lib-sieve uses the name "imap4flags" as defined by RFC.
So, it leaves me with two options: 3a) convert all user scripts and hack Horde-Ingo, or 3b) have libsieve accept the alias "imapflags" for the extension "imap4flags".
Would it be worhtwhile for libsieve to implement aliases for extensions, so that they are available in require by more than one name? There is usually a good reason why the specification authors change an extension name like this. To my knowledge there are a few subtle but important differences between the specification that called this extension 'imapflags' and the latest RFC that now calls this imap4flags. I'll compare the specifications and try to find out whether I can quickly build a little brother to the imap4flags extension that implements the imapflags specification. This will not be enabled by default and thus needs to be configured explicitly using the sieve_extensions setting.
(Currently, the sieve_extensions setting is a bit annoying, because it requires you to specify every enabled extension. It would be nice if one could alternatively specify which extensions should be added/removed from the default list. Ideas to do this cleanly are greatly appreciated.)
NB: Something similar is true for the (e)notify extension.
Regards,
Stephan
On Mon, 2009-02-02 at 19:14 +0100, Stephan Bosch wrote:
- vacation addresses are compared case-sensitivly, e.g.:
vacation :addresses [ "Steffen.Kaiser@example.com" ] "";
it won't match "steffen.kaiser@...". Hmm, not sure whether I should change this in general. For the domain part, yes, it is definitely a bug if it compares case-sensitively. However, to my knowledge, the local part of rfc822 addresses is usually considered case-sensitive. I'll give this a look tonight.
I could of make the case-sensitivity of local parts configurable. Timo, any ideas on this?
I think I agree with Mark Crispin: http://mailman2.u.washington.edu/pipermail/imap-uw/2008-September/002190.htm...
Timo Sirainen schreef:
On Mon, 2009-02-02 at 19:14 +0100, Stephan Bosch wrote:
- vacation addresses are compared case-sensitivly, e.g.:
vacation :addresses [ "Steffen.Kaiser@example.com" ] "";
it won't match "steffen.kaiser@...". Hmm, not sure whether I should change this in general. For the domain part, yes, it is definitely a bug if it compares case-sensitively. However, to my knowledge, the local part of rfc822 addresses is usually considered case-sensitive. I'll give this a look tonight.
I could of make the case-sensitivity of local parts configurable. Timo, any ideas on this?
I think I agree with Mark Crispin: http://mailman2.u.washington.edu/pipermail/imap-uw/2008-September/002190.htm...
Hehehe ok, let's not deviate from consensus then :)
Regards,
-- Stephan Bosch stephan@rename-it.nl
Words by Stephan Bosch [Mon, Feb 02, 2009 at 07:40:06PM +0100]:
Timo Sirainen schreef:
On Mon, 2009-02-02 at 19:14 +0100, Stephan Bosch wrote:
- vacation addresses are compared case-sensitivly, e.g.:
vacation :addresses [ "Steffen.Kaiser@example.com" ] "";
it won't match "steffen.kaiser@...". Hmm, not sure whether I should change this in general. For the domain
part, yes, it is definitely a bug if it compares case-sensitively.
However, to my knowledge, the local part of rfc822 addresses is usually considered case-sensitive. I'll give this a look tonight.I could of make the case-sensitivity of local parts configurable. Timo, any ideas on this?
I think I agree with Mark Crispin: http://mailman2.u.washington.edu/pipermail/imap-uw/2008-September/002190.htm...
Hehehe ok, let's not deviate from consensus then :)
And it would be a PITA to configure that case sensitive.
-- Jose Celestino | http://japc.uncovering.org/files/japc-pgpkey.asc
"One man’s theology is another man’s belly laugh." -- Robert A. Heinlein
Jose Celestino schreef:
Words by Stephan Bosch [Mon, Feb 02, 2009 at 07:40:06PM +0100]:
Timo Sirainen schreef:
On Mon, 2009-02-02 at 19:14 +0100, Stephan Bosch wrote:
- vacation addresses are compared case-sensitivly, e.g.:
vacation :addresses [ "Steffen.Kaiser@example.com" ] "";
it won't match "steffen.kaiser@...". Hmm, not sure whether I should change this in general. For the domain
part, yes, it is definitely a bug if it compares case-sensitively.
However, to my knowledge, the local part of rfc822 addresses is usually considered case-sensitive. I'll give this a look tonight.I could of make the case-sensitivity of local parts configurable. Timo, any ideas on this? I think I agree with Mark Crispin: http://mailman2.u.washington.edu/pipermail/imap-uw/2008-September/002190.htm...
Hehehe ok, let's not deviate from consensus then :)
And it would be a PITA to configure that case sensitive.
You mean an ache in the rear end? :) I wouldn't know, I've never used capital letters in a mail address before. I understand your point though.
Regards,
-- Stephan Bosch stephan@rename-it.nl
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Mon, 2 Feb 2009, Timo Sirainen wrote:
I think I agree with Mark Crispin: http://mailman2.u.washington.edu/pipermail/imap-uw/2008-September/002190.htm...
Actually, I also do agree, esp. because many addresses are derived from the name of humans, and many (other) humans "just" use teh "proper" case for names. For some sites that process automatically generated mails most of time, the requirement might be different.
Perhaps a compile-time option would be sufficient to obey RFC and consensus?
Bye,
Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux)
iQEVAwUBSYgpLXWSIuGy1ktrAQJUeAf/ag664GV9bfsKpnTaO1froFB8cBTASxXi EB+ZxDbI4/CZssK/0McPS0iTKT9gGFV9FcbJpRl/JBaft91eEzeg2DQeew2JnGb/ ideAKDZC2keBhagB/hB9KaHkXzX7vGqwNlE5ct9RF3m1w7+fUKJccri0e4AKbvJX zAFrHR8503HvE7juD7KOTtqovesaIKwND7k46CxsvKvE1MlHssm68PgLQnNSRbHH toe0DkLtO1qAzPuS1aWTf6pVqmx4A24x28hI9pgKGnQGxdX8BdNuj9HAFKZaWfFT 9eAME6CJYZTgiuCz1Y8eeEIJjIlPWp64/H9CrgLY52jE/3rX2yvxOA== =H5zg -----END PGP SIGNATURE-----
Steffen Kaiser wrote:
- Because I try to migrate from cmusieve v1.0, I have a name issue with "imapflags".
README sec "* Supports all extensions provided by the original CMUSieve plugin:" and sec "Implementation Status" explains that "imapflags" is available.
This is not true entirly: "imapflags" is not, lib-sieve uses the name "imap4flags" as defined by RFC. Documentation fixed.
So, it leaves me with two options: 3a) convert all user scripts and hack Horde-Ingo, or 3b) have libsieve accept the alias "imapflags" for the extension "imap4flags".
Would it be worhtwhile for libsieve to implement aliases for extensions, so that they are available in require by more than one name? Ok, I've checked the specifications. It would in fact not be much of a problem to have an alias called 'imapflags' for the imap4flags extension, but only if your clients do not use the obsolete mark/unmark commands. Could you confirm this for me?
Check this for documentation on that these commands did:
http://tools.ietf.org/draft/draft-melnikov-sieve-imapflags/draft-melnikov-si...
This specification is almost nine years old. :)
Regards,
-- Stephan Bosch stephan@rename-it.nl
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Tue, 3 Feb 2009, Stephan Bosch wrote:
only if your clients do not use the obsolete mark/unmark commands. Could you confirm this for me?
Horde and all my users manually wrote Sieve scripts use addflag / removeflag only. It seems that some people use (their own) Avelsieve, no mark either.
I never noticed the mark command myself ... . Maybe you offer a compile-time option to put the load of "no 100% conformance to imapflags" on the admin? I would take it :)
Thanks,
Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux)
iQEVAwUBSYlNg3WSIuGy1ktrAQJZEwf+Jw4kQLKwOejemiIJA/MwOCT8tDF2XBOa QyzHWlGshTxsJS7vV6KfEWpa8onDilFcBrF1NS1Fxn1vqLlo1nU4cJYYoQqU0qUm C9LIiUFY6PoMlS+pq/6Rb46Ryt4DjdPV9vMrGJimIeQaZqjdHGN8GplMvYkTgd75 jPf+J882+1T6KcH+zWoc3GII2q2gcIa3bTL+36GKg8tixoXuC+IjeKNResxs730V 6tvSNSjlccilKmgbssCn2NYMq7gQbtucrKCZUKHow76fmKCx7+tGR6DjOnffS1j5 2sTYVXKE5HT+aEpBk7UDFPDcosixCxh9iHzuuhv+v3hPNTGBH5KZyA== =GsDF -----END PGP SIGNATURE-----
On Tue, 3 Feb 2009, Stephan Bosch wrote:
only if your clients do not use the obsolete mark/unmark commands. Could you confirm this for me?
Horde and all my users manually wrote Sieve scripts use addflag / removeflag only. It seems that some people use (their own) Avelsieve, no mark either.
I never noticed the mark command myself ... . Maybe you offer a compile-time option to put the load of "no 100% conformance to imapflags" on the admin? I would take it :) Ok, I finished implementing the 'imapflags' variant of the imap4flags extension. It turned out to be relatively easy to provide support for
Steffen Kaiser wrote: the obsolete mark/unmark commands, so I added those as well. Note that the imapflags extension is not available to the users by default: it needs to be enabled explicitly using the sieve_extensions setting (as explained in the INSTALL file).
Completely solving your vacation :addresses problem will have to wait until after today's/tomorrow's new release. I did however adjust the case-sensitivity of address comparisons to match mail software consensus.
Regards,
-- Stephan Bosch stephan@rename-it.nl
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Thu, 12 Feb 2009, Stephan Bosch wrote:
enabled explicitly using the sieve_extensions setting (as explained in the INSTALL file).
OK, I'll see into it.
Completely solving your vacation :addresses problem will have to wait until after today's/tomorrow's new release. I did however adjust the case-sensitivity of address comparisons to match mail software consensus.
I was busy with other stuff, therefore I didn't responded to:
Are you trying to solve the situation where one user can have many (domain-)aliases on the local server? This could be solved (for the most part) by adding the user's local aliases using some sort of background configuration, e.g. returned from a userdb lookup. This avoids the need for each user to specify all its local aliases explicitly. Then, only externally forwarded mail addresses need to be specified explicitly in :addresses by the user, but those addresses should be no concern for the local Sieve administrator.
My problem is that our domain can be written in 157 variants. Most of them are pretty unused and they could be ignored, but there are still about 16 in practical use.
I have no problem to enumerate all possible domains, but it would break the "real world", if I'd automatically add all variants to :addresses (as hinted by the RFC), because about half of the users respond to a subset of variants only and use other variants for official mailing lists etc.pp. They want to select just some addresses.
On the other hand, there are users, who do not want to use such fine grained control, and organisational roles claimed to be so important that any writing must trigger vacation.
That's why I don't want to enforce all writing variants for the users, but must offer both, and the "catch-all" setting as easy as possible.
Thanks,
Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux)
iQEVAwUBSZUld3WSIuGy1ktrAQIdEgf/XPmg2lTv+whrXe5otwLTWsbtqOI+y2qC 0wTMB6fXqTDtCAjqGdI6jNenFVV8NTOT3OustkR7M1QrskLuECg+yILiFBC6aXz9 AQwD0hDW4/EeHXU2tsK+X8+wi66QJPlr9cakcNsx3MlYP0VDjrVK37edGmB8uf7H 2GrD2hidYDsqBKs+yuy3uFT9KwBOeSiKZP0x0X0T16tUbSPJ4HxageHSF4sba+5L BXWc7plQ8f8VOhV9T1R8eB0aOp0gSyuaGiI7Gm+HzHSWOBtxmqMOxlcj+EWzr6ds q6QxknCISQRM02vNSX3/1aGNLCH4osipxEx5qFGqHDn/Xgon8MMZhg== =BvgI -----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Thu, 12 Feb 2009, Stephan Bosch wrote:
Ok, I finished implementing the 'imapflags' variant of the imap4flags extension. It turned out to be relatively easy to provide support for the obsolete mark/unmark commands, so I added those as well. Note that the imapflags extension is not available to the users by default: it needs to be enabled explicitly using the sieve_extensions setting (as explained in the INSTALL file).
I was fighting how to enable the "imapflags" alias.
src/lib-sieve/sieve-extensions.c looks like you have to enumerate all enabled extensions, everything else gets disabled.
I made an approach to make life easier by to allow relative changes. At least I can now use
sieve_extenions = +imapflags
for my Horde/Ingo scripts to work. I did not tested anything else. (The most complex script requires:
Required extensions:
0: comparator-i;ascii-numeric (11) 1: fileinto (5) 2: imapflags (21) 3: relational (12) 4: vacation (9) 5: imap4flags (14)
)
The idea is that if there is at least one extension prefixed with '+' or '-', all listed extensions without such modifier are assumed as to have '+' as well. And that the state of extensions not listed is kept untouched.
sieved missed '-x <ext>' in the help text.
Bye,
Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux)
iQEVAwUBShuc0HWSIuGy1ktrAQJwIwf9HwFeSWCxZuCSDsLW2xtnwk9pMuVQvORm TVRL26c3g4N3APgz7AUrNPydPrx60U1kdqKtQneeZTCQPkXMOyPRPciepUv2TKYW lWeK/rVkWsdQQ0P2OOHPRjtanmf6/a0mfU0xhs6hF9K4fnj9bGnKpLfKEvpuogf4 wS1twUcOQGXdd+8aDydoaNGLVV8biH+V82fWL2Q5qxYffXOVhSiaFe7IyNnHrf/j LG4ePh48HMiNmDyf2Y1V2FACFmDICjaLZW7T6yilx2T6NaJXQWTKmagtsREvEKUC c8+XbZgknWZD8mvgz/9q2mAEzsXpnVIc/27iN7k4IQHDMJPfO3OOtw== =TYxA -----END PGP SIGNATURE-----
participants (5)
-
Jose Celestino
-
Steffen Kaiser
-
Stephan Bosch
-
Stephan Bosch
-
Timo Sirainen