On 5/9/17, 11:25 AM, "dovecot on behalf of Christian Kivalo" <dovecot-bounces at dovecot.org on behalf of ml+dovecot at valo.at> wrote: Am 9. Mai 2017 17:47:13 MESZ schrieb Adam Shostack <adam at shostack.org>: >Hi, > >Is there a clean way to match on an email address the way procmail >^TO_ did? that was a macro which expanded to >(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope >|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?) > >so you could write >* ^TO_dovecot >dovecot > >and grab messages to the list. In sieve, I find myseld writing >["To","cc"] and wonder if there's a better way. You could use the X-BeenThere or List-Id headers to match mailing list traffic -- Christian Kivalo > >Adam I?ve been using: if header :contains ["List-Id","Mailing-List", "Sender","X-List-Name","List-Post"] ["<mailto:php-general at lists.php.net>"] { fileinto "lists/php/general"; stop; } For all my mailing list traffic. That seems(!) to catch most of them.
On Tue, May 09, 2017 at 11:27:22AM -0500, Larry Rosenman wrote: | On 5/9/17, 11:25 AM, "dovecot on behalf of Christian Kivalo" <dovecot-bounces at dovecot.org on behalf of ml+dovecot at valo.at> wrote: | Am 9. Mai 2017 17:47:13 MESZ schrieb Adam Shostack <adam at shostack.org>: | >Hi, | > | >Is there a clean way to match on an email address the way procmail | >^TO_ did? that was a macro which expanded to | >(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope | >|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?) | > | >so you could write | >* ^TO_dovecot | >dovecot | > | >and grab messages to the list. In sieve, I find myseld writing | >["To","cc"] and wonder if there's a better way. | You could use the X-BeenThere or List-Id headers to match mailing list traffic | | -- | Christian Kivalo | > | >Adam | | I?ve been using: | | if header :contains ["List-Id","Mailing-List", | "Sender","X-List-Name","List-Post"] | ["<mailto:php-general at lists.php.net>"] | { | fileinto "lists/php/general"; | stop; | } | | For all my mailing list traffic. That seems(!) to catch most of them. Thanks! Is there anything shorter, or a macro capability? I ask because I manually maintain the file, and really this if address :is :localpart ["to", "cc"] "csprs" {fileinto :create "csprs"; stop;} is easier for me to read and edit than that. Adam
On 5/9/17, 12:38 PM, "Adam Shostack" <adam at shostack.org> wrote: On Tue, May 09, 2017 at 11:27:22AM -0500, Larry Rosenman wrote: | On 5/9/17, 11:25 AM, "dovecot on behalf of Christian Kivalo" <dovecot-bounces at dovecot.org on behalf of ml+dovecot at valo.at> wrote: | Am 9. Mai 2017 17:47:13 MESZ schrieb Adam Shostack <adam at shostack.org>: | >Hi, | > | >Is there a clean way to match on an email address the way procmail | >^TO_ did? that was a macro which expanded to | >(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope | >|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?) | > | >so you could write | >* ^TO_dovecot | >dovecot | > | >and grab messages to the list. In sieve, I find myseld writing | >["To","cc"] and wonder if there's a better way. | You could use the X-BeenThere or List-Id headers to match mailing list traffic | | -- | Christian Kivalo | > | >Adam | | I?ve been using: | | if header :contains ["List-Id","Mailing-List", | "Sender","X-List-Name","List-Post"] | ["<mailto:php-general at lists.php.net>"] | { | fileinto "lists/php/general"; | stop; | } | | For all my mailing list traffic. That seems(!) to catch most of them. Thanks! Is there anything shorter, or a macro capability? I ask because I manually maintain the file, and really this if address :is :localpart ["to", "cc"] "csprs" {fileinto :create "csprs"; stop;} is easier for me to read and edit than that. Adam I haven?t found one. You might(!) be able to use a script or something to generate it. I just keep repeating the block of code. Yes, it can be on one line, but I like readability ( -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 214-642-9640 E-Mail: larryrtx at gmail.com US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281
On Tue, May 09, 2017 at 11:27:22AM -0500, Larry Rosenman wrote:>On 5/9/17, 11:25 AM, "dovecot on behalf of Christian Kivalo" <dovecot-bounces at dovecot.org on behalf of ml+dovecot at valo.at> wrote: > > > > Am 9. Mai 2017 17:47:13 MESZ schrieb Adam Shostack <adam at shostack.org>: > >Hi, > > > >Is there a clean way to match on an email address the way procmail > >^TO_ did? that was a macro which expanded to > >(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope > >|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?) > > > >so you could write > >* ^TO_dovecot > >dovecot > > > >and grab messages to the list. In sieve, I find myseld writing > >["To","cc"] and wonder if there's a better way. > You could use the X-BeenThere or List-Id headers to match mailing list traffic > > -- > Christian Kivalo > > > >Adam > >I?ve been using: > >if header :contains ["List-Id","Mailing-List", > "Sender","X-List-Name","List-Post"] > ["<mailto:php-general at lists.php.net>"] >{ > fileinto "lists/php/general"; > stop; >} > >For all my mailing list traffic. That seems(!) to catch most of them.I can't remember where I got the original algorithm (and, in particular, the ordering) from, but I've been using the attached sieve script for a while with numerous mailinglists. It uses the 'regex' module to parse the mailing-list name from the headers (with various attempts to handle most of the major mailing-list applications). The listname is lower-cased (for consistency) and the message is filed into that folder (creating the folder if necessary). This means that, when I sign up for a new mailing-list, messages just start appearing in their own folder. -- For more information, please reread. -------------- next part -------------- A non-text attachment was scrubbed... Name: mailinglist.sieve Type: application/sieve Size: 2842 bytes Desc: not available URL: <http://dovecot.org/pipermail/dovecot/attachments/20170510/ce6c5f13/attachment.sieve> -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 906 bytes Desc: not available URL: <http://dovecot.org/pipermail/dovecot/attachments/20170510/ce6c5f13/attachment.sig>
Thanks! This is super-interesting. As I try to set up include, I get failures which may indicate a need for more coffee, but in /etc/dovecot/cond.f/90-sieve.conf I have: plugin { # Directory for :personal include scripts. The default is to use home directory. sieve_dir = %h/.sieve # Directory for :global include scripts (not to be confused with sieve_global_path). # If unset, the include fails. sieve_global_dir = /etc/dovecot/sieve/ } In .sieve/mailinglist.sieve I have your file. In my main .dovecot, I have a line include :personal "mailinglist"; When I run sievec, I see: sievec(adam): Debug: Effective uid=1000, gid=1000, home=/home/adam .dovecot: line 181: error: included personal script 'mailinglist' does not exist. .dovecot: error: validation failed. sievec(adam): Error: failed to compile sieve script '.dovecot.sieve' I've tried include "mailinglist" and "mailinglist.sieve"; I've tried it in ~ and the .sieve directory. All this follows https://wiki2.dovecot.org/Pigeonhole/Sieve/Examples, with the exception that I'm using .sieve rather than sieve as the directory name. Can someone point out where I'm failing? Adam On Wed, May 10, 2017 at 10:50:23AM +0100, Darac Marjal wrote: | On Tue, May 09, 2017 at 11:27:22AM -0500, Larry Rosenman wrote: | >On 5/9/17, 11:25 AM, "dovecot on behalf of Christian Kivalo" <dovecot-bounces at dovecot.org on behalf of ml+dovecot at valo.at> wrote: | > | > | > | > Am 9. Mai 2017 17:47:13 MESZ schrieb Adam Shostack <adam at shostack.org>: | > >Hi, | > > | > >Is there a clean way to match on an email address the way procmail | > >^TO_ did? that was a macro which expanded to | > >(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope | > >|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?) | > > | > >so you could write | > >* ^TO_dovecot | > >dovecot | > > | > >and grab messages to the list. In sieve, I find myseld writing | > >["To","cc"] and wonder if there's a better way. | > You could use the X-BeenThere or List-Id headers to match mailing list traffic | > | > -- | > Christian Kivalo | > > | > >Adam | > | >I?ve been using: | > | >if header :contains ["List-Id","Mailing-List", | > "Sender","X-List-Name","List-Post"] | > ["<mailto:php-general at lists.php.net>"] | >{ | > fileinto "lists/php/general"; | > stop; | >} | > | >For all my mailing list traffic. That seems(!) to catch most of them. | | I can't remember where I got the original algorithm (and, in particular, | the ordering) from, but I've been using the attached sieve script for a | while with numerous mailinglists. It uses the 'regex' module to parse | the mailing-list name from the headers (with various attempts to handle | most of the major mailing-list applications). The listname is | lower-cased (for consistency) and the message is filed into that folder (creating the folder if necessary). This means that, when I sign up for a new mailing-list, messages just start appearing in their own folder. | | -- | For more information, please reread.