Initial Commit
This commit is contained in:
843
database/MercuryMail/RESOURCE/autorplc.pm
Normal file
843
database/MercuryMail/RESOURCE/autorplc.pm
Normal file
@@ -0,0 +1,843 @@
|
||||
# V4.0: Pegasus Mail Autoreplacement storage file
|
||||
|
||||
1, "abbout" "about"
|
||||
1, "abotu" "about"
|
||||
1, "abouta" "about a"
|
||||
1, "aboutit" "about it"
|
||||
1, "aboutthe" "about the"
|
||||
1, "abscence" "absence"
|
||||
1, "accesories" "accessories"
|
||||
1, "accidant" "accident"
|
||||
1, "accomodate" "accommodate"
|
||||
1, "accordingto" "according to"
|
||||
1, "accross" "across"
|
||||
1, "acheive" "achieve"
|
||||
1, "acheived" "achieved"
|
||||
1, "acheiving" "achieving"
|
||||
1, "acn" "can"
|
||||
1, "acommodate" "accommodate"
|
||||
1, "acomodate" "accommodate"
|
||||
1, "actualyl" "actually"
|
||||
1, "additinal" "additional"
|
||||
1, "addtional" "additional"
|
||||
1, "adequit" "adequate"
|
||||
1, "adequite" "adequate"
|
||||
1, "adn" "and"
|
||||
1, "advanage" "advantage"
|
||||
1, "affraid" "afraid"
|
||||
1, "afterthe" "after the"
|
||||
1, "aganist" "against"
|
||||
1, "aggresive" "aggressive"
|
||||
1, "agian" "again"
|
||||
1, "agreemeent" "agreement"
|
||||
1, "agreemeents" "agreements"
|
||||
1, "agreemnet" "agreement"
|
||||
1, "agreemnets" "agreements"
|
||||
1, "agressive" "aggressive"
|
||||
1, "ahppen" "happen"
|
||||
1, "ahve" "have"
|
||||
1, "allwasy" "always"
|
||||
1, "allwyas" "always"
|
||||
1, "almots" "almost"
|
||||
1, "almsot" "almost"
|
||||
1, "alomst" "almost"
|
||||
1, "alot" "a lot"
|
||||
1, "alraedy" "already"
|
||||
1, "alreayd" "already"
|
||||
1, "alreday" "already"
|
||||
1, "alwasy" "always"
|
||||
1, "alwats" "always"
|
||||
1, "alway" "always"
|
||||
1, "alwyas" "always"
|
||||
1, "amde" "made"
|
||||
1, "Ameria" "America"
|
||||
1, "amke" "make"
|
||||
1, "amkes" "makes"
|
||||
1, "anbd" "and"
|
||||
1, "andone" "and one"
|
||||
1, "andteh" "and the"
|
||||
1, "andthe" "and the"
|
||||
1, "anothe" "another"
|
||||
1, "anual" "annual"
|
||||
1, "apparant" "apparent"
|
||||
1, "apparrent" "apparent"
|
||||
1, "appearence" "appearance"
|
||||
1, "appeares" "appears"
|
||||
1, "applicaiton" "application"
|
||||
1, "applicaitons" "applications"
|
||||
1, "applyed" "applied"
|
||||
1, "appointiment" "appointment"
|
||||
1, "approrpiate" "appropriate"
|
||||
1, "approrpriate" "appropriate"
|
||||
1, "aquisition" "acquisition"
|
||||
1, "aquisitions" "acquisitions"
|
||||
1, "aren;t" "aren't"
|
||||
1, "arguement" "argument"
|
||||
1, "arguements" "arguments"
|
||||
1, "arn't" "aren't"
|
||||
1, "arond" "around"
|
||||
1, "artical" "article"
|
||||
1, "articel" "article"
|
||||
1, "asdvertising" "advertising"
|
||||
1, "assistent" "assistant"
|
||||
1, "asthe" "as the"
|
||||
1, "atention" "attention"
|
||||
1, "atmospher" "atmosphere"
|
||||
1, "attentioin" "attention"
|
||||
1, "atthe" "at the"
|
||||
1, "audeince" "audience"
|
||||
1, "audiance" "audience"
|
||||
1, "availalbe" "available"
|
||||
1, "awya" "away"
|
||||
1, "aywa" "away"
|
||||
1, "bakc" "back"
|
||||
1, "balence" "balance"
|
||||
1, "ballance" "balance"
|
||||
1, "baout" "about"
|
||||
1, "bcak" "back"
|
||||
1, "beacuse" "because"
|
||||
1, "becasue" "because"
|
||||
1, "becaus" "because"
|
||||
1, "becausea" "because a"
|
||||
1, "becauseof" "because of"
|
||||
1, "becausethe" "because the"
|
||||
1, "becauseyou" "because you"
|
||||
1, "becomeing" "becoming"
|
||||
1, "becomming" "becoming"
|
||||
1, "becuase" "because"
|
||||
1, "becuse" "because"
|
||||
1, "befoer" "before"
|
||||
1, "beggining" "beginning"
|
||||
1, "begining" "beginning"
|
||||
1, "beginining" "beginning"
|
||||
1, "beleiev" "believe"
|
||||
1, "beleieve" "believe"
|
||||
1, "beleif" "belief"
|
||||
1, "beleive" "believe"
|
||||
1, "beleived" "believed"
|
||||
1, "beleives" "believes"
|
||||
1, "benifit" "benefit"
|
||||
1, "benifits" "benefits"
|
||||
1, "betwen" "between"
|
||||
1, "beutiful" "beautiful"
|
||||
1, "boxs" "boxes"
|
||||
1, "brodcast" "broadcast"
|
||||
1, "butthe" "but the"
|
||||
1, "bve" "be"
|
||||
1, "caharcter" "character"
|
||||
1, "calcullated" "calculated"
|
||||
1, "calulated" "calculated"
|
||||
1, "can;t" "can't"
|
||||
1, "candidtae" "candidate"
|
||||
1, "candidtaes" "candidates"
|
||||
1, "catagory" "category"
|
||||
1, "categiory" "category"
|
||||
1, "certian" "certain"
|
||||
1, "challange" "challenge"
|
||||
1, "challanges" "challenges"
|
||||
1, "chaneg" "change"
|
||||
1, "chanegs" "changes"
|
||||
1, "changable" "changeable"
|
||||
1, "changeing" "changing"
|
||||
1, "changng" "changing"
|
||||
1, "charachter" "character"
|
||||
1, "charachters" "characters"
|
||||
1, "charactor" "character"
|
||||
1, "charecter" "character"
|
||||
1, "charector" "character"
|
||||
1, "cheif" "chief"
|
||||
1, "chekc" "check"
|
||||
1, "chnage" "change"
|
||||
1, "cieling" "ceiling"
|
||||
1, "circut" "circuit"
|
||||
1, "claer" "clear"
|
||||
1, "claered" "cleared"
|
||||
1, "claerly" "clearly"
|
||||
1, "cliant" "client"
|
||||
1, "cna" "can"
|
||||
1, "colection" "collection"
|
||||
1, "comanies" "companies"
|
||||
1, "comany" "company"
|
||||
1, "comapnies" "companies"
|
||||
1, "comapny" "company"
|
||||
1, "combintation" "combination"
|
||||
1, "comited" "committed"
|
||||
1, "comittee" "committee"
|
||||
1, "commadn" "command"
|
||||
1, "comming" "coming"
|
||||
1, "commitee" "committee"
|
||||
1, "committe" "committee"
|
||||
1, "committment" "commitment"
|
||||
1, "committments" "commitments"
|
||||
1, "committy" "committee"
|
||||
1, "comntain" "contain"
|
||||
1, "comntains" "contains"
|
||||
1, "compair" "compare"
|
||||
1, "company;s" "company's"
|
||||
1, "compleated" "completed"
|
||||
1, "compleatly" "completely"
|
||||
1, "compleatness" "completeness"
|
||||
1, "completly" "completely"
|
||||
1, "completness" "completeness"
|
||||
1, "composate" "composite"
|
||||
1, "comtain" "contain"
|
||||
1, "comtains" "contains"
|
||||
1, "comunicate" "communicate"
|
||||
1, "comunity" "community"
|
||||
1, "condolances" "condolences"
|
||||
1, "conected" "connected"
|
||||
1, "conferance" "conference"
|
||||
1, "confirmmation" "confirmation"
|
||||
1, "considerit" "considerate"
|
||||
1, "considerite" "considerate"
|
||||
1, "consonent" "consonant"
|
||||
1, "conspiricy" "conspiracy"
|
||||
1, "consultent" "consultant"
|
||||
1, "convertable" "convertible"
|
||||
1, "cooparate" "cooperate"
|
||||
1, "cooporate" "cooperate"
|
||||
1, "corproation" "corporation"
|
||||
1, "corproations" "corporations"
|
||||
1, "corruptable" "corruptible"
|
||||
1, "cotten" "cotton"
|
||||
1, "coudl" "could"
|
||||
1, "coudln't" "couldn't"
|
||||
1, "coudn't" "couldn't"
|
||||
1, "couldn;t" "couldn't"
|
||||
1, "couldnt" "couldn't"
|
||||
1, "couldthe" "could the"
|
||||
1, "cpoy" "copy"
|
||||
1, "ctaegory" "category"
|
||||
1, "cusotmer" "customer"
|
||||
1, "cusotmers" "customers"
|
||||
1, "cutsomer" "customer"
|
||||
1, "cutsomers" "customers"
|
||||
1, "cxan" "can"
|
||||
1, "danceing" "dancing"
|
||||
1, "dcument" "document"
|
||||
1, "deatils" "details"
|
||||
1, "decison" "decision"
|
||||
1, "decisons" "decisions"
|
||||
1, "decor" "d<>cor"
|
||||
1, "defendent" "defendant"
|
||||
1, "definately" "definitely"
|
||||
1, "deptartment" "department"
|
||||
1, "desicion" "decision"
|
||||
1, "desicions" "decisions"
|
||||
1, "desision" "decision"
|
||||
1, "desisions" "decisions"
|
||||
1, "develeoprs" "developers"
|
||||
1, "devellop" "develop"
|
||||
1, "develloped" "developed"
|
||||
1, "develloper" "developer"
|
||||
1, "devellopers" "developers"
|
||||
1, "develloping" "developing"
|
||||
1, "devellopment" "development"
|
||||
1, "devellopments" "developments"
|
||||
1, "devellops" "develop"
|
||||
1, "develope" "develop"
|
||||
1, "developement" "development"
|
||||
1, "developements" "developments"
|
||||
1, "developor" "developer"
|
||||
1, "developors" "developers"
|
||||
1, "develpment" "development"
|
||||
1, "diaplay" "display"
|
||||
1, "didint" "didn't"
|
||||
1, "didn;t" "didn't"
|
||||
1, "didnot" "did not"
|
||||
1, "didnt" "didn't"
|
||||
1, "difefrent" "different"
|
||||
1, "diferences" "differences"
|
||||
1, "differance" "difference"
|
||||
1, "differances" "differences"
|
||||
1, "differant" "different"
|
||||
1, "differemt" "different"
|
||||
1, "differnt" "different"
|
||||
1, "diffrent" "different"
|
||||
1, "directer" "director"
|
||||
1, "directers" "directors"
|
||||
1, "directiosn" "direction"
|
||||
1, "disatisfied" "dissatisfied"
|
||||
1, "discoverd" "discovered"
|
||||
1, "disign" "design"
|
||||
1, "dispaly" "display"
|
||||
1, "dissonent" "dissonant"
|
||||
1, "distribusion" "distribution"
|
||||
1, "divsion" "division"
|
||||
1, "do'nt" "don't"
|
||||
1, "docuement" "documents"
|
||||
1, "docuemnt" "document"
|
||||
1, "documetn" "document"
|
||||
1, "documnet" "document"
|
||||
1, "documnets" "documents"
|
||||
1, "doens't" "doesn't"
|
||||
1, "doese" "does"
|
||||
1, "doesn;t" "doesn't"
|
||||
1, "doesnt" "doesn't"
|
||||
1, "doign" "doing"
|
||||
1, "doimg" "doing"
|
||||
1, "doind" "doing"
|
||||
1, "dollers" "dollars"
|
||||
1, "don;t" "don't"
|
||||
1, "donig" "doing"
|
||||
1, "dont" "don't"
|
||||
1, "dosn't" "doesn't"
|
||||
1, "driveing" "driving"
|
||||
1, "drnik" "drink"
|
||||
1, "efel" "feel"
|
||||
1, "effecient" "efficient"
|
||||
1, "efort" "effort"
|
||||
1, "eforts" "efforts"
|
||||
1, "ehr" "her"
|
||||
1, "eligable" "eligible"
|
||||
1, "embarass" "embarrass"
|
||||
1, "enought" "enough"
|
||||
1, "equippment" "equipment"
|
||||
1, "equivalant" "equivalent"
|
||||
1, "esle" "else"
|
||||
1, "especally" "especially"
|
||||
1, "especialyl" "especially"
|
||||
1, "espesially" "especially"
|
||||
1, "excellant" "excellent"
|
||||
1, "excercise" "exercise"
|
||||
1, "exchagne" "exchange"
|
||||
1, "exchagnes" "exchanges"
|
||||
1, "excitment" "excitement"
|
||||
1, "exhcange" "exchange"
|
||||
1, "exhcanges" "exchanges"
|
||||
1, "experiance" "experience"
|
||||
1, "experienc" "experience"
|
||||
1, "exprience" "experience"
|
||||
1, "exprienced" "experienced"
|
||||
1, "eyt" "yet"
|
||||
1, "faeture" "feature"
|
||||
1, "faetures" "features"
|
||||
1, "familair" "familiar"
|
||||
1, "familar" "familiar"
|
||||
1, "familliar" "familiar"
|
||||
1, "fammiliar" "familiar"
|
||||
1, "feild" "field"
|
||||
1, "feilds" "fields"
|
||||
1, "fianlly" "finally"
|
||||
1, "fidn" "find"
|
||||
1, "finalyl" "finally"
|
||||
1, "firends" "friends"
|
||||
1, "firts" "first"
|
||||
1, "follwo" "follow"
|
||||
1, "follwoing" "following"
|
||||
1, "fora" "for a"
|
||||
1, "foriegn" "foreign"
|
||||
1, "forthe" "for the"
|
||||
1, "forwrd" "forward"
|
||||
1, "forwrds" "forwards"
|
||||
1, "foudn" "found"
|
||||
1, "foward" "forward"
|
||||
1, "fowards" "forwards"
|
||||
1, "freind" "friend"
|
||||
1, "freindly" "friendly"
|
||||
1, "freinds" "friends"
|
||||
1, "frmo" "from"
|
||||
1, "fromthe" "from the"
|
||||
1, "furneral" "funeral"
|
||||
1, "fwe" "few"
|
||||
1, "garantee" "guarantee"
|
||||
1, "gaurd" "guard"
|
||||
1, "gemeral" "general"
|
||||
1, "gerat" "great"
|
||||
1, "geting" "getting"
|
||||
1, "gettin" "getting"
|
||||
1, "gievn" "given"
|
||||
1, "giveing" "giving"
|
||||
1, "gloabl" "global"
|
||||
1, "goign" "going"
|
||||
1, "gonig" "going"
|
||||
1, "govenment" "government"
|
||||
1, "goverment" "government"
|
||||
1, "gruop" "group"
|
||||
1, "gruops" "groups"
|
||||
1, "grwo" "grow"
|
||||
1, "guidlines" "guidelines"
|
||||
1, "hadbeen" "had been"
|
||||
1, "hadn;t" "hadn't"
|
||||
1, "haev" "have"
|
||||
1, "hapen" "happen"
|
||||
1, "hapened" "happened"
|
||||
1, "hapening" "happening"
|
||||
1, "hapens" "happens"
|
||||
1, "happend" "happened"
|
||||
1, "hasbeen" "has been"
|
||||
1, "hasn;t" "hasn't"
|
||||
1, "hasnt" "hasn't"
|
||||
1, "havebeen" "have been"
|
||||
1, "haveing" "having"
|
||||
1, "haven;t" "haven't"
|
||||
1, "hda" "had"
|
||||
1, "he;ll" "he'll"
|
||||
1, "hearign" "hearing"
|
||||
1, "helpfull" "helpful"
|
||||
1, "herat" "heart"
|
||||
1, "here;s" "here's"
|
||||
1, "hesaid" "he said"
|
||||
1, "hewas" "he was"
|
||||
1, "hge" "he"
|
||||
1, "hismelf" "himself"
|
||||
1, "hlep" "help"
|
||||
1, "hsa" "has"
|
||||
1, "hsi" "his"
|
||||
1, "hte" "the"
|
||||
1, "htere" "there"
|
||||
1, "htese" "these"
|
||||
1, "htey" "they"
|
||||
1, "hting" "thing"
|
||||
1, "htink" "think"
|
||||
1, "htis" "this"
|
||||
1, "hvae" "have"
|
||||
1, "hvaing" "having"
|
||||
1, "hwich" "which"
|
||||
1, "I\"m" "I'm"
|
||||
1, "I;d" "I'd"
|
||||
1, "I;ll" "I'll"
|
||||
1, "idae" "idea"
|
||||
1, "idaes" "ideas"
|
||||
1, "identofy" "identify"
|
||||
1, "ihs" "his"
|
||||
1, "imediate" "immediate"
|
||||
1, "imediatly" "immediately"
|
||||
1, "immediatly" "immediately"
|
||||
1, "importent" "important"
|
||||
1, "importnat" "important"
|
||||
1, "impossable" "impossible"
|
||||
1, "improvemnt" "improvement"
|
||||
1, "improvment" "improvement"
|
||||
1, "includ" "include"
|
||||
1, "indecate" "indicate"
|
||||
1, "indenpendence" "independence"
|
||||
1, "indenpendent" "independent"
|
||||
1, "indepedent" "independent"
|
||||
1, "independance" "independence"
|
||||
1, "independant" "independent"
|
||||
1, "influance" "influence"
|
||||
1, "infomation" "information"
|
||||
1, "informatoin" "information"
|
||||
1, "inital" "initial"
|
||||
1, "instaleld" "installed"
|
||||
1, "insted" "instead"
|
||||
1, "insurence" "insurance"
|
||||
1, "inteh" "in the"
|
||||
1, "interum" "interim"
|
||||
1, "inthe" "in the"
|
||||
1, "inwhich" "in which"
|
||||
1, "isn;t" "isn't"
|
||||
1, "isthe" "is the"
|
||||
1, "it;ll" "it'll"
|
||||
1, "it;s" "it's"
|
||||
1, "itis" "it is"
|
||||
1, "ititial" "initial"
|
||||
1, "itnerest" "interest"
|
||||
1, "itnerested" "interested"
|
||||
1, "itneresting" "interesting"
|
||||
1, "itnerests" "interests"
|
||||
1, "itwas" "it was"
|
||||
1, "iwll" "will"
|
||||
1, "iwth" "with"
|
||||
1, "jsut" "just"
|
||||
1, "jugment" "judgment"
|
||||
1, "knowldge" "knowledge"
|
||||
1, "knowlege" "knowledge"
|
||||
1, "knwo" "know"
|
||||
1, "knwon" "known"
|
||||
1, "knwos" "knows"
|
||||
1, "konw" "know"
|
||||
1, "konwn" "known"
|
||||
1, "konws" "knows"
|
||||
1, "lable" "label"
|
||||
1, "lables" "labels"
|
||||
1, "labratory" "laboratory"
|
||||
1, "lastyear" "last year"
|
||||
1, "learnign" "learning"
|
||||
1, "lenght" "length"
|
||||
1, "let;s" "let's"
|
||||
1, "levle" "level"
|
||||
1, "libary" "library"
|
||||
1, "librarry" "library"
|
||||
1, "librery" "library"
|
||||
1, "liek" "like"
|
||||
1, "liekd" "liked"
|
||||
1, "lieutenent" "lieutenant"
|
||||
1, "liev" "live"
|
||||
1, "likly" "likely"
|
||||
1, "lisense" "license"
|
||||
1, "littel" "little"
|
||||
1, "litttle" "little"
|
||||
1, "liuke" "like"
|
||||
1, "liveing" "living"
|
||||
1, "loev" "love"
|
||||
1, "lonly" "lonely"
|
||||
1, "lookign" "looking"
|
||||
1, "maintenence" "maintenance"
|
||||
1, "makeing" "making"
|
||||
1, "managment" "management"
|
||||
1, "mantain" "maintain"
|
||||
1, "marraige" "marriage"
|
||||
1, "memeber" "member"
|
||||
1, "merchent" "merchant"
|
||||
1, "mesage" "message"
|
||||
1, "mesages" "messages"
|
||||
1, "mispell" "misspell"
|
||||
1, "mispelling" "misspelling"
|
||||
1, "mispellings" "misspellings"
|
||||
1, "mkae" "make"
|
||||
1, "mkaes" "makes"
|
||||
1, "mkaing" "making"
|
||||
1, "moeny" "money"
|
||||
1, "morgage" "mortgage"
|
||||
1, "mroe" "more"
|
||||
1, "mysefl" "myself"
|
||||
1, "myu" "my"
|
||||
1, "naive" "na<6E>ve"
|
||||
1, "necassarily" "necessarily"
|
||||
1, "necassary" "necessary"
|
||||
1, "neccessarily" "necessarily"
|
||||
1, "neccessary" "necessary"
|
||||
1, "necesarily" "necessarily"
|
||||
1, "necesary" "necessary"
|
||||
1, "negotiaing" "negotiating"
|
||||
1, "nkow" "know"
|
||||
1, "nothign" "nothing"
|
||||
1, "nver" "never"
|
||||
1, "nwe" "new"
|
||||
1, "nwo" "now"
|
||||
1, "obediant" "obedient"
|
||||
1, "ocasion" "occasion"
|
||||
1, "occassion" "occasion"
|
||||
1, "occured" "occurred"
|
||||
1, "occurence" "occurrence"
|
||||
1, "occurrance" "occurrence"
|
||||
1, "ocur" "occur"
|
||||
1, "oeprator" "operator"
|
||||
1, "ofits" "of its"
|
||||
1, "ofthe" "of the"
|
||||
1, "oging" "going"
|
||||
1, "ohter" "other"
|
||||
1, "omre" "more"
|
||||
1, "oneof" "one of"
|
||||
1, "onepoint" "one point"
|
||||
1, "onthe" "on the"
|
||||
1, "onyl" "only"
|
||||
1, "oppasite" "opposite"
|
||||
1, "opperation" "operation"
|
||||
1, "oppertunity" "opportunity"
|
||||
1, "opposate" "opposite"
|
||||
1, "opposible" "opposable"
|
||||
1, "opposit" "opposite"
|
||||
1, "oppotunities" "opportunities"
|
||||
1, "oppotunity" "opportunity"
|
||||
1, "orginization" "organization"
|
||||
1, "orginized" "organized"
|
||||
1, "otehr" "other"
|
||||
1, "otu" "out"
|
||||
1, "outof" "out of"
|
||||
1, "overthe" "over the"
|
||||
1, "owrk" "work"
|
||||
1, "owuld" "would"
|
||||
1, "oxident" "oxidant"
|
||||
1, "papaer" "paper"
|
||||
1, "parliment" "parliament"
|
||||
1, "partof" "part of"
|
||||
1, "paymetn" "payment"
|
||||
1, "paymetns" "payments"
|
||||
1, "pciture" "picture"
|
||||
1, "Pegassu" "Pegasus"
|
||||
1, "Pegasys" "Pegasus"
|
||||
1, "Pegauss" "Pegasus"
|
||||
1, "peice" "piece"
|
||||
1, "peices" "pieces"
|
||||
1, "peolpe" "people"
|
||||
1, "peopel" "people"
|
||||
1, "percentof" "percent of"
|
||||
1, "percentto" "percent to"
|
||||
1, "performence" "performance"
|
||||
1, "perhasp" "perhaps"
|
||||
1, "perhpas" "perhaps"
|
||||
1, "permanant" "permanent"
|
||||
1, "perminent" "permanent"
|
||||
1, "personalyl" "personally"
|
||||
1, "pleasent" "pleasant"
|
||||
1, "poeple" "people"
|
||||
1, "porblem" "problem"
|
||||
1, "porblems" "problems"
|
||||
1, "porvide" "provide"
|
||||
1, "possable" "possible"
|
||||
1, "postition" "position"
|
||||
1, "potentialy" "potentially"
|
||||
1, "pregnent" "pregnant"
|
||||
1, "presance" "presence"
|
||||
1, "probelm" "problem"
|
||||
1, "probelms" "problems"
|
||||
1, "prominant" "prominent"
|
||||
1, "psoition" "position"
|
||||
1, "ptogress" "progress"
|
||||
1, "puting" "putting"
|
||||
1, "pwoer" "power"
|
||||
1, "quater" "quarter"
|
||||
1, "quaters" "quarters"
|
||||
1, "quesion" "question"
|
||||
1, "quesions" "questions"
|
||||
1, "questioms" "questions"
|
||||
1, "questiosn" "questions"
|
||||
1, "questoin" "question"
|
||||
1, "quetion" "question"
|
||||
1, "quetions" "questions"
|
||||
1, "realyl" "really"
|
||||
1, "reccomend" "recommend"
|
||||
1, "reccommend" "recommend"
|
||||
1, "receieve" "receive"
|
||||
1, "recieve" "receive"
|
||||
1, "recieved" "received"
|
||||
1, "recieving" "receiving"
|
||||
1, "recomend" "recommend"
|
||||
1, "recomendation" "recommendation"
|
||||
1, "recomendations" "recommendations"
|
||||
1, "recomended" "recommended"
|
||||
1, "reconize" "recognize"
|
||||
1, "recrod" "record"
|
||||
1, "religous" "religious"
|
||||
1, "reluctent" "reluctant"
|
||||
1, "remeber" "remember"
|
||||
1, "reommend" "recommend"
|
||||
1, "representativs" "representatives"
|
||||
1, "representives" "representatives"
|
||||
1, "represetned" "represented"
|
||||
1, "represnt" "represent"
|
||||
1, "reserach" "research"
|
||||
1, "resollution" "resolution"
|
||||
1, "resorces" "resources"
|
||||
1, "respomd" "respond"
|
||||
1, "respomse" "response"
|
||||
1, "responce" "response"
|
||||
1, "responsability" "responsibility"
|
||||
1, "responsable" "responsible"
|
||||
1, "responsibile" "responsible"
|
||||
1, "responsiblity" "responsibility"
|
||||
1, "restaraunt" "restaurant"
|
||||
1, "restuarant" "restaurant"
|
||||
1, "reult" "result"
|
||||
1, "reveiw" "review"
|
||||
1, "reveiwing" "reviewing"
|
||||
1, "rumers" "rumors"
|
||||
1, "rwite" "write"
|
||||
1, "rythm" "rhythm"
|
||||
1, "saidhe" "said he"
|
||||
1, "saidit" "said it"
|
||||
1, "saidthat" "said that"
|
||||
1, "saidthe" "said the"
|
||||
1, "scedule" "schedule"
|
||||
1, "sceduled" "scheduled"
|
||||
1, "seance" "s<>ance"
|
||||
1, "secratary" "secretary"
|
||||
1, "sectino" "section"
|
||||
1, "seh" "she"
|
||||
1, "selectoin" "selection"
|
||||
1, "sentance" "sentence"
|
||||
1, "separeate" "separate"
|
||||
1, "seperate" "separate"
|
||||
1, "sercumstances" "circumstances"
|
||||
1, "shcool" "school"
|
||||
1, "she;ll" "she'll"
|
||||
1, "shesaid" "she said"
|
||||
1, "shineing" "shining"
|
||||
1, "shiped" "shipped"
|
||||
1, "shoudl" "should"
|
||||
1, "shoudln't" "shouldn't"
|
||||
1, "shouldent" "shouldn't"
|
||||
1, "shouldn;t" "shouldn't"
|
||||
1, "shouldnt" "shouldn't"
|
||||
1, "showinf" "showing"
|
||||
1, "signifacnt" "significant"
|
||||
1, "simalar" "similar"
|
||||
1, "similiar" "similar"
|
||||
1, "simpyl" "simply"
|
||||
1, "sincerly" "sincerely"
|
||||
1, "sitll" "still"
|
||||
1, "smae" "same"
|
||||
1, "smoe" "some"
|
||||
1, "soem" "some"
|
||||
1, "sohw" "show"
|
||||
1, "soical" "social"
|
||||
1, "somethign" "something"
|
||||
1, "someting" "something"
|
||||
1, "somewaht" "somewhat"
|
||||
1, "somthing" "something"
|
||||
1, "somtimes" "sometimes"
|
||||
1, "soudn" "sound"
|
||||
1, "soudns" "sounds"
|
||||
1, "speach" "speech"
|
||||
1, "specificaly" "specifically"
|
||||
1, "specificalyl" "specifically"
|
||||
1, "statment" "statement"
|
||||
1, "statments" "statements"
|
||||
1, "stnad" "stand"
|
||||
1, "stopry" "story"
|
||||
1, "stoyr" "story"
|
||||
1, "stpo" "stop"
|
||||
1, "strentgh" "strength"
|
||||
1, "stroy" "story"
|
||||
1, "struggel" "struggle"
|
||||
1, "strugle" "struggle"
|
||||
1, "studnet" "student"
|
||||
1, "successfull" "successful"
|
||||
1, "successfuly" "successfully"
|
||||
1, "successfulyl" "successfully"
|
||||
1, "sucess" "success"
|
||||
1, "sucessfull" "successful"
|
||||
1, "sufficiant" "sufficient"
|
||||
1, "suposed" "supposed"
|
||||
1, "suppossed" "supposed"
|
||||
1, "suprise" "surprise"
|
||||
1, "suprised" "surprised"
|
||||
1, "swiming" "swimming"
|
||||
1, "tahn" "than"
|
||||
1, "taht" "that"
|
||||
1, "talekd" "talked"
|
||||
1, "talkign" "talking"
|
||||
1, "tath" "that"
|
||||
1, "tbale" "table"
|
||||
1, "tecnical" "technical"
|
||||
1, "teh" "the"
|
||||
1, "tehy" "they"
|
||||
1, "termoil" "turmoil"
|
||||
1, "tghe" "the"
|
||||
1, "tghis" "this"
|
||||
1, "thansk" "thanks"
|
||||
1, "thats" "that's"
|
||||
1, "thatthe" "that the"
|
||||
1, "thecompany" "the company"
|
||||
1, "thefirst" "the first"
|
||||
1, "thegovernment" "the government"
|
||||
1, "themself" "themselves"
|
||||
1, "themselfs" "themselves"
|
||||
1, "thenew" "the new"
|
||||
1, "theri" "their"
|
||||
1, "thesame" "the same"
|
||||
1, "thetwo" "the two"
|
||||
1, "they;l" "they'll"
|
||||
1, "they;ll" "they'll"
|
||||
1, "they;r" "they're"
|
||||
1, "they;re" "they're"
|
||||
1, "they;v" "they've"
|
||||
1, "they;ve" "they've"
|
||||
1, "theyll" "they'll"
|
||||
1, "theyve" "they've"
|
||||
1, "thgat" "that"
|
||||
1, "thge" "the"
|
||||
1, "thier" "their"
|
||||
1, "thigsn" "things"
|
||||
1, "thisyear" "this year"
|
||||
1, "thna" "than"
|
||||
1, "thne" "then"
|
||||
1, "thnig" "thing"
|
||||
1, "thnigs" "things"
|
||||
1, "threatend" "threatened"
|
||||
1, "thsi" "this"
|
||||
1, "thsoe" "those"
|
||||
1, "thta" "that"
|
||||
1, "tihs" "this"
|
||||
1, "timne" "time"
|
||||
1, "tiogether" "together"
|
||||
1, "tje" "the"
|
||||
1, "tjhe" "the"
|
||||
1, "tkae" "take"
|
||||
1, "tkaes" "takes"
|
||||
1, "tkaing" "taking"
|
||||
1, "tlaking" "talking"
|
||||
1, "todya" "today"
|
||||
1, "togehter" "together"
|
||||
1, "tomorow" "tomorrow"
|
||||
1, "tongiht" "tonight"
|
||||
1, "tonihgt" "tonight"
|
||||
1, "totaly" "totally"
|
||||
1, "totalyl" "totally"
|
||||
1, "tothe" "to the"
|
||||
1, "towrad" "toward"
|
||||
1, "traditionalyl" "traditionally"
|
||||
1, "transfered" "transferred"
|
||||
1, "truely" "truly"
|
||||
1, "truley" "truly"
|
||||
1, "tryed" "tried"
|
||||
1, "tthe" "the"
|
||||
1, "tyhat" "that"
|
||||
1, "tyhe" "the"
|
||||
1, "udnerstand" "understand"
|
||||
1, "understnad" "understand"
|
||||
1, "UnitedStates" "United States"
|
||||
1, "unliek" "unlike"
|
||||
1, "unpleasently" "unpleasantly"
|
||||
1, "untilll" "until"
|
||||
1, "useing" "using"
|
||||
1, "usualyl" "usually"
|
||||
1, "veyr" "very"
|
||||
1, "virtualyl" "virtually"
|
||||
1, "vrey" "very"
|
||||
1, "vulnerible" "vulnerable"
|
||||
1, "waht" "what"
|
||||
1, "warrent" "warrant"
|
||||
1, "wasnt" "wasn't"
|
||||
1, "watn" "want"
|
||||
1, "we;d" "we'd"
|
||||
1, "we;ll" "we'll"
|
||||
1, "we;re" "we're"
|
||||
1, "we;ve" "we've"
|
||||
1, "wehn" "when"
|
||||
1, "wern't" "weren't"
|
||||
1, "werre" "were"
|
||||
1, "what;s" "what's"
|
||||
1, "whcih" "which"
|
||||
1, "where;s" "where's"
|
||||
1, "wherre" "where"
|
||||
1, "whic" "which"
|
||||
1, "whihc" "which"
|
||||
1, "who;s" "who's"
|
||||
1, "who;ve" "who've"
|
||||
1, "whta" "what"
|
||||
1, "wief" "wife"
|
||||
1, "wierd" "weird"
|
||||
1, "wihch" "which"
|
||||
1, "wiht" "with"
|
||||
1, "willbe" "will be"
|
||||
1, "windoes" "windows"
|
||||
1, "witha" "with a"
|
||||
1, "withe" "with"
|
||||
1, "withthe" "with the"
|
||||
1, "wiull" "will"
|
||||
1, "wnat" "want"
|
||||
1, "wnated" "wanted"
|
||||
1, "wnats" "wants"
|
||||
1, "wo'nt" "won't"
|
||||
1, "woh" "who"
|
||||
1, "wohle" "whole"
|
||||
1, "wokr" "work"
|
||||
1, "won;t" "won't"
|
||||
1, "woudl" "would"
|
||||
1, "woudln't" "wouldn't"
|
||||
1, "wouldbe" "would be"
|
||||
1, "wouldn;t" "wouldn't"
|
||||
1, "wouldnt" "wouldn't"
|
||||
1, "wriet" "write"
|
||||
1, "writting" "writing"
|
||||
1, "wrod" "word"
|
||||
1, "wroet" "wrote"
|
||||
1, "wroking" "working"
|
||||
1, "wtih" "with"
|
||||
1, "wuould" "would"
|
||||
1, "wya" "way"
|
||||
1, "yera" "year"
|
||||
1, "yeras" "years"
|
||||
1, "yersa" "years"
|
||||
1, "yoiu" "you"
|
||||
1, "you;d" "you'd"
|
||||
1, "you;re" "you're"
|
||||
1, "youare" "you are"
|
||||
1, "youve" "you've"
|
||||
1, "ytou" "you"
|
||||
1, "yuo" "you"
|
||||
1, "yuor" "your"
|
||||
14
database/MercuryMail/RESOURCE/basic.pnc
Normal file
14
database/MercuryMail/RESOURCE/basic.pnc
Normal file
@@ -0,0 +1,14 @@
|
||||
Enabled = Y
|
||||
ApplyTo = 2
|
||||
SetName = Basic commercial/sex content check
|
||||
Blacklist = black.lis
|
||||
Whitelist = white.lis
|
||||
TriggerWeight = 50
|
||||
Action = 0
|
||||
Parameter =
|
||||
RuleFile = spambust.dat
|
||||
LBL_Size = 0
|
||||
Order = 0
|
||||
Flags = 29
|
||||
End
|
||||
|
||||
31
database/MercuryMail/RESOURCE/basic.pnc.info
Normal file
31
database/MercuryMail/RESOURCE/basic.pnc.info
Normal file
@@ -0,0 +1,31 @@
|
||||
This general-purpose definition is designed to catch a
|
||||
wide range of spam, with particular emphasis on:
|
||||
|
||||
* Sexual content and penile enlargement ads
|
||||
* Pharmacy and bogus health cures
|
||||
* General unwanted commercial "services"
|
||||
* Spam tools
|
||||
* 419 scams (the "Nigerian funds transfer" scam)
|
||||
|
||||
This ruleset aggressively filters messages containing
|
||||
Lazy HTML (HTML with references to remote graphics): if
|
||||
you receive a lot of legitimate mail containing Lazy
|
||||
HTML, you will either need to whitelist the sources of
|
||||
that mail, or else remove the test.
|
||||
|
||||
This rulest also regards any message containing more
|
||||
than 25% non-ASCII characters as spam, so if you receive
|
||||
a lot of legitimate mail of this type you will need to
|
||||
take steps to deal with that.
|
||||
|
||||
We recommend that you do not directly modify this rule
|
||||
set, because subsequent versions of Mercury will usually
|
||||
attempt to update it. Instead, create a copy of this set
|
||||
and work on the copy, disabling this one.
|
||||
|
||||
This rule set is a standard part of the Mercury/32
|
||||
distribution and is updated from time to time: you can
|
||||
find updated rule sets on our web site, at -
|
||||
|
||||
http://www.pmail.com/patches.htm
|
||||
|
||||
340
database/MercuryMail/RESOURCE/bpanel.txt
Normal file
340
database/MercuryMail/RESOURCE/bpanel.txt
Normal file
@@ -0,0 +1,340 @@
|
||||
Pegasus Mail for Windows v3.0, configurable toolbar.
|
||||
---------------------------------------------------------------------
|
||||
Pegasus Mail System,
|
||||
Copyright (c) 1990-98, David Harris, All Rights Reserved.
|
||||
|
||||
|
||||
Under Pegasus Mail v3.0 and later, the button panel (toolbar) is
|
||||
configurable via simple scripts. The use of scripts is not normally
|
||||
intended to be exposed to end-users, and it is anticipated that a
|
||||
GUI-based editor will be made available at some future time. In the
|
||||
meantime, however, those willing to do a small amount of work with an
|
||||
editor can customize the toolbar to suit their needs.
|
||||
|
||||
Pegasus Mail maintains internal definitions for the toolbar in its
|
||||
resource file, WINPMAIL.DAT: these definitions are usually loaded and
|
||||
parsed when the toolbar is created. The user can, however, create a text
|
||||
file called TOOLBAR.PM in his home mailbox, containing the same scripting
|
||||
commands. If TOOLBAR.PM is found, it is loaded in preference to the
|
||||
internal resource script.
|
||||
|
||||
The format of the resource script in TOOLBAR.PM is simple: each line
|
||||
defines a single toolbar element - a button, a separator, or a combobox.
|
||||
Other elements may be added in future. Lines beginning with semicolon
|
||||
characters are regarded as comments and ignored.
|
||||
|
||||
Command lines have the following general form:
|
||||
|
||||
<type> [other parameters]
|
||||
|
||||
"type" is an integer that determines the type of the toolbar item. The
|
||||
following values are defined:
|
||||
|
||||
0 A standard 22x20 pixel bitmapped button
|
||||
1 An 8-pixel separator gap
|
||||
2 A combobox control
|
||||
|
||||
Each type of control has its own parameter list as follows:
|
||||
|
||||
Bitmapped buttons:
|
||||
|
||||
,<control_id>,<flags>,<bitmap_id>,<"tooltip">
|
||||
"control_id" the internal activation code for this button
|
||||
(see the list below for valid values)
|
||||
"flags" an integer, currently unused but must be 0
|
||||
"bitmap_id" the integer code for the internal bitmap for the
|
||||
button (see the list below)
|
||||
"tooltip" the tooltip text the button should display when the
|
||||
mouse lingers over it for too long. This string
|
||||
must appear in quotes.
|
||||
|
||||
Separators: No parameters
|
||||
|
||||
|
||||
Combobox controls:
|
||||
|
||||
,<control_id>,<flags>
|
||||
"control_id" the internal activation code for this button
|
||||
(see the list below for valid values)
|
||||
"flags" an integer, currently unused but must be 0
|
||||
|
||||
|
||||
Note that for combobox and button controls, there must be a comma between
|
||||
the "type" parameter and the control ID.
|
||||
|
||||
|
||||
Control IDs:
|
||||
|
||||
Control IDs are internal tags used to tie a button to a given internal
|
||||
function. The following control IDs are recognized:
|
||||
|
||||
Buttons:
|
||||
|
||||
801 Start a new mail message
|
||||
802 Open or re-scan the new mail folder
|
||||
803 Work with mail folders
|
||||
804 Work with address books
|
||||
805 Work with distribution lists
|
||||
806 Get a list of local users on the system
|
||||
807 Edit filters applied when the new mail folder is opened
|
||||
808 Open noticeboards
|
||||
|
||||
820 Cut
|
||||
821 Copy
|
||||
822 Paste
|
||||
|
||||
823 Print the current window
|
||||
824 Set a font for the current window
|
||||
825 Save to disk
|
||||
826 Read from disk
|
||||
|
||||
827 Get mail via the built-in POP3 transport
|
||||
828 Send mail via the built-in SMTP transport
|
||||
829 Get mail then send mail
|
||||
835 Perform a selective download via the built-in POP3 transport
|
||||
|
||||
836 Start a new circulation message.
|
||||
838 Switch to the folder manager window and add a mailbox
|
||||
|
||||
Comboboxes:
|
||||
|
||||
840 List of currently-defined identities on the system
|
||||
|
||||
You can create a button that triggers any standard menu item in the
|
||||
Pegasus Mail menu hierarchy by adding 10000 to the menu item's code (see
|
||||
Appendix A, below) then using that value as the button's control ID.
|
||||
|
||||
|
||||
|
||||
Bitmap IDs:
|
||||
|
||||
A number of bitmaps are built-in to Pegasus Mail and can be accessed in
|
||||
buttons via special bitmap IDs. The following IDs are available: note
|
||||
that the text describing each button is simple description - the control
|
||||
ID is what decides what function is actually associated with a button.
|
||||
|
||||
1801 Start a new mail message
|
||||
1802 Open or re-scan the new mail folder
|
||||
1803 Work with mail folders
|
||||
1804 Work with address books
|
||||
1805 Work with distribution lists
|
||||
1806 Get a list of local users on the system
|
||||
1807 Edit filters applied when the new mail folder is opened
|
||||
1808 Open noticeboards
|
||||
|
||||
1820 Cut
|
||||
1821 Copy
|
||||
1822 Paste
|
||||
|
||||
1823 Print the current window
|
||||
1824 Set a font for the current window
|
||||
1825 Save to disk
|
||||
1826 Read from disk
|
||||
|
||||
1827 Get mail via the built-in POP3 transport
|
||||
1828 Send mail via the built-in SMTP transport
|
||||
1829 Get mail then send mail
|
||||
|
||||
1830 Connect/go online
|
||||
1831 Disconnect/go offline
|
||||
|
||||
1835 Perform a selective download via the built-in POP3 transport
|
||||
|
||||
1836 Start a new circulation message.
|
||||
1837 Open a saved message
|
||||
1838 Mount a secondary mailbox
|
||||
1839 Tools | Options
|
||||
1840 Identities
|
||||
1841 Review queued mail
|
||||
1842 Find...
|
||||
1843 Asterisk
|
||||
1844 Yellow document icon
|
||||
1845 Blue star
|
||||
1846 Apply general rule set to folder
|
||||
|
||||
|
||||
|
||||
Example
|
||||
|
||||
The following fragment creates a simple toolbar
|
||||
|
||||
0,801,0,1801,"Compose a new mail message"
|
||||
0,836,0,1836,"Create a new circulation message"
|
||||
0,802,0,1802,"Open or re-scan your new mail folder"
|
||||
0,803,0,1803,"Work with your mail folders"
|
||||
0,804,0,1804,"Open or manage address books"
|
||||
0,805,0,1805,"Edit or manage distribution (mailing) lists"
|
||||
0,806,0,1806,"Open a list of local people on your system"
|
||||
0,807,0,1807,"Create or manage rules for filtering your new mail"
|
||||
0,808,0,1808,"Open or browse noticeboards"
|
||||
1
|
||||
2,840,0
|
||||
1
|
||||
0,823,0,1823,"Print the current window"
|
||||
0,824,0,1824,"Select a font for the current window"
|
||||
1
|
||||
0,828,0,1828,"Send all queued mail"
|
||||
0,827,0,1827,"Check your POP3 host for new mail"
|
||||
0,829,0,1829,"Both check and send mail in one operation"
|
||||
|
||||
|
||||
|
||||
Appendix A: Menu codes for Pegasus Mail
|
||||
|
||||
The following integer values can be used to construct button panel
|
||||
entries that trigger any menu entry in the program. Add 10000 to the
|
||||
value shown, then use that value as the button's control ID.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
WinPMail Mnemonic ID Menu function (Which Menu)
|
||||
------------------------------------------------------------------------
|
||||
IDM_HELP 10 "Context-sensitive help" (HELP)
|
||||
IDM_USING_HELP 11 "Using Help" (HELP)
|
||||
IDM_HELPINDEX 12 "Help index" (HELP)
|
||||
IDM_RMACRO 75 "Open glossary manager" (EDIT/GLOSSARY)
|
||||
IDM_PMACRO 76 "Expand glossary entry" (EDIT/GLOSSARY)
|
||||
IDM_NEWMESSAGE 101 "Start new message" (FILE)
|
||||
IDM_READNEW 102 "Open new mail folder" (FILE)
|
||||
IDM_OPENFOLDER 103 "Folders..." (FILE)
|
||||
IDM_IMPORT 104 "Import into message" (MESSAGE)
|
||||
IDM_SAVESESSION 105 "Save message as draft" (MESSAGE)
|
||||
IDM_RESTORESESSION 106 "Open saved message" (FILE)
|
||||
IDM_PRINT 107 "Print" (FILE)
|
||||
IDM_PRINTSETUP 109 "Printer setup" (FILE)
|
||||
IDM_FILTERS 110 "New mail filtering rules" (FILE)
|
||||
IDM_EXIT 111 "Exit" (FILE)
|
||||
IDM_PREF_GENERAL 121 "General settings" (FILE/PREFS)
|
||||
IDM_PREF_SMF 122 "NetWare MHS settings" (FILE/PREFS)
|
||||
IDM_PREF_SIGS 123 "Signatures..." (FILE/PREFS)
|
||||
IDM_PREF_HOMEBOX 124 "Home mailbox location" (FILE/PREFS)
|
||||
IDM_PREF_EXT 125 "Extended features" (FILE/PREFS)
|
||||
IDM_UNDO 131 "Undo" (EDIT)
|
||||
IDM_CUT 132 "Cut" (EDIT)
|
||||
IDM_COPY 133 "Copy" (EDIT)
|
||||
IDM_PASTE 134 "Paste" (EDIT)
|
||||
IDM_CLEAR 135 "Clear" (EDIT)
|
||||
IDM_SELECTALL 136 "Select all" (EDIT)
|
||||
IDM_SPELLING 137 "Check spelling" (EDIT)
|
||||
IDM_SERVER 138 "File servers..." (FILE)
|
||||
IDM_LOCALUSERS 141 "Lookup local users" (ADDRESSES)
|
||||
IDM_ADDRESSBOOKS 142 "Address books" (ADDRESSES)
|
||||
IDM_MAILINGLISTS 143 "Distribution lists..." (ADDRESSES)
|
||||
IDM_SORTBYKEY 144 "Sort by key" (ADDRESSBOOK)
|
||||
IDM_SORTBYNAME 145 "Sort by name" (ADDRESSBOOK)
|
||||
IDM_FIND 146 "Find text", (MESSAGE/FOLDER/READER/ADDRBK)
|
||||
IDM_FINDAGAIN 147 "Find again", (MESSAGE/FOLDER/READER/ADDRBK)
|
||||
IDM_PASTENAMES 148 "Paste names" (ADDRESSBOOK)
|
||||
IDM_PASTEADDRESSES 149 "Paste addresses" (ADDRESSBOOK)
|
||||
IDM_SAVESIZE 150 "Save window size" (Various)
|
||||
IDM_OTHEROPTIONS 151 "Special message view" (MESSAGE)
|
||||
IDM_SHOWHEADERS 153 "Show all headers" (READER)
|
||||
IDM_EXTRACT 154 "Save messages to disk" (FOLDER/READER)
|
||||
IDM_ATTACH 155 "Switch to attachments view" (MESSAGE)
|
||||
IDM_MARKUNREAD 156 "Mark message as unread" (FOLDER and NB)
|
||||
IDM_ALIASING 157 "Resolve aliases" (ADDRESSBOOK)
|
||||
IDM_BPPREF 158 "Button panel preferences" (FILE/PREFS)
|
||||
IDM_UUDECODE 160 "UUdecode message" (FOLDER/READER /SPECIAL)
|
||||
IDM_UNBINHEX 161 "Un-BinHex message" (FOLDER/READER /SPECIAL)
|
||||
IDM_LOCALSIG 162 "Signature for local mail" (FILE/PREFS)
|
||||
IDM_INETSIG 163 "Signature for Internet mail" (FILE/PREFS)
|
||||
IDM_MHSSIG 164 "Signature for MHS mail" (FILE/PREFS)
|
||||
IDM_DELEXPIRED 165 "Delete expired messages" (FOLDER/SPECIAL)
|
||||
IDM_EDMAIL 167 "Switch to message editor view" (MESSAGE)
|
||||
IDM_QUICKLOOKUP 168 "Quick lookup" (ADDRESSES)
|
||||
IDM_WORDWRAP 169 "Reformat long lines" (READER)
|
||||
IDM_DELLINE 170 "Delete line" (MESSAGE)
|
||||
IDM_REFORMAT 171 "Reformat paragraph" (MESSAGE)
|
||||
IDM_INDENT 172 "Indent text" (MESSAGE)
|
||||
IDM_REPLACE 173 "Search and replace" (MESSAGE)
|
||||
IDM_DELWORD 174 "Delete word right" (MESSAGE)
|
||||
IDM_APREFS 175 "Advanced settings" (FILE/PREFS)
|
||||
IDM_ENLARGE 176 "Enlarge window" (WINDOW)
|
||||
IDM_ABK_EXPORT 177 "Export addressbook" (ADDRESSBOOK)
|
||||
IDM_ABK_IMPORT 178 "Import addressbook" (ADDRESSBOOK)
|
||||
IDM_NOTICEBOARDS 179 "Noticeboards" (FILE)
|
||||
IDM_ANN_EDIT 180 "Add/edit annotation" (FOLDER)
|
||||
IDM_SRT_DATE 270 "Sort by date" (FOLDER)
|
||||
IDM_SRT_REVDATE 271 "Sort by reverse date" (FOLDER)
|
||||
IDM_SRT_SUBJECT 272 "Sort by subject" (FOLDER)
|
||||
IDM_SRT_FROM 273 "Sort by sender's name" (FOLDER)
|
||||
IDM_SRT_SUBJECT2 274 "Sort by subject/reverse date" (FOLDER)
|
||||
IDM_SRT_COLOUR 275 "Sort by colour" (FOLDER)
|
||||
IDM_FORMS 185 "Open Forms Manager" (FILE)
|
||||
IDM_ANN_DELETE 186 "Delete annotation" (FOLDER)
|
||||
IDM_REVIEWMAIL 187 "Review Queued Mail" (FILE)
|
||||
IDM_TODISK 230 "Save to disk" (Various)
|
||||
IDM_FROMDISK 231 "Read from disk" (Various)
|
||||
IDM_EXTRACTFILE 240 "MHS directory service" (ADDRESSES)
|
||||
IDM_LOGGED_IN 241 "Logged-in users" (ADDRESSES)
|
||||
IDM_ADD_USER 242 "Add sender to list" (READER/SPECIAL)
|
||||
IDM_REMOVE_USER 243 "Remove sender from list" (READER/SPECIAL)
|
||||
IDM_FONT 299 "Font" (Various)
|
||||
IDM_TILE 500 "Tile" (WINDOW)
|
||||
IDM_CASCADE 501 "Cascade" (WINDOW)
|
||||
IDM_ARRANGEICONS 502 "Arrange Icons" (WINDOW)
|
||||
IDM_BUTTONPANEL 503 "Button panel" (WINDOW)
|
||||
IDM_NETCONFIG 210 "Network Configuration" (FILE)
|
||||
IDM_GETMAIL 211 "Check host for new mail" (FILE)
|
||||
IDM_SENDMAIL 212 "Send all queued mail" (FILE)
|
||||
IDM_GETANDSEND 189 "Check and send mail" (FILE)
|
||||
|
||||
IDM_MSGCOLOUR 260 "Set colour" (FOLDER)
|
||||
IDM_UADMIN 322 "Manage users..." (ADDRESSES)
|
||||
IDM_ONLINE 321 "Leave offline mode" (FILE)
|
||||
IDM_OFFLINE 320 "Enter offline mode" (FILE)
|
||||
IDM_QF_6 316 "Quick folder 6" (FILE/FOLDERS)
|
||||
IDM_QF_5 315 "Quick folder 5" (FILE/FOLDERS)
|
||||
IDM_QF_4 314 "Quick folder 4" (FILE/FOLDERS)
|
||||
IDM_QF_3 313 "Quick folder 3" (FILE/FOLDERS)
|
||||
IDM_QF_2 312 "Quick folder 2" (FILE/FOLDERS)
|
||||
IDM_QF_1 311 "Quick folder 1" (FILE/FOLDERS)
|
||||
IDM_QF_DEFINE 197 "Define quick folders" (FILE/FOLDERS)
|
||||
IDM_EDIT_FLAGS 199 "Edit message flags" (FOLDER)
|
||||
IDM_SRT_NEWTOTOP 198 "Sort unread before read" (FOLDER)
|
||||
IDM_DLM_EXPORT 196 "Export to text file" (LISTS)
|
||||
IDM_DLM_DUPLICATE 194 "Duplicate list" (LISTS)
|
||||
IDM_DLM_EDIT 193 "Edit list" (LISTS)
|
||||
IDM_DLM_DELETE 192 "Delete list" (LISTS)
|
||||
IDM_DLM_ADD 191 "Add new list" (LISTS)
|
||||
IDM_PREF_VIEW 190 "Attachment viewers" (FILE)
|
||||
IDM_FULLSCREEN 188 "Enlarge message editor" (MESSAGE)
|
||||
|
||||
IDM_ADD_MAILBOX 330 "Add mailbox to list" (FOLDER)
|
||||
IDM_CHANGE_USER 249 "Change user" (FILE, standalone only)
|
||||
IDM_COPY_SPECIAL 360 "Copy special" (r-click in editor)
|
||||
IDM_CSFILTERS 112 "Edit copy-self filtering rules" (TOOLS)
|
||||
IDM_DISMOUNT_MBX 364 "Remove mailbox from list" (FOLDER)
|
||||
IDM_EDITRULES 113 "Create/edit general filter rule set" (TOOLS)
|
||||
IDM_EDIT_FLAGS 199 "Edit message flags" (FOLDER)
|
||||
IDM_FILTERSA 115 "Edit rules applied when folder closed"
|
||||
IDM_HELP_CMDLINE 17 "Commandline options" (HELP)
|
||||
IDM_HELP_DRAGDROP 16 "Help on drag and drop" (HELP)
|
||||
IDM_HELP_ETIQUETTE 18 "E-Mail etiquette guidelines" (HELP)
|
||||
IDM_HELP_HISTORY 21 "History of Pegasus Mail" (HELP)
|
||||
IDM_HELP_MANUALS 15 "Ordering manuals" (HELP)
|
||||
IDM_HELP_TANDC 20 "Terms and conditions" (HELP)
|
||||
IDM_HELP_TECHSUPP 14 "Technical support" (HELP)
|
||||
IDM_HELP_TROUBLE 13 "Troubleshooting" (HELP)
|
||||
IDM_HELP_WHATSNEW 22 "What's new in this version" (HELP)
|
||||
IDM_IDENTITIES 120 "Identities..." (TOOLS)
|
||||
IDM_IMAP 363 "IMAP Profiles" (TOOLS, v3.11 and later)
|
||||
IDM_KEY_MANAGEMENT 182 "Digital key management" (READER)
|
||||
IDM_LOGGING 377 "System Messages" (WINDOW, v3.12 and later)
|
||||
IDM_MARKREAD 244 "Mark as read" (FOLDER, r-click)
|
||||
IDM_MARKREADONLY 340 "Toggle read-only state" (FOLDER, r-click)
|
||||
IDM_MONOFONT 245 "Switch to monospaced view" (READER/MESSAGE)
|
||||
IDM_NB_NEW 370 "Create new topic" (NOTICEBOARD)
|
||||
IDM_NB_PROPS 371 "Current topic properties" (NOTICEBOARD)
|
||||
IDM_NB_RESYNCH 372 "Rescan this topic" (NOTICBOARD)
|
||||
IDM_NOTEPAD 119 "Notepads..." (TOOLS)
|
||||
IDM_QUICKLOOKUP2 166 "Lookup in recently-used addresses"
|
||||
IDM_REDO 130 "Redo" (EDIT)
|
||||
IDM_REPLY_TEMPLATE 366 "Reply using a template" (FOLDER, r-click)
|
||||
IDM_RESEND 365 "Resend this message" (FOLDER, r-click)
|
||||
IDM_RESET_STYLES 246 "Reset styles" (MESSAGE, r-click)
|
||||
IDM_SELECT 376 "Select..." (FOLDER, v3.12 and later)
|
||||
IDM_SET_COLOUR 247 "Set message colour" (FOLDER/READER)
|
||||
IDM_SHOWHEADERS 153 "Show raw headers" (READER)
|
||||
IDM_VERIFY_DSIG 181 "Check for digital signature" (READER)
|
||||
IDM_WORDWRAP2 361 "Wrap long lines" (READER, v3.12 and later)
|
||||
|
||||
965
database/MercuryMail/RESOURCE/daemon.h
Normal file
965
database/MercuryMail/RESOURCE/daemon.h
Normal file
@@ -0,0 +1,965 @@
|
||||
//**
|
||||
//** Mercury Mail Transport System - Daemon Interface Definitions
|
||||
//** Copyright (c) 1997-99, David Harris, All Rights Reserved.
|
||||
//**
|
||||
//** Note: the structures defined in this file are all BYTE-ALIGNED.
|
||||
//** This is very important - if you are using a Borland Compiler
|
||||
//** and your project uses WORD or DWORD alignment, then you will
|
||||
//** need to add "#pragma option -a1" before you include this file
|
||||
//** to ensure that the compiler aligns the structures correctly.
|
||||
//** Getting the byte alignment wrong will almost certainly result
|
||||
//** in your Daemon crashing when you load it.
|
||||
//**
|
||||
|
||||
#ifndef _DAEMON_H
|
||||
#define _DAEMON_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef INTS_DEFINED
|
||||
#define INTS_DEFINED
|
||||
// INT_16 and UINT_16 must be 16-bit Integer types
|
||||
typedef unsigned short UINT_16;
|
||||
typedef short INT_16;
|
||||
typedef unsigned long UINT_32;
|
||||
typedef long INT_32;
|
||||
#endif
|
||||
|
||||
|
||||
//**
|
||||
//** Section 1: Data type definitions and constants for lists
|
||||
//**
|
||||
|
||||
#ifndef _LISTS_H
|
||||
|
||||
struct _l_node
|
||||
{
|
||||
unsigned int flags, number;
|
||||
struct _l_node *next, *prev;
|
||||
void *data;
|
||||
};
|
||||
|
||||
typedef struct _l_node LNODE;
|
||||
|
||||
struct _lv_node
|
||||
{
|
||||
unsigned int flags, number;
|
||||
struct _lv_node *next, *prev;
|
||||
BYTE data [];
|
||||
};
|
||||
|
||||
typedef struct _lv_node LVNODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LNODE *top, *end; /* pointers to start/end of list */
|
||||
int icount; /* number of items in list */
|
||||
unsigned isize; /* size of *data in LNODE */
|
||||
int ilimit; /* maximum size of list - no limit if 0 */
|
||||
int ialloc; /* whether or not to allocate space for items */
|
||||
unsigned int last_acc; /* Last data accessed using get_list_data */
|
||||
LNODE *last_data; /* " " " " " " " " " " */
|
||||
} LIST;
|
||||
|
||||
#endif
|
||||
|
||||
//**
|
||||
//** Section 2: Data type definitions and constants for
|
||||
//** Job Management
|
||||
//**
|
||||
|
||||
// Rewind flags - passed to ji_rewind_job
|
||||
|
||||
#define JR_CONTROL 1
|
||||
#define JR_DATA 2
|
||||
|
||||
// Diagnostic flags - passed to ji_set/get_diagnostics
|
||||
|
||||
#define JD_ELEMENT 1
|
||||
#define JD_JOB 2
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int structlen;
|
||||
char jobstatus;
|
||||
long jobflags;
|
||||
char status;
|
||||
char *from;
|
||||
char *to;
|
||||
long dsize;
|
||||
long rsize;
|
||||
int total_rcpts;
|
||||
int total_failures;
|
||||
int total_retries;
|
||||
char ip1 [16];
|
||||
char ip2 [16];
|
||||
char ip3 [16];
|
||||
char ip4 [16];
|
||||
char jobid [20];
|
||||
} JOBINFO;
|
||||
|
||||
enum // Job types, for ji_scan_* and ji_create_job
|
||||
{
|
||||
JT_GENERAL, // Local and newly-submitted mail
|
||||
JT_OUTGOING, // Only mail destined for the outside world
|
||||
JT_ANY // Any type of job
|
||||
};
|
||||
|
||||
enum // "mode" values for ji_set_element_status
|
||||
{
|
||||
JS_COMPLETED, // "date" is ignored
|
||||
JS_FAILED, // "date" is ignored
|
||||
JS_RETRY, // "date" is used for requeuing if non-NULL
|
||||
JS_PENDING, // "date" is ignored
|
||||
JS_TEMP_FAIL // "date" is ignored
|
||||
};
|
||||
|
||||
enum // "type" values for ji_get_next_element
|
||||
{
|
||||
JE_ANY, // Any type of element is OK
|
||||
JE_READY, // Only return elements ready to be sent
|
||||
JE_FAILED, // Only return elements marked as failed
|
||||
JE_COMPLETED, // Only return elements marked as completed
|
||||
JE_PENDING, // Only return elements marked as "pending"
|
||||
JE_TEMP_FAIL // Only return elements marked as temporarily failed
|
||||
};
|
||||
|
||||
|
||||
//**
|
||||
//** Section 3: General Mercury data type and constant definitions
|
||||
//** Many of these structures are not directly used by Daemons.
|
||||
//**
|
||||
|
||||
#ifndef MAXFPATH
|
||||
#define MAXFPATH 128
|
||||
#endif
|
||||
|
||||
#ifndef size
|
||||
#define size(x) (sizeof (x) / sizeof (x [0]))
|
||||
#endif
|
||||
|
||||
#define MAXUIC 128
|
||||
#define MAXHOST 128
|
||||
|
||||
// Statistics manager constants.
|
||||
|
||||
#define STC_INTEGER 0
|
||||
#define STC_STRING 1
|
||||
#define STC_DATE 2
|
||||
|
||||
#define STF_CUMULATIVE 1
|
||||
#define STF_PEAK 2
|
||||
#define STF_UNIQUE 4
|
||||
|
||||
// Logging console manager priority constants
|
||||
|
||||
#define LOG_DEBUG 25
|
||||
#define LOG_INFO 20
|
||||
#define LOG_NORMAL 15
|
||||
#define LOG_SIGNIFICANT 10
|
||||
#define LOG_URGENT 5
|
||||
#define LOG_NONE 0
|
||||
|
||||
// Constants that can be passed to "create_object"
|
||||
|
||||
#define OBJ_USER 1
|
||||
#define OBJ_ADMINISTRATOR 2
|
||||
|
||||
typedef unsigned char UCHAR;
|
||||
typedef unsigned short USHORT;
|
||||
typedef unsigned long ULONG;
|
||||
|
||||
// INT_16 and UINT_16 must be 16-bit Integer types
|
||||
typedef unsigned short UINT_16;
|
||||
typedef short INT_16;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char auto_forward [60];
|
||||
char gw_auto_forward [60]; // Mercury uses this field for forwarding
|
||||
char from_alias [60]; // Alternative From: field value
|
||||
unsigned flags;
|
||||
char security;
|
||||
} PMPROP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
char *domain;
|
||||
char *login_name;
|
||||
char *password;
|
||||
} SERVER_ID;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
char *groupname;
|
||||
char *hostname;
|
||||
} GROUP_ID;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *match;
|
||||
char *rewrite;
|
||||
} REWRITE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char lname [48];
|
||||
char fname [128]; // Name of container file for list
|
||||
char moderator [80]; // Primary list moderator (if any)
|
||||
char title [80]; // Title for list (used in "to" field
|
||||
char welcome_file [128]; // File to send to new subscribers
|
||||
char farewell_file [128]; // File to send to unsubscribers
|
||||
char ispublic; // NZ if open subscription is available
|
||||
char matched; // NZ if the address passed in is a moderator
|
||||
char moderated; // NZ if mailing to the list is restricted
|
||||
char allow_enumeration; // NZ if anyone may use ENUMERATE
|
||||
char reply_to_list; // NZ if replies should go to the list
|
||||
int limit; // Maximum allowable number of subscribers
|
||||
char errors_to [80]; // Address to which errors should be referred
|
||||
char restricted; // NZ if only list members may mail to the list
|
||||
int fanout; // Number of jobs to "fan" the delivery to
|
||||
char anonymous; // Whether this list is anonymous or not
|
||||
char title_is_address; // If NZ, the 'title' field contains an address
|
||||
char digest_name [14]; // Name of digest file
|
||||
unsigned long digest_maxsize;
|
||||
int digest_maxwait;
|
||||
char archive_file [128]; // File into which to archive messages
|
||||
char digest_default; // If NZ, new users are default to digest mode
|
||||
char list_headers; // Use IETF draft helper headers
|
||||
char list_help [80]; // Help URL
|
||||
char list_signature [128]; // List's signature file
|
||||
char concealed; // If NZ, do not publicize via the maiser LIST
|
||||
long maximum_size; // Largest message that may be submitted to list
|
||||
char password [128]; // Moderator password or password filename
|
||||
char pwd_is_filename; // NZ if "password" is a filename
|
||||
} DLIST;
|
||||
|
||||
#define FS_BOLD 1
|
||||
#define FS_ITALIC 2
|
||||
#define FS_FIXED 4
|
||||
#define FS_OEMCHARS 8
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char fontname [LF_FACESIZE];
|
||||
INT_16 fontsize, style;
|
||||
} FONTSPEC;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char alias [60];
|
||||
char obj_name [48];
|
||||
char server [48];
|
||||
long flags; /* Unused at present - might be handy later */
|
||||
} CHBIND;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char alias [180], name [180];
|
||||
} ALIAS;
|
||||
|
||||
|
||||
// IMESSAGE structure definition:
|
||||
// The IMESSAGE structure is used internally to represent messages
|
||||
// and pseudo-messages. This structure exactly parallels a structure
|
||||
// used in Pegasus Mail v3.x and later for the same purpose, and is
|
||||
// included in this way to allow maximum code portability between
|
||||
// the two.
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT_16 dsize; // The size of this data structure
|
||||
INT_16 mtype; // User-defined message type field
|
||||
UINT_32 flags; // First bank of message-related flags
|
||||
UINT_32 flags2; // Second bank of message-related flags
|
||||
char fname [14]; // Recommended filename for message
|
||||
char from [42]; // The sender of the message
|
||||
char subject [50]; // Can you guess what this is?
|
||||
UCHAR cdate [8]; // Timezone-corrected date from message
|
||||
UCHAR date [8]; // Raw RFC822 time and date for message
|
||||
UINT_32 fsize; // Raw size of this message
|
||||
UINT_16 colour; // Display colour for this entry
|
||||
UINT_16 charset; // Character set for message
|
||||
char unique_id [34]; // Unique ID for the message
|
||||
void *folder; // Currently unused in Mercury/32
|
||||
char filename [128]; // The file containing the message data
|
||||
} IMESSAGE;
|
||||
|
||||
// Explanation of fields:
|
||||
// "dsize" The allocated size of this data structure
|
||||
// "mtype" The user can define message types that can be used for sorting
|
||||
// "flags" Can contain any of the flag values shown in Group 1 below
|
||||
// "flags2" Can contain any of the flag values shown in Group 2 below
|
||||
// "fname" Recommended filename for any storage to do with the message
|
||||
// "from" Display version of sender's address
|
||||
// "subject" Display version of message subject
|
||||
// "date" The date as shown in the message's RFC822 "Date:" field
|
||||
// "cdate" The date the message arrived at the local system.
|
||||
// - See below for more on the date format
|
||||
// "fsize" Raw size of the message, including headers and formatting
|
||||
// Note - no allowance is made for CR/LF conversions.
|
||||
// "colour" Index into colour table for message display colour
|
||||
// "charset" Index into character set table for message charset format
|
||||
// "unique_id" Guaranteed unique persistent global identifier for this message
|
||||
// "folder" The folder in which this message is currently stored.
|
||||
//
|
||||
// Date format: dates in IMESSAGEs use the NetWare 7-byte date format plus an
|
||||
// extra byte containing the offset in half-hour units from GMT. The date is
|
||||
// always pre-corrected to GMT by WinPMail. Note that byte 0 (the year) is
|
||||
// always the actual year - 1900, so the year 2000 is represented by 100.
|
||||
// The NetWare date format is as shown:
|
||||
//
|
||||
// Byte 0 - Year - 1900 (i.e, 2005 = 105)
|
||||
// Byte 1 - Month (ie, January == 1)
|
||||
// Byte 2 - Day (1 .. 31)
|
||||
// Byte 3 - Hour (0 - 24)
|
||||
// Byte 4 - Minute (0 - 59)
|
||||
// Byte 5 - Second (0 - 60)
|
||||
// Byte 6 - Day of week (Sunday == 0) ("255" == "not calculated")
|
||||
|
||||
//
|
||||
// Group 1 flag values - these can be used in an IMESSAGE "flags" field.
|
||||
//
|
||||
#define FILE_MAILED 1 // The message contains a mailed file
|
||||
#define UUENCODED 2 // The message contains uuencoded data
|
||||
#define FILE_ATTACHED 0x800003L // Use this as an attachment mask.
|
||||
#define ENCRYPTED 4 // The message is encrypted
|
||||
#define EXPIRED 16 // The message is past its expiry date
|
||||
#define FILE_ASCII 32 // Flag in attachment to indicate ASCII file
|
||||
#define HAS_BEEN_READ 128 // Hey, what do you know! It's been read!
|
||||
#define ALTERNATIVE 0x100 // The message is Multipart/Alternative type
|
||||
#define IS_HTML 0x200 // The message is Text/HTML type
|
||||
#define IS_CIRCULAR 0x400 // The message is being circulated
|
||||
#define CONFIRMATION 0x2000 // Sender wants confirmation of reading
|
||||
#define FORWARD 0x8000L // The message is being forwarded
|
||||
#define IS_RTF 0x10000L // Message contains MS-RTF data
|
||||
#define COPYSELF 0x20000L // The message is a copy to self
|
||||
#define DELETED 0x40000L // The message has been deleted.
|
||||
#define MIME 0x80000L // The message is a MIME transmission
|
||||
#define REPLIED 0x100000L // The message has been replied to.
|
||||
#define FORWARDED 0x200000L // The message has been forwarded.
|
||||
#define URGENT 0x400000L // The message is urgent/high priority.
|
||||
#define BINHEX 0x800000L // The message is a BinHex file
|
||||
#define IS_MHS 0x1000000L // The message originates from MHS
|
||||
#define IS_SMTP 0x2000000L // The message originated via SMTP
|
||||
#define IS_ANNOTATED 0x4000000L // The message has an annotation
|
||||
#define ENCLOSURE 0x8000000L // The message has an enclosure
|
||||
#define HIGHLIGHTED 0x10000000L // The message has transient significance
|
||||
#define MIME_MULTI 0x20000000L // The message is in MIME Multipart format
|
||||
#define TEXT_ENRICHED 0x40000000L // The message is in "text/enriched" format
|
||||
#define READ_ONLY 0x80000000L // The message may not be deleted
|
||||
|
||||
//
|
||||
// Group 2 flag values - these can be used in an IMESSAGE "flags2" field
|
||||
//
|
||||
|
||||
#define IS_NEWMAIL 1 // The message is in the new mail folder
|
||||
#define IS_NOTICE 2 // The message comes from a noticeboard
|
||||
#define IS_TEMPORARY 4
|
||||
|
||||
|
||||
// MIME parsing definitions and structures
|
||||
|
||||
enum // Content dispositions
|
||||
{
|
||||
MD_ATTACHMENT, MD_INLINE
|
||||
};
|
||||
|
||||
enum // The primary types
|
||||
{
|
||||
MP_TEXT, MP_MULTIPART, MP_MESSAGE, MP_APPLICATION,
|
||||
MP_IMAGE, MP_VIDEO, MP_AUDIO, MP_UNKNOWN
|
||||
};
|
||||
|
||||
enum // TEXT subtypes
|
||||
{
|
||||
MPT_PLAIN, MPT_RICHTEXT, MPT_HTML, MPT_RTF, MPT_UNKNOWN
|
||||
};
|
||||
|
||||
enum // MULTIPART subtypes
|
||||
{
|
||||
MPP_MIXED, MPP_ALTERNATIVE, MPP_DIGEST,
|
||||
MPP_PARALLEL, MPP_UNKNOWN
|
||||
};
|
||||
|
||||
enum // MESSAGE subtypes
|
||||
{
|
||||
MPM_RFC822, MPM_PARTIAL, MPM_EXTERNAL_BODY, MPM_UNKOWN
|
||||
};
|
||||
|
||||
enum // APPLICATION subtypes
|
||||
{
|
||||
MPA_OCTET_STREAM, MPA_POSTSCRIPT, MPA_ODA, MPA_BINHEX, MPA_UNKNOWN
|
||||
};
|
||||
|
||||
enum // IMAGE subtypes
|
||||
{
|
||||
MPI_GIF, MPI_JPEG, MPI_UNKNOWN
|
||||
};
|
||||
|
||||
enum // VIDEO subtypes
|
||||
{
|
||||
MPV_MPEG, MPV_UNKNOWN
|
||||
};
|
||||
|
||||
enum // AUDIO subtypes
|
||||
{
|
||||
MPU_BASIC, MPU_UNKNOWN
|
||||
};
|
||||
|
||||
enum // MIME transfer-encodings
|
||||
{
|
||||
// Note that ME_BINHEX and ME_UUENCODE are handled as special
|
||||
// cases and as such must always appear after ME_UNKNOWN.
|
||||
ME_7BIT, ME_8BIT, ME_QUOTED_PRINTABLE, ME_BASE64, ME_UNKNOWN,
|
||||
ME_BINHEX, ME_UUENCODE
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char charset [20];
|
||||
char *table;
|
||||
} MPT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char boundary [71];
|
||||
LIST partlist;
|
||||
} MPP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char fname [96];
|
||||
char type [20];
|
||||
} MPA;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int primary, secondary, encoding, disposition;
|
||||
char p_string [20], s_string [20];
|
||||
char description [48];
|
||||
char encryptor [16]; // For encrypted attachments, the encryptor
|
||||
int encryptor_flags;
|
||||
int section;
|
||||
char fname [96];
|
||||
union
|
||||
{
|
||||
MPT mpt;
|
||||
MPP mpp;
|
||||
MPA mpa;
|
||||
IMESSAGE mpm;
|
||||
} d;
|
||||
} IMIME;
|
||||
|
||||
|
||||
//**
|
||||
//** Section 4: Constants for message composition functions
|
||||
//**
|
||||
|
||||
#define OM_M_8BIT 1
|
||||
|
||||
#define OM_MT_PLAIN 0 // A simple, single-part text/plain message
|
||||
#define OM_MT_MULTIPART 1 // A multipart/mixed message
|
||||
#define OM_MT_ALTERNATIVE 2 // A multipart/alternative message
|
||||
#define OM_MT_DIGEST 3 // A multipart/digest type
|
||||
|
||||
#define OM_MF_TO 1 // Set the master recipient of the message
|
||||
#define OM_MF_SUBJECT 2 // Set the subject field for the message
|
||||
#define OM_MF_CC 3 // Set the secondary recipients of the message
|
||||
#define OM_MF_FROM 4 // Set the originator of the message.
|
||||
#define OM_MF_BODY 5 // Set the filename containing the message body
|
||||
#define OM_MF_RAW 6 // Add a raw header for the message.
|
||||
#define OM_MF_FLAGS 7 // Set the message's "flags" field
|
||||
|
||||
#define OM_AE_DEFAULT 0 // Default encoding (MIME BASE64 encoding)
|
||||
#define OM_AE_TEXT 1 // Simple textual data, unencoded
|
||||
#define OM_AE_UUENCODE 2 // Uuencoding
|
||||
#define OM_AE_BINHEX 3 // Macintosh Binhex format (data fork only)
|
||||
|
||||
#define OM_AF_INLINE 1 // Write the file as a simple textual section
|
||||
#define OM_AF_MESSAGE 2 // Write the message as a Message/RFC822 part
|
||||
|
||||
|
||||
//**
|
||||
//** Section 5: Protocol Module parameter block definition;
|
||||
//** Daemons are passed a Protocol Module parameter block.
|
||||
//**
|
||||
|
||||
#define GV_QUEUENAME 1
|
||||
#define GV_SMTPQUEUENAME 2
|
||||
#define GV_MYNAME 3
|
||||
#define GV_TTYFONT 4
|
||||
#define GV_MAISERNAME 5
|
||||
#define GV_FRAMEWINDOW 6
|
||||
#define GV_SYSFONT 7
|
||||
#define GV_BASEDIR 8
|
||||
#define GV_SCRATCHDIR 9
|
||||
|
||||
#define SYSTEM_PASSWORD 1
|
||||
#define APOP_SECRET 2
|
||||
#define PASSWD_MUST_EXIST 256
|
||||
|
||||
// Messages that protocol modules can send using the
|
||||
// "mercury_command" function in the protocol parameter block
|
||||
|
||||
// GET_MODULE_INTERFACE:
|
||||
// - "parm1" - char * pointer to name of module to locate
|
||||
// - Returns: the command interface function for the module, or NULL
|
||||
#define GET_MODULE_INTERFACE 1
|
||||
|
||||
// ADD_ALIAS
|
||||
// - "parm1" - char * pointer to alias to add
|
||||
// "parm2" - char * pointer to real-world address string
|
||||
// - Returns: NZ on success, 0 on failure
|
||||
#define ADD_ALIAS 2
|
||||
|
||||
// DELETE_ALIAS
|
||||
// - "parm1" - char * pointer to alias field of alias to delete
|
||||
// Returns: NZ on success, 0 on failure
|
||||
#define DELETE_ALIAS 3
|
||||
|
||||
// RESOLVE_ALIAS
|
||||
// - "parm1" - char * pointer to buffer to receive address (180 char min)
|
||||
// "parm2" - char * pointer to alias to resolve
|
||||
// - Returns: NZ if a match was found, 0 if none was found.
|
||||
#define RESOLVE_ALIAS 4
|
||||
|
||||
// RESOLVE_SYNONYM
|
||||
// - "parm1" - char * pointer to buffer to receive address (180 char min)
|
||||
// "parm2" - char * pointer to synonym to resolve
|
||||
// - Returns: NZ if a match was found, 0 if none was found
|
||||
#define RESOLVE_SYNONYM 5
|
||||
|
||||
// QUEUE_STATE - enable or disable queue processing
|
||||
// - "parm1" - 0 to query current state, 1 to set state
|
||||
// "parm2" - 1 to pause processing, 0 to enable it
|
||||
// - Returns: The state of queue processing prior to the call
|
||||
#define QUEUE_STATE 6
|
||||
|
||||
// DISPLAY_HELP
|
||||
// - "parm1" - section number in MERCURY.HLP
|
||||
// "parm2" - unused, must be 0
|
||||
// - Returns: Nothing.
|
||||
#define DISPLAY_HELP 512
|
||||
|
||||
#define NOT_IMPLEMENTED 0xF0000000L
|
||||
|
||||
#define RFC_822_TIME 0
|
||||
#define RFC_821_TIME 1
|
||||
|
||||
typedef DWORD (*GET_VARIABLE) (int index);
|
||||
typedef int (*IS_LOCAL_ADDRESS) (char *address, char *uic, char *server);
|
||||
typedef int (*GET_DELIVERY_PATH) (char *path, char *username, char *host);
|
||||
|
||||
typedef int (*IS_GROUP) (char *address, char *host, char *groupname);
|
||||
typedef int (*PARSE_ADDRESS) (char *target, char *source, int limit);
|
||||
typedef int (*EXTRACT_ONE_ADDRESS) (char *dest, char *source, int offset);
|
||||
typedef void (*EXTRACT_CQTEXT) (char *dest, char *source, int len);
|
||||
typedef int (*DLIST_INFO) (DLIST *dlist, char *lname, int num, char *address,
|
||||
char *errbuf, LIST *modlist);
|
||||
typedef void (*SEND_NOTIFICATION) (char *username, char *host, char *message);
|
||||
typedef int (*GET_DATE_AND_TIME) (BYTE *tm);
|
||||
typedef INT_32 (*VERIFY_PASSWORD) (char *username, char *host,
|
||||
char *password, INT_32 select);
|
||||
typedef int (*WRITE_PROFILE) (char *section, char *fname);
|
||||
typedef int (*MODULE_STATE) (char *modname, int set_value, int state);
|
||||
|
||||
// Job control functions
|
||||
|
||||
typedef void * (*JI_SCAN_FIRST_JOB) (int type, int mode, void **data);
|
||||
typedef void * (*JI_SCAN_NEXT_JOB) (void **data);
|
||||
typedef void (*JI_END_SCAN) (void **data);
|
||||
|
||||
typedef int (*JI_OPEN_JOB) (void *jobhandle);
|
||||
typedef int (*JI_CLOSE_JOB) (void *jobhandle);
|
||||
typedef void (*JI_REWIND_JOB) (void *jobhandle, int flags);
|
||||
typedef int (*JI_DISPOSE_JOB) (void *jobhandle);
|
||||
typedef int (*JI_PROCESS_JOB) (void *jobhandle);
|
||||
typedef int (*JI_DELETE_JOB) (void *jobhandle);
|
||||
typedef int (*JI_ABORT_JOB) (void *jobhandle, int fatal);
|
||||
typedef int (*JI_GET_JOB_INFO) (void *jobhandle, JOBINFO *ji);
|
||||
|
||||
typedef void * (*JI_CREATE_JOB) (int type, char *from,
|
||||
unsigned char *start_time);
|
||||
typedef int (*JI_ADD_ELEMENT) (void *jobhandle, char *address);
|
||||
typedef int (*JI_ADD_DATA) (void *jobhandle, char *data);
|
||||
typedef char * (*JI_GET_DATA) (void *jobhandle, char *buffer, int buflen);
|
||||
|
||||
typedef char * (*JI_GET_NEXT_ELEMENT) (void *jobhandle, int type, JOBINFO *job);
|
||||
typedef int (*JI_SET_JOB_FLAGS) (void *jobhandle, long flags);
|
||||
typedef int (*JI_SET_ELEMENT_STATUS) (void *jobhandle, int mode,
|
||||
unsigned char *date);
|
||||
typedef int (*JI_SET_ELEMENT_RESOLVINFO) (void *jobhandle, char *ip1, char *ip2,
|
||||
char *ip3, char *ip4);
|
||||
|
||||
typedef int (*JI_SET_DIAGNOSTICS) (void *jobhandle, int forwhat, char *text);
|
||||
typedef int (*JI_GET_DIAGNOSTICS) (void *jobhandle, int forwhat, char *fname);
|
||||
|
||||
typedef void (*JI_INCREMENT_TIME) (unsigned char *tm, unsigned int secs);
|
||||
|
||||
typedef long (*JI_TELL) (void *jobhandle, int selector);
|
||||
typedef int (*JI_SEEK) (void *jobhandle, long ofs, int selector);
|
||||
|
||||
typedef void * (*JI_GET_JOB_BY_ID) (char *id);
|
||||
typedef int (*JI_GET_JOB_TIMES) (void *job, char *submitted, char *ready);
|
||||
|
||||
// MNICA functions
|
||||
|
||||
typedef int (*GET_FIRST_GROUP_MEMBER) (char *group, char *host, char *member,
|
||||
int mlen, void **data);
|
||||
typedef int (*GET_NEXT_GROUP_MEMBER) (char *member, int mlen, void **data);
|
||||
typedef int (*END_GROUP_SCAN) (void **data);
|
||||
typedef int (*IS_VALID_LOCAL_USER) (char *address, char *username, char *host);
|
||||
typedef int (*IS_GROUP_MEMBER) (char *host, char *username, char *groupname);
|
||||
typedef int (*GET_FIRST_USER_DETAILS) (char *host, char *match, char *username,
|
||||
int ulen, char *address, int alen, char *fullname, int flen, void **data);
|
||||
typedef int (*GET_NEXT_USER_DETAILS) (char *username, int ulen, char *address,
|
||||
int alen, char *fullname, int flen, void **data);
|
||||
typedef int (*GET_USER_DETAILS) (char *host, char *match, char *username, int ulen,
|
||||
char *address, int alen, char *fullname, int flen);
|
||||
typedef int (*END_USER_SCAN) (void **data);
|
||||
typedef void (*READ_PMPROP) (char *userid, char *server, PMPROP *p);
|
||||
typedef int (*CHANGE_OWNERSHIP) (char *fname, char *host, char *newowner);
|
||||
typedef int (*BEGIN_SINGLE_DELIVERY) (char *uic, char *server, void **data);
|
||||
typedef void (*END_SINGLE_DELIVERY) (void **data);
|
||||
|
||||
// Miscellaneous functions - Mercury 2.11 and later only
|
||||
|
||||
typedef DWORD (*MERCURY_COMMAND) (DWORD selector, DWORD parm1, DWORD parm2);
|
||||
typedef char * (*GET_DATE_STRING) (int dtype, char *buf, BYTE *date);
|
||||
typedef char * (*RFC822_TIME) (char *buffer);
|
||||
typedef char * (*RFC821_TIME) (char *buffer);
|
||||
|
||||
// File I/O and parsing functions - Mercury 2.15 and later only
|
||||
|
||||
typedef INT_32 (*FM_OPEN_FILE) (char *path, UINT_32 flags);
|
||||
typedef INT_32 (*FM_OPEN_MESSAGE) (IMESSAGE *im, UINT_32 flags);
|
||||
typedef int (*FM_CLOSE_MESSAGE) (INT_32 id);
|
||||
typedef char * (*FM_GETS) (char *buf, INT_32 max, INT_32 id);
|
||||
typedef INT_16 (*FM_GETC) (INT_32 id);
|
||||
typedef void (*FM_UNGETC) (INT_16 c, INT_32 id);
|
||||
typedef INT_32 (*FM_READ) (INT_32 id, char *buffer, INT_32 bufsize);
|
||||
typedef INT_32 (*FM_GETPOS) (INT_32 fil);
|
||||
typedef INT_16 (*FM_SETPOS) (INT_32 fil, INT_32 offset);
|
||||
typedef INT_32 (*FM_GET_FOLDED_LINE) (INT_32 fil, char *line, int limit);
|
||||
typedef char * (*FM_FIND_HEADER) (INT_32 fil, char *name, char *buf, int len);
|
||||
typedef int (*FM_EXTRACT_MESSAGE) (void *job, char *fname, int flags);
|
||||
|
||||
typedef int (*PARSE_HEADER) (INT_32 fil, IMESSAGE *m);
|
||||
typedef int (*MIME_PREP_MESSAGE) (INT_32 fil, char *fname, int headers);
|
||||
typedef int (*PARSE_MIME) (INT_32 fil, IMIME *m);
|
||||
typedef void (*FREE_MIME) (IMIME *m);
|
||||
typedef int (*FAKE_IMESSAGE) (IMESSAGE *im, char *dest, char *src,
|
||||
IMIME *m, char *boundary);
|
||||
typedef int (*DECODE_MIME_HEADER) (char *dest, char *src);
|
||||
typedef int (*ENCODE_MIME_HEADER) (char *dest, char *src, int raw);
|
||||
|
||||
typedef void * (*OM_CREATE_MESSAGE) (UINT_32 mtype, UINT_32 flags);
|
||||
typedef INT_32 (*OM_DISPOSE_MESSAGE) (void *mhandle);
|
||||
typedef INT_32 (*OM_ADD_FIELD) (void *mhandle, UINT_32 selector, char *data);
|
||||
typedef INT_32 (*OM_ADD_ATTACHMENT) (void *mhandle, char *fname, char *ftype,
|
||||
char *description, UINT_32 encoding, UINT_32 flags, void *reserved);
|
||||
typedef INT_32 (*OM_WRITE_MESSAGE) (void *mhandle, char *fname);
|
||||
typedef void * (*OM_SEND_MESSAGE) (void *mhandle, char *envelope);
|
||||
|
||||
typedef int (*ENCODE_BASE64_STR) (char *dest, char *src, int srclen);
|
||||
typedef int (*DECODE_BASE64_STR) (char *dest, char *src, char *table);
|
||||
|
||||
typedef INT_32 (*ST_REGISTER_MODULE) (char *module_name);
|
||||
typedef INT_32 (*ST_UNREGISTER_MODULE) (INT_32 mhandle);
|
||||
typedef INT_32 (*ST_CREATE_CATEGORY) (INT_32 mhandle, char *cname,
|
||||
INT_32 ctag, INT_32 ctype, INT_32 dlen, UINT_32 flags);
|
||||
typedef INT_32 (*ST_REMOVE_CATEGORY) (INT_32 mhandle, UINT_32 ctag);
|
||||
typedef INT_32 (*ST_SET_HCATEGORY) (INT_32 chandle, UINT_32 data);
|
||||
typedef INT_32 (*ST_SET_CATEGORY) (INT_32 mhandle, INT_32 ctag, UINT_32 data);
|
||||
|
||||
typedef void (*LOGSTRING) (INT_16 ltype, INT_16 priority, char *str);
|
||||
typedef void (*LOGDATA) (INT_16 ltype, INT_16 priority, char *fmt, ...);
|
||||
|
||||
typedef INT_32 (*CREATE_OBJECT) (char *objectname, INT_32 objecttype,
|
||||
char *id, INT_32 flags);
|
||||
typedef INT_32 (*SET_PASSWORD) (char *username, char *host, char *newpassword,
|
||||
char *oldpassword, INT_32 select);
|
||||
|
||||
typedef INT_32 (*ST_GET_NEXT_MODULE) (INT_32 mhandle, char *modname);
|
||||
typedef INT_32 (*ST_GET_NEXT_CATEGORY) (INT_32 mhandle, INT_32 chandle,
|
||||
char *cname, INT_32 *ctype, INT_32 *clen, INT_32 *cflags);
|
||||
typedef INT_32 (*ST_GET_CATEGORY_DATA) (INT_32 chandle, void *data);
|
||||
typedef INT_32 (*ST_EXPORT_STATS) (INT_32 mhandle, char *fname, UINT_32 flags);
|
||||
|
||||
typedef INT_32 (*SELECT_PRINTER) (char *devicename, int maxlen);
|
||||
typedef INT_32 (* PRINT_FILE) (char *fname, char *printername, UINT_32 flags,
|
||||
INT_32 lrmargin, INT_32 tbmargin, char *title, char *username, char *fontname,
|
||||
INT_32 fontsize);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
long dsize; // Size of this structure
|
||||
char vmajor, vminor;
|
||||
HWND hMDIParent;
|
||||
GET_VARIABLE get_variable;
|
||||
IS_LOCAL_ADDRESS is_local_address;
|
||||
IS_GROUP is_group;
|
||||
PARSE_ADDRESS parse_address;
|
||||
EXTRACT_ONE_ADDRESS extract_one_address;
|
||||
EXTRACT_CQTEXT extract_cqtext;
|
||||
DLIST_INFO dlist_info;
|
||||
SEND_NOTIFICATION send_notification;
|
||||
GET_DELIVERY_PATH get_delivery_path;
|
||||
GET_DATE_AND_TIME get_date_and_time;
|
||||
VERIFY_PASSWORD verify_password;
|
||||
WRITE_PROFILE write_profile;
|
||||
MODULE_STATE module_state;
|
||||
|
||||
// Job control functions
|
||||
|
||||
JI_SCAN_FIRST_JOB ji_scan_first_job;
|
||||
JI_SCAN_NEXT_JOB ji_scan_next_job;
|
||||
JI_END_SCAN ji_end_scan;
|
||||
JI_OPEN_JOB ji_open_job;
|
||||
JI_CLOSE_JOB ji_close_job;
|
||||
JI_REWIND_JOB ji_rewind_job;
|
||||
JI_DISPOSE_JOB ji_dispose_job;
|
||||
JI_PROCESS_JOB ji_process_job;
|
||||
JI_DELETE_JOB ji_delete_job;
|
||||
JI_ABORT_JOB ji_abort_job;
|
||||
JI_GET_JOB_INFO ji_get_job_info;
|
||||
JI_CREATE_JOB ji_create_job;
|
||||
JI_ADD_ELEMENT ji_add_element;
|
||||
JI_ADD_DATA ji_add_data;
|
||||
JI_GET_DATA ji_get_data;
|
||||
JI_GET_NEXT_ELEMENT ji_get_next_element;
|
||||
JI_SET_ELEMENT_STATUS ji_set_element_status;
|
||||
JI_SET_ELEMENT_RESOLVINFO ji_set_element_resolvinfo;
|
||||
JI_SET_DIAGNOSTICS ji_set_diagnostics;
|
||||
JI_GET_DIAGNOSTICS ji_get_diagnostics;
|
||||
JI_INCREMENT_TIME ji_increment_time;
|
||||
|
||||
// MNICA (Network interface) functions
|
||||
|
||||
GET_FIRST_GROUP_MEMBER get_first_group_member;
|
||||
GET_NEXT_GROUP_MEMBER get_next_group_member;
|
||||
END_GROUP_SCAN end_group_scan;
|
||||
IS_VALID_LOCAL_USER is_valid_local_user;
|
||||
IS_GROUP_MEMBER is_group_member;
|
||||
GET_FIRST_USER_DETAILS get_first_user_details;
|
||||
GET_NEXT_USER_DETAILS get_next_user_details;
|
||||
GET_USER_DETAILS get_user_details;
|
||||
END_USER_SCAN end_user_scan;
|
||||
READ_PMPROP read_pmprop;
|
||||
CHANGE_OWNERSHIP change_ownership;
|
||||
BEGIN_SINGLE_DELIVERY begin_single_delivery;
|
||||
END_SINGLE_DELIVERY end_single_delivery;
|
||||
|
||||
// Miscellaneous functions
|
||||
|
||||
MERCURY_COMMAND mercury_command;
|
||||
GET_DATE_STRING get_date_string;
|
||||
RFC822_TIME rfc822_time;
|
||||
RFC821_TIME rfc821_time;
|
||||
|
||||
// File parsing and I/O functions
|
||||
|
||||
FM_OPEN_FILE fm_open_file;
|
||||
FM_OPEN_MESSAGE fm_open_message;
|
||||
FM_CLOSE_MESSAGE fm_close_message;
|
||||
FM_GETS fm_gets;
|
||||
FM_GETC fm_getc;
|
||||
FM_UNGETC fm_ungetc;
|
||||
FM_READ fm_read;
|
||||
FM_GETPOS fm_getpos;
|
||||
FM_SETPOS fm_setpos;
|
||||
FM_GET_FOLDED_LINE fm_get_folded_line;
|
||||
FM_FIND_HEADER fm_find_header;
|
||||
FM_EXTRACT_MESSAGE fm_extract_message;
|
||||
|
||||
PARSE_HEADER parse_header;
|
||||
MIME_PREP_MESSAGE mime_prep_message;
|
||||
PARSE_MIME parse_mime;
|
||||
FREE_MIME free_mime;
|
||||
FAKE_IMESSAGE fake_imessage;
|
||||
DECODE_MIME_HEADER decode_mime_header;
|
||||
ENCODE_MIME_HEADER encode_mime_header;
|
||||
|
||||
OM_CREATE_MESSAGE om_create_message;
|
||||
OM_DISPOSE_MESSAGE om_dispose_message;
|
||||
OM_ADD_FIELD om_add_field;
|
||||
OM_ADD_ATTACHMENT om_add_attachment;
|
||||
OM_WRITE_MESSAGE om_write_message;
|
||||
OM_SEND_MESSAGE om_send_message;
|
||||
|
||||
ENCODE_BASE64_STR encode_base64_str;
|
||||
DECODE_BASE64_STR decode_base64_str;
|
||||
|
||||
ST_REGISTER_MODULE st_register_module;
|
||||
ST_UNREGISTER_MODULE st_unregister_module;
|
||||
ST_CREATE_CATEGORY st_create_category;
|
||||
ST_REMOVE_CATEGORY st_remove_category;
|
||||
ST_SET_HCATEGORY st_set_hcategory;
|
||||
ST_SET_CATEGORY st_set_category;
|
||||
|
||||
JI_TELL ji_tell;
|
||||
JI_SEEK ji_seek;
|
||||
JI_SET_JOB_FLAGS ji_set_job_flags;
|
||||
|
||||
LOGSTRING logstring;
|
||||
LOGDATA logdata;
|
||||
|
||||
CREATE_OBJECT create_object;
|
||||
SET_PASSWORD set_password;
|
||||
|
||||
ST_GET_NEXT_MODULE st_get_next_module;
|
||||
ST_GET_NEXT_CATEGORY st_get_next_category;
|
||||
ST_GET_CATEGORY_DATA st_get_category_data;
|
||||
ST_EXPORT_STATS st_export_stats;
|
||||
|
||||
JI_GET_JOB_BY_ID ji_get_job_by_id;
|
||||
JI_GET_JOB_TIMES ji_get_job_times;
|
||||
|
||||
SELECT_PRINTER select_printer;
|
||||
PRINT_FILE print_file;
|
||||
} M_INTERFACE;
|
||||
|
||||
|
||||
#ifdef USES_M_INTERFACE
|
||||
|
||||
// Convenience macros: allow calls to internal Mercury functions to
|
||||
// be made in the same way as they would be in the core code (good
|
||||
// for portability).
|
||||
|
||||
// Values for the "flags" field of print_file
|
||||
|
||||
#define PRT_MESSAGE 1 // Print as an RFC822 message
|
||||
#define PRT_REFORMAT 2 // Reformat long lines when printing
|
||||
#define PRT_TIDY 4 // Print only "important" headers
|
||||
#define PRT_FOOTER 8 // Print a footer on each page
|
||||
#define PRT_NOHEADERS 16 // Print no message headers
|
||||
#define PRT_FIRSTONLY 32 // Print only first line of headers
|
||||
#define PRT_ITALICS 64 // Print quoted text in italics
|
||||
|
||||
extern M_INTERFACE *mi;
|
||||
|
||||
#define get_variable(x) (mi->get_variable (x))
|
||||
#define is_local_address(a,u,s) (mi->is_local_address (a, u, s))
|
||||
#define is_group(a,h,g) (mi->is_group (a, h, g))
|
||||
#define parse_address(t,s,l) (mi->parse_address (t, s, l))
|
||||
#define extract_one_address(d,s,o) (mi->extract_one_address (d, s, o))
|
||||
#define extract_cqtext(d,s,l) (mi->extract_cqtext (d, s, l))
|
||||
#define dlist_info(d,l,n,a,e,m) (mi->dlist_info(d, l, n, a, e, m))
|
||||
#define send_notification(u,h,m) (mi->send_notification (u, h, m))
|
||||
#define get_delivery_path(p,u,h) (mi->get_delivery_path (p, u, h))
|
||||
#define get_date_and_time(b) (mi->get_date_and_time (b))
|
||||
#define verify_password(u,s,p,e) (mi->verify_password (u, s, p, e))
|
||||
#define write_profile(s,f) (mi->write_profile (s, f))
|
||||
#define module_state(m,v,s) (mi->module_state (m, v, s))
|
||||
|
||||
#define ji_scan_first_job(t,m,d) (mi->ji_scan_first_job (t,m,d))
|
||||
#define ji_scan_next_job(d) (mi->ji_scan_next_job (d))
|
||||
#define ji_end_scan(d) (mi->ji_end_scan (d))
|
||||
#define ji_open_job(j) (mi->ji_open_job (j))
|
||||
#define ji_close_job(j) (mi->ji_close_job (j))
|
||||
#define ji_rewind_job(j,f) (mi->ji_rewind_job (j,f))
|
||||
#define ji_dispose_job(j) (mi->ji_dispose_job (j))
|
||||
#define ji_process_job(j) (mi->ji_process_job (j))
|
||||
#define ji_delete_job(j) (mi->ji_delete_job (j))
|
||||
#define ji_abort_job(j,f) (mi->ji_abort_job (j, f))
|
||||
#define ji_get_job_info(j,i) (mi->ji_get_job_info (j, i))
|
||||
#define ji_create_job(t,f,s) (mi->ji_create_job (t,f,s))
|
||||
#define ji_add_element(j,a) (mi->ji_add_element (j,a))
|
||||
#define ji_add_data(j,d) (mi->ji_add_data (j,d))
|
||||
#define ji_get_data(j,b,l) (mi->ji_get_data (j,b,l))
|
||||
#define ji_get_next_element(j,t,i) (mi->ji_get_next_element (j,t,i))
|
||||
#define ji_set_element_status(j,m,d) (mi->ji_set_element_status (j,m,d))
|
||||
#define ji_set_element_resolvinfo(j,k,l,m,n) (mi->ji_set_element_resolvinfo (j,k,l,m,n))
|
||||
#define ji_set_diagnostics(j,w,t) (mi->ji_set_diagnostics (j,w,t))
|
||||
#define ji_get_diagnostics(j,w,f) (mi->ji_get_diagnostics (j,w,f))
|
||||
#define ji_increment_time(t,s) (mi->ji_increment_time (t,s))
|
||||
#define ji_tell(j,s) (mi->ji_tell (j,s))
|
||||
#define ji_seek(j,o,s) (mi->ji_seek(j,o,s))
|
||||
#define ji_set_job_flags(j,f) (mi->ji_set_job_flags(j,f))
|
||||
#define ji_get_job_by_id(i) (mi->ji_get_job_by_id(i))
|
||||
#define ji_get_job_times(j,s,r) (mi->ji_get_job_times(j,s,r))
|
||||
|
||||
#define get_first_group_member(g,h,m,l,d) (mi->get_first_group_member(g,h,m,l,d))
|
||||
#define get_next_group_member(m,l,d) (mi->get_next_group_member(m,l,d))
|
||||
#define end_group_scan(d) (mi->end_group_scan(d))
|
||||
#define is_valid_local_user(a,u,h) (mi->is_valid_local_user(a,u,h))
|
||||
#define is_group_member(h,u,g) (mi->is_group_member(h,u,g))
|
||||
#define get_first_user_details(h,n,u,ul,a,al,f,fl,d) (mi->get_first_user_details(h,n,u,ul,a,al,f,fl,d))
|
||||
#define get_next_user_details(u,ul,a,al,f,fl,d) (mi->get_next_user_details(u,ul,a,al,f,fl,d))
|
||||
#define get_user_details(h,m,u,ul,a,al,f,fl) (mi->get_user_details(h,m,u,ul,a,al,f,fl))
|
||||
#define end_user_scan(d) (mi->end_user_scan(d))
|
||||
#define read_pmprop(u,s,p) (mi->read_pmprop(u,s,p))
|
||||
#define change_ownership(f,h,n) (mi->change_ownership(f,h,n))
|
||||
#define begin_single_delivery(u,s,d) (mi->begin_single_delivery(u,s,d))
|
||||
#define end_single_delivery(d) (mi->end_single_delivery(d))
|
||||
|
||||
#define mercury_command(s,p1,p2) (mi->mercury_command(s,p1,p2))
|
||||
#define get_date_string(s,b,d) (mi->get_date_string(s,b,d))
|
||||
#define rfc822_time(s) (mi->rfc822_time(s))
|
||||
#define rfc821_time(s) (mi->rfc821_time(s))
|
||||
|
||||
#define fm_open_file(p,f) (mi->fm_open_file(p,f))
|
||||
#define fm_open_message(i,f) (mi->fm_open_message(i,f))
|
||||
#define fm_close_message(i) (mi->fm_close_message(i))
|
||||
#define fm_gets(b,m,i) (mi->fm_gets(b,m,i))
|
||||
#define fm_getc(i) (mi->fm_getc(i))
|
||||
#define fm_ungetc(c,i) (mi->fm_ungetc(c,i))
|
||||
#define fm_read(i,b,s) (mi->fm_read(i,b,s))
|
||||
#define fm_getpos(f) (mi->fm_getpos(f))
|
||||
#define fm_setpos(f,o) (mi->fm_setpos(f,o))
|
||||
#define fm_get_folded_line(f,l,x) (mi->fm_get_folded_line(f,l,x))
|
||||
#define fm_find_header(i,n,b,l) (mi->fm_find_header(i,n,b,l))
|
||||
#define fm_extract_message(j,n,f) (mi->fm_extract_message(j,n,f))
|
||||
|
||||
#define parse_header(f,m) (mi->parse_header(f,m))
|
||||
#define mime_prep_message(i,f,h) (mi->mime_prep_message(i,f,h))
|
||||
#define parse_mime(i,m) (mi->parse_mime(i,m))
|
||||
#define free_mime(m) (mi->free_mime(m))
|
||||
#define fake_imessage(i,s,m,e,b) (mi->fake_imessage(i,s,m,e,b))
|
||||
#define decode_mime_header(d,s) (mi->decode_mime_header(d,s))
|
||||
#define encode_mime_header(d,s,r) (mi->encode_mime_header(d,s,r))
|
||||
|
||||
#define om_create_message(m,f) (mi->om_create_message(m,f))
|
||||
#define om_dispose_message(m) (mi->om_dispose_message(m))
|
||||
#define om_add_field(m,s,d) (mi->om_add_field(m,s,d))
|
||||
#define om_add_attachment(m,f,t,d,e,g,r) (mi->om_add_attachment(m,f,t,d,e,g,r))
|
||||
#define om_write_message(m,f) (mi->om_write_message(m,f))
|
||||
#define om_send_message(m,e) (mi->om_send_message(m,e))
|
||||
|
||||
#define encode_base64_str(d,s,l) (mi->encode_base64_str(d,s,l))
|
||||
#define decode_base64_str(d,s,t) (mi->decode_base64_str(d,s,t))
|
||||
|
||||
#define st_register_module(m) (mi->st_register_module(m))
|
||||
#define st_unregister_module(h) (mi->st_unregister_module(h))
|
||||
#define st_create_category(m,c,t,y,l,f) (mi->st_create_category(m,c,t,y,l,f))
|
||||
#define st_remove_category(m,c) (mi->st_remove_category(m,c))
|
||||
#define st_set_hcategory(c,d) (mi->st_set_hcategory(c,d))
|
||||
#define st_set_category(m,c,d) (mi->st_set_category(m,c,d))
|
||||
|
||||
#define logstring(l,p,s) (mi->logstring(l,p,s))
|
||||
// "logdata" has variable parameters and cannot be accessed via a macro
|
||||
|
||||
#define create_object(n,t,i,f) (mi->create_object(n,t,i,f))
|
||||
#define set_password(u,h,n,o,s) (mi->set_password(u,h,n,o,s))
|
||||
|
||||
#define st_get_next_module(m,n) (mi->st_get_next_module(m,n))
|
||||
#define st_get_next_category(m,h,c,t,l,f) (mi->st_get_next_category(m,h,c,t,l,f))
|
||||
#define st_get_category_data(c,d) (mi->st_get_category_data(c,d))
|
||||
#define st_export_stats(m,f,l) (mi->st_export_stats(m,f,l))
|
||||
|
||||
#define select_printer(d,m) (mi->select_printer(d,m))
|
||||
#define print_file(f,p,l,m,b,t,u,n,z) (mi->print_file(f,p,l,m,b,t,u,n,z))
|
||||
|
||||
#endif // USES_M_INTERFACE
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif // _DAEMON_H
|
||||
|
||||
2478
database/MercuryMail/RESOURCE/daemon.txt
Normal file
2478
database/MercuryMail/RESOURCE/daemon.txt
Normal file
File diff suppressed because it is too large
Load Diff
93
database/MercuryMail/RESOURCE/filetype.pm
Normal file
93
database/MercuryMail/RESOURCE/filetype.pm
Normal file
@@ -0,0 +1,93 @@
|
||||
;
|
||||
; Pegasus Mail System,
|
||||
; Copyright (c) 1990-97, David Harris, All Rights Reserved.
|
||||
;
|
||||
; File Typing Rules
|
||||
;
|
||||
; This file is used by Pegasus Mail to determine the "attachment type"
|
||||
; information for files automatically. It consists of rules that can
|
||||
; test a file's extension and any byte or strings in the first 512
|
||||
; bytes of the file. Each line contains the complete set of rules for
|
||||
; a single type of file, in the following format:
|
||||
;
|
||||
; <file type>,<match type>,<operation>[,<operation>...]
|
||||
;
|
||||
; "file type" is the WinPMail "attachment type" string that
|
||||
; should be used if a file matches this rule.
|
||||
;
|
||||
; "match type" is one of the following values:
|
||||
; 0 : Match is good if any operation succeeds
|
||||
; 1 : Match is only good if all operations succeed
|
||||
;
|
||||
; "operation" is one or more groups of three parameters in
|
||||
; the following format:
|
||||
; <opcode>,<offset>,<string>
|
||||
; "opcode" is one of the following characters:
|
||||
; X : match the file's extension
|
||||
; B : match the single byte contained in "string"
|
||||
; at offset "offset" in the file
|
||||
; S : match the string contained in "string" starting
|
||||
; at offset "offset" in the file
|
||||
; R : match the string contained in "string" anywhere
|
||||
; in the first 512 bytes of the file
|
||||
; "offset" is the offset to start matching in the file. When
|
||||
; "operation" is either X or R, it should be set to 0
|
||||
; "string" is the string or byte to match. It can be ASCII
|
||||
; characters, or escapes in the form "\xxx", where "xxx"
|
||||
; is exactly three decimal characters.
|
||||
;
|
||||
; Examples:
|
||||
; MS-Word,0,X,0,.DOC
|
||||
; - Returns "MS-Word" if the file's extension is ".DOC".
|
||||
;
|
||||
; PGP-Public-Key,0,R,0,BEGIN PGP PUBLIC
|
||||
; - Returns "PGP-Public-Key" if the string "BEGIN PGP PUBLIC"
|
||||
; appears anywhere in the first 512 bytes of the file.
|
||||
;
|
||||
; PCEXE,1,X,0,.EXE,S,0,MZ
|
||||
; - Returns "PCEXE" if the file's extension is ".EXE"
|
||||
; AND the first two characters in the file are "MZ".
|
||||
;
|
||||
; ZIP-Archive,0,X,0,.ZIP,S,0,PK\003
|
||||
; - Returns "ZIP-Archive" if the file's extension is ".ZIP"
|
||||
; OR the first three characters are "PK" and an ASCII 3.
|
||||
;
|
||||
; The matching process ends on the first viable match. Because of this,
|
||||
; if you have both a specific set of rules and a general set of rules
|
||||
; for any single file type, you should always place the general rules
|
||||
; after the specific rules in the file to allow more reliable matching.
|
||||
;
|
||||
; The parser for this file is inflexible - you must get the format
|
||||
; right. Note in particular that whitespace is not permitted, or if it
|
||||
; is present, it is assumed to be significant. The only valid delimiter
|
||||
; in this file is a comma; the only way you can match a comma in a
|
||||
; string is by using the escape "\044".
|
||||
;
|
||||
; Blank lines and lines in this file starting with ';' or '#' are
|
||||
; regarded as comments and are ignored.
|
||||
;
|
||||
|
||||
MS-Word,1,S,0,\219\165\045
|
||||
PCEXE,1,X,0,.EXE,S,0,MZ
|
||||
PCEXE,1,X,0,.DLL,S,0,MZ
|
||||
ZIP-archive,0,X,0,.ZIP,S,0,PK\003
|
||||
MS-Richtext,0,X,0,.RTF,S,0,{\092rtf
|
||||
Program-source,0,X,0,.C,X,0,.H,X,0,.PAS,X,0,.RC,X,0,.CPP,X,0,.BAS,X,0,.ASM
|
||||
GIF-image,0,X,0,.GIF,S,0,GIF
|
||||
JPEG-image,0,X,0,.JPG,S,6,JFIF
|
||||
BMP-image,0,X,0,.BMP,X,0,.DIB,S,0,BM
|
||||
WAV-sound-file,1,S,0,RIFF,S,8,WAVE
|
||||
WAV-sound-file,0,X,0,.WAV
|
||||
WordPerfect,0,S,1,WPC
|
||||
Excel-sheet,0,X,0,.XLS
|
||||
Excel-chart,0,X,0,.XLC
|
||||
MS-Access,0,X,0,.MDB
|
||||
AVI-Movie,1,S,0,RIFF,S,8,AVI
|
||||
AVI-Movie,0,X,0,.AVI
|
||||
Windows-help,1,X,0,.HLP,S,0,?_\003
|
||||
HTML-text,0,X,0,.HTM
|
||||
HTML-text,1,S,0,<HTML>
|
||||
PGP-Public-Key,0,R,0,BEGIN PGP PUBLIC
|
||||
PGP-encrypted,0,X,0,.PGP
|
||||
Text,0,X,0,.TXT
|
||||
|
||||
52
database/MercuryMail/RESOURCE/greeting.txt
Normal file
52
database/MercuryMail/RESOURCE/greeting.txt
Normal file
@@ -0,0 +1,52 @@
|
||||
Changing the SMTP greeting issued by MercuryS
|
||||
---------------------------------------------
|
||||
|
||||
When an incoming connection is received by the MercuryS SMTP server,
|
||||
the first thing MercuryS does is issue a "greeting". This greeting
|
||||
typically looks like this:
|
||||
|
||||
--------- cut here --------------
|
||||
220 somehost.somedomain.com Mercury/32 v3.21 ESMTP server ready.
|
||||
--------- cut here --------------
|
||||
|
||||
The server then waits for the client to introduce itself and start
|
||||
a mail transaction.
|
||||
|
||||
Recent suggested law changes in the U.S.A. and other countries may
|
||||
make it desirable to be able to change the "greeting" issued by
|
||||
MercuryS on connection, typically to indicate that certain types of
|
||||
mail may not be welcome.
|
||||
|
||||
To change the MercuryS greeting, create a text file called
|
||||
GREETING.MER in the directory where MERCURY.EXE is installed. This
|
||||
file should contain the text you want MercuryS to display, and must
|
||||
be no longer than 512 characters.
|
||||
|
||||
We recommend the following text as a starting point:
|
||||
|
||||
--------- cut here --------------
|
||||
Use of this server for unauthorised relaying of mail is forbidden.
|
||||
Unsolicited Commercial E-mail ("spam") is NOT WELCOME HERE.
|
||||
--------- cut here --------------
|
||||
|
||||
If you were to use this text in your GREETING.MER file, then the
|
||||
opening message displayed by MercuryS would look like this:
|
||||
|
||||
--------- cut here --------------
|
||||
220-somehost.somedomain.com Mercury/32 v3.21 ESMTP server ready.
|
||||
220-Use of this server for unauthorised relaying of mail is forbidden.
|
||||
220 Unsolicited Commercial E-mail ("spam") is NOT WELCOME HERE.
|
||||
--------- cut here --------------
|
||||
|
||||
MercuryS automatically adds the SMTP response codes and continuation
|
||||
characters correctly.
|
||||
|
||||
Using an "extended greeting" in this way *may* on rare occasions
|
||||
create problems with some older mail clients that cannot handle
|
||||
multi-line greetings. We recommend that you experiment with the
|
||||
feature for a while to make sure no mail interruption is occurring
|
||||
before you fix it in place.
|
||||
|
||||
Remember, you cannot have more than 512 characters of data in your
|
||||
GREETING.MER file.
|
||||
|
||||
44
database/MercuryMail/RESOURCE/helpdesk.pm5
Normal file
44
database/MercuryMail/RESOURCE/helpdesk.pm5
Normal file
@@ -0,0 +1,44 @@
|
||||
Title Helpdesk Request Form
|
||||
|
||||
# A simple template showing how a helpdesk request form could be
|
||||
# generated as a template. Note the use of a picture to help the
|
||||
# form to stand out, and the use of informational text to assist
|
||||
# the user in filling out the form.
|
||||
#
|
||||
# You will need to modify the value of the "Set to" line below so
|
||||
# that it reflects the real address of your helpdesk staff.
|
||||
|
||||
picture 0 ~a\hdesk.bmp
|
||||
text 0 Please fill in the information below, and provide a brief description
|
||||
text 0 of your problem. Our helpdesk staff will get back to you promptly.
|
||||
text 0
|
||||
|
||||
string v1 "~p" "What is your name?"
|
||||
string v2 "" "What is your phone number?"
|
||||
string v3 "" "Where are you located?"
|
||||
string v4 ";Normal;Informational;Urgent" "Urgency of your problem?" 0 list
|
||||
string v5 "" "(Optional) Response needed by?"
|
||||
string v6 "" "What is your problem or request?" 512 multiline
|
||||
|
||||
set to = helpdesk
|
||||
set subject = "Helpdesk Request"
|
||||
set confirm-reading = "N"
|
||||
set copyself = "Y"
|
||||
|
||||
insert "Helpdesk Request~z"
|
||||
insert "----------------~z"
|
||||
insert "~z"
|
||||
insert "From: ~vv1~~z"
|
||||
insert "Date and time: ~y~z"
|
||||
insert "Phone: ~vv2~~z"
|
||||
insert "Location: ~vv3~~z"
|
||||
insert "Urgency: ~vv4~~z"
|
||||
insert "Respond by: ~vv5~~z"
|
||||
insert "~z"
|
||||
insert "Problem description:~z"
|
||||
insert "--------------------~z"
|
||||
insert "~vv6~~z"
|
||||
insert "--------------------~z"
|
||||
insert "~z"
|
||||
insert "End of helpdesk request.~z"
|
||||
|
||||
26
database/MercuryMail/RESOURCE/listserv.pm5
Normal file
26
database/MercuryMail/RESOURCE/listserv.pm5
Normal file
@@ -0,0 +1,26 @@
|
||||
Title Subscribe to a Pegasus Mail Mailing List
|
||||
|
||||
# This template allows the user to subscribe to any of the Pegasus
|
||||
# Mail Mailing lists hosted a bama.ua.edu; it prompts the user for
|
||||
# a little information, then sends the subscription request off
|
||||
# formatted for the LISTSERV program.
|
||||
|
||||
text 0 Use this template to subscribe to any of the Pegasus Mail
|
||||
text 0 mailing lists hosted by the University of Alabama at Tuscaloosa.
|
||||
text 0
|
||||
|
||||
string pmlist ";General Pegasus Mail List;Pegasus Mail for Windows List;Mercury MTS List;Pegasus Mail for Mac List;Pegasus Mail for DOS List;Pegasus Mail Announcements List" "Which mailing list?" 0 list
|
||||
string adlist ";PMAIL;PM-WIN;MERCURY;PM-MAC;PM-DOS;PM-NEWS" "" 0 list
|
||||
string myname "~p" "Your name (as \"First/Last\"):"
|
||||
string listname ""
|
||||
|
||||
lookup "~vpmlist~" pmlist adlist listname
|
||||
|
||||
set to = listserv@bama.ua.edu
|
||||
set subject = "Subscription to ~vpmlist~"
|
||||
set confirm-reading = "N"
|
||||
set copyself = "N"
|
||||
set signature = none
|
||||
|
||||
insert "subscribe ~vlistname~ ~vmyname~~z"
|
||||
|
||||
85
database/MercuryMail/RESOURCE/mercuryb.htm
Normal file
85
database/MercuryMail/RESOURCE/mercuryb.htm
Normal file
@@ -0,0 +1,85 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Mercury HTTP Services</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
|
||||
<p> </p>
|
||||
<table align="center" cellpadding="0" cellspacing="0" width="540" bgcolor="white" bordercolordark="white" bordercolorlight="black">
|
||||
<tr>
|
||||
<td width="540" colspan="3">
|
||||
<table cellpadding="0" cellspacing="0" bgcolor="#FFFF99" bordercolordark="white" bordercolorlight="black">
|
||||
<tr>
|
||||
<td width="540" bgcolor="#6666CC">
|
||||
<p> </p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="540" bgcolor="#6666CC">
|
||||
<p align="center"><font face="Arial" size="3" color="white"><b>Welcome
|
||||
to ~h</b></font></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="540" bgcolor="#6666CC">
|
||||
<p><font face="Arial"> </font></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="540" colspan="3" bgcolor="#FFFFCC">
|
||||
<p><font size="2" face="Arial"> </font></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="540" colspan="3" bgcolor="#FFFFCC">
|
||||
<p align="center"><font face="Arial" size="2"> <b>Services
|
||||
available on this server:</b></font></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="540" colspan="3" bgcolor="#FFFFCC">
|
||||
<p><font face="Arial" size="2"> </font></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="43" bgcolor="#FFFFCC">
|
||||
<p><font face="Arial" size="2"> </font></p>
|
||||
</td>
|
||||
<td width="464" bgcolor="#FFFFCC">
|
||||
<p align="center"><font face="Arial" size="2"><a href="/mlss">Mailing
|
||||
list subscription management services</a></font></p>
|
||||
</td>
|
||||
<td width="33" bgcolor="#FFFFCC">
|
||||
<p><font face="Arial" size="2"> </font></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="540" colspan="3" bgcolor="#FFFFCC">
|
||||
<p> </p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="540" colspan="3" bgcolor="#FFFFCC">
|
||||
<p> </p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="540" colspan="3" bgcolor="#FFFFCC">
|
||||
<p> </p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="540" colspan="3" bgcolor="#FFFFCC">
|
||||
<p align="center"><font face="Arial" size="1" color="gray">Powered
|
||||
by Mercury/32, Copyright (c) 1993-2008, David Harris</font></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p><font face="Arial" size="2"> </font></p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
24
database/MercuryMail/RESOURCE/mime-map.pm
Normal file
24
database/MercuryMail/RESOURCE/mime-map.pm
Normal file
@@ -0,0 +1,24 @@
|
||||
;
|
||||
; Pegasus Mail MIME Mapping file.
|
||||
; This file is used to add MIME content-type mappings into Pegasus Mail
|
||||
;
|
||||
; Each line in the file defines a bi-directional mapping between a MIME
|
||||
; content type on the left and a Pegasus Mail attachment type on the
|
||||
; right.
|
||||
;
|
||||
; When you add an attachment to a message, WinPMail will look through
|
||||
; this file looking for an attachment type match; when it finds one, it
|
||||
; will write the attachment using that MIME content type.
|
||||
;
|
||||
; When looking for viewers, Pegasus Mail performs the reverse of the
|
||||
; same search, looking for a line containing a content type that matches
|
||||
; the one used to send the file; if it finds one, it searches its list
|
||||
; of attachment viewers for the attachment type defined on the same line.
|
||||
;
|
||||
; The format of this file is:
|
||||
;
|
||||
; content_type = attachment_type
|
||||
;
|
||||
|
||||
Text/HTML = HTML-text
|
||||
|
||||
BIN
database/MercuryMail/RESOURCE/order32.dll
Normal file
BIN
database/MercuryMail/RESOURCE/order32.dll
Normal file
Binary file not shown.
72
database/MercuryMail/RESOURCE/order32.fff
Normal file
72
database/MercuryMail/RESOURCE/order32.fff
Normal file
@@ -0,0 +1,72 @@
|
||||
;
|
||||
; Form Fact File for the Pegasus Mail 32-bit Manual Orders Extension
|
||||
; Pegasus Mail System, Copyright 1990-98 David Harris, all rights reserved.
|
||||
;
|
||||
; FFFs are examined by Pegasus Mail at startup and are used to determine
|
||||
; what forms resources are available to users. WinPMail scans the following
|
||||
; locations when looking for FFFs -
|
||||
;
|
||||
; * The user's home mailbox
|
||||
; * The base directory (ie, where WINPMAIL.EXE resides)
|
||||
; * If present, the directory indicated by an FFF environment variable.
|
||||
;
|
||||
; An FFF may contain definitions for as many forms as you wish - in general
|
||||
; terms, system-wide FFFs are best defined in a single file since this will
|
||||
; speed the startup of the program, but the ability to have multiple FFFs
|
||||
; can make for much simpler installation of new forms.
|
||||
;
|
||||
; -------------------------------------------------------------------------
|
||||
; WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING
|
||||
; -------------------------------------------------------------------------
|
||||
; WinPMail forms are executable code! You should never load forms onto your
|
||||
; system unless you are absolutely certain of their pedigree, because they
|
||||
; are a perfect vehicle for trojan horses.
|
||||
; -------------------------------------------------------------------------
|
||||
;
|
||||
; The following keywords are recognized in this file:
|
||||
;
|
||||
; "Form name" - The name which should appear in the form selector list
|
||||
; "Form DLL" - Full path to the DLL containing the form's code
|
||||
; "Form type" - Either COMPOSER or READER
|
||||
; "Form flags" - A bitmap value - see below
|
||||
; "Form tagname" - Form's registered tagname written into outgoing mail
|
||||
; "Form data" - Any custom data required by the form
|
||||
; "32-bit model" - Indicates that the extension is for WinPMail/32
|
||||
; "End" - End of definition - add the form to the form list.
|
||||
;
|
||||
; "Form triggers" - only valid for READERS - what should activate the form
|
||||
;
|
||||
; "Form flags" is a bitmap composed of the following bits:
|
||||
;
|
||||
; Mnemonic Value Meaning
|
||||
; ----------------------------------------------------------------
|
||||
; WPM_STARTUP 1 Load the extension when WinPMail starts up
|
||||
; WPM_NOLIST 2 Do not show in the "Extensions" window list
|
||||
; WPM_HIDDEN 4 Hide the parent MDI window on loading
|
||||
; WPM_LOGGING 8 Extension wants to receive logging events
|
||||
; WPM_ONEONLY 16 Only allow one running instance at any time
|
||||
; WPM_FIRSTRUN 32 Autoload extension on first-ever WinPMail run
|
||||
; WPM_USES_TCP 64 Extension requires TCP/IP services to run
|
||||
;
|
||||
; Various flags can be combined by adding (or ORing) the values
|
||||
; together - so to have a hidden extension which loads at startup,
|
||||
; is interested in logging events, and does not appear in the
|
||||
; "Extensions" window, you would use 1 + 2 + 4 + 8 = 15
|
||||
;
|
||||
; "Extended flags" is a bitmap containing extra options for the extension:
|
||||
; WPMX_ASERVER 1 Add the extension to the "Addresses" menu
|
||||
; WPMX_COMPOSER 2 Add the extension to the "New message" submenu
|
||||
|
||||
Form name = "Donate in Support"
|
||||
32-bit model = 1
|
||||
Form DLL = ~a\ORDER32.DLL
|
||||
Form type = COMPOSER
|
||||
Form flags = 0
|
||||
Extended flags = 2
|
||||
Form tagname = "PM-ORDER"
|
||||
Bitmap file = ~a\order.bmp,Make a donation in support of Pegasus Mail
|
||||
|
||||
; The Order extension has no defaultable settings.
|
||||
Form data = ""
|
||||
End
|
||||
|
||||
BIN
database/MercuryMail/RESOURCE/poppass.dll
Normal file
BIN
database/MercuryMail/RESOURCE/poppass.dll
Normal file
Binary file not shown.
65
database/MercuryMail/RESOURCE/poppass.fff
Normal file
65
database/MercuryMail/RESOURCE/poppass.fff
Normal file
@@ -0,0 +1,65 @@
|
||||
;
|
||||
; Form Fact File for the sample Pegasus Mail PopPass extension
|
||||
; Pegasus Mail System, Copyright 1990-99 David Harris, all rights reserved.
|
||||
;
|
||||
; FFFs are examined by Pegasus Mail at startup and are used to determine
|
||||
; what forms resources are available to users. WinPMail scans the following
|
||||
; locations when looking for FFFs -
|
||||
;
|
||||
; * The user's home mailbox
|
||||
; * The base directory (ie, where WINPMAIL.EXE resides)
|
||||
; * If present, the directory indicated by an FFF environment variable.
|
||||
;
|
||||
; An FFF may contain definitions for as many forms as you wish - in general
|
||||
; terms, system-wide FFFs are best defined in a single file since this will
|
||||
; speed the startup of the program, but the ability to have multiple FFFs
|
||||
; can make for much simpler installation of new forms.
|
||||
;
|
||||
; -------------------------------------------------------------------------
|
||||
; WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING
|
||||
; -------------------------------------------------------------------------
|
||||
; WinPMail forms are executable code! You should never load forms onto your
|
||||
; system unless you are absolutely certain of their pedigree, because they
|
||||
; are a perfect vehicle for trojan horses.
|
||||
; -------------------------------------------------------------------------
|
||||
;
|
||||
; The following keywords are recognized in this file:
|
||||
;
|
||||
; "Form name" - The name which should appear in the form selector list
|
||||
; "Form DLL" - Full path to the DLL containing the form's code
|
||||
; "Form type" - Either COMPOSER or READER
|
||||
; "Form flags" - A bitmap value - see below
|
||||
; "Form tagname" - Form's registered tagname written into outgoing mail
|
||||
; "Form data" - Any custom data required by the form
|
||||
; "End" - End of definition - add the form to the form list.
|
||||
;
|
||||
; "Form triggers" - only valid for READERS - what should activate the form
|
||||
;
|
||||
; "Form flags" is a bitmap composed of the following bits:
|
||||
;
|
||||
; Mnemonic Value Meaning
|
||||
; ----------------------------------------------------------------
|
||||
; WPM_STARTUP 1 Load the extension when WinPMail starts up
|
||||
; WPM_NOLIST 2 Do not show in the "Extensions" window list
|
||||
; WPM_HIDDEN 4 Hide the parent MDI window on loading
|
||||
; WPM_LOGGING 8 Extension wants to receive logging events
|
||||
; WPM_ONEONLY 16 Only allow one running instance at any time
|
||||
; WPM_USES_TCP 64 Extension requires TCP/IP services to run
|
||||
;
|
||||
; Various flags can be combined by adding (or ORing) the values
|
||||
; together - so to have a hidden extension which loads at startup,
|
||||
; is interested in logging events, and does not appear in the
|
||||
; "Extensions" window, you would use 1 + 2 + 4 + 8 = 15
|
||||
;
|
||||
|
||||
Form name = "Change POP3 password"
|
||||
Form DLL = ~a\POPPASS.DLL
|
||||
Form type = COMPOSER
|
||||
Form flags = 80
|
||||
Form tagname = "PM-POPPASS"
|
||||
|
||||
; You can enter a default server port in the "Form Data" field
|
||||
|
||||
Form data = "106"
|
||||
End
|
||||
|
||||
23
database/MercuryMail/RESOURCE/poppass.txt
Normal file
23
database/MercuryMail/RESOURCE/poppass.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
PopPass Extensions for Pegasus Mail
|
||||
-----------------------------------
|
||||
|
||||
PopPass is a Pegasus Mail Extension (or plugin module) that allows
|
||||
users of Pegasus Mail v3.0 and later systems to change their POP3
|
||||
passwords using the MercuryW "change password" server, or a compatible
|
||||
server.
|
||||
|
||||
To install the extension, follow these easy steps:
|
||||
|
||||
1: Locate the directory where you have installed Pegasus Mail
|
||||
|
||||
2: Look for a file called WINPMAIL.EXE - if you can find this file,
|
||||
then copy POPPASS.DLL and POPPASS.FFF into the directory.
|
||||
|
||||
3: Look for a file called WINPM-32.EXE - if you can find this file,
|
||||
then copy PPASS32.DLL and PPASS32.FFF into the directory.
|
||||
|
||||
4: Restart your copy of Pegasus Mail.
|
||||
|
||||
To use the extension, choose "Change POP3 Password" from the
|
||||
"Extensions" submenu of the "Tools" menu in Pegasus Mail.
|
||||
|
||||
BIN
database/MercuryMail/RESOURCE/ppass32.dll
Normal file
BIN
database/MercuryMail/RESOURCE/ppass32.dll
Normal file
Binary file not shown.
66
database/MercuryMail/RESOURCE/ppass32.fff
Normal file
66
database/MercuryMail/RESOURCE/ppass32.fff
Normal file
@@ -0,0 +1,66 @@
|
||||
;
|
||||
; Form Fact File for the sample Pegasus Mail 32-bit PopPass extension
|
||||
; Pegasus Mail System, Copyright 1990-99 David Harris, all rights reserved.
|
||||
;
|
||||
; FFFs are examined by Pegasus Mail at startup and are used to determine
|
||||
; what forms resources are available to users. WinPMail scans the following
|
||||
; locations when looking for FFFs -
|
||||
;
|
||||
; * The user's home mailbox
|
||||
; * The base directory (ie, where WINPMAIL.EXE resides)
|
||||
; * If present, the directory indicated by an FFF environment variable.
|
||||
;
|
||||
; An FFF may contain definitions for as many forms as you wish - in general
|
||||
; terms, system-wide FFFs are best defined in a single file since this will
|
||||
; speed the startup of the program, but the ability to have multiple FFFs
|
||||
; can make for much simpler installation of new forms.
|
||||
;
|
||||
; -------------------------------------------------------------------------
|
||||
; WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING
|
||||
; -------------------------------------------------------------------------
|
||||
; WinPMail forms are executable code! You should never load forms onto your
|
||||
; system unless you are absolutely certain of their pedigree, because they
|
||||
; are a perfect vehicle for trojan horses.
|
||||
; -------------------------------------------------------------------------
|
||||
;
|
||||
; The following keywords are recognized in this file:
|
||||
;
|
||||
; "Form name" - The name which should appear in the form selector list
|
||||
; "Form DLL" - Full path to the DLL containing the form's code
|
||||
; "Form type" - Either COMPOSER or READER
|
||||
; "Form flags" - A bitmap value - see below
|
||||
; "Form tagname" - Form's registered tagname written into outgoing mail
|
||||
; "Form data" - Any custom data required by the form
|
||||
; "End" - End of definition - add the form to the form list.
|
||||
;
|
||||
; "Form triggers" - only valid for READERS - what should activate the form
|
||||
;
|
||||
; "Form flags" is a bitmap composed of the following bits:
|
||||
;
|
||||
; Mnemonic Value Meaning
|
||||
; ----------------------------------------------------------------
|
||||
; WPM_STARTUP 1 Load the extension when WinPMail starts up
|
||||
; WPM_NOLIST 2 Do not show in the "Extensions" window list
|
||||
; WPM_HIDDEN 4 Hide the parent MDI window on loading
|
||||
; WPM_LOGGING 8 Extension wants to receive logging events
|
||||
; WPM_ONEONLY 16 Only allow one running instance at any time
|
||||
; WPM_USES_TCP 64 Extension requires TCP/IP services to run
|
||||
;
|
||||
; Various flags can be combined by adding (or ORing) the values
|
||||
; together - so to have a hidden extension which loads at startup,
|
||||
; is interested in logging events, and does not appear in the
|
||||
; "Extensions" window, you would use 1 + 2 + 4 + 8 = 15
|
||||
;
|
||||
|
||||
Form name = "Change POP3 password"
|
||||
32-bit model = 1
|
||||
Form DLL = ~a\PPASS32.DLL
|
||||
Form type = COMPOSER
|
||||
Form flags = 80
|
||||
Form tagname = "PM-POPPASS"
|
||||
|
||||
; You can enter a default server port in the "Form Data" field
|
||||
|
||||
Form data = "106"
|
||||
End
|
||||
|
||||
52
database/MercuryMail/RESOURCE/prefix.pm
Normal file
52
database/MercuryMail/RESOURCE/prefix.pm
Normal file
@@ -0,0 +1,52 @@
|
||||
;
|
||||
; PREFIX.PM - user-defined subject prefix "ignore" list
|
||||
; Use this file to create your own list of strings that
|
||||
; Pegasus Mail should ignore at the start of the subject
|
||||
; line when sorting by thread or sorting by subject.
|
||||
;
|
||||
; This file can be placed either in the user's mailbox
|
||||
; directory (in which case it will be private to that user),
|
||||
; or in the same directory as WINPM-32.EXE, in which case it
|
||||
; will be system-wide and used by anyone who runs that copy
|
||||
; of the program.
|
||||
;
|
||||
; Each line in this file should be an absolutely literal
|
||||
; string that Pegasus Mail should check for: spaces are
|
||||
; significant, both leading and trailing. Any line starting
|
||||
; with ';' or '#' is regarded as a comment and is ignored,
|
||||
; as are blank lines.
|
||||
;
|
||||
; You can enter more complex expressions by making the first
|
||||
; character on the line a tilde (~). Everything that follows
|
||||
; the tilde is regarded as an extended Pegasus Mail v4.1
|
||||
; regular expression, and it *must* contain the special
|
||||
; sequence /h to show Pegasus Mail the point in the string
|
||||
; where the prefix ends. As an example, consider this
|
||||
; expression:
|
||||
;
|
||||
; ~RE/w[[][0-9]+][ :]/h*
|
||||
;
|
||||
; This tells Pegasus Mail to look for any line starting with
|
||||
; the letters "RE" followed by zero or more spaces, followed
|
||||
; by a '[' character, followed by one or more digits, followed
|
||||
; by a ']' character, followed by either a space or a colon.
|
||||
; The /h indicates that this is where the prefix ends, while
|
||||
; the '*' operator is used to match the remainder of the line.
|
||||
;
|
||||
; The items in this sample file are exactly the same as the
|
||||
; default list built into Pegasus Mail itself (the list that
|
||||
; it will use automatically if this file is not present). Note
|
||||
; that Pegasus Mail will check for any combination that may be
|
||||
; present of any item in this file - so, using this set of
|
||||
; definitions, the subject lines "Re: (FWD) re FW: X" and
|
||||
; "Re: X" will sort the same.
|
||||
|
||||
RE:
|
||||
RE
|
||||
FWD:
|
||||
(FWD)
|
||||
FW:
|
||||
~RE/w[[][0-9]+][ :]/h*
|
||||
AW:
|
||||
WG:
|
||||
|
||||
BIN
database/MercuryMail/RESOURCE/rasdial.zip
Normal file
BIN
database/MercuryMail/RESOURCE/rasdial.zip
Normal file
Binary file not shown.
20
database/MercuryMail/RESOURCE/readme.1st
Normal file
20
database/MercuryMail/RESOURCE/readme.1st
Normal file
@@ -0,0 +1,20 @@
|
||||
The RESOURCE subdirectory
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
This directory, RESOURCE, contains unmodified, original versions of
|
||||
various files from the most recent Mercury/32 installation: the files in
|
||||
this directory are original versions of files found in the base Mercury
|
||||
directory that are typically modified on a site-by-site basis.
|
||||
|
||||
You SHOULD NOT modify any files in this directory, primarily because any
|
||||
changes you make will be overwritten without warning the next time you
|
||||
install a Mercury update.
|
||||
|
||||
If you want to modify any of the files in this directory, you should copy
|
||||
them somewhere else before working on them.
|
||||
|
||||
------
|
||||
Mercury Mail Transport System,
|
||||
Copyright (c) 1993-2008, David Harris, All rights reserved.
|
||||
http://www.pmail.com
|
||||
|
||||
BIN
database/MercuryMail/RESOURCE/rescom.exe
Normal file
BIN
database/MercuryMail/RESOURCE/rescom.exe
Normal file
Binary file not shown.
88
database/MercuryMail/RESOURCE/rquotes.r
Normal file
88
database/MercuryMail/RESOURCE/rquotes.r
Normal file
@@ -0,0 +1,88 @@
|
||||
##
|
||||
## Sample source for a suitable RQUOTES.PMS for use in
|
||||
## Pegasus Mail v3.0/WinPmail variable signatures.
|
||||
##
|
||||
## Compile this source using ResCom.exe, by issuing the
|
||||
## command "ResCom RQUOTES.R", then copy the resulting
|
||||
## RQUOTES.RSC file into your home mailbox as RQUOTES.PMS.
|
||||
##
|
||||
## So, the sequence of commands looks like this:
|
||||
##
|
||||
## C:\PMAIL> rescom rquotes.r
|
||||
## C:\PMAIL> copy rquotes.rsc f:\mail\9000001\rquotes.pms
|
||||
##
|
||||
## The general format of this file is a collection of text
|
||||
## resources; each text resource is a multiline group of
|
||||
## quoted strings, ending with \n wherever you want a line
|
||||
## break.
|
||||
##
|
||||
## To activate your variable signature, place the characters
|
||||
## ~! in your signature file at the point where you want the
|
||||
## substitution to occur.
|
||||
##
|
||||
|
||||
headers off # Ignore this command
|
||||
symbols off # Ignore this command.
|
||||
|
||||
text x
|
||||
{
|
||||
"Thought for the day:\n",
|
||||
" A penny saved is ridiculous.\n"
|
||||
};
|
||||
|
||||
text x
|
||||
{
|
||||
"Thought for the day:\n",
|
||||
" The only thing that hurts more than paying income tax\n",
|
||||
" is not having to pay income tax.\n"
|
||||
};
|
||||
|
||||
text x
|
||||
{
|
||||
"Thought for the day:\n",
|
||||
" Intuition (n): an uncanny sixth sense which tells people \n",
|
||||
" that they are right, whether they are or not.\n"
|
||||
};
|
||||
|
||||
text x
|
||||
{
|
||||
"Thought for the day:\n",
|
||||
" Dictatorship (n): a form of government under which everything \n",
|
||||
" which is not prohibited is compulsory.\n"
|
||||
};
|
||||
|
||||
text x
|
||||
{
|
||||
"Thought for the day:\n",
|
||||
" Concerto (n): a fight between a piano and a pianist.\n"
|
||||
};
|
||||
|
||||
text x
|
||||
{
|
||||
"Thought for the day:\n",
|
||||
" Communist (n): one who has given up all hope\n",
|
||||
" of becoming a Capitalist.\n"
|
||||
};
|
||||
|
||||
text x
|
||||
{
|
||||
"Thought for the day:\n",
|
||||
" Book (n): a utensil used to pass time while waiting\n",
|
||||
" for the TV repairman.\n"
|
||||
};
|
||||
|
||||
text x
|
||||
{
|
||||
"Thought for the day:\n",
|
||||
" Bagpipes (n): an octopus wearing a kilt.\n"
|
||||
};
|
||||
|
||||
text x
|
||||
{
|
||||
"Thought for the day:\n",
|
||||
" Advertising (n): the science of arresting the human\n",
|
||||
" intelligence for long enough to get money from it.\n",
|
||||
" -- Stephen Leacock.\n"
|
||||
};
|
||||
|
||||
|
||||
619
database/MercuryMail/RESOURCE/spambust.dat
Normal file
619
database/MercuryMail/RESOURCE/spambust.dat
Normal file
@@ -0,0 +1,619 @@
|
||||
#
|
||||
# Mercury/32 Basic Content Control rule file.
|
||||
# Copyright (c) 2002-2003, David Harris; portions copyright (c) 2002 David Kocmoud.
|
||||
# For information on the syntax and format of this file, please consult
|
||||
# the "Content control" section of the Mercury/32 Help file.
|
||||
#
|
||||
# This set of rules is intended to catch a wide range of unwanted mail
|
||||
# messages where the content is commercial or sexual in nature. It works
|
||||
# quite well (at the time of writing anyway) but you will almost certainly
|
||||
# want or need to adjust it over time to deal with the specific types of
|
||||
# content you want to filter. This rule set is designed to be used with a
|
||||
# definition where the trigger weight is set to 50.
|
||||
#
|
||||
# Note that many of the rules in this file have negative weights: this is
|
||||
# a useful way of "promoting" a message that might otherwise be detected
|
||||
# as having unacceptable content.
|
||||
#
|
||||
|
||||
# Check for "Lazy HTML", almost always a sure sign of spam
|
||||
if Test "LazyHTML strict" weight 51 tag "Message contains Lazy HTML"
|
||||
|
||||
# Check for iFrame tags
|
||||
if Test "HasIFrame" weight 51 tag "Probable iFrame virus attack"
|
||||
|
||||
# Check for excessive numbers of HTML comments
|
||||
if Test "HTMLComments 10" weight 51 tag "Too many HTML comments"
|
||||
|
||||
# Check for an unreasonable number of spaces in the subject
|
||||
if Subject matches "* +*" weight 51
|
||||
|
||||
# Check for unreasonable numbers of high-bit characters - a fairly
|
||||
# reliable sign of unreadable Asian spam.
|
||||
if Test "Garbage 25" weight 51
|
||||
|
||||
# Give a small weight to messages containing URLs in the .BIZ TLD
|
||||
if body matches "*http:*.biz*" weight 15
|
||||
|
||||
# Check for all variations of "viagra" and similar products in subject and body
|
||||
# Note that the "obfuscated" keyword, which is used to trap doctored versions of
|
||||
# trigger words like "vi@gra", can be abbreviated to "ob".
|
||||
|
||||
if subject contains "viagra" obfuscated weight 51
|
||||
if subject contains "viapro" ob weight 51
|
||||
if subject has "cialis" ob weight 51
|
||||
if subject has "cialagen" ob weight 51
|
||||
if subject has "climagel" ob weight 51
|
||||
if subject has "VPRX" ob weight 51
|
||||
|
||||
if body contains "viagra" ob weight 40
|
||||
if body contains "viapro" ob weight 40
|
||||
if body has "cialis" ob weight 40
|
||||
if body has "cialagen" ob weight 40
|
||||
if body has "climagel" ob weight 40
|
||||
if body has "VPRX" ob weight 40
|
||||
|
||||
# Check for other pharmacy and drug-related stuff
|
||||
if subject contains "xanax" ob weight 51
|
||||
if body contains "xanax" ob weight 40
|
||||
if subject contains "vicodin" ob weight 51
|
||||
if body contains "vicodin" ob weight 40
|
||||
if subject contains "valium" ob weight 51
|
||||
if body contains "valium" ob weight 30
|
||||
|
||||
if content contains "phentermine" ob weight 30
|
||||
if content contains "finasteride" ob weight 40
|
||||
if content has "ambien" ob weight 30
|
||||
|
||||
if Subject matches "*/spharmacy/s*" weight 40
|
||||
if Subject hasall "online, pharmacy" weight 51
|
||||
if Subject hasall "on-line, pharmacy" weight 51
|
||||
if content has "prescription" ob weight 15
|
||||
if content has "meds" weight 30
|
||||
if content has "pharmacy" weight 20
|
||||
if content hasall "diet, patch" ob weight 30
|
||||
if content contains "medication" ob weight 15
|
||||
|
||||
# Check for penile enlargement
|
||||
if Subject has "penis" ob weight 51 tag "Penis enlargement ad"
|
||||
if Subject contains "enlargement"
|
||||
and Subject has "Penis, Penile" ob weight 51 tag "Penis enlargement ad"
|
||||
if Body has "penis" ob weight 35 tag "Penis enlargement ad"
|
||||
if Body hasall "penis, enlargement" ob weight 21 tag "Penis enlargement ad"
|
||||
if Content hasall "premature, ejaculation" ob weight 40 tag "Sex pills ad"
|
||||
if Content contains "increasethelength" ob weight 25 tag "Penis enlargement ad"
|
||||
if Body contains "penissize" ob weight 40
|
||||
if Body hasall "penissize, largerpenis" ob weight 51
|
||||
if Body hasall "penis, gain, inches" ob weight 51
|
||||
if Body hasall "increase, size, penis" ob weight 51 tag "Penis enlargement ad"
|
||||
if content contains "breastenlargement" ob weight 51 tag "Breast enlargement ad"
|
||||
|
||||
# Adjust for filtering of listserv messages
|
||||
if Subject matches "Rejected posting to*" weight -9999
|
||||
|
||||
# Check for subject lines starting with "ADV:"
|
||||
if Subject matches "/sADV/s:*" weight 51
|
||||
|
||||
# Check for subject lines ending with a date/time stamp. e.g. "3/10/02 8:14:07 PM"
|
||||
if Subject matches "*[0-9]+/[0-9]+/[0-9]+ +[0-9]+:[0-9]+:[0-9]+ +[AP]M" weight 77
|
||||
|
||||
# Check for a "Comments: Authenticated sender..." header with no
|
||||
# matching X-Mailer header (a common, although older spam signature).
|
||||
if header "comments" contains "authenticated sender"
|
||||
andnot exists "X-Mailer" weight 30
|
||||
|
||||
# Check for special headers that reek of spam
|
||||
if exists "X-PMG-Recipient" weight 51
|
||||
|
||||
# Check for messages with no "Date" field - this is illegal under
|
||||
# RFC2822 anyway, and is usually a pretty good indicator of spam
|
||||
ifnot exists "Date" weight 51
|
||||
|
||||
# Check for content suggesting unwanted "commercial services"
|
||||
if Content matches "*Access*IRA funds taxfree*penalty[- ]free*" weight 51
|
||||
if Content matches "*Access*IRA*no*tax*penalty*" weight 51
|
||||
if Subject contains "get out of debt" weight 50
|
||||
if Subject contains "debt reduction" weight 50
|
||||
if Subject contains "credit card debt" weight 50
|
||||
if Subject matches "*accept credit car[td]s*" weight 51
|
||||
if Content contains "no credit card required" weight 40
|
||||
if Subject contains "get paid for " weight 50
|
||||
if Subject contains "get paid while " weight 50
|
||||
if Subject matches "*guaranteed*return*investment*" weight 50
|
||||
if Subject contains "low interest loan" weight 50
|
||||
if Subject contains "lowest mortgage rates" weight 50
|
||||
if Subject contains "bad credit" weight 50
|
||||
if Content contains "online casino" weight 50
|
||||
if Content contains "on-line casino" weight 50
|
||||
if Content contains "multilevel market" weight 30
|
||||
if Subject contains "increase your net worth" weight 30
|
||||
if Subject contains " pay you " weight 30
|
||||
if Subject matches "*paycheck*paycheck*" weight 30
|
||||
if Subject contains "take surveys" weight 30
|
||||
if Subject contains "fire your boss" weight 50
|
||||
if Subject contains " work from home" weight 40
|
||||
if Subject contains " work at home" weight 40
|
||||
if Subject matches "*mak* money at home*" weight 50
|
||||
if Subject contains "make money on" weight 50
|
||||
if Subject contains "make more money" weight 50
|
||||
if Subject contains "want more money" weight 50
|
||||
if Subject contains "pile of cash" weight 50
|
||||
if Subject contains "save $" weight 50
|
||||
if Subject contains "save money" weight 50
|
||||
if Subject contains "stock pick" weight 40
|
||||
if Subject contains "stock play" weight 40
|
||||
if Subject contains "stockwatch" weight 40
|
||||
if Subject contains "OTCBB:" weight 40
|
||||
if Subject contains "watch this stock" weight 40
|
||||
if Subject contains "win cash" weight 50
|
||||
if Subject contains "win money" weight 50
|
||||
if Subject contains "win $" weight 50
|
||||
if Subject contains "venture"
|
||||
and Subject contains "capital" weight 50
|
||||
if Sender contains "investor insights" weight 50
|
||||
if subject matches "*create*paycheck*home*" weight 51
|
||||
|
||||
# Check for content suggesting unwanted sexual "services"
|
||||
if Subject contains "adult entertainment" weight 50
|
||||
if Subject contains "adult web" weight 50
|
||||
if Subject contains "adult site" weight 50
|
||||
if Subject contains "adult video" weight 50
|
||||
if Subject contains "barely legal" weight 50
|
||||
if Subject contains "bondage" weight 40
|
||||
if Subject contains "erotica" weight 40
|
||||
if Subject contains "fetish" weight 40
|
||||
if Subject contains "fisting" weight 40
|
||||
if Subject contains "fuck" weight 40
|
||||
if Subject contains "hardcore" weight 10
|
||||
if Subject contains "horny" weight 20
|
||||
if Subject contains "naughty" weight 10
|
||||
if Subject contains "naked" weight 20
|
||||
if Subject contains "porn " weight 40
|
||||
if Subject contains "pussy" weight 25
|
||||
if subject contains "pussies" weight 25
|
||||
if Subject contains "nude celeb" weight 50
|
||||
if Subject contains "sex" weight 10
|
||||
if Subject contains "slut" weight 40
|
||||
if Subject contains "sleaze" weight 20
|
||||
if Subject contains "whore" weight 50
|
||||
if Subject matches "*/cXXX*" weight 30
|
||||
if subject has "f12ee" or subject has "fl2ee" weight 51
|
||||
if subject has "seks" or subject has "secks" weight 51
|
||||
if subject has "toon, toons" weight 30
|
||||
|
||||
# Bogus diet/health/vanity stuff
|
||||
if Subject contains "fat blocker" weight 30
|
||||
if Subject contains "Liposuction" weight 30
|
||||
if Subject contains "Obesity" weight 30
|
||||
if Subject contains "Weight Loss" weight 50
|
||||
if Subject hasall "coral, calcium" weight 51
|
||||
if Content contains "medically proven" weight 40
|
||||
|
||||
# Bulk e-mail Spam stuff
|
||||
if Subject matches "*million*addresses*" weight 50
|
||||
if Subject matches "*bulk*email*" weight 50
|
||||
|
||||
# Other sales stuff
|
||||
if Subject contains "below wholesale price" weight 30
|
||||
if Subject contains "buy wholesale" weight 30
|
||||
if Subject matches "*cell*phone*" weight 30
|
||||
if Subject contains "descrambler" weight 30
|
||||
if Subject contains "dream vacation" weight 30
|
||||
if Subject matches "*earn*bonus*points*" weight 60
|
||||
if Subject contains "free gift" weight 30
|
||||
if Subject contains "get more hits" weight 50
|
||||
if Subject contains "increase sales" weight 30
|
||||
if Subject contains "INCREDIBLE SOFTWARE BARGAIN" weight 30
|
||||
if Subject contains "Internet Detective" weight 50
|
||||
if Subject contains "Internet Spy" weight 50
|
||||
if Subject contains "Life Insurance Quotes" weight 30
|
||||
if Subject contains "limited time offer" weight 50
|
||||
if Subject contains "mortgage rates" weight 30
|
||||
if Subject contains "need Life Insurance" weight 50
|
||||
if Subject contains "psychic reading" weight 50
|
||||
if Subject contains "site need more traffic" weight 50
|
||||
if Subject contains "stop smoking" weight 50
|
||||
if Subject matches "*web*promotion service*" weight 50
|
||||
if Subject matches "*save* on *" weight 30
|
||||
if Subject contains "No Fee!" weight 40
|
||||
if Subject contains "Paying Too Much" weight 40
|
||||
if Subject contains "Or Your Money Back" weight 40
|
||||
if Subject matches "*/cFREE[E!*, ]*" weight 50
|
||||
if sender contains "vividnews" weight 50
|
||||
if sender contains "vividinsid" weight 50
|
||||
if sender contains "Bulkmail" weight 45
|
||||
if subject hasall "cable, descrambler" ob weight 51
|
||||
|
||||
# Chinese Spam: note that users in China will almost certainly
|
||||
# have to disable these tests - they are intended solely for
|
||||
# Westerners who are inundated with rubbish originating from
|
||||
# within Mainland China and Taiwan.
|
||||
if header "Content-Type" contains "Big5" weight 45
|
||||
if header "Content-Type" contains "GB2312" weight 45
|
||||
|
||||
# Check for URL using dotted-IP-address
|
||||
if body matches "*tp:??[0-9]+.[0-9]+.[0-9]+.*" weight 20
|
||||
|
||||
# Match spam that claims not to be spam because it "adheres" to the
|
||||
# ridiculous 105C 1618 section 301 legislation.
|
||||
if body matches "*1618*section 301*" weight 51
|
||||
if body matches "*section 301*1618*" weight 51
|
||||
|
||||
# Viral stuff - not intended to replace competent virus scanning,
|
||||
# but easy to do for a few of the most common cases
|
||||
if subject matches "*Snow*Seven*Dwar*REAL*story*" weight 51
|
||||
|
||||
# Body matches - all the rules below this point test the message
|
||||
# body. This has more of an impact on the time it takes to process
|
||||
# the rule set than header processing does.
|
||||
|
||||
# Check for body content suggesting unwanted "commercial services"
|
||||
if body contains "credit card debt" weight 50
|
||||
if body contains "credit card bills" weight 40
|
||||
if body contains "credit rating" weight 20
|
||||
if body contains "Accept Credit Car" weight 50
|
||||
if body contains "Accept Major Credit Car" weight 50
|
||||
if body contains "bad credit" weight 30
|
||||
if body contains "damaged credit" weight 30
|
||||
if body contains "your credit rating" weight 50
|
||||
if body contains "consolidate your debt" weight 50
|
||||
if body contains "entrepreneurial" weight 30
|
||||
if body contains "earn good money" weight 30
|
||||
if body contains "IRA Liberation Process" weight 70
|
||||
if body contains "financial freedom" weight 50
|
||||
if body contains "financial security" weight 40
|
||||
if body contains "stockwatch" weight 40
|
||||
if body contains "OTCBB:" weight 40
|
||||
if body contains "(Stock Symbol: " weight 40
|
||||
if body contains "refinance your home" weight 40
|
||||
if body matches "*take control*your*financial future*" weight 40
|
||||
if body contains "venture capital" weight 40
|
||||
if body contains "investor insights" weight 50
|
||||
if body contains "forward looking statements" weight 50
|
||||
if body matches "*section 27a*securities act of 1933*" weight 50
|
||||
if body matches "*section 21b*securities exchange act of 1934*" weight 50
|
||||
if body contains "investment advice" weight 50
|
||||
if body contains "future marketing messages" weight 50
|
||||
if body contains "get out of debt" weight 50
|
||||
if body contains "outstanding debt" weight 40
|
||||
if body contains "low interest loan" weight 10
|
||||
if body contains "high interest rates" weight 10
|
||||
if body matches "*income*from home*" weight 10
|
||||
if body matches "*need*additional income*" weight 10
|
||||
if body contains "multilevel market" weight 10
|
||||
if body contains " lottery " weight 20
|
||||
if body contains " lotto " weight 20
|
||||
if body contains " jackpot " weight 20
|
||||
if body contains "pay you" weight 10
|
||||
if body contains "reduce your debt" weight 50
|
||||
if body contains "stop throwing your money away" weight 50
|
||||
if body contains "fire your boss" weight 50
|
||||
if body contains "work from home" weight 40
|
||||
if body contains "work at home" weight 20
|
||||
if body contains "you have nothing to lose" weight 30
|
||||
if body contains "you have nothing to loose" weight 30
|
||||
if body contains "should not be construed as an offer or solicitation to buy or sell any security" weight 88
|
||||
if body contains "not a solicitation or recommendation to buy" weight 88
|
||||
if body contains "not an offer to buy or sell securities" weight 88
|
||||
if body matches "*highly speculative* risk*" weight 88
|
||||
if body hasall "Stephan, Ducharme" weight 51
|
||||
if body hasall "earning money, eBay" weight 51
|
||||
if body hasall "earn, extra, income" weight 51
|
||||
if body hasall "limited, time, only" weight 40
|
||||
if body contains "independent marketing" weight 25
|
||||
if body hasall "need, more, money, apply, grant"
|
||||
weight 51 tag "Spurious Federal Grants guide"
|
||||
if body contains "to learn more about" weight 30
|
||||
if body matches "*must be*years*to*" weight 30
|
||||
if body contains "clickhere" ob weight 30
|
||||
if body matches "*/cGUARANTEED*" weight 20
|
||||
if body hasall "offer, lowest, rates" weight 20
|
||||
if body hasall "copy, dvd, movie" ob weight 40
|
||||
if body contains "is banned from" or body contains "is banned in" weight 15
|
||||
if body hasall "mortgage, dollars, loan" weight 25
|
||||
if body contains "private chat room" weight 25
|
||||
if body contains "video poker" weight 25
|
||||
if body contains "chance to win" weight 15
|
||||
if body matches "*/sbuy real estate*" weight 25
|
||||
if body contains "money machine" weight 25
|
||||
if body contains "government secur" weight 15
|
||||
if body hasall "copy, DVD, download" weight 30
|
||||
if body hasall "buy, sell, performing, debt" weight 30
|
||||
if body contains "make a fortune" weight 30
|
||||
if body contains "future mailings" weight 30
|
||||
if body contains "100 percent" weight 15
|
||||
if body contains "fuelsaverpro" ob weight 51 tag "Fuel saver spam"
|
||||
if body matches "*boost*gas*mileage*" weight 40 tag "Fuel saver spam"
|
||||
if body contains "youmustrespondby" ob
|
||||
and body hasall "staff, students, computers" weight 51
|
||||
if body hasall "fortune, ebay" ob weight 40
|
||||
if body hasall "cable, descrambler" ob weight 51
|
||||
if content hasall "digital, cable" weight 25
|
||||
if content contains "digitalcablefilter" ob weight 30
|
||||
if body hasall "mini, radiocontrolled" ob weight 40
|
||||
if body hasall "refinance, mortgage" weight 40
|
||||
|
||||
# Check for body content suggesting unwanted sexual "services"
|
||||
if body contains "adult entertainment" weight 20
|
||||
if body contains "adult web" weight 20
|
||||
if body contains "adult site" weight 20
|
||||
if body contains "barely legal*teens" weight 50
|
||||
if body contains " hardcore " weight 20
|
||||
if body contains "prefer girls" weight 40
|
||||
if body contains " naked " weight 10
|
||||
if body contains " unclothed " weight 10
|
||||
if body contains " nude " weight 20
|
||||
if body contains " ass " weight 10
|
||||
if body contains "improve sex" weight 30
|
||||
if body contains "pussy" weight 15
|
||||
if body contains "hugecock" ob weight 25
|
||||
if body contains "sexual experience" weight 40
|
||||
if body contains " erections" weight 10
|
||||
if body contains " sexlover" weight 50
|
||||
if body contains "sexual preferences" weight 20
|
||||
if body contains "* sexx+ *" weight 50
|
||||
if body contains " sexshows" weight 50
|
||||
if body contains " sex shows" weight 40
|
||||
if body contains " sleaze" weight 20
|
||||
if body contains "gangbang" or body contains "gang-bang" weight 40
|
||||
if body contains " titties" weight 20
|
||||
if body contains "adult video" weight 30
|
||||
if body hasall "adult, action, female" weight 40
|
||||
if body has "anal" weight 20
|
||||
if body contains "anal sex" weight 20
|
||||
if body has "bondage" weight 20
|
||||
if body has "horny" weight 20
|
||||
if body contains " fetish" weight 20
|
||||
if body has "fuck, fucked, fucking" weight 40 tag "The F word"
|
||||
if body has "cunt, cunts" weight 40 tag "The C word"
|
||||
if body contains " fisting" weight 40
|
||||
if body contains " cock " weight 20
|
||||
if body has "cum" weight 20
|
||||
if body has "cumm" weight 20
|
||||
if body contains " cummshot" weight 50
|
||||
if body contains " cumshot" weight 50
|
||||
if body has "rape, raped" weight 20
|
||||
if body contains "hot puss" weight 25
|
||||
if body contains "pussies" weight 25
|
||||
if body has "bitch" weight 15
|
||||
if body has "slut" weight 40
|
||||
if body has "whore" weight 40
|
||||
if body matches "*/smust be*18*old/s*" weight 40
|
||||
if body contains "no minors allowed" weight 40
|
||||
if body matches "*Hardcore/wPorno*" weight 111
|
||||
if body has "Porno" weight 40
|
||||
if body contains " sex software" weight 111
|
||||
if body contains " sexsoftware" weight 50
|
||||
if body contains "$$$$$$$$$$$$$" weight 51
|
||||
if body hasall "probably don't remember me, website" weight 51
|
||||
if body hasall "teen, cock, suck" weight 51
|
||||
if body hasall "free, day, trial" weight 30
|
||||
if body hasall "young, teen, video" weight 30
|
||||
if body hasall "young, teenage, video" weight 30
|
||||
if body hasall "porn, chick, pictures" weight 51
|
||||
if body has "toon, toons" weight 30
|
||||
if body hasall "XXX, free" weight 40
|
||||
if body contains "adult movie" weight 40
|
||||
if body matches "*found*your*profile*web*" weight 30
|
||||
if body matches "*seen your profile on*picture*" weight 51
|
||||
if body hasall "Paris, Hilton" ob and body contains "http:" weight 51
|
||||
|
||||
# Check for deliberate misspellings of common "trigger" words - the
|
||||
# misspelling is a dead giveaway that the message is spam.
|
||||
if content contains "p0rn" weight 51
|
||||
if content contains "p@rn" weight 51
|
||||
if content contains "pen<65>s" weight 51
|
||||
if content contains "tenage" weight 30
|
||||
if content has "medic@tion, medic@l" weight 51
|
||||
if content matches "*/sph@rmacist*" weight 51
|
||||
if content matches "*/spharm@cist*" weight 51
|
||||
if content contains "rem0ve" weight 51
|
||||
if content contains "6uarantee" weight 51
|
||||
|
||||
# Check for body content suggesting spurious diet/health stuff
|
||||
if body contains "Liposuction" weight 20
|
||||
if body has "Obesity" weight 10
|
||||
if body contains "stop smoking" weight 20
|
||||
if body contains "WeightLoss" ob weight 30
|
||||
if body contains "loseweight" ob weight 30
|
||||
if body contains "loose weight" weight 30
|
||||
if body contains "burning fat" weight 30
|
||||
if body contains "no hunger pains" weight 30
|
||||
if body contains "lose weight while you sleep" weight 30
|
||||
if body contains "health insurance" weight 25
|
||||
if body contains "medical premium" weight 25
|
||||
if body has "penile, ejaculation, sildenafil" weight 30
|
||||
if body contains "no doctor visit" or body contains "no doctor's visit" weight 30
|
||||
if body matches "/c*HGH*" weight 40
|
||||
if body hasall "sexual, enhancer" weight 40
|
||||
if body hasall "dietary, supplement" weight 15
|
||||
if body contains "online" and body has "prescription, pharmacies, pharmacy" weight 40
|
||||
if body contains "on-line" and body has "prescription, pharmacies, pharmacy" weight 40
|
||||
if subject matches "/c*HGH*"
|
||||
and body hasall "human, growth, hormone" weight 51
|
||||
if body hasall "human, growth, hormone" weight 40
|
||||
if body hasall "coral, calcium" weight 51
|
||||
if body has "H?G?H" weight 51
|
||||
if body contains "H G H" weight 51
|
||||
if body contains "fat loss" weight 25
|
||||
if body contains "wrinkle reduction" weight 25
|
||||
if body contains "reverses aging" weight 25
|
||||
if body matches "*/senhance your sex*" weight 30
|
||||
if body has "colon" weight 20
|
||||
if body hasall "colon, cleanser" ob weight 31
|
||||
if body contains "productsworkbesttogether" ob weight 40
|
||||
if body contains "herbalsupplements" ob weight 40
|
||||
if body contains "enhancingoil" ob weight 40
|
||||
|
||||
# Check the body for evidence of scams - in particular the ludicrous
|
||||
# "Nigerian funds transfer" scam.
|
||||
|
||||
if body hasall "Nigeria, million, dollars, transfer"
|
||||
weight 51 tag "Nigerian 419 Scam"
|
||||
if body hasall "Nigeria, million, dollars, invest"
|
||||
weight 51 tag "Nigerian 419 Scam 2"
|
||||
if body hasall "Liberia, million, dollars, transfer"
|
||||
weight 51 tag "Liberian 419 Scam"
|
||||
if body hasall "Angola, million, dollars, transfer"
|
||||
weight 51 tag "Angolan 419 Scam"
|
||||
if body hasall "Africa, million, dollars, transfer"
|
||||
weight 51 tag "Generic 419 Scam"
|
||||
if body hasall "Sese, Seko, million"
|
||||
weight 51 tag "Sese Seko 419 Scam"
|
||||
if body hasall "Sese-Seko, million"
|
||||
or body hasall "Sese-Seko, billion"
|
||||
or body hasall "Sese-Seko, billions"
|
||||
weight 51 tag "Sese Seko 419 Scam"
|
||||
if body hasall "Abacha, million"
|
||||
weight 51 tag "Maryam Abacha 419 Scam"
|
||||
if body hasall "Sierra Leone, Coleman, million"
|
||||
weight 51 tag "Sierra Leone 419 Scam"
|
||||
if body matches "*surprise*receive*know*personally*"
|
||||
and body hasall "million, transfer"
|
||||
weight 51 tag "Generic 419 Scam"
|
||||
if body hasall "confidence, confidential, 000, US$, contract"
|
||||
weight 51 tag "Generic 419 Scam"
|
||||
if body hasall "million, US, confidential" ob
|
||||
weight 40 tag "Possible 419 scam?"
|
||||
if body hasall "feelsorryfor, everyone, diesomeday, million" ob
|
||||
weight 51 tag "Silly 419 sympathy scam"
|
||||
if body contains "endeavourtouseditfor" ob
|
||||
weight 51 tag "Silly 419 sympathy scam #2"
|
||||
|
||||
if body contains "Nigeria" weight 30
|
||||
if body contains "Federal Government of Nigeria" weight 999
|
||||
if body contains "Nigeria National Petroleum Corporation" weight 999
|
||||
if body contains "Bank of Nigeria" weight 40
|
||||
if body contains "Bank in Africa" weight 40
|
||||
if body contains "transfer to overseas" weight 40
|
||||
if body contains "time machine" and body contains "vortex generator" weight 999
|
||||
if body contains "promises for fear of facing a multimillion dollar class action suit" weight 999
|
||||
if body contains "Intel and AOL are now discussing a merger" weight 999
|
||||
if body contains "Microsoft will pay you" weight 999
|
||||
if body matches "*(*Million United States Dollars)*" weight 999
|
||||
if body contains "South Africa Foreign Exchange" weight 999
|
||||
if body contains "arrangement and come to Johannesburg South Africa" weight 999
|
||||
|
||||
# Check the body for suggestions that the message might be peddling
|
||||
# spam creation or distribution tools.
|
||||
if body contains "bulk e-mail" weight 30
|
||||
if body contains "bulk email" weight 30
|
||||
if body contains " bulkmail" weight 30
|
||||
if body contains "mass mailing service" weight 30
|
||||
if body contains "mass marketing" weight 30
|
||||
if body contains "mass messages" weight 30
|
||||
if body matches "*million*addresses*" weight 30
|
||||
if content contains "bulker" weight 51
|
||||
if body hasall "Email, marketing, inexpensive, promote, targeted" weight 40
|
||||
|
||||
# Look in the body for a few addresses intimately associated with
|
||||
# spam or other unwanted marketing activities.
|
||||
if body contains "www.try-it-free.net" weight 50
|
||||
if body contains "www.lendlink.net" weight 50
|
||||
if body contains "www.safelockrecords.com" weight 50
|
||||
if body contains "www.overnightrx.com" weight 50
|
||||
if body contains "usavemore.k666.com" weight 50
|
||||
if body contains "chicago20s.com" weight 50
|
||||
if body contains "hudsonleickfan.com" weight 50
|
||||
if body contains "good-insurance-rates.com" weight 50
|
||||
if body contains "0mbra.com" weight 50
|
||||
if body contains "www.geheime-seite.da.ru" weight 90
|
||||
if body contains "dirtcheapdomain.com" weight 50
|
||||
if body contains "kiss.com" weight 50
|
||||
if body contains "edirectnetwork.net" weight 50
|
||||
if body contains "37500hits4u.com" weight 50
|
||||
if body contains "emailhello.com" weight 50
|
||||
if body contains "bestcheapstuff.com" weight 50
|
||||
if body contains "classmates.com" weight 50
|
||||
if body contains "elucky-casino.com" weight 50
|
||||
if body contains "israeliconnections.com" weight 50
|
||||
if body contains "asiawholesalers.com" weight 50
|
||||
if body contains "naturaldepot.com" weight 50
|
||||
if body contains "swapselltrade.com" weight 50
|
||||
|
||||
# Other Sales stuff
|
||||
if body contains "money-back guarantee" weight 40
|
||||
if body contains "money back guarantee" weight 40
|
||||
if body contains "no credit check" weight 50
|
||||
if body matches "*make more money*web*" weight 40
|
||||
if body matches "*f +r +e +e*" weight 50
|
||||
if body contains "absolutely free" weight 20
|
||||
if body contains "descrambler" weight 30
|
||||
if body contains "free DVD trial" weight 50
|
||||
if body contains "eValueMarketing" weight 66
|
||||
if body contains "get more hits" weight 20
|
||||
if body contains "limited time offer" weight 30
|
||||
if body contains "increase sales" weight 10
|
||||
if body contains "INCREDIBLE SOFTWARE BARGAIN" weight 20
|
||||
if body contains "Internet Detective" weight 50
|
||||
if body contains "Internet marketing" weight 50
|
||||
if body contains "Internet Spy" weight 50
|
||||
if body contains "No Credit Check" weight 30
|
||||
if body contains "no obligation" weight 30
|
||||
if body contains "no obligation quote" weight 30
|
||||
if body contains "free quote" weight 30
|
||||
if body contains "pay-per-view" weight 30
|
||||
if body contains "new home loan" weight 30
|
||||
if body matches "*refinance*home loan*" weight 30
|
||||
if body contains "paying more than" and body contains "mortgage" weight 40
|
||||
if body contains "save up to" weight 10
|
||||
if body contains "site need more traffic" weight 50
|
||||
if body contains "term life insurance" weight 40
|
||||
if body contains "free online quote" weight 40
|
||||
if body contains "buy term life insurance" weight 40
|
||||
if body matches "*web*promotion service*" weight 50
|
||||
if body contains "satisfaction guarantee" weight 10
|
||||
if body contains "your money back" weight 20
|
||||
if body hasall "click/Where, protect your computer" weight 40
|
||||
if body matches "*receive*mail*only*once*" weight 40
|
||||
if body contains "paying too much" or body contains "pay too much" weight 30
|
||||
if body contains "100% Free" weight 40
|
||||
if body contains "1oo% Free" weight 51
|
||||
if body hasall "casino, sportsbook" weight 51
|
||||
if body contains "100% legal" weight 51
|
||||
if body has "lender, lenders" and body hasall "compete, loan" weight 30
|
||||
if body hasall "mortgage, lender, compete, business" weight 51
|
||||
if body hasall "discovered, website, mortgage" weight 51
|
||||
if body matches "*/cJOIN/WFOR/WFREE*" weight 51
|
||||
if body contains "diploma"
|
||||
and body has "non-accredited, university" weight 51
|
||||
if body contains "make money on the web" weight 40
|
||||
if body contains "make money on" weight 20
|
||||
if body contains "want to make money" weight 20
|
||||
if body has "/cFREE" weight 20
|
||||
|
||||
# Check for certain key words and phrases commonly found in promotional spam
|
||||
if body matches "*you*been chosen to receive*" weight 51
|
||||
if body contains "the previous was an advertisement" weight 51
|
||||
if body matches "*not wish to receive*e-mail*promotion*" weight 51
|
||||
if body contains "this is not a solicitation" weight 30
|
||||
if body contains "to be removed from" weight 21
|
||||
if body contains "to remove yourself from" weight 21
|
||||
if body contains " opt-in" weight 21
|
||||
if body contains " opt-out" weight 21
|
||||
if body contains "opt out" weight 21
|
||||
if body contains " optout" weight 21
|
||||
if body has "opted/Win" weight 40
|
||||
if body has "opted/Win" and body contains "affiliate" weight 51
|
||||
if body matches "*This*may*recurring mailing*" weight 51
|
||||
if body matches "*is a one*time*mail*" weight 40
|
||||
if body contains "No request for removal is necessary" weight 99
|
||||
if body hasall "cannot be considered spam, removal" weight 51
|
||||
if body matches "*1618*Title III*105th US Congress*" weight 51
|
||||
if body matches "*This is not*spam*was sent to you because*" weight 99
|
||||
if body hasall "click here, unsubscribe" weight 30
|
||||
if body matches "*was sent*because*not*wish*receive*" weight 40
|
||||
if body hasall "opportunity, change, life, forever, earn, free" weight 30
|
||||
if body matches "*no longer*receive*offer*mail*" weight 40
|
||||
if body has "partner/Wsite" or body has "partner/Wsites" weight 30
|
||||
if body matches "*your*privacy*important to us*" weight 40
|
||||
if body matches "*This is not*!*is a friendly*" weight 40
|
||||
if body has "clickheretoenter" ob weight 40
|
||||
if body contains "enter here" weight 30
|
||||
|
||||
# Viral stuff - not intended to replace competent virus scanning,
|
||||
# but easy to do for a few of the most common cases
|
||||
if body matches "*You*I send this to you*advice*" weight 51
|
||||
if body matches "*This*mail*never sent unsolicited*" weight 51
|
||||
if body matches "*attached*product*part*official*campaign*popularity*" weight 51
|
||||
|
||||
497
database/MercuryMail/RESOURCE/template.txt
Normal file
497
database/MercuryMail/RESOURCE/template.txt
Normal file
@@ -0,0 +1,497 @@
|
||||
----------------------------------------------------------------------
|
||||
Pegasus Mail Message Templates
|
||||
----------------------------------------------------------------------
|
||||
Pegasus Mail System,
|
||||
Copyright (c) 1990-99, David Harris, All Rights Reserved.
|
||||
----------------------------------------------------------------------
|
||||
|
||||
|
||||
Contents:
|
||||
|
||||
1: Overview of Message Templates
|
||||
2: Types of Templates
|
||||
3: Using Templates within Pegasus Mail
|
||||
4: The Message Template Script Language
|
||||
4.1: String literals
|
||||
4.1.1: Filenames
|
||||
4.2: Optional parameters
|
||||
4.3: Command substitutions
|
||||
4.4: Script language commands
|
||||
|
||||
|
||||
|
||||
1: Overview of Message Templates
|
||||
--------------------------------
|
||||
|
||||
Imagine that you're the web master for your Internet site; you receive a
|
||||
huge amount of mail for much of which the answer is essentially the
|
||||
same... You laboriously reply to the message, remove the pieces you don't
|
||||
want, type in your canned response, then send the message. Wouldn't it be
|
||||
good if there was some way of automating all of this? Well, there is --
|
||||
Message Templates.
|
||||
|
||||
A Message Template is simply a script that tells Pegasus Mail how to
|
||||
compose a mail message. The template script commands allow you to set any
|
||||
address or feature field, include the original message for replies (or a
|
||||
portion of the message), change or modify addresses, add attachments and
|
||||
generally give you complete control over the shape of your automatically-
|
||||
generated message. What's even better, you can define variables in
|
||||
templates: when you use the template, Pegasus Mail will prompt you for
|
||||
values for the variables it contains; the script language can then take
|
||||
the values you enter, manipulate them, and insert them seamlessly into
|
||||
the generated message.
|
||||
|
||||
Using a message template, you can generate a complex mail message and
|
||||
send it with only a couple of keystrokes.
|
||||
|
||||
What uses might you have for a template? Here are some ideas:
|
||||
|
||||
* Helpdesk submissions (as per the sample HELPDESK.PM5 template)
|
||||
|
||||
* Mail server management forms (to simplify the process of
|
||||
subscribing to and unsubscribing from lists)
|
||||
|
||||
* Forms: any kind of complex data-entry based mail form could
|
||||
be generated using a template
|
||||
|
||||
* Order submission
|
||||
|
||||
* Automated replies
|
||||
|
||||
|
||||
2: Types of templates
|
||||
---------------------
|
||||
|
||||
Pegasus Mail supports two types of templates - those used to create new
|
||||
messages from scratch, and those used to create replies to messages.
|
||||
Template files are simply plain text files containing template script
|
||||
language commands, one per line.
|
||||
|
||||
Templates used to create new messages have the extension .PM5; the name
|
||||
portion can be anything you wish.
|
||||
|
||||
Templates used to create replies to messages have the extension .PM6; once
|
||||
again, the name portion can be anything you wish.
|
||||
|
||||
For both types of template, the script language's TITLE command must be
|
||||
the first line in the file, so that Pegasus Mail can show the name in its
|
||||
selector window. Pegasus Mail will not burrow through a template file
|
||||
looking for a TITLE command if it is not on the first line.
|
||||
|
||||
Template files can be located in your home mailbox directory, or may be
|
||||
placed in the same directory as the Pegasus Mail executable program, in
|
||||
which case they become system-wide and are made available to all users
|
||||
running that copy of the program. There is no effective limit on the
|
||||
number of templates you can define.
|
||||
|
||||
For now, in order to create a template file you must use a text editor of
|
||||
some kind - for instance, the Windows NOTEPAD applet. If you use NOTEPAD,
|
||||
make sure that the Wordwrap option is turned off - each line in a
|
||||
template file must contain a single command and you cannot run lines
|
||||
together. Future versions of Pegasus Mail may include a user-interface for
|
||||
creating template files.
|
||||
|
||||
|
||||
3: Using templates within Pegasus Mail
|
||||
--------------------------------------
|
||||
|
||||
You can create a new message using a template by selecting Template...
|
||||
from the New Message submenu of the File menu. This will open a dialog
|
||||
listing all the templates available on your system. Select the template
|
||||
you want to use by highlighting it and clicking Open, or by double-
|
||||
clicking it. A window will open prompting you for any variables the
|
||||
template uses; at this point, you can choose whether to open a new
|
||||
message editor window filled out with the message created by the
|
||||
template, or simply to send the message without further ado.
|
||||
|
||||
You can use a template to create a reply to a message in one of two ways:
|
||||
|
||||
1: Right-click the message and choose "Reply using template..." from
|
||||
the popup menu
|
||||
|
||||
2: Highlight the message, then hold down <Shift> as you press the
|
||||
"Reply" button, or else hold down <Shift> and press the R key.
|
||||
|
||||
|
||||
|
||||
4: The Message Template Script Language
|
||||
---------------------------------------
|
||||
|
||||
The script language used by Pegasus Mail templates is very simple. Each
|
||||
command in the file must appear on a single line of its own -- commands
|
||||
may not wrap lines, nor may more than one command appear on a single
|
||||
line. Lines starting with \, * ; or # are treated as comments and are
|
||||
ignored.
|
||||
|
||||
|
||||
4.1: String literals
|
||||
|
||||
Most template script commands in the language accept strings as
|
||||
parameters. String literals of this kind must be entered in quote
|
||||
characters if they contain spaces or special characters.
|
||||
|
||||
For example, if you want to use the "insert" command to write the string
|
||||
|
||||
Mary had a little lamb
|
||||
|
||||
into an outgoing message, you would need to enter the command like this:
|
||||
|
||||
insert "Mary had a little lamb"
|
||||
|
||||
since otherwise, only the word "Mary" would be inserted.
|
||||
|
||||
If your string contains a quote character, or a backslash character, then
|
||||
you will need to perform a small amount of conversion. So, if you want to
|
||||
insert the string
|
||||
|
||||
Mary had a "little" lamb
|
||||
|
||||
you would have to enter the "insert" command like this:
|
||||
|
||||
insert "Mary had a \"little\" lamb"
|
||||
|
||||
These rules for string construction apply in all places throughout the
|
||||
script language.
|
||||
|
||||
|
||||
4.1.1: Filenames
|
||||
|
||||
Filenames are treated as strings by the script language, and as such are
|
||||
subject to the same rules. In particular note that long filenames
|
||||
containing spaces will need to be quoted, and that '\' characters will
|
||||
need to be doubled in file paths... So, if you wanted to use the include
|
||||
command to include the file
|
||||
|
||||
c:\docs\Mary's "little" lamb
|
||||
|
||||
You would need to form the command as
|
||||
|
||||
include "c:\\docs\\Mary's \"little\" lamb"
|
||||
|
||||
|
||||
4.2: Optional parameters
|
||||
|
||||
Some script commands are shown as having "optional" parameters. This
|
||||
notion needs some clarification... A parameter may be omitted only if all
|
||||
the parameters following it are also omitted - it is not possible to omit
|
||||
only one parameter from the middle of a list.
|
||||
|
||||
So, using the "include" command as an example, if you wanted to include a
|
||||
file in quoted format, you would have to include the "0" value for the
|
||||
count parameter as well.
|
||||
|
||||
|
||||
4.3: Command substitutions
|
||||
|
||||
Practically any string parameter to a script command can contain command
|
||||
substitutions: these are special character sequences that are replaced by
|
||||
variables or other information when they are encountered. Pegasus Mail
|
||||
recognizes the following command substitutions in any place where they
|
||||
may be used:
|
||||
|
||||
~vvariable_name~ The current value of a template script variable
|
||||
~z A single newline (CR/LF)
|
||||
~f The "from" field of the original message
|
||||
~s The "subject" field of the original message
|
||||
~r The preferred reply address for the message
|
||||
~kfieldname~ Any field from the original message
|
||||
~n The current user's basic username
|
||||
~i The current user's Internet e-mail address
|
||||
~8 The current user's username truncated to 8 chars
|
||||
~p The current user's personal name preference
|
||||
~d A random integer expressed as 4 hex digits
|
||||
~y The current date and time in RFC822 format
|
||||
~%name% The value of environment variable %name%
|
||||
~lname~l The user's address looked up from a synonym file
|
||||
~a The Pegasus Mail executable directory
|
||||
~h The current user's home mailbox
|
||||
~w The current user's new mailbox
|
||||
~~ A single tilde (~).
|
||||
|
||||
Examples:
|
||||
|
||||
Assuming that the current user's name is "david" and the variable
|
||||
"sub" has been assigned the value "your order", the string
|
||||
|
||||
"This is a message from ~8, regarding ~vsub~"
|
||||
|
||||
would yield the following string after substitution:
|
||||
|
||||
"This is a message from david, regarding your order."
|
||||
|
||||
Command substitution is the single most powerful feature of the scripting
|
||||
language used for templates, and a good understanding of what it can do
|
||||
is essential for writing useful scripts.
|
||||
|
||||
|
||||
4.4: Script language commands
|
||||
|
||||
The following commands are valid in template scripts.
|
||||
|
||||
title Set the title for a template script
|
||||
helpfile Set the help file for a template script
|
||||
picture Add a picture to the variable prompt dialog
|
||||
text Add a line of informational text to the prompt dialog
|
||||
option Set options controlling the way the template is processed
|
||||
|
||||
string Create a string variable for the script
|
||||
set Set a message field or variable value
|
||||
insert Write a formatted line into the message body
|
||||
include Include a file or the original message body
|
||||
attach Attach a file to the message
|
||||
|
||||
extract Extract elements from an e-mail address
|
||||
lookup Look up an item from a list using a key value
|
||||
|
||||
chain Execute another template when the current template finishes
|
||||
|
||||
|
||||
# title <string>
|
||||
|
||||
Set the title for the script file. string can be any string up to 50
|
||||
characters in length, and can contain all command substitutions except
|
||||
for variables, which are not defined at the time this command is
|
||||
processed.
|
||||
|
||||
|
||||
# helpfile <filename> [section]
|
||||
|
||||
Set the help file which should be accessed when the user clicks the Help
|
||||
button in the variable prompt dialog. filename should be a full reference
|
||||
to any valid Windows Help file (*.HLP) on your system, and may contain
|
||||
all command substitions except for variables, which will have not been
|
||||
defined at the time this command is processed. section is an optional
|
||||
integer value that indicates the context help section within the help
|
||||
file that should be presented when the help button is pressed. If it is
|
||||
absent, section 0, the table of contents, is presented.
|
||||
|
||||
|
||||
# option <option_name> = <value>
|
||||
|
||||
This command controls aspects of the way the template behaves as it is
|
||||
being processed. One option_name value is currently defined:
|
||||
|
||||
"EDITOR" = "Yes" or "No".
|
||||
- Determines the state of the "Send message without opening a message
|
||||
editor" control in the template's variable dialog.
|
||||
|
||||
Example: OPTION EDITOR = NO
|
||||
- Checks the "send without editor" control by default.
|
||||
|
||||
|
||||
# string <name> ["Default"] ["Prompt"] [len] [flags]
|
||||
|
||||
Define a variable for use within the script. A maximum of 20 variables
|
||||
may be defined for any script. name is the name for the variable; it must
|
||||
not contain spaces, and is not case-sensitive (so var1 and VAR1 are
|
||||
considered the same). All the parameters following the name parameter are
|
||||
optional, and you can end the string early if you wish (you cannot omit a
|
||||
parameter if you need to supply a parameter following it on the line).
|
||||
"default" is a string which should be used as a default value for the
|
||||
variable: if it contains spaces or special characters, it must be
|
||||
enclosed in quotes (see "String literals", above, for more information).
|
||||
If this parameter is omitted, the default value is an empty string.
|
||||
"prompt" is the string Pegasus Mail should place next to the editing field
|
||||
in the variable prompt dialog. If omitted or zero-length, Pegasus Mail
|
||||
will not prompt the user for a value for this variable. "len" is an integer
|
||||
defining the maximum allowable length of this variable. If omitted, the
|
||||
default is "no limit". "flags" defines the format and type of the variable:
|
||||
the following flag values are available:
|
||||
|
||||
multiline creates a multi-line variable
|
||||
address creates an e-mail address variable
|
||||
filename creates a filename variable
|
||||
password creates a password variable
|
||||
list creates a list - see below for more details
|
||||
uppercase specifies that the variable must be all in uppercase
|
||||
|
||||
Only "uppercase" may be used with other values.
|
||||
|
||||
|
||||
Creating LIST variables
|
||||
|
||||
When you use the LIST flag in a STRING statement, you create a variable
|
||||
that has a list of possible values from which the user can select. LIST
|
||||
variables require that you provide a DEFAULT value for the variable,
|
||||
which contains the list of possible values the variable can have. The
|
||||
first character in the default value should be the character used to
|
||||
separate the list items from each other, and the remainder of the default
|
||||
value should be the items, separated by that character.
|
||||
|
||||
Example: you want to allow the user to select from the values "Red",
|
||||
"Green" and "Blue": your string statement would look like this:
|
||||
|
||||
string v1 ";Red;Green;Blue" "Select a colour" 0 list
|
||||
|
||||
|
||||
# set <field> = <"value">
|
||||
or set variable <variable_name> = <"value">
|
||||
|
||||
The first form of this command sets a field within the mail message being
|
||||
generated to the specified value. field may be one of the following:
|
||||
|
||||
to
|
||||
cc
|
||||
bcc
|
||||
reply-to
|
||||
subject
|
||||
identity (all take an obvious string parameter)
|
||||
|
||||
urgent
|
||||
confirm-reading
|
||||
confirm-delivery
|
||||
copyself
|
||||
volatile
|
||||
mime (all take either a "Y" or "N" parameter)
|
||||
|
||||
header (a fully-formed e-mail header including the keyword)
|
||||
encrypted ("encryptor_name", "password", "flags" - see below
|
||||
for more details).
|
||||
|
||||
When encrypting a template message, use the "encrypted" parameter to the
|
||||
set command. "encryptor" is the name of the module that should be used
|
||||
for encryption - to use the Pegasus Mail built in encryptor, use the name
|
||||
"builtin". "password" is the password for the message - this can be up to
|
||||
96 characters in length. "flags" controls the type of encryption
|
||||
performed; to encrypt a message, set it to 1; to add a digital signature
|
||||
to the message, set it to 4; to perform both operations, set it to 5.
|
||||
|
||||
The "volatile" parameter tells Pegasus Mail to write the message directly
|
||||
to final form when sending using the built-in SMTP transport. You will
|
||||
need to set this to "Y" if you are attaching files that will be deleted
|
||||
once the template has been processed.
|
||||
|
||||
The second form of the "set" command sets the value of any defined
|
||||
variable.
|
||||
|
||||
Both forms of this command support all command substitutions for the value
|
||||
parameter. To copy the value of one variable to another, use an
|
||||
expression containing the ~v command substitution, like this:
|
||||
|
||||
set variable v1 = "~vv2~"
|
||||
|
||||
|
||||
# insert <"string">
|
||||
|
||||
Write data into the body of the message being generated. string can
|
||||
contain any command substitution: if it does not contain a ~z
|
||||
substitution to force a line break, then the next insert command will
|
||||
write data onto the same line in the body. A single insert command may
|
||||
not insert more than 1024 characters into the message body.
|
||||
|
||||
|
||||
# include <filename> [count] [flags]
|
||||
or include message [count] [flags]
|
||||
|
||||
Include either a text file, or the body from the message to which a reply
|
||||
is being generated. The text from the file or message is included as-is
|
||||
into the message body - command substitutions are not performed on the
|
||||
included data. The filename parameter may contain any valid command
|
||||
substitutions. If "count" is present and non-zero, only that many lines of
|
||||
the included file or the body of the included message will be read. The
|
||||
"flags" item can be any combination of the following values:
|
||||
|
||||
quoted "Comment-out" the included text using "> "
|
||||
noheaders If the file is a message, omit its RFC822 headers
|
||||
keyheaders If the file is a message, include only "significant" headers
|
||||
nobody If the file is a message, omit the message body
|
||||
message Only valid for files: the file is an RFC822 message
|
||||
|
||||
|
||||
# attach <filename> [type] [encoding] ["Desc"]
|
||||
|
||||
Attach a file to the generated message. Only "filename" is a mandatory
|
||||
parameter - the others can be omitted and are sensibly defaulted. Any
|
||||
valid command substitution can be used in the filename. If the filename
|
||||
contains spaces, it must be quoted. "type" is any string describing the
|
||||
type of the file - for instance, "RTF_FILE". It must not contain spaces
|
||||
and is not constrained to the list of possible values inside Pegasus Mail
|
||||
itself. "encoding" is an integer value that specifies how the file should
|
||||
be encoded for transfer; the following values are defined - 0 (Pegasus
|
||||
Mail decides), 1 (No encoding - very dangerous), 2 (ASCII text), 3
|
||||
(UUencoding), 4 (BinHex 4.0) and 5 (Basic MIME encoding). Unless you are
|
||||
sure of what you are doing, use 0 for this field. "desc" is a textual
|
||||
description of the file; it may contain any text, including spaces, and
|
||||
is truncated at 63 characters.
|
||||
|
||||
|
||||
# picture <flags> <filename>
|
||||
|
||||
Add a picture at the top of the variable prompt dialog. The picture
|
||||
specified by filename must be a Windows BMP file in 16 or 256 colours:
|
||||
owing to quirks in the way Windows handles 256 colour bitmaps, we
|
||||
strongly recommend that you use 16-colour bitmaps if your display runs in
|
||||
256 colour mode or lower. For the Win16 version of Pegasus Mail, the
|
||||
bitmap must not be larger than 60,000 bytes. You may use any command
|
||||
substitution in the filename parameter. The bitmap is centred
|
||||
horizontally in the display and the dialog will adjust size to fit the
|
||||
vertical dimensions of the image. Exactly one image may be added to the
|
||||
dialog.
|
||||
|
||||
flags will be used in future to offer extra formatting options. For now,
|
||||
it is unused, must be present, and should be set to zero.
|
||||
|
||||
Note: if the filename contains spaces or special characters, it must be
|
||||
enclosed in quotes.
|
||||
|
||||
|
||||
# text <flags> <"string">
|
||||
|
||||
Add a line of descriptive text to the dialog presented to prompt for
|
||||
script variables. The line of text is added above any variable editing
|
||||
fields, and below any picture defined using a picture command. You may
|
||||
specify up to 10 lines of descriptive text, and each line may contain any
|
||||
valid command substitution. The "flags" parameter will be used in future,
|
||||
but should currently be set to zero.
|
||||
|
||||
To introduce a blank line between groups of lines, use a text statement
|
||||
with an empty quoted string - like this: text "".
|
||||
|
||||
|
||||
# extract address <var1> <var2>
|
||||
or extract text <var1> <var2>
|
||||
or extract user <var1> <var2>
|
||||
or extract domain <var1> <var2>
|
||||
|
||||
Extract a component from an e-mail address. "var1" refers to the variable
|
||||
containing the address to be manipulated. "var2" is the variable where
|
||||
the result of the manipulation should be placed - it can be the same as
|
||||
"var1".
|
||||
|
||||
extract address yields the minimum form of the e-mail address
|
||||
extract text yields the personal name field from the address
|
||||
extract user yields the simple user name portion of the address
|
||||
extract domain yields the domain portion of the address
|
||||
|
||||
|
||||
# lookup "string" <var1> <var2> <var3>
|
||||
|
||||
Attempt to locate the string "string" in the list variable "var1"; if a
|
||||
match is found, note the position in the list where the item was matched,
|
||||
then copy the item at the same ordinal position in the list variable
|
||||
"var2" into the variable "var3". See above under the description of the
|
||||
"set" command for more information on list variables. It is an error for
|
||||
either "var1" or "var2" to be anything other than a list variable. If
|
||||
"string" cannot be found in "var1", variable "var3" is not changed.
|
||||
|
||||
Example: list variable "v1" contains "Monday", "Tuesday" and "Wednesday"
|
||||
list variable "v2" contains "Open", "Closed" and "Open".
|
||||
|
||||
The command
|
||||
|
||||
lookup "Tuesday" v1 v2 v3
|
||||
|
||||
will result in variable v3 containing the value "Closed".
|
||||
|
||||
A common form of this command will use the current value of "var1" as the
|
||||
string parameter, using the command substitution "~vvar1~".
|
||||
|
||||
|
||||
# chain "filename"
|
||||
|
||||
Execute another template when the current template completes. "filename"
|
||||
should be the path to a valid template file, and may contain command
|
||||
substitutions. Only one "chain" command may be used per template. If the
|
||||
current template is cancelled by the user, the chain command will not be
|
||||
executed.
|
||||
|
||||
BIN
database/MercuryMail/RESOURCE/template.zip
Normal file
BIN
database/MercuryMail/RESOURCE/template.zip
Normal file
Binary file not shown.
93
database/MercuryMail/RESOURCE/transflt.mer
Normal file
93
database/MercuryMail/RESOURCE/transflt.mer
Normal file
@@ -0,0 +1,93 @@
|
||||
# Transaction-level filtering expressions for MercuryS
|
||||
# Mercury Mail Transport System, Copyright (c) 1993-2007, David Harris.
|
||||
# This version of the file was prepared for Mercury/32 v4.5
|
||||
#
|
||||
# Each line in this file defines a test that MercuryS should apply at various
|
||||
# stages of the SMTP transaction processing phase of mail delivery. Each line
|
||||
# has the following general format:
|
||||
#
|
||||
# <Operation>, <"Expression">, <Action>[Action]>, ["Response"]
|
||||
#
|
||||
# "operation" can be:
|
||||
#
|
||||
# 'H' for an expression applied to the client's "HELO" greeting
|
||||
# 'D' for deferred HELO processing; these filters will only be
|
||||
# applied if the client does not issue a successful AUTH after
|
||||
# issuing HELO but before issuing any other command. Otherwise,
|
||||
# these filters are the same as 'H' filters. They allow a user
|
||||
# on a system that might otherwise be rejected to redeem the
|
||||
# connection by authenticating his identity.
|
||||
# 'S' for an expression applied to the subject line of the message
|
||||
# 'R' for an expression applied to each SMTP RCPT command
|
||||
# 'M' for an expression applied to the SMTP MAIL FROM: command
|
||||
#
|
||||
# "Expression" is a Mercury regular expression - see the Mercury help on
|
||||
# mail filtering rules or content control for the format of a Mercury
|
||||
# extended regular expression. The expression must be quoted, and is
|
||||
# applied to the entire HELO command.
|
||||
#
|
||||
# Action is one or more characters indicating the action MercuryS should
|
||||
# take when the expression is matched: the first character in the action
|
||||
# can be one of the following:
|
||||
#
|
||||
# 'R' to refuse the transaction and block all subsequent commands
|
||||
# 'F' to fail the current command only (allow further attempts)
|
||||
# 'D' to drop the connection immediately with no error response
|
||||
# 'B' to issue an error response then drop the connection immediately.
|
||||
# 'L' to log a system message
|
||||
# 'X' to stop this phase of transaction filtering for this message
|
||||
# 'S' to suppress all transaction filtering stages for this message.
|
||||
#
|
||||
# The difference between 'R' and 'F' is that 'R' will cause all subsequent
|
||||
# delivery commands in the session to be refused, while 'F' will only fail
|
||||
# the current command - other commands may still be permitted.
|
||||
#
|
||||
# The 'D' and 'B' commands essentially do the same thing, but the 'B'
|
||||
# command does it more politely. Use 'B' if there's any possibility that
|
||||
# the connected machine is actually legitimate, because it gives at least
|
||||
# some level of feedback to the sender or administrator.
|
||||
#
|
||||
# To understand the difference between 'X' and 'S', you need to be aware
|
||||
# that transaction filtering is done in several "passes", each pass testing
|
||||
# a different state of the SMTP transaction. The 'X' action only exits from
|
||||
# the current pass, meaning that future passes will still take place. The
|
||||
# 'S' action, however, exits from the current pass and suppresses all
|
||||
# further transaction filtering on the message altogether.
|
||||
#
|
||||
# The second character in the action string is optional and can have
|
||||
# one of the following values:
|
||||
#
|
||||
# 'S' to blacklist the host for the next half hour
|
||||
#
|
||||
# The third character in the action string is optional and can have
|
||||
# one of the following values:
|
||||
#
|
||||
# 'N' if the rule should apply only if the expression does NOT match
|
||||
#
|
||||
# Note that optional characters can have the value '-' if they are not
|
||||
# used... So, if you want to refuse a connection if an expression does not
|
||||
# match, but do not want to use short term blacklisting, you would use the
|
||||
# action string "R-N".
|
||||
#
|
||||
# "Response" is an optional response code that MercuryS should return to
|
||||
# the client (for the 'R' action) or the string to log as the system
|
||||
# message (for the 'L' action). It must be quoted, and if it is returned
|
||||
# as an error response to the client, then it must start with a 3-digit
|
||||
# RFC2821 error response code (we recommend 554 for this).
|
||||
|
||||
|
||||
# ------------- Sample Rules --------------------------------------------
|
||||
# The rules below are examples you can use to get a feel for writing your
|
||||
# own. They are harmless, and will cause no problems if you leave them in
|
||||
# place, but it's probably better to remove them when you add your own
|
||||
# rules.
|
||||
|
||||
H, "*192.156.225.44*", R, "554 Get out of here, you worthless scumbag."
|
||||
R, "*honeypot@aphrodite.pmail.gen.nz*", RS, "554 Fraudulent RCPT rejected."
|
||||
S, "*viagra*", D, "'Viagra' encountered in subject line - connection dropped."
|
||||
S, "*vicodin*", R, "554 'Vicodin' encountered in subject line - message refused."
|
||||
H, "[EHeh][EHeh]LO +[0-9]+.[0-9]+.[0-9]+.[0-9]*", R, "554 Invalid HELO format"
|
||||
|
||||
S, "/c*CONGRATULATIONS*WON*", BS, "554 Possibly Nigerian 419 Variant - please change and re-send."
|
||||
S, "*for job*", BS, "554 Possibly employment spam - please change and re-send."
|
||||
|
||||
736
database/MercuryMail/RESOURCE/winpmdde.txt
Normal file
736
database/MercuryMail/RESOURCE/winpmdde.txt
Normal file
@@ -0,0 +1,736 @@
|
||||
Pegasus Mail for Windows DDE (Dynamic Data Exchange) Interface
|
||||
Copyright (c) 1997-1999, David Harris, All Rights Reserved.
|
||||
----------------------------------------------------------------
|
||||
|
||||
Revision history:
|
||||
* WinPMail v3.11: added IDENTITY and VOLATILE keywords to MESSAGE topic.
|
||||
* WinPMail v3.12: added RICHTEXT keyword to MESSAGE topic, and STATUS
|
||||
keyword to ENVIRONMENT topic
|
||||
|
||||
Pegasus Mail v2.54 and later incorporates support for Windows DDE to allow
|
||||
interprocess communication. This document describes the topics supported by
|
||||
WinPMail and the syntax of the commands sent to them. It is not a tutorial
|
||||
on DDE, and assumes that you either understand how to use DDE, or are using
|
||||
an environment (such as Microsoft Word's WordBasic language) that
|
||||
simplifies the process of using DDE commands.
|
||||
|
||||
One of the most powerful features of DDE is that it allows transparent
|
||||
communication between 16-bit and 32-bit applications: so, by using DDE, you
|
||||
can communicate with either the 16- or the 32-bit version of WinPMail
|
||||
without having to be worried about the differences between the two.
|
||||
|
||||
Pegasus Mail's DDE interface has been designed to be as simple to use as
|
||||
possible, and depends on simple strings for commands. It should be possible
|
||||
to use DDE to interact with Pegasus Mail from almost any environment.
|
||||
|
||||
|
||||
|
||||
Service and Topic Names
|
||||
-----------------------
|
||||
|
||||
Under DDE, a "service name" is the name of an application that can accept
|
||||
DDE connections: when you connect to a service application, you specify a
|
||||
particular set of commands or operations in which you are interested - this
|
||||
set of commands is known as a "topic". Pegasus Mail uses the service name
|
||||
"WinPMail" and exports the following topics:
|
||||
|
||||
"System" The standard DDE system topic
|
||||
"Environment" Accepts DDE Requests (transactions of type XTYP_REQUEST)
|
||||
and returns information about the environment of the
|
||||
running copy of WinPMail, such as directories and
|
||||
usernames.
|
||||
"Message" Accepts DDE Poke commands to create and send e-mail
|
||||
messages. A DDE Client can either create and manipulate
|
||||
standard Pegasus Mail message editor windows, filling
|
||||
in whichever blanks are required, or it can create
|
||||
messages without a window.
|
||||
"TCP" Provides access via DDE Poke commands to WinPMail's
|
||||
TCP/IP-based mail services.
|
||||
|
||||
|
||||
|
||||
The "Environment" topic
|
||||
-----------------------
|
||||
|
||||
The "Environment" DDE topic allows client applications to obtain
|
||||
information about the running copy of Pegasus Mail. To use this command,
|
||||
send a DDE Request command (a transaction of type XTYP_REQUEST) the the
|
||||
"Environment" topic with the "item" parameter set to the environment item
|
||||
you wish to retrieve, selected from the following list:
|
||||
|
||||
USER - Returns the name of the user running WinPMail
|
||||
HOMEBOX - Returns the full path to the user's home mail directory
|
||||
NEWBOX - Returns the full path to the user's new mail directory
|
||||
MODE - Returns either "Standalone" or "Network"
|
||||
VERSION - Returns the version of WinPMail, expressed as a four
|
||||
digit hexadecimal number ("0254" for v2.54) followed
|
||||
by a space and either "16" or "32" to indicate the
|
||||
version of WinPMail that is running.
|
||||
BASEDIR - The directory from which WinPMail was run
|
||||
TCP - If WinPMail's TCP/IP services are available, returns
|
||||
the path to the WINSOCK.DLL in use, otherwise returns
|
||||
the single character "N".
|
||||
NEWMAIL - Returns the number of mail messages in the user's new
|
||||
mail folder.
|
||||
STATUS - Returns the status of the last mail delivery operation
|
||||
|
||||
-- Example: -----------------------------------
|
||||
|
||||
In WordBasic (MS-Word 7) the following Macro opens a connection to
|
||||
WinPMail, retrieves the current version, and displays it:
|
||||
|
||||
Sub MAIN
|
||||
channel = DDEInitiate("WinPMail", "Environment")
|
||||
a$ = DDERequest$(channel, "version")
|
||||
DDETerminate channel
|
||||
MsgBox a$
|
||||
End Sub
|
||||
|
||||
A longer example in C is shown as Appendix A: in this document.
|
||||
|
||||
|
||||
|
||||
The "Message" topic
|
||||
-------------------
|
||||
|
||||
Client applications use the "Message" topic to create and send electronic
|
||||
mail messages using WinPMail. Once a connection has been established to the
|
||||
"Message" topic, the client Pokes data at WinPMail (using XTYP_POKE
|
||||
transactions). The string parameter in the Poke command should be set to
|
||||
"Message" - other values may be added in future. The data itself contains
|
||||
the commands and parameters.
|
||||
|
||||
The following commands can be Poked as data to WinPMail:
|
||||
|
||||
New : <"Message"> or <"Window">
|
||||
If the parameter is "Window", then WinPMail creates a standard
|
||||
message editing window, and subsequent message commands will change
|
||||
the controls and settings in that window. If the parameter is
|
||||
"Message", then a data structure representing the message is
|
||||
allocated internally and subsequent message commands will fill in the
|
||||
fields within that structure.
|
||||
|
||||
Defaults : Y
|
||||
Tells WinPMail to apply the user's regular message setting default
|
||||
values to the message. This command is only valid when the
|
||||
"New: message" command has been sent - it has no effect on message
|
||||
editing windows created using "New: window", since they always use
|
||||
default values automatically.
|
||||
|
||||
To : <address> [, <address> ...]
|
||||
Fills in the "To" field for the message or window. The parameter may
|
||||
be any address WinPMail would normally accept, and you may include
|
||||
more than one address by separating them with commas. The same rules
|
||||
apply to the Cc: and Bcc: fields.
|
||||
|
||||
Cc : <address> [, <address> ...]
|
||||
Fills in the "Cc:" (Carbon Copy) field for the message.
|
||||
|
||||
Bcc : <address> [, <address> ...]
|
||||
Fills in the "Bcc:" (Blind Carbon Copy) field for the message.
|
||||
|
||||
Subject : <string>
|
||||
Fills in the subject field of the message.
|
||||
|
||||
Reply-to : <address>
|
||||
Sets the optional reply address for the message.
|
||||
|
||||
Copyself : <'Y'> or <'N'>
|
||||
Selects whether or not a copy-to-self should be made of the message.
|
||||
|
||||
Confirm-delivery : <'Y'> or <'N'>
|
||||
Selects whether or not to request confirmation of delivery
|
||||
|
||||
Confirm-reading : <'Y'> or <'N'>
|
||||
Selects whether or not to request confirmation of reading
|
||||
|
||||
Urgent : <'Y'> or <'N'>
|
||||
Selects whether or not the message should be marked as "urgent"
|
||||
|
||||
Encrypted : <encryptor-name><,><passphrase><,><flags>
|
||||
Chooses an encryption method for the message. "Encryptor-name" is
|
||||
the tagname of the encryptor you wish to use (use "PM-BUILTIN" to
|
||||
select Pegasus Mail's built-in encryptor). You can find the tagname
|
||||
for an encryptor in the "Form tagname" line of the encryptor's .FFF
|
||||
file. "passphrase" is the password for the message. If it contains
|
||||
a comma, then it must be quoted using " and ". "flags" is either
|
||||
1 to encrypt the message, 2 to sign the message, or 3 to encrypt
|
||||
and sign the message.
|
||||
|
||||
Signature : <number>
|
||||
Chooses the signature you wish to attach to the message. "number"
|
||||
is 1 - 9, corresponding to the signature sets shown in WinPMail's
|
||||
Tools | Signatures preferences page, or 0 to disable signatures.
|
||||
|
||||
Mime : <'Y'> or <'N'>
|
||||
Indicates whether or not MIME support should be turned on for
|
||||
this message. MIME support affects the way attachments and
|
||||
international characters are handled by WinPMail. We strongly
|
||||
recommend that you turn MIME on wherever possible.
|
||||
|
||||
Attach : <path><,><filename><,><attachment-type><,><encoding>
|
||||
Attach a file to the message. "path" should be the full path
|
||||
to the file - do not assume that the current directory in your
|
||||
client application will be the same as the current directory in
|
||||
Pegasus Mail. "filename" is the name Pegasus Mail should include
|
||||
in the message as the real name of the file (you will typically
|
||||
use this when you have to create a temporary file but want to
|
||||
send it under the original file's name). If "filename" is "-",
|
||||
WinPMail will automatically use the filename portion of "path".
|
||||
"attachment-type" should be textual information describing the
|
||||
attachment; it must not contain spaces. If you set this field to
|
||||
a single dash ("-"), WinPMail will use its internal routines to
|
||||
try to work out the most appropriate type information for the
|
||||
file. "encoding" is used to select the type of encoding for the
|
||||
attachment: we strongly recommend that you set this value to 0,
|
||||
which will allow WinPMail to choose the most appropriate encoding
|
||||
for you. Possible values are:
|
||||
0 - Pegasus Mail decides.
|
||||
1 - No encoding - the file is not altered (local mail only)
|
||||
2 - ASCII encoding - the file is normalised to CR/LF line
|
||||
endings and is not otherwise encoded in transit.
|
||||
3 - UUencoding - the file is uuencoded
|
||||
4 - BinHex - the file is transformed using the BinHex 4.0 method.
|
||||
5 - MIME - the file is transformed using the MIME BASE64 method.
|
||||
|
||||
File : <filename>
|
||||
Indicates the name of a file containing the text WinPMail should
|
||||
use as the body of the message. Note that this file is NOT an
|
||||
attachment - it is expected to be plain text.
|
||||
|
||||
Data : <String>
|
||||
Adds "string" to the body of the message as a single line. Poke
|
||||
this command repeatedly to build up a message line by line.
|
||||
WinPMail automatically adds the CR/LF termination to each line.
|
||||
Poking this command with no <string> parameter will print a blank
|
||||
line in the message (but the ':' must still be present).
|
||||
|
||||
Identity : <identity_name>
|
||||
Sets the identity Pegasus Mail should use when processing this
|
||||
message. For more information on Identities, see the Pegasus Mail
|
||||
help file. You can specify any valid identity name as the parameter
|
||||
to this command. The default is the user's current identity.
|
||||
|
||||
Volatile : <'Y'> or <'N'> (Default is 'Y')
|
||||
(Only meaningful when using Pegasus Mail's built-in SMTP mailer).
|
||||
Setting this flag to 'Y' tells Pegasus Mail that the message should
|
||||
be written straight into Final Form in the queue when it is sent.
|
||||
If you want your message to be reloadable from Pegasus Mail's
|
||||
"Review queued mail" option, you should set this to 'N'. If your
|
||||
message contains attachments that you plan to delete once the
|
||||
message has been sent, you must not set this field to 'N'.
|
||||
|
||||
Richtext : <'Y'> or <'N'> (Default is 'N')
|
||||
Set the "rich text" flag in the message.
|
||||
|
||||
Send
|
||||
This command sends the message. Note that it has no parameters and
|
||||
no ':'. It has no effect when "Window" was used as the parameter to
|
||||
the "New:" command.
|
||||
|
||||
Restore
|
||||
This command brings WinPMail to the top and activates the Message
|
||||
Editing Window created using the "New: Window" command. Note that it
|
||||
has no parameters and no ':'. For messages created using the
|
||||
"New: Message" command, this command will simply bring WinPMail to
|
||||
the top without taking any other action.
|
||||
|
||||
|
||||
-- Example: -----------------------------------
|
||||
|
||||
In WordBasic (MS-Word 7) the following Macro opens a connection to
|
||||
WinPMail, and sends a message with no window.
|
||||
|
||||
Sub MAIN
|
||||
channel = DDEInitiate("WinPMail", "Message")
|
||||
DDEPoke channel, "Message", "New: Message"
|
||||
DDEPoke channel, "Message", "Defaults: Y"
|
||||
DDEPoke channel, "Message", "To: David"
|
||||
DDEPoke channel, "Message", "Subject: Test from Word"
|
||||
DDEPoke channel, "Message", "Data: Hi there!"
|
||||
DDEPoke channel, "Message", "Send"
|
||||
DDETerminate channel
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
The "TCP" topic
|
||||
---------------
|
||||
|
||||
The commands in this topic allow clients to control Pegasus Mail's
|
||||
built-in TCP/IP-based mail protocols. Before using these commands, a
|
||||
client should usually use the "TCP" request to the "Environment" topic to
|
||||
determine whether or not TCP/IP services are enabled and available.
|
||||
Clients interact with this topic by Poking data at it in a similar manner
|
||||
to that used to access the "Message" topic. The following commands can be
|
||||
poked at this topic:
|
||||
|
||||
Get
|
||||
Tells Pegasus Mail to download mail using the current TCP/IP
|
||||
settings defined for the program.
|
||||
|
||||
Send
|
||||
Tells Pegasus Mail to send any messages currently waiting in
|
||||
the queue to be sent out.
|
||||
|
||||
Both
|
||||
Tells Pegasus Mail to check for new mail, then to send any messages
|
||||
currently waiting in the queue, in that order.
|
||||
|
||||
Restore
|
||||
Brings Pegasus Mail to the front and gives it focus.
|
||||
|
||||
|
||||
-- Example: -----------------------------------
|
||||
|
||||
In WordBasic (MS-Word 7) the following Macro opens a connection to
|
||||
WinPMail, tells it to download new mail, then brings it to the front:
|
||||
|
||||
Sub MAIN
|
||||
channel = DDEInitiate("WinPMail", "TCP")
|
||||
DDEPoke channel, "TCP", "Get"
|
||||
DDEPoke channel, "TCP", "Restore"
|
||||
DDETerminate channel
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Pegasus Mail and the Windows Registry
|
||||
-------------------------------------
|
||||
|
||||
Starting with v2.54, WinPMail updates the Windows registry with a certain
|
||||
amount of information each time it is run. DDE Client Applications can use
|
||||
this registry information to work out how to find a copy of Pegasus Mail to
|
||||
run if none is active, and what commandline is appropriate.
|
||||
|
||||
The 32-bit version of WinPMail creates the following keys:
|
||||
|
||||
HKEY_CURRENT_USER\Software\Pegasus Mail\Version
|
||||
HKEY_CURRENT_USER\Software\Pegasus Mail\BaseDir
|
||||
HKEY_CURRENT_USER\Software\Pegasus Mail\Command
|
||||
|
||||
The "version" key contains the WinPMail version, expressed in exactly the
|
||||
same way as the return from the DDE "Environment" topic's "Version"
|
||||
request. The "BaseDir" key contains the directory where the WinPMail
|
||||
executable file is located, and the "command" key contains the full
|
||||
commandline that was used to invoke the most recently-run copy of Pegasus
|
||||
Mail.
|
||||
|
||||
Both the 16- and 32-bit versions of WinPMail create the following keys:
|
||||
|
||||
HKEY_CLASSES_ROOT\Software\Pegasus Mail\Version
|
||||
HKEY_CLASSES_ROOT\Software\Pegasus Mail\BaseDir
|
||||
HKEY_CLASSES_ROOT\Software\Pegasus Mail\Command
|
||||
|
||||
These keys are formatted in exactly the same way as those shown above.
|
||||
32-bit applications should always attempt to find the HKEY_CURRENT_USER
|
||||
keys before the HKEY_CLASSES_ROOT keys, since doing so ensures that
|
||||
multiple user configurations are respected under Windows 95 and NT.
|
||||
|
||||
|
||||
|
||||
Appendix A: Using DDE from C programs
|
||||
-------------------------------------
|
||||
|
||||
The source code shown here can be used as a model for interacting with
|
||||
any DDE-aware application. It presents a simple dialog with "Service",
|
||||
"Topic" and "Command" fields, request selector radio buttons that allow
|
||||
the user to select between XTYP_EXECUTE, XTYP_REQUEST and XTYP_POKE
|
||||
transactions, and three buttons - one to open/close a connection, a
|
||||
"quit" button, and a "Do it" button, that sends the command. If a
|
||||
connection is established using the "Open" button, then the "Do it"
|
||||
button will send the command to that connection, otherwise it will
|
||||
establish a connection, send the command, then close the connection.
|
||||
|
||||
This code was written for Borland C++ v4.52 and should be linked using
|
||||
Borland's BWCC.LIB or BWCC32.LIB in order to present the proper dialog
|
||||
appearance.
|
||||
|
||||
|
||||
--------------- DDECLI.C --------------------------------------------
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ddeml.h>
|
||||
|
||||
DWORD idInst = 0L; // DDE instance identifier
|
||||
HINSTANCE hInstance;
|
||||
HCONV mconv;
|
||||
HSZ ghszServSrv;
|
||||
HSZ ghszServTop;
|
||||
|
||||
#pragma warn -par
|
||||
#pragma warn -use
|
||||
|
||||
|
||||
HDDEDATA EXPENTRY DDECallback (WORD wType, // transaction type
|
||||
WORD wFmt, // clipboard format
|
||||
HCONV hConv, // handle of the conversation
|
||||
HSZ hsz1, // handle of a string
|
||||
HSZ hsz2, // handle of a string
|
||||
HDDEDATA hData, // handle of a global memory object
|
||||
DWORD dwData1, // transaction-specific data
|
||||
DWORD dwData2) // transaction-specific data
|
||||
{
|
||||
// Nothing need be done here...
|
||||
return (HDDEDATA) NULL;
|
||||
}
|
||||
|
||||
|
||||
BOOL SendShellCommand (DWORD idInst, char *service, char *topic, LPSTR lpCommand)
|
||||
{
|
||||
HSZ hszServSrv; // Service is "DDESERV"
|
||||
HSZ hszServTop; // Topic is "MAIL"
|
||||
HCONV hconv; // handle of conversation
|
||||
int nLen; // length of command string
|
||||
HDDEDATA hData; // return value of DdeClientTransaction
|
||||
DWORD dwResult; // result of transaction
|
||||
BOOL bResult=FALSE; // TRUE if this function is successful
|
||||
|
||||
if (mconv == NULL)
|
||||
{
|
||||
// create string handle to service/topic
|
||||
hszServSrv = DdeCreateStringHandle (idInst, service, CP_WINANSI);
|
||||
hszServTop = DdeCreateStringHandle (idInst, topic, CP_WINANSI);
|
||||
|
||||
// attempt to start conversation with server app
|
||||
hconv = DdeConnect (idInst, hszServSrv, hszServTop, NULL);
|
||||
}
|
||||
else
|
||||
hconv = mconv;
|
||||
|
||||
if (hconv != NULL)
|
||||
{
|
||||
// get length of the command string
|
||||
nLen = lstrlen ((LPSTR) lpCommand);
|
||||
|
||||
// send command to server app
|
||||
hData = DdeClientTransaction (
|
||||
(LPBYTE) lpCommand, // data to pass
|
||||
nLen + 1, // length of data
|
||||
hconv, // handle of conversation
|
||||
NULL, // handle of name-string
|
||||
CF_TEXT, // clipboard format
|
||||
XTYP_EXECUTE, // transaction type
|
||||
20000, // timeout duration
|
||||
&dwResult); // points to transaction result
|
||||
|
||||
if (hData)
|
||||
bResult = TRUE;
|
||||
|
||||
if (mconv == NULL)
|
||||
// end conversation
|
||||
DdeDisconnect (hconv);
|
||||
}
|
||||
|
||||
if (mconv == NULL)
|
||||
{
|
||||
// free service/topic string handle
|
||||
DdeFreeStringHandle(idInst, hszServSrv);
|
||||
DdeFreeStringHandle(idInst, hszServTop);
|
||||
}
|
||||
|
||||
if (bResult == FALSE)
|
||||
MessageBox (NULL, "SendShellCommand failed", "DDE Client", MB_OK);
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
|
||||
BOOL SendPoke (DWORD idInst, char *service, char *topic, LPSTR lpCommand)
|
||||
{
|
||||
HSZ hszServSrv; // Service is "DDESERV"
|
||||
HSZ hszServTop; // Topic is "MAIL"
|
||||
HCONV hconv; // handle of conversation
|
||||
int nLen; // length of command string
|
||||
HDDEDATA hData; // return value of DdeClientTransaction
|
||||
DWORD dwResult; // result of transaction
|
||||
BOOL bResult=FALSE; // TRUE if this function is successful
|
||||
|
||||
if (mconv == NULL)
|
||||
{
|
||||
// create string handle to service/topic
|
||||
hszServSrv = DdeCreateStringHandle (idInst, service, CP_WINANSI);
|
||||
hszServTop = DdeCreateStringHandle (idInst, topic, CP_WINANSI);
|
||||
|
||||
// attempt to start conversation with server app
|
||||
hconv = DdeConnect (idInst, hszServSrv, hszServTop, NULL);
|
||||
}
|
||||
else
|
||||
hconv = mconv;
|
||||
|
||||
if (hconv != NULL)
|
||||
{
|
||||
// get length of the command string
|
||||
nLen = lstrlen ((LPSTR) lpCommand);
|
||||
|
||||
// send command to server app
|
||||
hData = DdeClientTransaction (
|
||||
(LPBYTE) lpCommand, // data to pass
|
||||
nLen + 1, // length of data
|
||||
hconv, // handle of conversation
|
||||
hszServTop, // handle of name-string
|
||||
CF_TEXT, // clipboard format
|
||||
XTYP_POKE, // transaction type
|
||||
20000, // timeout duration
|
||||
&dwResult); // points to transaction result
|
||||
|
||||
if (hData)
|
||||
bResult = TRUE;
|
||||
|
||||
if (mconv == NULL)
|
||||
// end conversation
|
||||
DdeDisconnect (hconv);
|
||||
}
|
||||
|
||||
if (mconv == NULL)
|
||||
{
|
||||
// free service/topic string handle
|
||||
DdeFreeStringHandle(idInst, hszServSrv);
|
||||
DdeFreeStringHandle(idInst, hszServTop);
|
||||
}
|
||||
|
||||
if (bResult == FALSE)
|
||||
MessageBox (NULL, "SendPoke failed", "DDE Client", MB_OK);
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
|
||||
BOOL SendShellRequest (DWORD idInst, char *service, char *topic, char *cmd)
|
||||
{
|
||||
HSZ hszServSrv; // Service is "DDESERV"
|
||||
HSZ hszServTop; // Topic is "MAIL"
|
||||
HSZ item;
|
||||
HCONV hconv; // handle of conversation
|
||||
int nLen; // length of command string
|
||||
HDDEDATA hData; // return value of DdeClientTransaction
|
||||
DWORD dwResult; // result of transaction
|
||||
BOOL bResult=FALSE; // TRUE if this function is successful
|
||||
char *str;
|
||||
DWORD x;
|
||||
|
||||
if (mconv == NULL)
|
||||
{
|
||||
// create string handle to service/topic
|
||||
hszServSrv = DdeCreateStringHandle (idInst, service, CP_WINANSI);
|
||||
hszServTop = DdeCreateStringHandle (idInst, topic, CP_WINANSI);
|
||||
|
||||
// attempt to start conversation with server app
|
||||
hconv = DdeConnect (idInst, hszServSrv, hszServTop, NULL);
|
||||
}
|
||||
else
|
||||
hconv = mconv;
|
||||
|
||||
if (hconv != NULL)
|
||||
{
|
||||
// send command to server app
|
||||
item = DdeCreateStringHandle (idInst, cmd, CP_WINANSI);
|
||||
hData = DdeClientTransaction (
|
||||
NULL, // data to pass
|
||||
0, // length of data
|
||||
hconv, // handle of conversation
|
||||
item, // handle of name-string
|
||||
CF_TEXT, // clipboard format
|
||||
XTYP_REQUEST, // transaction type
|
||||
20000, // timeout duration
|
||||
&dwResult); // points to transaction result
|
||||
|
||||
if (hData)
|
||||
{
|
||||
if ((str = (char *) DdeAccessData (hData, &x)) != NULL)
|
||||
{
|
||||
strcpy (cmd, str);
|
||||
bResult = TRUE;
|
||||
DdeUnaccessData (hData);
|
||||
}
|
||||
|
||||
DdeFreeDataHandle (hData);
|
||||
}
|
||||
|
||||
DdeFreeStringHandle (idInst, item);
|
||||
|
||||
if (mconv == NULL)
|
||||
// end conversation
|
||||
DdeDisconnect (hconv);
|
||||
}
|
||||
|
||||
if (mconv == NULL)
|
||||
{
|
||||
// free service/topic string handle
|
||||
DdeFreeStringHandle (idInst, hszServSrv);
|
||||
DdeFreeStringHandle (idInst, hszServTop);
|
||||
}
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
|
||||
int FAR PASCAL _export dummy_proc (HWND hDialog, UINT wMsg,
|
||||
WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
BOOL fProcessed = TRUE;
|
||||
DWORD dwResult;
|
||||
RECT r;
|
||||
HWND hControl;
|
||||
char buffer [256], service [80], topic [80];
|
||||
|
||||
switch (wMsg)
|
||||
{
|
||||
case WM_INITDIALOG :
|
||||
CheckRadioButton (hDialog, 104, 106, 104);
|
||||
break;
|
||||
|
||||
case WM_SETFOCUS :
|
||||
SetFocus (GetDlgItem (hDialog, 101));
|
||||
break;
|
||||
|
||||
case WM_COMMAND :
|
||||
if (GET_WM_COMMAND_ID(wParam, lParam) == IDCANCEL)
|
||||
{
|
||||
EndDialog (hDialog, IDCANCEL);
|
||||
break;
|
||||
}
|
||||
|
||||
if (GET_WM_COMMAND_ID(wParam, lParam) == 120)
|
||||
{
|
||||
if (mconv == NULL)
|
||||
{
|
||||
GetDlgItemText (hDialog, 101, service, sizeof (service));
|
||||
GetDlgItemText (hDialog, 102, topic, sizeof (topic));
|
||||
ghszServSrv = DdeCreateStringHandle (idInst, service, CP_WINANSI);
|
||||
ghszServTop = DdeCreateStringHandle (idInst, topic, CP_WINANSI);
|
||||
|
||||
// attempt to start conversation with server app
|
||||
mconv = DdeConnect (idInst, ghszServSrv, ghszServTop, NULL);
|
||||
if (mconv == NULL)
|
||||
MessageBox (NULL, "Connection failed!", "DDE Client",
|
||||
MB_OK | MB_ICONEXCLAMATION);
|
||||
else
|
||||
SetDlgItemText (hDialog, 120, "Close");
|
||||
}
|
||||
else
|
||||
{
|
||||
DdeDisconnect (mconv);
|
||||
mconv = NULL;
|
||||
DdeFreeStringHandle (idInst, ghszServSrv);
|
||||
DdeFreeStringHandle (idInst, ghszServTop);
|
||||
SetDlgItemText (hDialog, 120, "Open");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (GET_WM_COMMAND_ID(wParam, lParam) == IDOK)
|
||||
{
|
||||
GetDlgItemText (hDialog, 101, service, sizeof (service));
|
||||
GetDlgItemText (hDialog, 102, topic, sizeof (topic));
|
||||
GetDlgItemText (hDialog, 103, buffer, sizeof (buffer));
|
||||
hControl = GetDlgItem (hDialog, 107);
|
||||
if (IsDlgButtonChecked (hDialog, 105)) // Request
|
||||
{
|
||||
if (SendShellRequest (idInst, service, topic, buffer))
|
||||
{
|
||||
Edit_ReplaceSel (hControl, "Request successful:\r\n ");
|
||||
Edit_ReplaceSel (hControl, buffer);
|
||||
Edit_ReplaceSel (hControl, "\r\n");
|
||||
}
|
||||
else
|
||||
Edit_ReplaceSel (hControl, "Request failed.\r\n");
|
||||
}
|
||||
else if (IsDlgButtonChecked (hDialog, 104))
|
||||
{
|
||||
if (SendShellCommand (idInst, service, topic, buffer))
|
||||
Edit_ReplaceSel (hControl, "Command successful.\r\n");
|
||||
else
|
||||
Edit_ReplaceSel (hControl, "Command failed.\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (SendPoke (idInst, service, topic, buffer))
|
||||
Edit_ReplaceSel (hControl, "Poke successful.\r\n");
|
||||
else
|
||||
Edit_ReplaceSel (hControl, "Poke failed.\r\n");
|
||||
Edit_SetSel (GetDlgItem (hDialog, 103), 0, 999);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
fProcessed = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
return fProcessed;
|
||||
}
|
||||
|
||||
|
||||
int PASCAL WinMain (HINSTANCE __hInstance, HINSTANCE hPrevInstance,
|
||||
LPSTR lpszCmdLine, int nCmdShow)
|
||||
{
|
||||
MSG msg;
|
||||
HWND hWndFrame;
|
||||
WNDCLASS wc;
|
||||
FARPROC DDEProc, dlgProc;
|
||||
|
||||
if (hPrevInstance != NULL)
|
||||
return 0;
|
||||
|
||||
hInstance = __hInstance;
|
||||
|
||||
// get proc instance for our DDEML callback
|
||||
DDEProc = MakeProcInstance ((FARPROC) DDECallback, hInstance);
|
||||
|
||||
// register this app with the DDEML
|
||||
if (DdeInitialize (&idInst, // receives instance ID
|
||||
(PFNCALLBACK) DDEProc, // address of callback function
|
||||
APPCMD_CLIENTONLY, // this is a client app
|
||||
0L)) // reserved
|
||||
{
|
||||
#ifndef __FLAT__ // FreeProcInstance is obsolete under Win32
|
||||
FreeProcInstance (DDEProc);
|
||||
#endif
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
dlgProc = MakeProcInstance ((FARPROC) dummy_proc, hInstance);
|
||||
DialogBox (hInstance, "CLIENT", NULL, dlgProc);
|
||||
DdeUninitialize (idInst);
|
||||
return 0;
|
||||
}
|
||||
|
||||
--------------- DDECLI.DEF ----------------------------------------
|
||||
NAME DDECLI
|
||||
DESCRIPTION 'DDE Test Client'
|
||||
EXETYPE WINDOWS
|
||||
DATA MOVEABLE MULTIPLE PRELOAD
|
||||
CODE MOVEABLE DISCARDABLE
|
||||
HEAPSIZE 27500
|
||||
STACKSIZE 16500
|
||||
|
||||
--------------- DDECLI.RC -----------------------------------------
|
||||
|
||||
CLIENT DIALOG 180, 121, 246, 168
|
||||
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
CLASS "bordlg"
|
||||
CAPTION "DDE Test Client"
|
||||
FONT 8, "MS Sans Serif"
|
||||
{
|
||||
RTEXT "Service name:", -1, 15, 15, 60, 8
|
||||
CONTROL "winpmail", 101, "EDIT", ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP, 83, 13, 102, 12
|
||||
RTEXT "Topic name:", -1, 15, 30, 60, 8
|
||||
CONTROL "message", 102, "EDIT", ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP, 83, 28, 102, 12
|
||||
RTEXT "Command/request:", -1, 14, 45, 61, 8
|
||||
EDITTEXT 103, 83, 43, 102, 12, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
|
||||
RTEXT "Transaction type:", -1, 15, 65, 60, 8
|
||||
CONTROL "Execute", 104, "BorRadio", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 85, 64, 47, 10
|
||||
CONTROL "Request", 105, "BorRadio", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 133, 64, 43, 10
|
||||
CONTROL "Poke", 106, "BorRadio", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 184, 64, 32, 10
|
||||
LTEXT "Results / Diagnostics", -1, 12, 82, 78, 8
|
||||
EDITTEXT 107, 10, 92, 228, 69, ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
|
||||
DEFPUSHBUTTON "Do it", IDOK, 192, 12, 43, 14
|
||||
PUSHBUTTON "Quit", IDCANCEL, 192, 42, 43, 14
|
||||
CONTROL "", -1, "BorShade", BSS_GROUP | BSS_CAPTION | BSS_LEFT | WS_CHILD | WS_VISIBLE, -5, -7, 257, 180
|
||||
PUSHBUTTON "Open", 120, 192, 27, 43, 14
|
||||
}
|
||||
|
||||
35
database/MercuryMail/RESOURCE/wpm-char.r
Normal file
35
database/MercuryMail/RESOURCE/wpm-char.r
Normal file
@@ -0,0 +1,35 @@
|
||||
##
|
||||
## Sample character translation resource file for
|
||||
## WinPMail v1.02, SMTP translation.
|
||||
## Copyright (c) 1993, David Harris, All Rights Reserved.
|
||||
##
|
||||
## This file can be used to replace the default SMTP
|
||||
## translation table used by PMail on outgoing non-MIME
|
||||
## messages.
|
||||
##
|
||||
## Resource 0 in the file must be an SMTP translation table:
|
||||
## it consists of high-bit characters followed immediately
|
||||
## by the string of characters which PMail should use in
|
||||
## place of the character in outgoing messages. Spaces
|
||||
## delimit each entry.
|
||||
##
|
||||
## To use this file, make any necessary changes to it and
|
||||
## compile it using the command "ResCom WPM-CHAR.R". Copy
|
||||
## the resulting WPM-CHAR.RSC file into either your home
|
||||
## mailbox if you want it to affect only you, or into the
|
||||
## same directory as WINPMAIL.EXE if you want it to affect
|
||||
## all users on the system.
|
||||
##
|
||||
|
||||
text TEXT_SMTP_TABLE
|
||||
{
|
||||
"<EFBFBD>C <20>ue <20>e <20>a <20>ae <20>a <20>a <20>c <20>e <20>e <20>e <20>i <20>i <20>i <20>AE <20>A ",
|
||||
"<EFBFBD>E <20>ee <20>AE <20>o <20>oe <20>o <20>u <20>u <20>y <20>OE <20>UE <20>c <20>stlg <20>yen ",
|
||||
"<EFBFBD>peseta <20>florin <20>a <20>i <20>o <20>u <20>n <20>N <20>a <20>o <20>? <20>+ <20>+ ",
|
||||
"<EFBFBD>.5 <20>.25 <20>! <20><< <20>>> <20>| <20>| <20>| <20>| <20>+ <20>+ <20>| <20>| <20>+ <20>+ ",
|
||||
"<EFBFBD>+ <20>+ <20>+ <20>+ <20>- <20>- <20>| <20>- <20>+ <20>| <20>| <20>+ <20>+ <20>- <20>- <20>| <20>- ",
|
||||
"<EFBFBD>+ <20>- <20>- <20>- <20>- <20>+ <20>+ <20>+ <20>+ <20>+ <20>+ <20>+ <20>+ <20>a <20>ss <20>pi ",
|
||||
"<EFBFBD>Sigma <20>Rho <20>Tau <20>Theta <20>Omega <20>delta <20>o <20>Epsilon ",
|
||||
"<EFBFBD>= <20>+/- <20>>= <20><= <20>/ <20>o <20>. <20>sqrt <20>^n <20>^2"
|
||||
};
|
||||
|
||||
598
database/MercuryMail/RESOURCE/wpm-lmtt.r
Normal file
598
database/MercuryMail/RESOURCE/wpm-lmtt.r
Normal file
@@ -0,0 +1,598 @@
|
||||
##
|
||||
## WPM-LMTT.R (Local Mime Translation Table)
|
||||
## Copyright (c) 1994, David Harris, All Rights Reserved.
|
||||
##
|
||||
## This file can be used as a model for a local resource which
|
||||
## maps ISO character sets to the code pages in use on the PCs
|
||||
## at your site.
|
||||
##
|
||||
## Character translation tables:
|
||||
## Each translation table maps the characters in a particular
|
||||
## ISO set to your codepage's character set: the table can be used
|
||||
## bidirectionally when composing or decoding quoted-printable or
|
||||
## 8BIT messages. Only characters from 128-255 are included in
|
||||
## the table, and each table must end with an ASCII NUL (0).
|
||||
##
|
||||
## The sample tables in this file are the ones Pegasus Mail uses
|
||||
## by default: they map ISO character sets to the standard IBM
|
||||
## code page 437. You may define as many character sets as you
|
||||
## wish and Pegasus Mail will use them to translate incoming mail
|
||||
## but for outgoing mail it will only use ISO character sets.
|
||||
##
|
||||
## The last resource in the file must be a "charset_list"
|
||||
## structure which ties the character strings naming an ISO
|
||||
## character set to the resource which maps it.
|
||||
##
|
||||
## Angepa<70>t an deutsche Umlaute (cp_win) am 28-04-2004 Sven Henze
|
||||
##
|
||||
#==========================================================
|
||||
#
|
||||
# OPTIMAL CHARACTER TRANSLATIONS, should be used as
|
||||
# a example for user defined tables in multilanguage fonts
|
||||
# environment.
|
||||
#
|
||||
# WEST ISO-8859-1 --> CP 1252
|
||||
# CE ISO-8859-2 --> CP 1250
|
||||
# TR,AFR ISO-8859-3 --> ? CP 1252
|
||||
# BALTIC ISO-8859-4 --> CP 1257
|
||||
# CYR ISO-8859-5 --> CP 1251
|
||||
# ARAB ISO-8859-6 --> CP 1256
|
||||
# GREEK ISO-8859-7 --> CP 1253
|
||||
# HEBR ISO-8859-8 --> CP 1255
|
||||
# TR ISO-8859-9 --> CP 1254
|
||||
# RUSS KOI-8R --> CP 1251
|
||||
# VIETN CP 1258 (currently not implemented)
|
||||
# ISO-8859-10 ??? (currently not implemented)
|
||||
# Conversion tables from Jiri Kuchta, 8-12-96, kuchta@fee.vutbr.cz
|
||||
#
|
||||
#=========================================================
|
||||
##
|
||||
## To use this file, modify it as required, then compile it with
|
||||
## the Pegasus Mail system resource compiler, RESCOM, using the
|
||||
## command 'rescom PM-LMTT.R'. This will produce the file
|
||||
## PM-LMTT.RSC, which should be copied into the same directory
|
||||
## as PMAIL.EXE, or into your home mailbox.
|
||||
|
||||
##
|
||||
## The "charset_list" type is used to tie a particular name of
|
||||
## a character set to the table used to decode it.
|
||||
##
|
||||
|
||||
typedef charset_list 25
|
||||
{
|
||||
repeat,
|
||||
string 20, # Character set name
|
||||
integer # resource ID of table to load.
|
||||
};
|
||||
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 1 (Latin 1)
|
||||
###----------------------------------------------------------------
|
||||
## Danish, Dutch, English, Faeroese, Finnish, French, German, Icelandic,
|
||||
## Irish, Italian, Norwegian, Portuguese, Spanish and Swedish.
|
||||
##
|
||||
## optimal conversion into CP850, CP1252
|
||||
|
||||
structure iso8859_1
|
||||
{
|
||||
# conversion ISO-1 --> 1252
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '|', '<EFBFBD>', #a0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f8
|
||||
0
|
||||
};
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 2 (Latin 2)
|
||||
###----------------------------------------------------------------
|
||||
## Albanian, Czech, English, German, Hungarian, Polish, Rumanian,
|
||||
## Serbo-Croatian, Slovak, Slovene and Swedish.
|
||||
##
|
||||
## optimal conversion into CP852, CP1250
|
||||
|
||||
#structure iso8859_2
|
||||
# {
|
||||
## conversion ISO-2 --> 1252 (WEST)
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
#'\160', 'A', '<27>', 'L', '<27>', 'L', 'S', '<27>', #a0
|
||||
# '<27>', '<27>', 'S', 'T', 'Z', '<27>', 'Z', 'Z', #a8
|
||||
# '<27>', 'a', '?', 'l', '<27>', 'l', 's', '<27>', #b0
|
||||
# '<27>', '<27>', 's', 't', 'z', '<27>', 'z', 'z', #b8
|
||||
# 'R', '<27>', '<27>', '<27>', '<27>', 'L', 'C', '<27>', #c0
|
||||
# 'C', '<27>', 'E', '<27>', '<27>', '<27>', '<27>', 'D', #c8
|
||||
# '<27>', 'N', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #d0
|
||||
# 'R', '<27>', '<27>', '<27>', '<27>', '<27>', 'T', '<27>', #d8
|
||||
# 'r', '<27>', '<27>', '<27>', '<27>', 'l', 'c', '<27>', #e0
|
||||
# 'c', '<27>', 'e', '<27>', '<27>', '<27>', '<27>', 'd', #e8
|
||||
# '<27>', 'n', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #f0
|
||||
# 'r', '<27>', '<27>', '<27>', '<27>', '<27>', 't', '<27>', #f8
|
||||
# 0
|
||||
# };
|
||||
|
||||
structure iso8859_2
|
||||
{
|
||||
# conversion ISO-2 --> 1250 (CE)
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f8
|
||||
0
|
||||
};
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 3 (Latin 3)
|
||||
###----------------------------------------------------------------
|
||||
## Afrikaans, Catalan, English, Esperanto, French, Galician, German,
|
||||
## Italian, Maltese and Turkish.
|
||||
##
|
||||
## optimal conversion into CP85x, CP125x
|
||||
|
||||
structure iso8859_3
|
||||
{
|
||||
# conversion ISO-3 --> 1252
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160', 'H', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', ' ', 'H', '<EFBFBD>', #a0
|
||||
'<EFBFBD>', 'I', 'S', 'G', 'J', '<EFBFBD>', ' ', 'Z', #a8
|
||||
'<EFBFBD>', 'h', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'h', '<EFBFBD>', #b0
|
||||
'<EFBFBD>', 'i', 's', 'g', 'j', '<EFBFBD>', ' ', 'z', #b8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', ' ', '<EFBFBD>', 'C', 'C', '<EFBFBD>', #c0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c8
|
||||
' ', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'G', '<EFBFBD>', '<EFBFBD>', #d0
|
||||
'G', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'U', '<EFBFBD>', '<EFBFBD>', #d8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', ' ', '<EFBFBD>', 'c', 'c', '<EFBFBD>', #e0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e8
|
||||
' ', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'g', '<EFBFBD>', '<EFBFBD>', #f0
|
||||
'g', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'u', '<EFBFBD>', '<EFBFBD>', #f8
|
||||
0
|
||||
};
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 4 (Latin 4)
|
||||
###----------------------------------------------------------------
|
||||
## Danish, English, Estonian, Finnish, German, Greenlandic, Lappish,
|
||||
## Latvian, Lithuanian, Norwegian and Swedish.
|
||||
##
|
||||
## optimal conversion into CP85x, CP1257
|
||||
|
||||
|
||||
#structure iso8859_4
|
||||
# {
|
||||
## conversion ISO-4 --> 1252
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
#'\160', 'A', 'k', 'R', '<27>', 'I', 'L', '<27>', #a0
|
||||
# '<27>', '<27>', '<27>', 'G', 'T', '<27>', 'Z', '<27>', #a8
|
||||
# '<27>', 'a', '<27>', 'r', '<27>', 'N', 'z', 'n', #b0
|
||||
# '<27>', '<27>', '<27>', 'g', 't', 'i', 'l', '<27>', #b8
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', 'I', #c0
|
||||
# 'C', '<27>', 'E', '<27>', '<27>', '<27>', '<27>', '<27>', #c8
|
||||
# '<27>', '<27>', '<27>', 'K', '<27>', '<27>', '<27>', '<27>', #d0
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', 'U', 'U', '<27>', #d8
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', 'i', #e0
|
||||
# 'c', '<27>', 'e', '<27>', '<27>', '<27>', '<27>', '<27>', #e8
|
||||
# '<27>', '<27>', '<27>', 'k', '<27>', '<27>', '<27>', '<27>', #f0
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', 'u', 'u', '<27>', #f8
|
||||
# 0
|
||||
# };
|
||||
|
||||
structure iso8859_4
|
||||
{
|
||||
# conversion ISO-4 --> 1257
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160', '<EFBFBD>', 'k', '<EFBFBD>', '<EFBFBD>', 'I', '<EFBFBD>', '<EFBFBD>', #a0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'T', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'i', '<EFBFBD>', '<EFBFBD>', #b0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 't', '?', '<EFBFBD>', '?', #b8
|
||||
'<EFBFBD>', 'A', 'A', 'A', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'E', '<EFBFBD>', 'I', 'I', '<EFBFBD>', #c8
|
||||
'D', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'O', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d0
|
||||
'<EFBFBD>', 'U', 'U', '<EFBFBD>', 'U', 'U', '<EFBFBD>', '<EFBFBD>', #d8
|
||||
'<EFBFBD>', 'a', 'a', 'a', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'e', '<EFBFBD>', 'i', 'i', '<EFBFBD>', #e8
|
||||
'd', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', 'o', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f0
|
||||
'<EFBFBD>', 'u', 'u', '<EFBFBD>', 'u', 'u', '<EFBFBD>', '<EFBFBD>', #f8
|
||||
0
|
||||
};
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 5 (Cyrilic)
|
||||
###----------------------------------------------------------------
|
||||
## Bulgarian, Bielorussian, English, Macedonian, Russian,
|
||||
## Serbo-Croatian and Ukrainian.
|
||||
##
|
||||
## optimal conversion into CP855, CP866, CP1251
|
||||
|
||||
|
||||
#structure iso8859_5
|
||||
# {
|
||||
## conversion ISO-5--> 1252
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
#'\160', '<27>', '?', 'r', 'E', 'S', 'I', '<27>', #a0
|
||||
# 'J', 'L', 'H', '?', 'K', '-', '<27>', '?', #a8
|
||||
# 'A', 'B', 'V', 'G', 'D', 'E', 'Z', '3', #b0
|
||||
# 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', #b8
|
||||
# 'R', 'S', 'T', 'U', '<27>', 'X', 'C', '<27>', #c0
|
||||
# 'S', 'S', '?', '?', '?', '3', '<27>', '<27>', #c8
|
||||
# 'a', 'b', 'v', 'g', 'd', 'e', 'z', '3', #d0
|
||||
# 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', #d8
|
||||
# 'r', 's', 't', 'u', '<27>', 'x', 'c', '<27>', #e0
|
||||
# 's', 's', '?', '?', '?', '3', '<27>', '<27>', #e8
|
||||
# '<27>', '<27>', '?', 'r', 'e', 's', 'i', '<27>', #f0
|
||||
# 'j', 'l', 'h', '?', 'k', ' ', '<27>', '?', #f8
|
||||
# 0
|
||||
# };
|
||||
|
||||
|
||||
structure iso8859_5
|
||||
{
|
||||
# conversion ISO-5 --> 1251
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', ' ', '<EFBFBD>', '<EFBFBD>', #f8
|
||||
0
|
||||
};
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 6 (Arabic)
|
||||
###----------------------------------------------------------------
|
||||
## This set of graphic character is intended for use in information
|
||||
## interchange as well as in data and text processing applications
|
||||
## where both the Arabic and the Latin scripts are used.
|
||||
##
|
||||
## optimal conversion into CP85x, CP1256
|
||||
|
||||
#structure iso8859_6
|
||||
# {
|
||||
## conversion ISO-6--> 1252
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
|
||||
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
#'\160', ' ', ' ', ' ', '<27>', ' ', ' ', ' ', #a0
|
||||
# ' ', ' ', ' ', ' ', '`', '-', ' ', ' ', #a8
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #b0
|
||||
# ' ', ' ', ' ', ';', ' ', ' ', ' ', '<27>', #b8
|
||||
# ' ', '?', '?', '?', '?', '?', '?', '?', #c0
|
||||
# '?', '?', '?', '?', '?', '?', '?', '?', #c8
|
||||
# '?', '?', '?', '?', '?', '?', '?', '?', #d0
|
||||
# '?', '?', '?', ' ', ' ', ' ', ' ', ' ', #d8
|
||||
# '-', '?', '?', '?', '?', '?', '?', '?', #e0
|
||||
# '?', '?', '?', '-', '-', '-', '-', '-', #e8
|
||||
# '-', '-', '-', ' ', ' ', ' ', ' ', ' ', #f0
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #f8
|
||||
# 0
|
||||
# };
|
||||
|
||||
|
||||
structure iso8859_6
|
||||
{
|
||||
## conversion ISO-6--> 1256
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160',' ', ' ', ' ', '<EFBFBD>', ' ', ' ', ' ', #a0
|
||||
' ', ' ', ' ', ' ', '\161','\173',' ', ' ', #a8
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #b0
|
||||
' ', ' ', ' ', '\186',' ', ' ', ' ', '\191', #b8
|
||||
' ', '\193','\194','\195','\196','\197','\198','\199', #c0
|
||||
'\200','\201','\202','\203','\204','\205','\206','\207', #c8
|
||||
'\208','\209','\210','\211','\212','\213','\214','\216', #d0
|
||||
'\217','\218','\219',' ', ' ', ' ', ' ', ' ', #d8
|
||||
'\220','\221','\222','\223','\225','\227','\228','\229', #e0
|
||||
'\230','\236','\237','\240','\241','\242','\243','\245', #e8
|
||||
'\246','\248','\250',' ', ' ', ' ', ' ', ' ', #f0
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #f8
|
||||
0
|
||||
};
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 7 (Greek)
|
||||
###----------------------------------------------------------------
|
||||
## This set is suited for multiple-language applications involving the
|
||||
## Latin and the Greek scripts. It allows handling of data and text
|
||||
## expressed in Greek.
|
||||
##
|
||||
## optimal conversion into CP85x, CP1253
|
||||
|
||||
structure iso8859_7
|
||||
{
|
||||
## conversion ISO-7--> 1253
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160', ',', '`', '<EFBFBD>', ' ', ' ', '<EFBFBD>', '<EFBFBD>', #a0
|
||||
'<EFBFBD>', '<EFBFBD>', ' ', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', ' ', '<EFBFBD>', #a8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c8
|
||||
'<EFBFBD>', '<EFBFBD>', ' ', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', ' ', #f8
|
||||
0
|
||||
};
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 8 (Hebrew)
|
||||
###----------------------------------------------------------------
|
||||
## This set is suited for multiple-language applications involving the
|
||||
## Latin and the Hebrew scripts. It allows handling of data and text
|
||||
## expressed in Hebrew.
|
||||
##
|
||||
## optimal conversion into CP85x, CP1255
|
||||
|
||||
#structure iso8859_8
|
||||
# {
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
#'\160', ' ', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #a0
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '?', #a8
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #b0
|
||||
# ',', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', ' ', #b8
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #c0
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #c8
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #d0
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', '?', #d8
|
||||
# '?', '?', '?', '?', '?', '?', '?', '?', #e0
|
||||
# '?', '?', '?', '?', '?', '?', '?', '?', #e8
|
||||
# '?', '?', '?', '?', '?', '?', '?', '?', #f0
|
||||
# '?', '?', '?', '?', '?', '?', '?', '?', #f8
|
||||
# 0
|
||||
# };
|
||||
|
||||
|
||||
structure iso8859_8
|
||||
{
|
||||
## conversion ISO-8--> 1255
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160', ' ', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a0
|
||||
'<EFBFBD>', '<EFBFBD>', 'x', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '?', #a8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b0
|
||||
',', '<EFBFBD>', '/', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', ' ', #b8
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #c0
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #c8
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #d0
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', '?', #d8
|
||||
'\224','\225','\226','\227','\228','\229','\230','\231', #e0
|
||||
'\232','\233','\234','\235','\236','\237','\238','\239', #e8
|
||||
'\240','\241','\242','\243','\244','\245','\246','\247', #f0
|
||||
'\248','\249','\250',' ', ' ', ' ', ' ', ' ', #f8
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 9 (Latin 5)
|
||||
###----------------------------------------------------------------
|
||||
## English, Finnish, French, German, Irish, Italian, Norwegian,
|
||||
## Portuguese, Spanish and Swedish and Turkish.
|
||||
##
|
||||
## optimal conversion into CP85x, CP1254
|
||||
|
||||
|
||||
#structure iso8859_9
|
||||
# {
|
||||
## conversion ISO-9 --> 1252
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
# ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
#'\160', '<27>', '<27>', '<27>', '<27>', '<27>', '|', '<27>', #a0
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #a8
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #b0
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #b8
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #c0
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #c8
|
||||
# 'G', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #d0
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', 'I', 'S', '<27>', #d8
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #e0
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #e8
|
||||
# 'g', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', '<27>', #f0
|
||||
# '<27>', '<27>', '<27>', '<27>', '<27>', 'i', 's', '<27>', #f8
|
||||
# 0
|
||||
# };
|
||||
|
||||
|
||||
structure iso8859_9
|
||||
{
|
||||
# conversion ISO-9 --> 1254
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f8
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## I S O - 8 8 5 9 - 1 5 (Latin 9)
|
||||
###----------------------------------------------------------------
|
||||
## Ajout<75> par Th. Thomas
|
||||
## Albanais, allemand, anglais, basque, breton, catalan, danois, espagnol,
|
||||
## estonien, f<>ro<72>en, finnois, fran<61>ais, frison, ga<67>lique <20>cossais, ga<67>lique
|
||||
## irlandais (nouvelle orthographe), galicien, gallois, groenlandais,
|
||||
## islandais, italien, latin, luxembourgeois, n<>erlandais, norv<72>gien,
|
||||
## portugais, romanche, su<73>dois, et mon<6F>gasque.
|
||||
##
|
||||
## optimal conversion into CP850, CP1252
|
||||
|
||||
structure iso8859_15
|
||||
{
|
||||
# conversion ISO-15 --> 1252
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #80
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #88
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #90
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', #98
|
||||
'\160', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #a0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '-', '<EFBFBD>', '-', #a8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #b8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f8
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## K O I - 8 R (Cyrilic)
|
||||
###----------------------------------------------------------------
|
||||
## Bulgarian, Bielorussian, English, Macedonian, Russian,
|
||||
## Serbo-Croatian and Ukrainian.
|
||||
##
|
||||
## optimal conversion into CP855, CP866, CP1251
|
||||
|
||||
structure koi8_r
|
||||
{
|
||||
# conversion KOI8-R --> 1251
|
||||
'-', '|', '+', '+', '+', '+', '|', '|', #80
|
||||
'-', '-', '+', '#', '#', '#', '#', '#', #88
|
||||
'#', '#', '#', '|', '#', '?', '?', '~', #90
|
||||
'?', '?', ' ', '|', '?', '2', '.', '/', #98
|
||||
'-', '|', '+', '<EFBFBD>', '+', '+', '+', '+', #a0
|
||||
'+', '+', '+', '+', '+', '+', '+', '|', #a8
|
||||
'|', '|', '|', '<EFBFBD>', '|', '|', '-', '-', #b0
|
||||
'-', '-', '-', '-', '+', '+', '+', '<EFBFBD>', #b8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #c8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #d8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #e8
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f0
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', #f8
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
###----------------------------------------------------------------
|
||||
## W I N D O W S - 1 2 X X
|
||||
###----------------------------------------------------------------
|
||||
##
|
||||
## optimal conversion transparent
|
||||
|
||||
structure cp_WIN
|
||||
#echo WIN transparent
|
||||
{
|
||||
'<EFBFBD>', '?', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '?', '<EFBFBD>', '?',
|
||||
'?', ''', ''', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '-', '-',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '?', '<EFBFBD>', '<EFBFBD>',
|
||||
' ', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
'<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>',
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
charset_list _mime_csets
|
||||
{
|
||||
"ISO-8859-1", iso8859_1,
|
||||
"ISO-8859-2", iso8859_2,
|
||||
"ISO-8859-3", iso8859_3,
|
||||
"ISO-8859-4", iso8859_4,
|
||||
"ISO-8859-5", iso8859_5,
|
||||
"ISO-8859-6", iso8859_6,
|
||||
"ISO-8859-7", iso8859_7,
|
||||
"ISO-8859-8", iso8859_8,
|
||||
"ISO-8859-9", iso8859_9,
|
||||
"ISO-8859-15", iso8859_15,
|
||||
"KOI8-R", koi8_r,
|
||||
"WINDOWS-1250", cp_WIN, # Windows codepages transparent
|
||||
"WINDOWS-1251", cp_WIN, #
|
||||
"WINDOWS-1252", cp_WIN, #
|
||||
"WINDOWS-1253", cp_WIN, #
|
||||
"WINDOWS-1254", cp_WIN, #
|
||||
"WINDOWS-1257", cp_WIN, #
|
||||
"", -1
|
||||
Reference in New Issue
Block a user