User:MattJhsn
From FastMailWiki
Contents |
Matthew's Filter-O-Rama
I've been using fastmail since 2002.
About Matthew
I really enjoy using fastmail.fm. Below is my one of my sieve scripts I use for my mail processing.
My Interests are:
Technology. People. Business. Creating New Software. Psychology. Entrepreneurship. Spirituality. Creating Value. Toastmasters' Public Speaking, Web Site Development Technologies, Morse Code, HDTV, Software Development . Writing for Business, G5s, HTDV Technologies, Walking, Biking, Chasing squirrels. Myers-Briggs INTP. I like to create, generate, construct, forge, innovate, invent, originate, design, imagine, think, visualize, originate, mold, and shape.
PS: I don't spell well. PPS: I use spellcheckers when I can.
My internet profile is here: http://tinyurl.com/2op8gd
Matthew's Comments on Wiki
I just read ThreadModeConsideredHarmful. I guess I'm not yet a WikiMaster. At least I love to RefactorMercilessly, including my own thoughts. Maybe someday I will read TheElementsOfStyle and practice EgolessProgramming to be one with WikiNature. Ok, six links in four sentences, I think I got this whole hyper-linking thing.
Matthew's year 2005 Script
Note: These are not valid/live email addresses! (well except for mine)
########################################################################## ####### SIEVE SCRIPT by Matthew Johnson - MRJ Solutions, Inc. ########### ####### Email me at mailto:mattjohnson2005@gmail.com ## ####### Code Version: 12JUN2004 ########### ########################################################################## require ["envelope", "fileinto", "reject", "vacation", "regex", "relational", "comparator-i;ascii-numeric"]; # # todo: # change to a nested format with # allof()s and nots. # add "in address book" check. ex:"header :is :comparator "i;octet" "X-Spam-Known-Sender" "yes"" # finish reformating lines to <= 75 col (for web edit box) # and delete rulers. # Mine Michael Klose script for ideas. # Check out the update to the Sieve pages on the Fastmail Wiki. # #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ require ["envelope", "fileinto", "reject", "vacation", "regex", "relational", "comparator-i;ascii-numeric"]; # BLACKLIST - Mails to discard, drop on the floor. # -high spam values except those delivered to me # -Chinese content except for low spam values # -virus rejected notifications # -known spam addresses # -newsletters that refuse my removal requests # -twit-list # -double twit-list # -other #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ if anyof ( allof # combo test one - high spam values except for mail to/from me ( # spam score is greater or equal to 14 header :value "ge" :comparator "i;ascii-numeric" ["X-Spam-score"] ["14"], not header :contains "X-Spam-Score" "-", not header :contains "X-Spam-Score" "0.0", not header :contains ["to","from","cc","bcc","received"] [ # do not discard email to me, will file or discard # as spam later if needed "matt@zeta.net", "matthew@bigsc.com", "matthew_johnson@bigsmallcompany.com", "mmm@spend.com", "finger@spend.com", "myyaacct@yahoo.com" ] ), # end allof allof #combo test two - chinese content except for low spam values ( anyof ( header :regex "Subject" "^=\\?(gb|GB)2312\\?", # Chinese ecoding at subject header :regex "Subject" "^=\\?big5\\?", # Other kind of Chinese mail # Chinese content type header :contains "Content-Type" [ "GB2312", "big5" ] ), #end anyof not anyof ( #We have to check the sign and the value separately: ascii-numeric, defined at #header :contains "X-Spam-Score" "-", header :value "lt" :comparator "i;ascii-numeric" "X-Spam-Score" "3" ) #end not anyof ), # end allof - test two # single tests # discard fastmail virus notifications header :is ["subject"] ["Infected file rejected"], # black list, invalid addresses receiving a large amount of spam # or spam bounces,rejected zeta.net accounts. header :contains ["X-Delivered-to"] ["eagleeye@zeta.net","ealgeeye@zeta.net", "alica.thiele@zeta.net", "2005@theta.com", "jimlovingu2@zeta.net", "alpha@zeta.net", "JoshuaS@zeta.net", "donnaf@zeta.net", "pspinks@zeta.net", "jsherman@zeta.net", "holly@zeta.net", "clabarca@zeta.net", "meghanr@zeta.net", "rtaylor@zeta.net", "lboone@zeta.net", "brower@zeta.net", "jenj@zeta.net", "cbackus@zeta.net", "spengles@zeta.net", "adams@zeta.net", "dsmith@zeta.net", "jwilderman@zeta.net", "TimF@zeta.net", "zd@zeta.net", "louise@zeta.net"] # single 'not' tests # ---out for testing--- not header :is :comparator "i;octet" "X-Spam-Known-Sender" "yes" ) # end anyof() { discard; stop; } # # WHITELIST - Keep these mails and put them in the inbox # (some kept getting put in Junk Mail) # Family, Friends, Current Vendors, Customers # Contents of fastmail address book. # #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ if anyof ( header :contains ["from","to","cc","bcc"] [ "notification@eBay.com", "MAILER-DAEMON@zeta.net", "USPS_Track_Confirm@usps.com", "credit.services@target.com", "Comcast_Paydirect@comcast.net", "mary@zeta.net", "betty@zeta.net", "andmanymore@zeta.net" ], header :is :comparator "i;octet" "X-Spam-Known-Sender" "yes" ) { fileinto "INBOX"; stop; } # redirects if header :contains ["to", "cc"] "mary1@zeta.net" { redirect "mary@zeta.net"; stop; } # # +Spam filtering by score on 3, 5 and 14(above). # # if header :value "ge" :comparator "i;ascii-numeric" ["X-Spam-score"] ["5"] { fileinto "INBOX.Junk Mail.ge5"; stop; #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ } elsif header :value "ge" :comparator "i;ascii-numeric" ["X-Spam-score"] ["3"] { fileinto "INBOX.Junk Mail.ge3"; stop; } # Potential Blacklist, start with soft discard, then migrate to full discard above # # Blacklist (2nd) During testing, throw into "Junk Mail.discard" until # ready to discard. # if anyof ( # rejects for accounts across all domains header :contains ["X-Delivered-to"] [ "drjoe@","VX@", "alfa@zeta.net", "media@zeta.net", "zeta@zeta.net", "xyz@zeta.net" ], # other criteria - weird message from this account header :contains ["from"] ["Charlie Root"], # mailers that are always sending spam returns to me header :contains ["from"] ["MAILER-DAEMON@aol.com"] , header :contains ["from"] ["MAILER-DAEMON@otenet.gr"] , # common account names that I don't use in any of my domains and that spammers like header :contains ["X-Delivered-to"] [ "biz@","sales@","support@", "service@", "reg@", "registration@", "regisration@", "root@", "webmaster@", "noreply@" ], # zeta.net common account names to reject header :contains ["X-Delivered-to"] ["info@zeta.net"], # bigsc.com rejects header :contains ["X-Delivered-to"] ["info@bigsc.com"], # theta.com rejects header :contains ["X-Delivered-to"] ["info@theta.com"], header :contains ["X-Delivered-to"] ["reg@theta.com"] #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ # saves for use maybe later # header :contains ["X-Delivered-to"] ["webmaster@zeta.net"], # header :contains ["X-Delivered-to"] ["webmaster@theta.com"], # header :contains ["X-Delivered-to"] ["sales@bs.com"], # header :contains ["X-Delivered-to"] ["sales@theta.com"], # header :contains ["X-Delivered-to"] ["sales@bigsc.com"], # header :contains ["X-Delivered-to"] "root@zeta.net", ) #end anyof() 2nd blacklist { fileinto "INBOX.Junk Mail.discard"; stop; } # +Greylist, move to "INBOX.Junk Mail.greylist" # # 'Soft' Blacklist ?Greylist? # #annoying person(s) that send questionable attachments # look at occationally if header :contains "from" "alex@yahoo.com" { fileinto "INBOX.Junk Mail.greylist"; } elsif header :contains "subject" "MAILER-DAEMON@fastmail.fm" # non-person, but might # want to look at it while # figuring issues { fileinto "INBOX.Junk Mail.greylist"; stop; } # +Spammy domains to filter # # domains that are known to be present in spam # if header :contains ["from", "received"] [".ru",".jp", ".kr", ".pt", ".pl",".at",".cz",".cn",".lu" ] { fileinto "INBOX.Junk Mail.discard"; stop; } # # Annoying newsletters that won't unsubscribe me, reject # if anyof ( #annoying newsletters header :contains ["from"] "VistaPrintNews", # 2003 header :contains ["from"] "newsletter@briantracyintl.com", # 2003 header :contains ["from"] "info@yogalist.com", # 2003 header :contains ["from"] "The Angela Larson Real Estate Team", header :contains ["from"] "Brian Tracy" ) #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ { reject "I HAVE TRIED TO UNSUBSCRIBE; I DO NOT WANT YOUR NEWSLETTER; PLEASE UNSUBSCRIBE ME"; stop; } # # Suspected zeta.net user from/to Zeta Institute, NY - reject # # # if header :contains ["X-Delivered-to","from"] [ # aaaaNEW_ENTRIES_ABOVE ################################### "neville@zeta.net", "animika@zeta.net", "linda@zeta.net", "jerry@zeta.net", "adamS@zeta.net", "lkdamon@zeta.net", "AdamS@zeta.net", "DConnor@zeta.net", "LOUISR@zeta.net", # Start of Alpha ############################################# "Allanv@zeta.net", "AmberJ@zeta.net", "DANDERSON@zeta.net", "Jonas@zeta.net", "KarenE@zeta.net", "J.R.C.@zeta.net", # check to see if this is working "PMackey@zeta.net", "adrienne@zeta.net","alpha@zeta.net","amina@zeta.net", "anamika@zeta.net", "claborca@zeta.net","communications@zeta.net", "cz241@zeta.net", "dee@zeta.net", "ellenb@zeta.net","evis@zeta.net", "frivera@zeta.net", "gblack@zeta.net","gbrown@zeta.net","george@zeta.net","grace@zeta.net", "happygolucky@zeta.net","hsp@zeta.net", "ila@zeta.net", "jacqueline_fenatifa@zeta.net","jlengler@zeta.net", "joel@zeta.net","jolsen@zeta.net", "jsherman@zeta.net", "kronjeklandish@zeta.net","kwilcox@zeta.net","bettyb@zeta.net", "laurie@zeta.net","llmansell@zeta.net", "louise@zeta.net","lzollo@zeta.net", "mcraft@zeta.net","meganB@zeta.net","mwezi@zeta.net", "nanwile@zeta.net", "zetasound@zeta.net", "peter@zeta.net", "randi@zeta.net", "rcbackus@zeta.net", "registration@zeta.net", "registration@omgea.org", "rtaylor@zeta.net", "sdonnarumma@zeta.net","stephanR@zeta.net","suzanne@zeta.net","suzzane@zeta.net", "taryngaughan_dn@zeta.net" # zzzzEND_OF_LIST#### ] #end of Xdelivered-to list for possible zeta institute users { reject text: ERROR: Your email has not been delivered. You have reached the mailer at zeta.net Perhaps you want to send to Zeta Institute in DillyDally, NY, USA? Use USER@zeta.net for them or try registration@zeta.net Check the website at http://www.zeta.net/zeta/contact/ Call Registration at 1 800 944 1001. or use this information: Zeta Institute 150 River Drive DillyDally, NY 12666 Registration: 800-900-0000 Ph: 845-200-0000 Fax: 845-200-0001 registration@zeta.net sincerely, POSTMASTER . ; fileinto "Inbox.Junk Mail.ezeta"; stop; } #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ # +Move messages into folders # # Process other messages into separate folders # # newsletters and mail lists if header :contains ["subject"] [ "newsletter", "[tc-ieee-", "[icntc", "JUG News", "Xdesksoftware", "announcement" ] { fileinto "INBOX.Newsletters"; } elsif header :contains ["from","subject"] ["Anthony Robbins"] { fileinto "INBOX.Newsletters"; } elsif header :contains ["from","subject"] ["MN Entrepreneurs","ME!"] { fileinto "INBOX.Newsletters"; } elsif header :contains ["from","received"] "adc.apple.com" { fileinto "INBOX.Newsletters"; } elsif header :contains "from" "wnewadmn@ieee.org" { fileinto "INBOX.Newsletters"; } elsif header :contains "from" "@lb.bcentral.com" { # techworthy@lb.bcentral.com fileinto "INBOX.Newsletters"; } elsif header :contains "from" "announcement@netbriefings.com" { #st paul company fileinto "INBOX.Newsletters"; } elsif header :contains "from" "newsletter@eletters.extremetech.com" { #semi-annoying rag fileinto "INBOX.Newsletters"; #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ # my newsletter throw-away addresses } elsif header :contains "to" ["microcenter@zeta.net","nmha@zeta.net"] { fileinto "INBOX.Newsletters"; #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ # # Alerts mailbox } elsif header :contains ["subject", "from"] [ "Alert", # F-Prot virus alert service, matches: # "FRISK Virus Alert" # or use s:FRISK Virus Alert: # or use f:support@f-prot.com "Payment", # Alerts from other payments "credit.services@target.com", # Target Card Payments "notify@quickbase.com" # Tic Talkers Database changes ] { fileinto "INBOX.Alerts"; stop; } # +Announcements from Dave Rolm, forward # # Perl Announcements from Dave Rolm if header :contains "from" "dave@other.org" { fileinto "Inbox"; keep; } #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+ ####################################################################### #### END OF SIEVE SCRIPT by Matthew Johnson - MRJ Solutions, Inc. ##### ################ email me at mailto:mattjohnson2005@gmail.com #
Discussions / Comments / Questions / Hateful Musings / Allegory / Postcards from the Edge
Discussions:
In this part:
if header :contains ["from", "received"] [".ru",".jp", ".kr", ".pt", ...] { discard; }
(it isn't really discard in the original script, but intended to be discard). How about, say,
Received: by mail.runme.domain.tld
Or
Received: from mx.kroach.tld
or a numerous other examples like this? (for ones who didn't get it: find ".ru" in the first example above).
Blocking by-country like this is another question. For example, I'm from .ru, but obviously I will not send email to Matthew to point this his mistake, since the said email will go to his to-be-discarded folder anyway - so it's just a waste of time.
/mjt
Hateful Musings:
here.
Comments:
To prevent spambots harvesting the addresses from this webpage, the email addresses therein have been munged.
I've changed the email addresses/phone numbers/etc to nonsensical information. See my description at the top of the script. ...
Sorry folks i (mjt, who added stuff into the "discussion" part above) was forced to remove this part as mediawiki insisted that "anon users are forbidden to create external links" - while i didn't create any link, they WERE the part of this page, wiki seems to be too stupid to understand this. Original content of this comment section should still be available in the history page. I just don't have time to register at a random site every time i've something useful to say.
Other good wiki pages on sieve scripting
- SieveExamples - main sieve index page
- AdvancedOptionInRules - you can use any of these examples in the test portion of an 'if' clause
- BasicSieve - well pretty advanced for basic!
- SanjaySieveSpamFilter - Cool example of an advanced filter
- MichaelKloseSieveScript - good use of nesting and 'not' logic
- MoreSieveExamples - compact examples, but some of the spam header code is out-of-date
- MatthewJohnsonSieveJuneOhFour - Added ideas from MichaelKloseSieveScript, reduced the column size to 75, consolidated some sections
You are welcome to change this page as needed. Some of the co-authors of this page are KanDer and User:MattJhsn.
Please send your comments/ideas/questions to mattjohnson2005@gmail.com. Have fun!
