On 11/19/2013 11:00 PM, LuKreme wrote:
I have a procmail recipe that does the majority of my heavy lifting for my mailing lists. It's pretty straightforward, but as I understand it, this isn't something sieve can do:
# [ ] contains a space and a tab :0
- 9876543210^0 ^(List-Id:.*<|X-Mailing-List:[ ]*)\/[-A-z0-9_+]+
- 9876543210^0 ^(List-Post:[ ]*(<mailto:)?|List-Owner:[ ]*(<mailto:)?owner-)\/[-A-Z0-9_+]+
- 9876543210^0 ^(Sender:[ ]*owner-|X-BeenThere:[ ]*|Delivered-To:[ ]*mailing list )\/[-A-Za-z0-9_+]+
- 9876543210^0 ^Sender:.* List"? <(mailto:)?\/[-A-Z0-9_+]+ { LISTNAME=$MATCH }
Basically, it checks the headers for any one of the headers
List-ID: List-Post: List-Owner: Sender: owner- X-BeenThere: Delivered-To: Sender:.*List
and parses out the name of the list, writing it to the LISTNAME variable
For the vast majority of mailing lists the message is then written to
.$LISTNAME/
This means that, by default, a new mailing list is automatically sorted to its own mailbox without my doing anything at all.
Is this something hat Sieve can do? Does it have variable assignment?
Yes and yes. I'd normally translate the above Procmail recipe for you, but it is a bit hard to read because my Procmailese is a bit rusty regarding regular expressions. So I'll just work with your question. A very simple example looks as follows:
require "variables"; require "fileinto";
if header :matches "list-id" "*" { set "listname" "${1}"; }
fileinto "$listname";
The mailbox dot prefix is implicit (assuming it is a maildir). To fully translate your recipe, you'll probably need the regex extension (http://tools.ietf.org/html/draft-murchison-sieve-regex-08) as well. The (match) variables are documented in RFC 5229 (http://tools.ietf.org/html/rfc5229).
Regards,
Stephan.