I've collected a set of expansion strings for processing Maildir++
maildirsize files directly within Exim without need for outside helper
scripts.

To test, put the expansion strings (including comments) into a file
named "strings", create a local "maildirsize" file (sample data below),
and enter the command:

   exim4 -be <strings


Hopefully, the mailing list will find these useful.

   Steve



Sample maildirsize file:

8388608S,1000C
6923289 971
12368 2
76575 3
96002 7
-184945 -12
-184945 -12
24087 1
24087 1
4021 1
3653 1
8739 1
24087 1
-40500 -4
-27740 -2


maildirsize expansion strings:

   # maildirsize file (using : as eol string)
   ${readfile{maildirsize}{:}}
   
   # first line of file
   ${sg{${readfile{maildirsize}{:}}}{:.*}{}}
   
   # maildir size quota
   ${sg{${sg{${readfile{maildirsize}{:}}}{:.*}{}}}{S.*}{}}
   
   # message count quota
   ${sg{${sg{${readfile{maildirsize}{:}}}{C.*}{}}}{[^,]*,}{}}
   
   # extract lines 2 though the end-of-file
   ${sg{${readfile{maildirsize}{:}}}{^[^:]*:}{}}
   
   # extract first number from lines 2+
   ${sg{${sg{${readfile{maildirsize}{:}}}{^[^:]*:}{}}}{ [-0-9]*:}{:}}
   
   # sum of the numbers in the above list (cumulative size)
   #  using "reduce"
   ${reduce{${sg{${sg{${readfile{maildirsize}{:}}}{^[^:]*:}{}}}\
             { [-0-9]*:}{:}}}{0}{${eval:$value+$item}}}
   #  using "eval"
   ${eval:${sg{${sg{${sg{${readfile{maildirsize}{:}}}{^[^:]*:}{}}}\
             { [-0-9]*:}{:}}0}{:}{+}}}
   
   # extract second number from lines 2+
   ${sg{${sg{${readfile{maildirsize}{:}}}{^[^:]*:}{}}}{[-0-9]+ }{}}
   
   # sum of the numbers in the above list (message count)
   #  using "reduce"
   ${reduce{${sg{${sg{${readfile{maildirsize}{:}}}{^[^:]*:}{}}}\
             {[-0-9]+ }{}}}{0}{${eval:$value+$item}}}
   #  using "eval"
   ${eval:${sg{${sg{${sg{${readfile{maildirsize}{:}}}{^[^:]*:}{}}}\
             {[-0-9]+ }{:}}0}{:}{+}}}

-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to