On Tue, 2014-10-28 at 22:10 -0400, David F. Skoll wrote: > > frankly in times of LMTP and Sieve there is hardly a need to use > > procmail - it is used because "i know it and it just works" - so why > > should somebody step in and maintain it while nobody is forced to use > > it > > I use Email::Filter, not procmail, but tell me: Can LMTP and Sieve do > the following?
Dammit, this is just too teasing... Sorry. ;) procmail can do all of those. (Yeah, not your question, but still...) > 1) Cc: mail containing a specific header to a certain address, but only > between 08:00-09:00 or 17:00-21:00. Sure. Limiting to specific days or hours can be achieved without external process by recipe conditions based on our own SMTP server's Received header, which we can trust to be correct. > 2) Archive mail in a folder called Received-Archive/YYYY-MM. Trivial. See man procmailex. > 3) Take mail to a specific address, shorten it by replacing things > like "four" with "4", "this" with "dis", etc. and send as much of the > result as possible as a 140-character SMS message? Oh, and only do > this if the support calendar says that I am on the support pager that > week. Yep. Completely internal, given there's an email to SMS gateway (flashback 15 years ago), calling an external process for SMS delivery otherwise. > 4) Take the voicemail notifications produced by our Asterisk > software and replace the giant .WAV attachment with a much > smaller .MP3 equivalent. Check. Calling an external process, but I doubt procmail and ffmpeg / avconv is worse than Perl and the modules required for that audio conversion. Granted, in this case I'd need some rather skillful sed-fu in the pipe, or a little help of an external Perl script using MIME-tools... ;) > These are all real-world requirements that my filter fulfills. And it > does most of them without forking external processes. (Item 3 actually > consults > a calendar program to see who's on support, but the rest are all handled > in-process.) That said, and all joking apart: Do you guys even remember when this got completely off topic? -- char *t="\10pse\0r\0dtu\0.@ghno\x4e\xc8\x79\xf4\xab\x51\x8a\x10\xf4\xf4\xc4"; main(){ char h,m=h=*t++,*x=t+2*h,c,i,l=*x,s=0; for (i=0;i<l;i++){ i%8? c<<=1: (c=*++x); c&128 && (s+=h); if (!(h>>=1)||!t[s+h]){ putchar(t[s]);h=m;s=0; }}}