gnus-2 294 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506
  1. This is ../../info/gnus, produced by makeinfo version 4.13 from
  2. gnus.texi.
  3. Copyright (C) 1995-2012 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this
  5. document under the terms of the GNU Free Documentation License,
  6. Version 1.3 or any later version published by the Free Software
  7. Foundation; with no Invariant Sections, with the Front-Cover texts
  8. being "A GNU Manual", and with the Back-Cover Texts as in (a)
  9. below. A copy of the license is included in the section entitled
  10. "GNU Free Documentation License".
  11. (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
  12. modify this GNU manual. Buying copies from the FSF supports it in
  13. developing GNU and promoting software freedom."
  14. INFO-DIR-SECTION Emacs network features
  15. START-INFO-DIR-ENTRY
  16. * Gnus: (gnus). The newsreader Gnus.
  17. END-INFO-DIR-ENTRY
  18. 
  19. File: gnus, Node: Charsets, Next: Article Commands, Prev: MIME Commands, Up: Summary Buffer
  20. 3.20 Charsets
  21. =============
  22. People use different charsets, and we have MIME to let us know what
  23. charsets they use. Or rather, we wish we had. Many people use
  24. newsreaders and mailers that do not understand or use MIME, and just
  25. send out messages without saying what character sets they use. To help
  26. a bit with this, some local news hierarchies have policies that say
  27. what character set is the default. For instance, the `fj' hierarchy
  28. uses `iso-2022-jp'.
  29. This knowledge is encoded in the `gnus-group-charset-alist'
  30. variable, which is an alist of regexps (use the first item to match full
  31. group names) and default charsets to be used when reading these groups.
  32. In addition, some people do use soi-disant MIME-aware agents that
  33. aren't. These blithely mark messages as being in `iso-8859-1' even if
  34. they really are in `koi-8'. To help here, the
  35. `gnus-newsgroup-ignored-charsets' variable can be used. The charsets
  36. that are listed here will be ignored. The variable can be set on a
  37. group-by-group basis using the group parameters (*note Group
  38. Parameters::). The default value is `(unknown-8bit x-unknown)', which
  39. includes values some agents insist on having in there.
  40. When posting, `gnus-group-posting-charset-alist' is used to
  41. determine which charsets should not be encoded using the MIME
  42. encodings. For instance, some hierarchies discourage using
  43. quoted-printable header encoding.
  44. This variable is an alist of regexps and permitted unencoded charsets
  45. for posting. Each element of the alist has the form `('TEST HEADER
  46. BODY-LIST`)', where:
  47. TEST
  48. is either a regular expression matching the newsgroup header or a
  49. variable to query,
  50. HEADER
  51. is the charset which may be left unencoded in the header (`nil'
  52. means encode all charsets),
  53. BODY-LIST
  54. is a list of charsets which may be encoded using 8bit
  55. content-transfer encoding in the body, or one of the special
  56. values `nil' (always encode using quoted-printable) or `t' (always
  57. use 8bit).
  58. *Note Encoding Customization: (emacs-mime)Encoding Customization,
  59. for additional variables that control which MIME charsets are used when
  60. sending messages.
  61. Other charset tricks that may be useful, although not Gnus-specific:
  62. If there are several MIME charsets that encode the same Emacs
  63. charset, you can choose what charset to use by saying the following:
  64. (put-charset-property 'cyrillic-iso8859-5
  65. 'preferred-coding-system 'koi8-r)
  66. This means that Russian will be encoded using `koi8-r' instead of
  67. the default `iso-8859-5' MIME charset.
  68. If you want to read messages in `koi8-u', you can cheat and say
  69. (define-coding-system-alias 'koi8-u 'koi8-r)
  70. This will almost do the right thing.
  71. And finally, to read charsets like `windows-1251', you can say
  72. something like
  73. (codepage-setup 1251)
  74. (define-coding-system-alias 'windows-1251 'cp1251)
  75. 
  76. File: gnus, Node: Article Commands, Next: Summary Sorting, Prev: Charsets, Up: Summary Buffer
  77. 3.21 Article Commands
  78. =====================
  79. `A P'
  80. Generate and print a PostScript image of the article buffer
  81. (`gnus-summary-print-article'). `gnus-ps-print-hook' will be run
  82. just before printing the buffer. An alternative way to print
  83. article is to use Muttprint (*note Saving Articles::).
  84. `A C'
  85. If `<backend>-fetch-partial-articles' is non-`nil', Gnus will
  86. fetch partial articles, if the backend it fetches them from
  87. supports it. Currently only `nnimap' does. If you're looking at a
  88. partial article, and want to see the complete article instead, then
  89. the `A C' command (`gnus-summary-show-complete-article') will do
  90. so.
  91. 
  92. File: gnus, Node: Summary Sorting, Next: Finding the Parent, Prev: Article Commands, Up: Summary Buffer
  93. 3.22 Summary Sorting
  94. ====================
  95. You can have the summary buffer sorted in various ways, even though I
  96. can't really see why you'd want that.
  97. `C-c C-s C-n'
  98. Sort by article number (`gnus-summary-sort-by-number').
  99. `C-c C-s C-m C-n'
  100. Sort by most recent article number
  101. (`gnus-summary-sort-by-most-recent-number').
  102. `C-c C-s C-a'
  103. Sort by author (`gnus-summary-sort-by-author').
  104. `C-c C-s C-t'
  105. Sort by recipient (`gnus-summary-sort-by-recipient').
  106. `C-c C-s C-s'
  107. Sort by subject (`gnus-summary-sort-by-subject').
  108. `C-c C-s C-d'
  109. Sort by date (`gnus-summary-sort-by-date').
  110. `C-c C-s C-m C-d'
  111. Sort by most recent date (`gnus-summary-sort-by-most-recent-date').
  112. `C-c C-s C-l'
  113. Sort by lines (`gnus-summary-sort-by-lines').
  114. `C-c C-s C-c'
  115. Sort by article length (`gnus-summary-sort-by-chars').
  116. `C-c C-s C-i'
  117. Sort by score (`gnus-summary-sort-by-score').
  118. `C-c C-s C-r'
  119. Randomize (`gnus-summary-sort-by-random').
  120. `C-c C-s C-o'
  121. Sort using the default sorting method
  122. (`gnus-summary-sort-by-original').
  123. These functions will work both when you use threading and when you
  124. don't use threading. In the latter case, all summary lines will be
  125. sorted, line by line. In the former case, sorting will be done on a
  126. root-by-root basis, which might not be what you were looking for. To
  127. toggle whether to use threading, type `T T' (*note Thread Commands::).
  128. If a prefix argument if given, the sort order is reversed.
  129. 
  130. File: gnus, Node: Finding the Parent, Next: Alternative Approaches, Prev: Summary Sorting, Up: Summary Buffer
  131. 3.23 Finding the Parent
  132. =======================
  133. `^'
  134. If you'd like to read the parent of the current article, and it is
  135. not displayed in the summary buffer, you might still be able to.
  136. That is, if the current group is fetched by NNTP, the parent
  137. hasn't expired and the `References' in the current article are not
  138. mangled, you can just press `^' or `A r'
  139. (`gnus-summary-refer-parent-article'). If everything goes well,
  140. you'll get the parent. If the parent is already displayed in the
  141. summary buffer, point will just move to this article.
  142. If given a positive numerical prefix, fetch that many articles
  143. back into the ancestry. If given a negative numerical prefix,
  144. fetch just that ancestor. So if you say `3 ^', Gnus will fetch
  145. the parent, the grandparent and the grandgrandparent of the
  146. current article. If you say `-3 ^', Gnus will only fetch the
  147. grandgrandparent of the current article.
  148. `A R (Summary)'
  149. Fetch all articles mentioned in the `References' header of the
  150. article (`gnus-summary-refer-references').
  151. `A T (Summary)'
  152. Display the full thread where the current article appears
  153. (`gnus-summary-refer-thread'). This command has to fetch all the
  154. headers in the current group to work, so it usually takes a while.
  155. If you do it often, you may consider setting
  156. `gnus-fetch-old-headers' to `invisible' (*note Filling In
  157. Threads::). This won't have any visible effects normally, but
  158. it'll make this command work a whole lot faster. Of course, it'll
  159. make group entry somewhat slow.
  160. The `gnus-refer-thread-limit' variable says how many old (i. e.,
  161. articles before the first displayed in the current group) headers
  162. to fetch when doing this command. The default is 200. If `t', all
  163. the available headers will be fetched. This variable can be
  164. overridden by giving the `A T' command a numerical prefix.
  165. `M-^ (Summary)'
  166. You can also ask Gnus for an arbitrary article, no matter what
  167. group it belongs to. `M-^' (`gnus-summary-refer-article') will
  168. ask you for a `Message-ID', which is one of those long,
  169. hard-to-read thingies that look something like
  170. `<38o6up$6f2@hymir.ifi.uio.no>'. You have to get it all exactly
  171. right. No fuzzy searches, I'm afraid.
  172. Gnus looks for the `Message-ID' in the headers that have already
  173. been fetched, but also tries all the select methods specified by
  174. `gnus-refer-article-method' if it is not found.
  175. If the group you are reading is located on a back end that does not
  176. support fetching by `Message-ID' very well (like `nnspool'), you can
  177. set `gnus-refer-article-method' to an NNTP method. It would, perhaps,
  178. be best if the NNTP server you consult is the one updating the spool
  179. you are reading from, but that's not really necessary.
  180. It can also be a list of select methods, as well as the special
  181. symbol `current', which means to use the current select method. If it
  182. is a list, Gnus will try all the methods in the list until it finds a
  183. match.
  184. Here's an example setting that will first try the current method, and
  185. then ask Google if that fails:
  186. (setq gnus-refer-article-method
  187. '(current
  188. (nnweb "google" (nnweb-type google))))
  189. Most of the mail back ends support fetching by `Message-ID', but do
  190. not do a particularly excellent job at it. That is, `nnmbox',
  191. `nnbabyl', `nnmaildir', `nnml', are able to locate articles from any
  192. groups, while `nnfolder', and `nnimap' are only able to locate articles
  193. that have been posted to the current group. `nnmh' does not support
  194. this at all.
  195. Fortunately, the special `nnregistry' back end is able to locate
  196. articles in any groups, regardless of their back end (*note fetching by
  197. `Message-ID' using the registry: Registry Article Refer Method.).
  198. 
  199. File: gnus, Node: Alternative Approaches, Next: Tree Display, Prev: Finding the Parent, Up: Summary Buffer
  200. 3.24 Alternative Approaches
  201. ===========================
  202. Different people like to read news using different methods. This being
  203. Gnus, we offer a small selection of minor modes for the summary buffers.
  204. * Menu:
  205. * Pick and Read:: First mark articles and then read them.
  206. * Binary Groups:: Auto-decode all articles.
  207. 
  208. File: gnus, Node: Pick and Read, Next: Binary Groups, Up: Alternative Approaches
  209. 3.24.1 Pick and Read
  210. --------------------
  211. Some newsreaders (like `nn' and, uhm, `Netnews' on VM/CMS) use a
  212. two-phased reading interface. The user first marks in a summary buffer
  213. the articles she wants to read. Then she starts reading the articles
  214. with just an article buffer displayed.
  215. Gnus provides a summary buffer minor mode that allows
  216. this--`gnus-pick-mode'. This basically means that a few process mark
  217. commands become one-keystroke commands to allow easy marking, and it
  218. provides one additional command for switching to the summary buffer.
  219. Here are the available keystrokes when using pick mode:
  220. `.'
  221. Pick the article or thread on the current line
  222. (`gnus-pick-article-or-thread'). If the variable
  223. `gnus-thread-hide-subtree' is true, then this key selects the
  224. entire thread when used at the first article of the thread.
  225. Otherwise, it selects just the article. If given a numerical
  226. prefix, go to that thread or article and pick it. (The line
  227. number is normally displayed at the beginning of the summary pick
  228. lines.)
  229. `SPACE'
  230. Scroll the summary buffer up one page (`gnus-pick-next-page'). If
  231. at the end of the buffer, start reading the picked articles.
  232. `u'
  233. Unpick the thread or article
  234. (`gnus-pick-unmark-article-or-thread'). If the variable
  235. `gnus-thread-hide-subtree' is true, then this key unpicks the
  236. thread if used at the first article of the thread. Otherwise it
  237. unpicks just the article. You can give this key a numerical
  238. prefix to unpick the thread or article at that line.
  239. `RET'
  240. Start reading the picked articles (`gnus-pick-start-reading'). If
  241. given a prefix, mark all unpicked articles as read first. If
  242. `gnus-pick-display-summary' is non-`nil', the summary buffer will
  243. still be visible when you are reading.
  244. All the normal summary mode commands are still available in the
  245. pick-mode, with the exception of `u'. However `!' is available which
  246. is mapped to the same function `gnus-summary-tick-article-forward'.
  247. If this sounds like a good idea to you, you could say:
  248. (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
  249. `gnus-pick-mode-hook' is run in pick minor mode buffers.
  250. If `gnus-mark-unpicked-articles-as-read' is non-`nil', mark all
  251. unpicked articles as read. The default is `nil'.
  252. The summary line format in pick mode is slightly different from the
  253. standard format. At the beginning of each line the line number is
  254. displayed. The pick mode line format is controlled by the
  255. `gnus-summary-pick-line-format' variable (*note Formatting
  256. Variables::). It accepts the same format specs that
  257. `gnus-summary-line-format' does (*note Summary Buffer Lines::).
  258. 
  259. File: gnus, Node: Binary Groups, Prev: Pick and Read, Up: Alternative Approaches
  260. 3.24.2 Binary Groups
  261. --------------------
  262. If you spend much time in binary groups, you may grow tired of hitting
  263. `X u', `n', `RET' all the time. `M-x gnus-binary-mode' is a minor mode
  264. for summary buffers that makes all ordinary Gnus article selection
  265. functions uudecode series of articles and display the result instead of
  266. just displaying the articles the normal way.
  267. The only way, in fact, to see the actual articles is the `g'
  268. command, when you have turned on this mode (`gnus-binary-show-article').
  269. `gnus-binary-mode-hook' is called in binary minor mode buffers.
  270. 
  271. File: gnus, Node: Tree Display, Next: Mail Group Commands, Prev: Alternative Approaches, Up: Summary Buffer
  272. 3.25 Tree Display
  273. =================
  274. If you don't like the normal Gnus summary display, you might try setting
  275. `gnus-use-trees' to `t'. This will create (by default) an additional
  276. "tree buffer". You can execute all summary mode commands in the tree
  277. buffer.
  278. There are a few variables to customize the tree display, of course:
  279. `gnus-tree-mode-hook'
  280. A hook called in all tree mode buffers.
  281. `gnus-tree-mode-line-format'
  282. A format string for the mode bar in the tree mode buffers (*note
  283. Mode Line Formatting::). The default is `Gnus: %%b %S %Z'. For a
  284. list of valid specs, *note Summary Buffer Mode Line::.
  285. `gnus-selected-tree-face'
  286. Face used for highlighting the selected article in the tree
  287. buffer. The default is `modeline'.
  288. `gnus-tree-line-format'
  289. A format string for the tree nodes. The name is a bit of a
  290. misnomer, though--it doesn't define a line, but just the node.
  291. The default value is `%(%[%3,3n%]%)', which displays the first
  292. three characters of the name of the poster. It is vital that all
  293. nodes are of the same length, so you _must_ use `%4,4n'-like
  294. specifiers.
  295. Valid specs are:
  296. `n'
  297. The name of the poster.
  298. `f'
  299. The `From' header.
  300. `N'
  301. The number of the article.
  302. `['
  303. The opening bracket.
  304. `]'
  305. The closing bracket.
  306. `s'
  307. The subject.
  308. *Note Formatting Variables::.
  309. Variables related to the display are:
  310. `gnus-tree-brackets'
  311. This is used for differentiating between "real" articles and
  312. "sparse" articles. The format is
  313. ((REAL-OPEN . REAL-CLOSE)
  314. (SPARSE-OPEN . SPARSE-CLOSE)
  315. (DUMMY-OPEN . DUMMY-CLOSE))
  316. and the default is `((?[ . ?]) (?( . ?)) (?{ . ?}) (?< .
  317. ?>))'.
  318. `gnus-tree-parent-child-edges'
  319. This is a list that contains the characters used for
  320. connecting parent nodes to their children. The default is
  321. `(?- ?\\ ?|)'.
  322. `gnus-tree-minimize-window'
  323. If this variable is non-`nil', Gnus will try to keep the tree
  324. buffer as small as possible to allow more room for the other Gnus
  325. windows. If this variable is a number, the tree buffer will never
  326. be higher than that number. The default is `t'. Note that if you
  327. have several windows displayed side-by-side in a frame and the tree
  328. buffer is one of these, minimizing the tree window will also
  329. resize all other windows displayed next to it.
  330. You may also wish to add the following hook to keep the window
  331. minimized at all times:
  332. (add-hook 'gnus-configure-windows-hook
  333. 'gnus-tree-perhaps-minimize)
  334. `gnus-generate-tree-function'
  335. The function that actually generates the thread tree. Two
  336. predefined functions are available:
  337. `gnus-generate-horizontal-tree' and `gnus-generate-vertical-tree'
  338. (which is the default).
  339. Here's an example from a horizontal tree buffer:
  340. {***}-(***)-[odd]-[Gun]
  341. | \[Jan]
  342. | \[odd]-[Eri]
  343. | \(***)-[Eri]
  344. | \[odd]-[Paa]
  345. \[Bjo]
  346. \[Gun]
  347. \[Gun]-[Jor]
  348. Here's the same thread displayed in a vertical tree buffer:
  349. {***}
  350. |--------------------------\-----\-----\
  351. (***) [Bjo] [Gun] [Gun]
  352. |--\-----\-----\ |
  353. [odd] [Jan] [odd] (***) [Jor]
  354. | | |--\
  355. [Gun] [Eri] [Eri] [odd]
  356. |
  357. [Paa]
  358. If you're using horizontal trees, it might be nice to display the
  359. trees side-by-side with the summary buffer. You could add something
  360. like the following to your `~/.gnus.el' file:
  361. (setq gnus-use-trees t
  362. gnus-generate-tree-function 'gnus-generate-horizontal-tree
  363. gnus-tree-minimize-window nil)
  364. (gnus-add-configuration
  365. '(article
  366. (vertical 1.0
  367. (horizontal 0.25
  368. (summary 0.75 point)
  369. (tree 1.0))
  370. (article 1.0))))
  371. *Note Window Layout::.
  372. 
  373. File: gnus, Node: Mail Group Commands, Next: Various Summary Stuff, Prev: Tree Display, Up: Summary Buffer
  374. 3.26 Mail Group Commands
  375. ========================
  376. Some commands only make sense in mail groups. If these commands are
  377. invalid in the current group, they will raise a hell and let you know.
  378. All these commands (except the expiry and edit commands) use the
  379. process/prefix convention (*note Process/Prefix::).
  380. `B e'
  381. Run all expirable articles in the current group through the expiry
  382. process (`gnus-summary-expire-articles'). That is, delete all
  383. expirable articles in the group that have been around for a while.
  384. (*note Expiring Mail::).
  385. `B C-M-e'
  386. Delete all the expirable articles in the group
  387. (`gnus-summary-expire-articles-now'). This means that *all*
  388. articles eligible for expiry in the current group will disappear
  389. forever into that big `/dev/null' in the sky.
  390. `B DEL'
  391. Delete the mail article. This is "delete" as in "delete it from
  392. your disk forever and ever, never to return again." Use with
  393. caution. (`gnus-summary-delete-article').
  394. `B m'
  395. Move the article from one mail group to another
  396. (`gnus-summary-move-article'). Marks will be preserved if
  397. `gnus-preserve-marks' is non-`nil' (which is the default).
  398. `B c'
  399. Copy the article from one group (mail group or not) to a mail group
  400. (`gnus-summary-copy-article'). Marks will be preserved if
  401. `gnus-preserve-marks' is non-`nil' (which is the default).
  402. `B B'
  403. Crosspost the current article to some other group
  404. (`gnus-summary-crosspost-article'). This will create a new copy of
  405. the article in the other group, and the Xref headers of the
  406. article will be properly updated.
  407. `B i'
  408. Import an arbitrary file into the current mail newsgroup
  409. (`gnus-summary-import-article'). You will be prompted for a file
  410. name, a `From' header and a `Subject' header.
  411. `B I'
  412. Create an empty article in the current mail newsgroups
  413. (`gnus-summary-create-article'). You will be prompted for a
  414. `From' header and a `Subject' header.
  415. `B r'
  416. Respool the mail article (`gnus-summary-respool-article').
  417. `gnus-summary-respool-default-method' will be used as the default
  418. select method when respooling. This variable is `nil' by default,
  419. which means that the current group select method will be used
  420. instead. Marks will be preserved if `gnus-preserve-marks' is
  421. non-`nil' (which is the default).
  422. `B w'
  423. `e'
  424. Edit the current article (`gnus-summary-edit-article'). To finish
  425. editing and make the changes permanent, type `C-c C-c'
  426. (`gnus-summary-edit-article-done'). If you give a prefix to the
  427. `C-c C-c' command, Gnus won't re-highlight the article.
  428. `B q'
  429. If you want to re-spool an article, you might be curious as to
  430. what group the article will end up in before you do the
  431. re-spooling. This command will tell you
  432. (`gnus-summary-respool-query').
  433. `B t'
  434. Similarly, this command will display all fancy splitting patterns
  435. used when respooling, if any (`gnus-summary-respool-trace').
  436. `B p'
  437. Some people have a tendency to send you "courtesy" copies when they
  438. follow up to articles you have posted. These usually have a
  439. `Newsgroups' header in them, but not always. This command
  440. (`gnus-summary-article-posted-p') will try to fetch the current
  441. article from your news server (or rather, from
  442. `gnus-refer-article-method' or `gnus-select-method') and will
  443. report back whether it found the article or not. Even if it says
  444. that it didn't find the article, it may have been posted
  445. anyway--mail propagation is much faster than news propagation, and
  446. the news copy may just not have arrived yet.
  447. `K E'
  448. Encrypt the body of an article (`gnus-article-encrypt-body'). The
  449. body is encrypted with the encryption protocol specified by the
  450. variable `gnus-article-encrypt-protocol'.
  451. If you move (or copy) articles regularly, you might wish to have Gnus
  452. suggest where to put the articles. `gnus-move-split-methods' is a
  453. variable that uses the same syntax as `gnus-split-methods' (*note
  454. Saving Articles::). You may customize that variable to create
  455. suggestions you find reasonable. (Note that `gnus-move-split-methods'
  456. uses group names where `gnus-split-methods' uses file names.)
  457. (setq gnus-move-split-methods
  458. '(("^From:.*Lars Magne" "nnml:junk")
  459. ("^Subject:.*gnus" "nnfolder:important")
  460. (".*" "nnml:misc")))
  461. 
  462. File: gnus, Node: Various Summary Stuff, Next: Exiting the Summary Buffer, Prev: Mail Group Commands, Up: Summary Buffer
  463. 3.27 Various Summary Stuff
  464. ==========================
  465. * Menu:
  466. * Summary Group Information:: Information oriented commands.
  467. * Searching for Articles:: Multiple article commands.
  468. * Summary Generation Commands::
  469. * Really Various Summary Commands:: Those pesky non-conformant commands.
  470. `gnus-summary-display-while-building'
  471. If non-`nil', show and update the summary buffer as it's being
  472. built. If `t', update the buffer after every line is inserted.
  473. If the value is an integer, N, update the display every N lines.
  474. The default is `nil'.
  475. `gnus-summary-display-arrow'
  476. If non-`nil', display an arrow in the fringe to indicate the
  477. current article.
  478. `gnus-summary-mode-hook'
  479. This hook is called when creating a summary mode buffer.
  480. `gnus-summary-generate-hook'
  481. This is called as the last thing before doing the threading and the
  482. generation of the summary buffer. It's quite convenient for
  483. customizing the threading variables based on what data the
  484. newsgroup has. This hook is called from the summary buffer after
  485. most summary buffer variables have been set.
  486. `gnus-summary-prepare-hook'
  487. It is called after the summary buffer has been generated. You
  488. might use it to, for instance, highlight lines or modify the look
  489. of the buffer in some other ungodly manner. I don't care.
  490. `gnus-summary-prepared-hook'
  491. A hook called as the very last thing after the summary buffer has
  492. been generated.
  493. `gnus-summary-ignore-duplicates'
  494. When Gnus discovers two articles that have the same `Message-ID',
  495. it has to do something drastic. No articles are allowed to have
  496. the same `Message-ID', but this may happen when reading mail from
  497. some sources. Gnus allows you to customize what happens with this
  498. variable. If it is `nil' (which is the default), Gnus will rename
  499. the `Message-ID' (for display purposes only) and display the
  500. article as any other article. If this variable is `t', it won't
  501. display the article--it'll be as if it never existed.
  502. `gnus-alter-articles-to-read-function'
  503. This function, which takes two parameters (the group name and the
  504. list of articles to be selected), is called to allow the user to
  505. alter the list of articles to be selected.
  506. For instance, the following function adds the list of cached
  507. articles to the list in one particular group:
  508. (defun my-add-cached-articles (group articles)
  509. (if (string= group "some.group")
  510. (append gnus-newsgroup-cached articles)
  511. articles))
  512. `gnus-newsgroup-variables'
  513. A list of newsgroup (summary buffer) local variables, or cons of
  514. variables and their default expressions to be evalled (when the
  515. default values are not `nil'), that should be made global while
  516. the summary buffer is active.
  517. Note: The default expressions will be evaluated (using function
  518. `eval') before assignment to the local variable rather than just
  519. assigned to it. If the default expression is the symbol `global',
  520. that symbol will not be evaluated but the global value of the local
  521. variable will be used instead.
  522. These variables can be used to set variables in the group
  523. parameters while still allowing them to affect operations done in
  524. other buffers. For example:
  525. (setq gnus-newsgroup-variables
  526. '(message-use-followup-to
  527. (gnus-visible-headers .
  528. "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:")))
  529. Also *note Group Parameters::.
  530. `gnus-propagate-marks'
  531. If non-`nil', propagate marks to the backends for possible
  532. storing. *Note NNTP marks::, and friends, for a more fine-grained
  533. sieve.
  534. 
  535. File: gnus, Node: Summary Group Information, Next: Searching for Articles, Up: Various Summary Stuff
  536. 3.27.1 Summary Group Information
  537. --------------------------------
  538. `H d'
  539. Give a brief description of the current group
  540. (`gnus-summary-describe-group'). If given a prefix, force
  541. rereading the description from the server.
  542. `H h'
  543. Give an extremely brief description of the most important summary
  544. keystrokes (`gnus-summary-describe-briefly').
  545. `H i'
  546. Go to the Gnus info node (`gnus-info-find-node').
  547. 
  548. File: gnus, Node: Searching for Articles, Next: Summary Generation Commands, Prev: Summary Group Information, Up: Various Summary Stuff
  549. 3.27.2 Searching for Articles
  550. -----------------------------
  551. `M-s'
  552. Search through all subsequent (raw) articles for a regexp
  553. (`gnus-summary-search-article-forward').
  554. `M-r'
  555. Search through all previous (raw) articles for a regexp
  556. (`gnus-summary-search-article-backward').
  557. `M-S'
  558. Repeat the previous search forwards
  559. (`gnus-summary-repeat-search-article-forward').
  560. `M-R'
  561. Repeat the previous search backwards
  562. (`gnus-summary-repeat-search-article-backward').
  563. `&'
  564. This command will prompt you for a header, a regular expression to
  565. match on this field, and a command to be executed if the match is
  566. made (`gnus-summary-execute-command'). If the header is an empty
  567. string, the match is done on the entire article. If given a
  568. prefix, search backward instead.
  569. For instance, `& RET some.*string RET #' will put the process mark
  570. on all articles that have heads or bodies that match
  571. `some.*string'.
  572. `M-&'
  573. Perform any operation on all articles that have been marked with
  574. the process mark (`gnus-summary-universal-argument').
  575. 
  576. File: gnus, Node: Summary Generation Commands, Next: Really Various Summary Commands, Prev: Searching for Articles, Up: Various Summary Stuff
  577. 3.27.3 Summary Generation Commands
  578. ----------------------------------
  579. `Y g'
  580. Regenerate the current summary buffer (`gnus-summary-prepare').
  581. `Y c'
  582. Pull all cached articles (for the current group) into the summary
  583. buffer (`gnus-summary-insert-cached-articles').
  584. `Y d'
  585. Pull all dormant articles (for the current group) into the summary
  586. buffer (`gnus-summary-insert-dormant-articles').
  587. `Y t'
  588. Pull all ticked articles (for the current group) into the summary
  589. buffer (`gnus-summary-insert-ticked-articles').
  590. 
  591. File: gnus, Node: Really Various Summary Commands, Prev: Summary Generation Commands, Up: Various Summary Stuff
  592. 3.27.4 Really Various Summary Commands
  593. --------------------------------------
  594. `A D'
  595. `C-d'
  596. If the current article is a collection of other articles (for
  597. instance, a digest), you might use this command to enter a group
  598. based on the that article (`gnus-summary-enter-digest-group').
  599. Gnus will try to guess what article type is currently displayed
  600. unless you give a prefix to this command, which forces a "digest"
  601. interpretation. Basically, whenever you see a message that is a
  602. collection of other messages of some format, you `C-d' and read
  603. these messages in a more convenient fashion.
  604. The variable `gnus-auto-select-on-ephemeral-exit' controls what
  605. article should be selected after exiting a digest group. Valid
  606. values include:
  607. `next'
  608. Select the next article.
  609. `next-unread'
  610. Select the next unread article.
  611. `next-noselect'
  612. Move the cursor to the next article. This is the default.
  613. `next-unread-noselect'
  614. Move the cursor to the next unread article.
  615. If it has any other value or there is no next (unread) article, the
  616. article selected before entering to the digest group will appear.
  617. `C-M-d'
  618. This command is very similar to the one above, but lets you gather
  619. several documents into one biiig group
  620. (`gnus-summary-read-document'). It does this by opening several
  621. `nndoc' groups for each document, and then opening an `nnvirtual'
  622. group on top of these `nndoc' groups. This command understands
  623. the process/prefix convention (*note Process/Prefix::).
  624. `C-t'
  625. Toggle truncation of summary lines
  626. (`gnus-summary-toggle-truncation'). This will probably confuse the
  627. line centering function in the summary buffer, so it's not a good
  628. idea to have truncation switched off while reading articles.
  629. `='
  630. Expand the summary buffer window (`gnus-summary-expand-window').
  631. If given a prefix, force an `article' window configuration.
  632. `C-M-e'
  633. Edit the group parameters (*note Group Parameters::) of the current
  634. group (`gnus-summary-edit-parameters').
  635. `C-M-a'
  636. Customize the group parameters (*note Group Parameters::) of the
  637. current group (`gnus-summary-customize-parameters').
  638. 
  639. File: gnus, Node: Exiting the Summary Buffer, Next: Crosspost Handling, Prev: Various Summary Stuff, Up: Summary Buffer
  640. 3.28 Exiting the Summary Buffer
  641. ===============================
  642. Exiting from the summary buffer will normally update all info on the
  643. group and return you to the group buffer.
  644. `Z Z'
  645. `Z Q'
  646. `q'
  647. Exit the current group and update all information on the group
  648. (`gnus-summary-exit'). `gnus-summary-prepare-exit-hook' is called
  649. before doing much of the exiting, which calls
  650. `gnus-summary-expire-articles' by default.
  651. `gnus-summary-exit-hook' is called after finishing the exit
  652. process. `gnus-group-no-more-groups-hook' is run when returning to
  653. group mode having no more (unread) groups.
  654. `Z E'
  655. `Q'
  656. Exit the current group without updating any information on the
  657. group (`gnus-summary-exit-no-update').
  658. `Z c'
  659. `c'
  660. Mark all unticked articles in the group as read and then exit
  661. (`gnus-summary-catchup-and-exit').
  662. `Z C'
  663. Mark all articles, even the ticked ones, as read and then exit
  664. (`gnus-summary-catchup-all-and-exit').
  665. `Z n'
  666. Mark all articles as read and go to the next group
  667. (`gnus-summary-catchup-and-goto-next-group').
  668. `Z p'
  669. Mark all articles as read and go to the previous group
  670. (`gnus-summary-catchup-and-goto-prev-group').
  671. `Z R'
  672. `C-x C-s'
  673. Exit this group, and then enter it again
  674. (`gnus-summary-reselect-current-group'). If given a prefix, select
  675. all articles, both read and unread.
  676. `Z G'
  677. `M-g'
  678. Exit the group, check for new articles in the group, and select the
  679. group (`gnus-summary-rescan-group'). If given a prefix, select all
  680. articles, both read and unread.
  681. `Z N'
  682. Exit the group and go to the next group
  683. (`gnus-summary-next-group').
  684. `Z P'
  685. Exit the group and go to the previous group
  686. (`gnus-summary-prev-group').
  687. `Z s'
  688. Save the current number of read/marked articles in the dribble
  689. buffer and then save the dribble buffer
  690. (`gnus-summary-save-newsrc'). If given a prefix, also save the
  691. `.newsrc' file(s). Using this command will make exit without
  692. updating (the `Q' command) worthless.
  693. `gnus-exit-group-hook' is called when you exit the current group
  694. with an "updating" exit. For instance `Q'
  695. (`gnus-summary-exit-no-update') does not call this hook.
  696. If you're in the habit of exiting groups, and then changing your mind
  697. about it, you might set `gnus-kill-summary-on-exit' to `nil'. If you
  698. do that, Gnus won't kill the summary buffer when you exit it. (Quelle
  699. surprise!) Instead it will change the name of the buffer to something
  700. like `*Dead Summary ... *' and install a minor mode called
  701. `gnus-dead-summary-mode'. Now, if you switch back to this buffer,
  702. you'll find that all keys are mapped to a function called
  703. `gnus-summary-wake-up-the-dead'. So tapping any keys in a dead summary
  704. buffer will result in a live, normal summary buffer.
  705. There will never be more than one dead summary buffer at any one
  706. time.
  707. The data on the current group will be updated (which articles you
  708. have read, which articles you have replied to, etc.) when you exit the
  709. summary buffer. If the `gnus-use-cross-reference' variable is `t'
  710. (which is the default), articles that are cross-referenced to this
  711. group and are marked as read, will also be marked as read in the other
  712. subscribed groups they were cross-posted to. If this variable is
  713. neither `nil' nor `t', the article will be marked as read in both
  714. subscribed and unsubscribed groups (*note Crosspost Handling::).
  715. 
  716. File: gnus, Node: Crosspost Handling, Next: Duplicate Suppression, Prev: Exiting the Summary Buffer, Up: Summary Buffer
  717. 3.29 Crosspost Handling
  718. =======================
  719. Marking cross-posted articles as read ensures that you'll never have to
  720. read the same article more than once. Unless, of course, somebody has
  721. posted it to several groups separately. Posting the same article to
  722. several groups (not cross-posting) is called "spamming", and you are by
  723. law required to send nasty-grams to anyone who perpetrates such a
  724. heinous crime.
  725. Remember: Cross-posting is kinda ok, but posting the same article
  726. separately to several groups is not. Massive cross-posting (aka.
  727. "velveeta") is to be avoided at all costs, and you can even use the
  728. `gnus-summary-mail-crosspost-complaint' command to complain about
  729. excessive crossposting (*note Summary Mail Commands::).
  730. One thing that may cause Gnus to not do the cross-posting thing
  731. correctly is if you use an NNTP server that supports XOVER (which is
  732. very nice, because it speeds things up considerably) which does not
  733. include the `Xref' header in its NOV lines. This is Evil, but all too
  734. common, alas, alack. Gnus tries to Do The Right Thing even with XOVER
  735. by registering the `Xref' lines of all articles you actually read, but
  736. if you kill the articles, or just mark them as read without reading
  737. them, Gnus will not get a chance to snoop the `Xref' lines out of these
  738. articles, and will be unable to use the cross reference mechanism.
  739. To check whether your NNTP server includes the `Xref' header in its
  740. overview files, try `telnet your.nntp.server nntp', `MODE READER' on
  741. `inn' servers, and then say `LIST overview.fmt'. This may not work,
  742. but if it does, and the last line you get does not read `Xref:full',
  743. then you should shout and whine at your news admin until she includes
  744. the `Xref' header in the overview files.
  745. If you want Gnus to get the `Xref's right all the time, you have to
  746. set `nntp-nov-is-evil' to `t', which slows things down considerably.
  747. Also *note Slow/Expensive Connection::.
  748. C'est la vie.
  749. For an alternative approach, *note Duplicate Suppression::.
  750. 
  751. File: gnus, Node: Duplicate Suppression, Next: Security, Prev: Crosspost Handling, Up: Summary Buffer
  752. 3.30 Duplicate Suppression
  753. ==========================
  754. By default, Gnus tries to make sure that you don't have to read the same
  755. article more than once by utilizing the crossposting mechanism (*note
  756. Crosspost Handling::). However, that simple and efficient approach may
  757. not work satisfactory for some users for various reasons.
  758. 1. The NNTP server may fail to generate the `Xref' header. This is
  759. evil and not very common.
  760. 2. The NNTP server may fail to include the `Xref' header in the
  761. `.overview' data bases. This is evil and all too common, alas.
  762. 3. You may be reading the same group (or several related groups) from
  763. different NNTP servers.
  764. 4. You may be getting mail that duplicates articles posted to groups.
  765. I'm sure there are other situations where `Xref' handling fails as
  766. well, but these four are the most common situations.
  767. If, and only if, `Xref' handling fails for you, then you may
  768. consider switching on "duplicate suppression". If you do so, Gnus will
  769. remember the `Message-ID's of all articles you have read or otherwise
  770. marked as read, and then, as if by magic, mark them as read all
  771. subsequent times you see them--in _all_ groups. Using this mechanism
  772. is quite likely to be somewhat inefficient, but not overly so. It's
  773. certainly preferable to reading the same articles more than once.
  774. Duplicate suppression is not a very subtle instrument. It's more
  775. like a sledge hammer than anything else. It works in a very simple
  776. fashion--if you have marked an article as read, it adds this Message-ID
  777. to a cache. The next time it sees this Message-ID, it will mark the
  778. article as read with the `M' mark. It doesn't care what group it saw
  779. the article in.
  780. `gnus-suppress-duplicates'
  781. If non-`nil', suppress duplicates.
  782. `gnus-save-duplicate-list'
  783. If non-`nil', save the list of duplicates to a file. This will
  784. make startup and shutdown take longer, so the default is `nil'.
  785. However, this means that only duplicate articles read in a single
  786. Gnus session are suppressed.
  787. `gnus-duplicate-list-length'
  788. This variable says how many `Message-ID's to keep in the duplicate
  789. suppression list. The default is 10000.
  790. `gnus-duplicate-file'
  791. The name of the file to store the duplicate suppression list in.
  792. The default is `~/News/suppression'.
  793. If you have a tendency to stop and start Gnus often, setting
  794. `gnus-save-duplicate-list' to `t' is probably a good idea. If you
  795. leave Gnus running for weeks on end, you may have it `nil'. On the
  796. other hand, saving the list makes startup and shutdown much slower, so
  797. that means that if you stop and start Gnus often, you should set
  798. `gnus-save-duplicate-list' to `nil'. Uhm. I'll leave this up to you
  799. to figure out, I think.
  800. 
  801. File: gnus, Node: Security, Next: Mailing List, Prev: Duplicate Suppression, Up: Summary Buffer
  802. 3.31 Security
  803. =============
  804. Gnus is able to verify signed messages or decrypt encrypted messages.
  805. The formats that are supported are PGP, PGP/MIME and S/MIME, however
  806. you need some external programs to get things to work:
  807. 1. To handle PGP and PGP/MIME messages, you have to install an
  808. OpenPGP implementation such as GnuPG. The Lisp interface to GnuPG
  809. included with Emacs is called EasyPG (*note EasyPG: (epa)Top.),
  810. but PGG (*note PGG: (pgg)Top.), and Mailcrypt are also supported.
  811. 2. To handle S/MIME message, you need to install OpenSSL. OpenSSL
  812. 0.9.6 or newer is recommended.
  813. The variables that control security functionality on
  814. reading/composing messages include:
  815. `mm-verify-option'
  816. Option of verifying signed parts. `never', not verify; `always',
  817. always verify; `known', only verify known protocols. Otherwise,
  818. ask user.
  819. `mm-decrypt-option'
  820. Option of decrypting encrypted parts. `never', no decryption;
  821. `always', always decrypt; `known', only decrypt known protocols.
  822. Otherwise, ask user.
  823. `mm-sign-option'
  824. Option of creating signed parts. `nil', use default signing keys;
  825. `guided', ask user to select signing keys from the menu.
  826. `mm-encrypt-option'
  827. Option of creating encrypted parts. `nil', use the first
  828. public-key matching the `From:' header as the recipient; `guided',
  829. ask user to select recipient keys from the menu.
  830. `mml1991-use'
  831. Symbol indicating elisp interface to OpenPGP implementation for
  832. PGP messages. The default is `epg', but `pgg', and `mailcrypt'
  833. are also supported although deprecated. By default, Gnus uses the
  834. first available interface in this order.
  835. `mml2015-use'
  836. Symbol indicating elisp interface to OpenPGP implementation for
  837. PGP/MIME messages. The default is `epg', but `pgg', and
  838. `mailcrypt' are also supported although deprecated. By default,
  839. Gnus uses the first available interface in this order.
  840. By default the buttons that display security information are not
  841. shown, because they clutter reading the actual e-mail. You can type `K
  842. b' manually to display the information. Use the
  843. `gnus-buttonized-mime-types' and `gnus-unbuttonized-mime-types'
  844. variables to control this permanently. *note MIME Commands:: for
  845. further details, and hints on how to customize these variables to
  846. always display security information.
  847. Snarfing OpenPGP keys (i.e., importing keys from articles into your
  848. key ring) is not supported explicitly through a menu item or command,
  849. rather Gnus do detect and label keys as `application/pgp-keys',
  850. allowing you to specify whatever action you think is appropriate
  851. through the usual MIME infrastructure. You can use a `~/.mailcap'
  852. entry (*note mailcap: (emacs-mime)mailcap.) such as the following to
  853. import keys using GNU Privacy Guard when you click on the MIME button
  854. (*note Using MIME::).
  855. application/pgp-keys; gpg --import --interactive --verbose; needsterminal
  856. This happens to also be the default action defined in
  857. `mailcap-mime-data'.
  858. More information on how to set things for sending outgoing signed and
  859. encrypted messages up can be found in the message manual (*note
  860. Security: (message)Security.).
  861. 
  862. File: gnus, Node: Mailing List, Prev: Security, Up: Summary Buffer
  863. 3.32 Mailing List
  864. =================
  865. Gnus understands some mailing list fields of RFC 2369. To enable it,
  866. add a `to-list' group parameter (*note Group Parameters::), possibly
  867. using `A M' (`gnus-mailing-list-insinuate') in the summary buffer.
  868. That enables the following commands to the summary buffer:
  869. `C-c C-n h'
  870. Send a message to fetch mailing list help, if List-Help field
  871. exists.
  872. `C-c C-n s'
  873. Send a message to subscribe the mailing list, if List-Subscribe
  874. field exists.
  875. `C-c C-n u'
  876. Send a message to unsubscribe the mailing list, if List-Unsubscribe
  877. field exists.
  878. `C-c C-n p'
  879. Post to the mailing list, if List-Post field exists.
  880. `C-c C-n o'
  881. Send a message to the mailing list owner, if List-Owner field
  882. exists.
  883. `C-c C-n a'
  884. Browse the mailing list archive, if List-Archive field exists.
  885. 
  886. File: gnus, Node: Article Buffer, Next: Composing Messages, Prev: Summary Buffer, Up: Top
  887. 4 Article Buffer
  888. ****************
  889. The articles are displayed in the article buffer, of which there is only
  890. one. All the summary buffers share the same article buffer unless you
  891. tell Gnus otherwise.
  892. * Menu:
  893. * Hiding Headers:: Deciding what headers should be displayed.
  894. * Using MIME:: Pushing articles through MIME before reading them.
  895. * HTML:: Reading HTML messages.
  896. * Customizing Articles:: Tailoring the look of the articles.
  897. * Article Keymap:: Keystrokes available in the article buffer.
  898. * Misc Article:: Other stuff.
  899. 
  900. File: gnus, Node: Hiding Headers, Next: Using MIME, Up: Article Buffer
  901. 4.1 Hiding Headers
  902. ==================
  903. The top section of each article is the "head". (The rest is the
  904. "body", but you may have guessed that already.)
  905. There is a lot of useful information in the head: the name of the
  906. person who wrote the article, the date it was written and the subject
  907. of the article. That's well and nice, but there's also lots of
  908. information most people do not want to see--what systems the article
  909. has passed through before reaching you, the `Message-ID', the
  910. `References', etc. ad nauseam--and you'll probably want to get rid of
  911. some of those lines. If you want to keep all those lines in the
  912. article buffer, you can set `gnus-show-all-headers' to `t'.
  913. Gnus provides you with two variables for sifting headers:
  914. `gnus-visible-headers'
  915. If this variable is non-`nil', it should be a regular expression
  916. that says what headers you wish to keep in the article buffer. All
  917. headers that do not match this variable will be hidden.
  918. For instance, if you only want to see the name of the person who
  919. wrote the article and the subject, you'd say:
  920. (setq gnus-visible-headers "^From:\\|^Subject:")
  921. This variable can also be a list of regexps to match headers to
  922. remain visible.
  923. `gnus-ignored-headers'
  924. This variable is the reverse of `gnus-visible-headers'. If this
  925. variable is set (and `gnus-visible-headers' is `nil'), it should
  926. be a regular expression that matches all lines that you want to
  927. hide. All lines that do not match this variable will remain
  928. visible.
  929. For instance, if you just want to get rid of the `References' line
  930. and the `Xref' line, you might say:
  931. (setq gnus-ignored-headers "^References:\\|^Xref:")
  932. This variable can also be a list of regexps to match headers to be
  933. removed.
  934. Note that if `gnus-visible-headers' is non-`nil', this variable
  935. will have no effect.
  936. Gnus can also sort the headers for you. (It does this by default.)
  937. You can control the sorting by setting the `gnus-sorted-header-list'
  938. variable. It is a list of regular expressions that says in what order
  939. the headers are to be displayed.
  940. For instance, if you want the name of the author of the article
  941. first, and then the subject, you might say something like:
  942. (setq gnus-sorted-header-list '("^From:" "^Subject:"))
  943. Any headers that are to remain visible, but are not listed in this
  944. variable, will be displayed in random order after all the headers
  945. listed in this variable.
  946. You can hide further boring headers by setting
  947. `gnus-treat-hide-boring-headers' to `head'. What this function does
  948. depends on the `gnus-boring-article-headers' variable. It's a list,
  949. but this list doesn't actually contain header names. Instead it lists
  950. various "boring conditions" that Gnus can check and remove from sight.
  951. These conditions are:
  952. `empty'
  953. Remove all empty headers.
  954. `followup-to'
  955. Remove the `Followup-To' header if it is identical to the
  956. `Newsgroups' header.
  957. `reply-to'
  958. Remove the `Reply-To' header if it lists the same addresses as the
  959. `From' header, or if the `broken-reply-to' group parameter is set.
  960. `newsgroups'
  961. Remove the `Newsgroups' header if it only contains the current
  962. group name.
  963. `to-address'
  964. Remove the `To' header if it only contains the address identical to
  965. the current group's `to-address' parameter.
  966. `to-list'
  967. Remove the `To' header if it only contains the address identical to
  968. the current group's `to-list' parameter.
  969. `cc-list'
  970. Remove the `Cc' header if it only contains the address identical to
  971. the current group's `to-list' parameter.
  972. `date'
  973. Remove the `Date' header if the article is less than three days
  974. old.
  975. `long-to'
  976. Remove the `To' and/or `Cc' header if it is very long.
  977. `many-to'
  978. Remove all `To' and/or `Cc' headers if there are more than one.
  979. To include these three elements, you could say something like:
  980. (setq gnus-boring-article-headers
  981. '(empty followup-to reply-to))
  982. This is also the default value for this variable.
  983. 
  984. File: gnus, Node: Using MIME, Next: HTML, Prev: Hiding Headers, Up: Article Buffer
  985. 4.2 Using MIME
  986. ==============
  987. Mime is a standard for waving your hands through the air, aimlessly,
  988. while people stand around yawning.
  989. MIME, however, is a standard for encoding your articles, aimlessly,
  990. while all newsreaders die of fear.
  991. MIME may specify what character set the article uses, the encoding
  992. of the characters, and it also makes it possible to embed pictures and
  993. other naughty stuff in innocent-looking articles.
  994. Gnus pushes MIME articles through `gnus-display-mime-function' to
  995. display the MIME parts. This is `gnus-display-mime' by default, which
  996. creates a bundle of clickable buttons that can be used to display, save
  997. and manipulate the MIME objects.
  998. The following commands are available when you have placed point over
  999. a MIME button:
  1000. `RET (Article)'
  1001. `BUTTON-2 (Article)'
  1002. Toggle displaying of the MIME object
  1003. (`gnus-article-press-button'). If built-in viewers can not display
  1004. the object, Gnus resorts to external viewers in the `mailcap'
  1005. files. If a viewer has the `copiousoutput' specification, the
  1006. object is displayed inline.
  1007. `M-RET (Article)'
  1008. `v (Article)'
  1009. Prompt for a method, and then view the MIME object using this
  1010. method (`gnus-mime-view-part').
  1011. `t (Article)'
  1012. View the MIME object as if it were a different MIME media type
  1013. (`gnus-mime-view-part-as-type').
  1014. `C (Article)'
  1015. Prompt for a charset, and then view the MIME object using this
  1016. charset (`gnus-mime-view-part-as-charset').
  1017. `o (Article)'
  1018. Prompt for a file name, and then save the MIME object
  1019. (`gnus-mime-save-part').
  1020. `C-o (Article)'
  1021. Prompt for a file name, then save the MIME object and strip it from
  1022. the article. Then proceed to article editing, where a reasonable
  1023. suggestion is being made on how the altered article should look
  1024. like. The stripped MIME object will be referred via the
  1025. message/external-body MIME type.
  1026. (`gnus-mime-save-part-and-strip').
  1027. `r (Article)'
  1028. Prompt for a file name, replace the MIME object with an external
  1029. body referring to the file via the message/external-body MIME
  1030. type. (`gnus-mime-replace-part').
  1031. `d (Article)'
  1032. Delete the MIME object from the article and replace it with some
  1033. information about the removed MIME object
  1034. (`gnus-mime-delete-part').
  1035. `c (Article)'
  1036. Copy the MIME object to a fresh buffer and display this buffer
  1037. (`gnus-mime-copy-part'). If given a prefix, copy the raw contents
  1038. without decoding. If given a numerical prefix, you can do
  1039. semi-manual charset stuff (see
  1040. `gnus-summary-show-article-charset-alist' in *note Paging the
  1041. Article::). Compressed files like `.gz' and `.bz2' are
  1042. automatically decompressed if `auto-compression-mode' is enabled
  1043. (*note Accessing Compressed Files: (emacs)Compressed Files.).
  1044. `p (Article)'
  1045. Print the MIME object (`gnus-mime-print-part'). This command
  1046. respects the `print=' specifications in the `.mailcap' file.
  1047. `i (Article)'
  1048. Insert the contents of the MIME object into the buffer
  1049. (`gnus-mime-inline-part') as `text/plain'. If given a prefix,
  1050. insert the raw contents without decoding. If given a numerical
  1051. prefix, you can do semi-manual charset stuff (see
  1052. `gnus-summary-show-article-charset-alist' in *note Paging the
  1053. Article::). Compressed files like `.gz' and `.bz2' are
  1054. automatically decompressed depending on `jka-compr' regardless of
  1055. `auto-compression-mode' (*note Accessing Compressed Files:
  1056. (emacs)Compressed Files.).
  1057. `E (Article)'
  1058. View the MIME object with an internal viewer. If no internal
  1059. viewer is available, use an external viewer
  1060. (`gnus-mime-view-part-internally').
  1061. `e (Article)'
  1062. View the MIME object with an external viewer.
  1063. (`gnus-mime-view-part-externally').
  1064. `| (Article)'
  1065. Output the MIME object to a process (`gnus-mime-pipe-part').
  1066. `. (Article)'
  1067. Interactively run an action on the MIME object
  1068. (`gnus-mime-action-on-part').
  1069. Gnus will display some MIME objects automatically. The way Gnus
  1070. determines which parts to do this with is described in the Emacs MIME
  1071. manual.
  1072. It might be best to just use the toggling functions from the article
  1073. buffer to avoid getting nasty surprises. (For instance, you enter the
  1074. group `alt.sing-a-long' and, before you know it, MIME has decoded the
  1075. sound file in the article and some horrible sing-a-long song comes
  1076. screaming out your speakers, and you can't find the volume button,
  1077. because there isn't one, and people are starting to look at you, and you
  1078. try to stop the program, but you can't, and you can't find the program
  1079. to control the volume, and everybody else in the room suddenly decides
  1080. to look at you disdainfully, and you'll feel rather stupid.)
  1081. Any similarity to real events and people is purely coincidental.
  1082. Ahem.
  1083. Also *note MIME Commands::.
  1084. 
  1085. File: gnus, Node: HTML, Next: Customizing Articles, Prev: Using MIME, Up: Article Buffer
  1086. 4.3 HTML
  1087. ========
  1088. If you have `w3m' installed on your system, Gnus can display HTML
  1089. articles in the article buffer. There are many Gnus add-ons for doing
  1090. this, using various approaches, but there's one (sort of) built-in
  1091. method that's used by default.
  1092. For a complete overview, consult *Note Display Customization:
  1093. (emacs-mime)Display Customization. This section only describes the
  1094. default method.
  1095. `mm-text-html-renderer'
  1096. If set to `gnus-article-html', Gnus will use the built-in method,
  1097. that's based on `w3m'.
  1098. `gnus-blocked-images'
  1099. External images that have URLs that match this regexp won't be
  1100. fetched and displayed. For instance, do block all URLs that have
  1101. the string "ads" in them, do the following:
  1102. (setq gnus-blocked-images "ads")
  1103. This can also be a function to be evaluated. If so, it will be
  1104. called with the group name as the parameter. The default value is
  1105. `gnus-block-private-groups', which will return `"."' for anything
  1106. that isn't a newsgroup. This means that no external images will
  1107. be fetched as a result of reading mail, so that nobody can use web
  1108. bugs (and the like) to track whether you've read email.
  1109. Also *note Misc Article:: for `gnus-inhibit-images'.
  1110. `gnus-html-cache-directory'
  1111. Gnus will download and cache images according to how
  1112. `gnus-blocked-images' is set. These images will be stored in this
  1113. directory.
  1114. `gnus-html-cache-size'
  1115. When `gnus-html-cache-size' bytes have been used in that
  1116. directory, the oldest files will be deleted. The default is 500MB.
  1117. `gnus-html-frame-width'
  1118. The width to use when rendering HTML. The default is 70.
  1119. `gnus-max-image-proportion'
  1120. How big pictures displayed are in relation to the window they're
  1121. in. A value of 0.7 (the default) means that they are allowed to
  1122. take up 70% of the width and height of the window. If they are
  1123. larger than this, and Emacs supports it, then the images will be
  1124. rescaled down to fit these criteria.
  1125. To use this, make sure that you have `w3m' and `curl' installed. If
  1126. you have, then Gnus should display HTML automatically.
  1127. 
  1128. File: gnus, Node: Customizing Articles, Next: Article Keymap, Prev: HTML, Up: Article Buffer
  1129. 4.4 Customizing Articles
  1130. ========================
  1131. A slew of functions for customizing how the articles are to look like
  1132. exist. You can call these functions interactively (*note Article
  1133. Washing::), or you can have them called automatically when you select
  1134. the articles.
  1135. To have them called automatically, you should set the corresponding
  1136. "treatment" variable. For instance, to have headers hidden, you'd set
  1137. `gnus-treat-hide-headers'. Below is a list of variables that can be
  1138. set, but first we discuss the values these variables can have.
  1139. Note: Some values, while valid, make little sense. Check the list
  1140. below for sensible values.
  1141. 1. `nil': Don't do this treatment.
  1142. 2. `t': Do this treatment on all body parts.
  1143. 3. `head': Do the treatment on the headers.
  1144. 4. `first': Do this treatment on the first body part.
  1145. 5. `last': Do this treatment on the last body part.
  1146. 6. An integer: Do this treatment on all body parts that have a length
  1147. less than this number.
  1148. 7. A list of strings: Do this treatment on all body parts that are in
  1149. articles that are read in groups that have names that match one of
  1150. the regexps in the list.
  1151. 8. A list where the first element is not a string:
  1152. The list is evaluated recursively. The first element of the list
  1153. is a predicate. The following predicates are recognized: `or',
  1154. `and', `not' and `typep'. Here's an example:
  1155. (or last
  1156. (typep "text/x-vcard"))
  1157. You may have noticed that the word "part" is used here. This refers
  1158. to the fact that some messages are MIME multipart articles that may be
  1159. divided into several parts. Articles that are not multiparts are
  1160. considered to contain just a single part.
  1161. Are the treatments applied to all sorts of multipart parts? Yes, if
  1162. you want to, but by default, only `text/plain' parts are given the
  1163. treatment. This is controlled by the `gnus-article-treat-types'
  1164. variable, which is a list of regular expressions that are matched to the
  1165. type of the part. This variable is ignored if the value of the
  1166. controlling variable is a predicate list, as described above.
  1167. The following treatment options are available. The easiest way to
  1168. customize this is to examine the `gnus-article-treat' customization
  1169. group. Values in parenthesis are suggested sensible values. Others are
  1170. possible but those listed are probably sufficient for most people.
  1171. `gnus-treat-buttonize (t, integer)'
  1172. `gnus-treat-buttonize-head (head)'
  1173. *Note Article Buttons::.
  1174. `gnus-treat-capitalize-sentences (t, integer)'
  1175. `gnus-treat-overstrike (t, integer)'
  1176. `gnus-treat-strip-cr (t, integer)'
  1177. `gnus-treat-strip-headers-in-body (t, integer)'
  1178. `gnus-treat-strip-leading-blank-lines (t, first, integer)'
  1179. `gnus-treat-strip-multiple-blank-lines (t, integer)'
  1180. `gnus-treat-strip-pem (t, last, integer)'
  1181. `gnus-treat-strip-trailing-blank-lines (t, last, integer)'
  1182. `gnus-treat-unsplit-urls (t, integer)'
  1183. `gnus-treat-wash-html (t, integer)'
  1184. *Note Article Washing::.
  1185. `gnus-treat-date (head)'
  1186. This will transform/add date headers according to the
  1187. `gnus-article-date-headers' variable. This is a list of Date
  1188. headers to display. The formats available are:
  1189. `ut'
  1190. Universal time, aka GMT, aka ZULU.
  1191. `local'
  1192. The user's local time zone.
  1193. `english'
  1194. A semi-readable English sentence.
  1195. `lapsed'
  1196. The time elapsed since the message was posted.
  1197. `combined-lapsed'
  1198. Both the original date header and a (shortened) elapsed time.
  1199. `original'
  1200. The original date header.
  1201. `iso8601'
  1202. ISO8601 format, i.e., "2010-11-23T22:05:21".
  1203. `user-defined'
  1204. A format done according to the `gnus-article-time-format'
  1205. variable.
  1206. *Note Article Date::.
  1207. `gnus-treat-from-picon (head)'
  1208. `gnus-treat-mail-picon (head)'
  1209. `gnus-treat-newsgroups-picon (head)'
  1210. *Note Picons::.
  1211. `gnus-treat-from-gravatar (head)'
  1212. `gnus-treat-mail-gravatar (head)'
  1213. *Note Gravatars::.
  1214. `gnus-treat-display-smileys (t, integer)'
  1215. `gnus-treat-body-boundary (head)'
  1216. Adds a delimiter between header and body, the string used as
  1217. delimiter is controlled by `gnus-body-boundary-delimiter'.
  1218. *Note Smileys::.
  1219. `gnus-treat-display-x-face (head)'
  1220. *Note X-Face::.
  1221. `gnus-treat-display-face (head)'
  1222. *Note Face::.
  1223. `gnus-treat-emphasize (t, head, integer)'
  1224. `gnus-treat-fill-article (t, integer)'
  1225. `gnus-treat-fill-long-lines (t, integer)'
  1226. `gnus-treat-hide-boring-headers (head)'
  1227. `gnus-treat-hide-citation (t, integer)'
  1228. `gnus-treat-hide-citation-maybe (t, integer)'
  1229. `gnus-treat-hide-headers (head)'
  1230. `gnus-treat-hide-signature (t, last)'
  1231. `gnus-treat-strip-banner (t, last)'
  1232. `gnus-treat-strip-list-identifiers (head)'
  1233. *Note Article Hiding::.
  1234. `gnus-treat-highlight-citation (t, integer)'
  1235. `gnus-treat-highlight-headers (head)'
  1236. `gnus-treat-highlight-signature (t, last, integer)'
  1237. *Note Article Highlighting::.
  1238. `gnus-treat-play-sounds'
  1239. `gnus-treat-ansi-sequences (t)'
  1240. `gnus-treat-x-pgp-sig (head)'
  1241. `gnus-treat-unfold-headers (head)'
  1242. `gnus-treat-fold-headers (head)'
  1243. `gnus-treat-fold-newsgroups (head)'
  1244. `gnus-treat-leading-whitespace (head)'
  1245. *Note Article Header::.
  1246. You can, of course, write your own functions to be called from
  1247. `gnus-part-display-hook'. The functions are called narrowed to the
  1248. part, and you can do anything you like, pretty much. There is no
  1249. information that you have to keep in the buffer--you can change
  1250. everything.
  1251. 
  1252. File: gnus, Node: Article Keymap, Next: Misc Article, Prev: Customizing Articles, Up: Article Buffer
  1253. 4.5 Article Keymap
  1254. ==================
  1255. Most of the keystrokes in the summary buffer can also be used in the
  1256. article buffer. They should behave as if you typed them in the summary
  1257. buffer, which means that you don't actually have to have a summary
  1258. buffer displayed while reading. You can do it all from the article
  1259. buffer.
  1260. The key `v' is reserved for users. You can bind it to some command
  1261. or better use it as a prefix key.
  1262. A few additional keystrokes are available:
  1263. `SPACE'
  1264. Scroll forwards one page (`gnus-article-next-page'). This is
  1265. exactly the same as `h SPACE h'.
  1266. `DEL'
  1267. Scroll backwards one page (`gnus-article-prev-page'). This is
  1268. exactly the same as `h DEL h'.
  1269. `C-c ^'
  1270. If point is in the neighborhood of a `Message-ID' and you press
  1271. `C-c ^', Gnus will try to get that article from the server
  1272. (`gnus-article-refer-article').
  1273. `C-c C-m'
  1274. Send a reply to the address near point (`gnus-article-mail'). If
  1275. given a prefix, include the mail.
  1276. `s'
  1277. Reconfigure the buffers so that the summary buffer becomes visible
  1278. (`gnus-article-show-summary').
  1279. `?'
  1280. Give a very brief description of the available keystrokes
  1281. (`gnus-article-describe-briefly').
  1282. `TAB'
  1283. Go to the next button, if any (`gnus-article-next-button'). This
  1284. only makes sense if you have buttonizing turned on.
  1285. `M-TAB'
  1286. Go to the previous button, if any (`gnus-article-prev-button').
  1287. `R'
  1288. Send a reply to the current article and yank the current article
  1289. (`gnus-article-reply-with-original'). If the region is active,
  1290. only yank the text in the region.
  1291. `S W'
  1292. Send a wide reply to the current article and yank the current
  1293. article (`gnus-article-wide-reply-with-original'). If the region
  1294. is active, only yank the text in the region.
  1295. `F'
  1296. Send a followup to the current article and yank the current article
  1297. (`gnus-article-followup-with-original'). If the region is active,
  1298. only yank the text in the region.
  1299. 
  1300. File: gnus, Node: Misc Article, Prev: Article Keymap, Up: Article Buffer
  1301. 4.6 Misc Article
  1302. ================
  1303. `gnus-single-article-buffer'
  1304. If non-`nil', use the same article buffer for all the groups.
  1305. (This is the default.) If `nil', each group will have its own
  1306. article buffer.
  1307. `gnus-widen-article-window'
  1308. If non-`nil', selecting the article buffer with the `h' command
  1309. will "widen" the article window to take the entire frame.
  1310. `gnus-article-decode-hook'
  1311. Hook used to decode MIME articles. The default value is
  1312. `(article-decode-charset article-decode-encoded-words)'
  1313. `gnus-article-prepare-hook'
  1314. This hook is called right after the article has been inserted into
  1315. the article buffer. It is mainly intended for functions that do
  1316. something depending on the contents; it should probably not be
  1317. used for changing the contents of the article buffer.
  1318. `gnus-article-mode-hook'
  1319. Hook called in article mode buffers.
  1320. `gnus-article-mode-syntax-table'
  1321. Syntax table used in article buffers. It is initialized from
  1322. `text-mode-syntax-table'.
  1323. `gnus-article-over-scroll'
  1324. If non-`nil', allow scrolling the article buffer even when there
  1325. no more new text to scroll in. The default is `nil'.
  1326. `gnus-article-mode-line-format'
  1327. This variable is a format string along the same lines as
  1328. `gnus-summary-mode-line-format' (*note Summary Buffer Mode
  1329. Line::). It accepts the same format specifications as that
  1330. variable, with two extensions:
  1331. `w'
  1332. The "wash status" of the article. This is a short string
  1333. with one character for each possible article wash operation
  1334. that may have been performed. The characters and their
  1335. meaning:
  1336. `c'
  1337. Displayed when cited text may be hidden in the article
  1338. buffer.
  1339. `h'
  1340. Displayed when headers are hidden in the article buffer.
  1341. `p'
  1342. Displayed when article is digitally signed or encrypted,
  1343. and Gnus has hidden the security headers. (N.B. does
  1344. not tell anything about security status, i.e. good or
  1345. bad signature.)
  1346. `s'
  1347. Displayed when the signature has been hidden in the
  1348. Article buffer.
  1349. `o'
  1350. Displayed when Gnus has treated overstrike characters in
  1351. the article buffer.
  1352. `e'
  1353. Displayed when Gnus has treated emphasized strings in
  1354. the article buffer.
  1355. `m'
  1356. The number of MIME parts in the article.
  1357. `gnus-break-pages'
  1358. Controls whether "page breaking" is to take place. If this
  1359. variable is non-`nil', the articles will be divided into pages
  1360. whenever a page delimiter appears in the article. If this
  1361. variable is `nil', paging will not be done.
  1362. `gnus-page-delimiter'
  1363. This is the delimiter mentioned above. By default, it is `^L'
  1364. (formfeed).
  1365. `gnus-use-idna'
  1366. This variable controls whether Gnus performs IDNA decoding of
  1367. internationalized domain names inside `From', `To' and `Cc'
  1368. headers. *Note IDNA: (message)IDNA, for how to compose such
  1369. messages. This requires GNU Libidn
  1370. (http://www.gnu.org/software/libidn/), and this variable is only
  1371. enabled if you have installed it.
  1372. `gnus-inhibit-images'
  1373. If this is non-`nil', inhibit displaying of images inline in the
  1374. article body. It is effective to images that are in articles as
  1375. MIME parts, and images in HTML articles rendered when
  1376. `mm-text-html-renderer' (*note Display Customization:
  1377. (emacs-mime)Display Customization.) is `shr' or `gnus-w3m'.
  1378. 
  1379. File: gnus, Node: Composing Messages, Next: Select Methods, Prev: Article Buffer, Up: Top
  1380. 5 Composing Messages
  1381. ********************
  1382. All commands for posting and mailing will put you in a message buffer
  1383. where you can edit the article all you like, before you send the
  1384. article by pressing `C-c C-c'. *Note Overview: (message)Top. Where
  1385. the message will be posted/mailed to depends on your setup (*note
  1386. Posting Server::).
  1387. * Menu:
  1388. * Mail:: Mailing and replying.
  1389. * Posting Server:: What server should you post and mail via?
  1390. * POP before SMTP:: You cannot send a mail unless you read a mail.
  1391. * Mail and Post:: Mailing and posting at the same time.
  1392. * Archived Messages:: Where Gnus stores the messages you've sent.
  1393. * Posting Styles:: An easier way to specify who you are.
  1394. * Drafts:: Postponing messages and rejected messages.
  1395. * Rejected Articles:: What happens if the server doesn't like your article?
  1396. * Signing and encrypting:: How to compose secure messages.
  1397. Also *note Canceling and Superseding:: for information on how to
  1398. remove articles you shouldn't have posted.
  1399. 
  1400. File: gnus, Node: Mail, Next: Posting Server, Up: Composing Messages
  1401. 5.1 Mail
  1402. ========
  1403. Variables for customizing outgoing mail:
  1404. `gnus-uu-digest-headers'
  1405. List of regexps to match headers included in digested messages.
  1406. The headers will be included in the sequence they are matched. If
  1407. `nil' include all headers.
  1408. `gnus-add-to-list'
  1409. If non-`nil', add a `to-list' group parameter to mail groups that
  1410. have none when you do a `a'.
  1411. `gnus-confirm-mail-reply-to-news'
  1412. If non-`nil', Gnus will ask you for a confirmation when you are
  1413. about to reply to news articles by mail. If it is `nil', nothing
  1414. interferes in what you want to do. This can also be a function
  1415. receiving the group name as the only parameter which should return
  1416. non-`nil' if a confirmation is needed, or a regular expression
  1417. matching group names, where confirmation should be asked for.
  1418. If you find yourself never wanting to reply to mail, but
  1419. occasionally press `R' anyway, this variable might be for you.
  1420. `gnus-confirm-treat-mail-like-news'
  1421. If non-`nil', Gnus also requests confirmation according to
  1422. `gnus-confirm-mail-reply-to-news' when replying to mail. This is
  1423. useful for treating mailing lists like newsgroups.
  1424. 
  1425. File: gnus, Node: Posting Server, Next: POP before SMTP, Prev: Mail, Up: Composing Messages
  1426. 5.2 Posting Server
  1427. ==================
  1428. When you press those magical `C-c C-c' keys to ship off your latest
  1429. (extremely intelligent, of course) article, where does it go?
  1430. Thank you for asking. I hate you.
  1431. It can be quite complicated.
  1432. When posting news, Message usually invokes `message-send-news'
  1433. (*note News Variables: (message)News Variables.). Normally, Gnus will
  1434. post using the same select method as you're reading from (which might
  1435. be convenient if you're reading lots of groups from different private
  1436. servers). However. If the server you're reading from doesn't allow
  1437. posting, just reading, you probably want to use some other server to
  1438. post your (extremely intelligent and fabulously interesting) articles.
  1439. You can then set the `gnus-post-method' to some other method:
  1440. (setq gnus-post-method '(nnspool ""))
  1441. Now, if you've done this, and then this server rejects your article,
  1442. or this server is down, what do you do then? To override this variable
  1443. you can use a non-zero prefix to the `C-c C-c' command to force using
  1444. the "current" server, to get back the default behavior, for posting.
  1445. If you give a zero prefix (i.e., `C-u 0 C-c C-c') to that command,
  1446. Gnus will prompt you for what method to use for posting.
  1447. You can also set `gnus-post-method' to a list of select methods. If
  1448. that's the case, Gnus will always prompt you for what method to use for
  1449. posting.
  1450. Finally, if you want to always post using the native select method,
  1451. you can set this variable to `native'.
  1452. When sending mail, Message invokes the function specified by the
  1453. variable `message-send-mail-function'. Gnus tries to set it to a value
  1454. suitable for your system. *Note Mail Variables: (message)Mail
  1455. Variables, for more information.
  1456. 
  1457. File: gnus, Node: POP before SMTP, Next: Mail and Post, Prev: Posting Server, Up: Composing Messages
  1458. 5.3 POP before SMTP
  1459. ===================
  1460. Does your ISP require the POP-before-SMTP authentication? It is
  1461. whether you need to connect to the POP mail server within a certain
  1462. time before sending mails. If so, there is a convenient way. To do
  1463. that, put the following lines in your `~/.gnus.el' file:
  1464. (setq message-send-mail-function 'message-smtpmail-send-it)
  1465. (add-hook 'message-send-mail-hook 'mail-source-touch-pop)
  1466. It means to let Gnus connect to the POP mail server in advance whenever
  1467. you send a mail. The `mail-source-touch-pop' function does only a POP
  1468. authentication according to the value of `mail-sources' without
  1469. fetching mails, just before sending a mail. Note that you have to use
  1470. `message-smtpmail-send-it' which runs `message-send-mail-hook' rather
  1471. than `smtpmail-send-it' and set the value of `mail-sources' for a POP
  1472. connection correctly. *Note Mail Sources::.
  1473. If you have two or more POP mail servers set in `mail-sources', you
  1474. may want to specify one of them to `mail-source-primary-source' as the
  1475. POP mail server to be used for the POP-before-SMTP authentication. If
  1476. it is your primary POP mail server (i.e., you are fetching mails mainly
  1477. from that server), you can set it permanently as follows:
  1478. (setq mail-source-primary-source
  1479. '(pop :server "pop3.mail.server"
  1480. :password "secret"))
  1481. Otherwise, bind it dynamically only when performing the POP-before-SMTP
  1482. authentication as follows:
  1483. (add-hook 'message-send-mail-hook
  1484. (lambda ()
  1485. (let ((mail-source-primary-source
  1486. '(pop :server "pop3.mail.server"
  1487. :password "secret")))
  1488. (mail-source-touch-pop))))
  1489. 
  1490. File: gnus, Node: Mail and Post, Next: Archived Messages, Prev: POP before SMTP, Up: Composing Messages
  1491. 5.4 Mail and Post
  1492. =================
  1493. Here's a list of variables relevant to both mailing and posting:
  1494. `gnus-mailing-list-groups'
  1495. If your news server offers groups that are really mailing lists
  1496. gatewayed to the NNTP server, you can read those groups without
  1497. problems, but you can't post/followup to them without some
  1498. difficulty. One solution is to add a `to-address' to the group
  1499. parameters (*note Group Parameters::). An easier thing to do is
  1500. set the `gnus-mailing-list-groups' to a regexp that matches the
  1501. groups that really are mailing lists. Then, at least, followups
  1502. to the mailing lists will work most of the time. Posting to these
  1503. groups (`a') is still a pain, though.
  1504. `gnus-user-agent'
  1505. This variable controls which information should be exposed in the
  1506. User-Agent header. It can be a list of symbols or a string. Valid
  1507. symbols are `gnus' (show Gnus version) and `emacs' (show Emacs
  1508. version). In addition to the Emacs version, you can add `codename'
  1509. (show (S)XEmacs codename) or either `config' (show system
  1510. configuration) or `type' (show system type). If you set it to a
  1511. string, be sure to use a valid format, see RFC 2616.
  1512. You may want to do spell-checking on messages that you send out.
  1513. Or, if you don't want to spell-check by hand, you could add automatic
  1514. spell-checking via the `ispell' package:
  1515. (add-hook 'message-send-hook 'ispell-message)
  1516. If you want to change the `ispell' dictionary based on what group
  1517. you're in, you could say something like the following:
  1518. (add-hook 'gnus-select-group-hook
  1519. (lambda ()
  1520. (cond
  1521. ((string-match
  1522. "^de\\." (gnus-group-real-name gnus-newsgroup-name))
  1523. (ispell-change-dictionary "deutsch"))
  1524. (t
  1525. (ispell-change-dictionary "english")))))
  1526. Modify to suit your needs.
  1527. If `gnus-message-highlight-citation' is t, different levels of
  1528. citations are highlighted like in Gnus article buffers also in message
  1529. mode buffers.
  1530. 
  1531. File: gnus, Node: Archived Messages, Next: Posting Styles, Prev: Mail and Post, Up: Composing Messages
  1532. 5.5 Archived Messages
  1533. =====================
  1534. Gnus provides a few different methods for storing the mail and news you
  1535. send. The default method is to use the "archive virtual server" to
  1536. store the messages. If you want to disable this completely, the
  1537. `gnus-message-archive-group' variable should be `nil'. The default is
  1538. "sent.%Y-%m", which gives you one archive group per month.
  1539. For archiving interesting messages in a group you read, see the `B
  1540. c' (`gnus-summary-copy-article') command (*note Mail Group Commands::).
  1541. `gnus-message-archive-method' says what virtual server Gnus is to
  1542. use to store sent messages. The default is `"archive"', and when
  1543. actually being used it is expanded into:
  1544. (nnfolder "archive"
  1545. (nnfolder-directory "~/Mail/archive")
  1546. (nnfolder-active-file "~/Mail/archive/active")
  1547. (nnfolder-get-new-mail nil)
  1548. (nnfolder-inhibit-expiry t))
  1549. Note: a server like this is saved in the `~/.newsrc.eld' file first
  1550. so that it may be used as a real method of the server which is
  1551. named `"archive"' (that is, for the case where
  1552. `gnus-message-archive-method' is set to `"archive"') ever since.
  1553. If it once has been saved, it will never be updated by default
  1554. even if you change the value of `gnus-message-archive-method'
  1555. afterward. Therefore, the server `"archive"' doesn't necessarily
  1556. mean the `nnfolder' server like this at all times. If you want the
  1557. saved method to reflect always the value of
  1558. `gnus-message-archive-method', set the
  1559. `gnus-update-message-archive-method' variable to a non-`nil'
  1560. value. The default value of this variable is `nil'.
  1561. You can, however, use any mail select method (`nnml', `nnmbox',
  1562. etc.). `nnfolder' is a quite likable select method for doing this sort
  1563. of thing, though. If you don't like the default directory chosen, you
  1564. could say something like:
  1565. (setq gnus-message-archive-method
  1566. '(nnfolder "archive"
  1567. (nnfolder-inhibit-expiry t)
  1568. (nnfolder-active-file "~/News/sent-mail/active")
  1569. (nnfolder-directory "~/News/sent-mail/")))
  1570. Gnus will insert `Gcc' headers in all outgoing messages that point
  1571. to one or more group(s) on that server. Which group to use is
  1572. determined by the `gnus-message-archive-group' variable.
  1573. This variable can be used to do the following:
  1574. a string
  1575. Messages will be saved in that group.
  1576. Note that you can include a select method in the group name, then
  1577. the message will not be stored in the select method given by
  1578. `gnus-message-archive-method', but in the select method specified
  1579. by the group name, instead. Suppose `gnus-message-archive-method'
  1580. has the default value shown above. Then setting
  1581. `gnus-message-archive-group' to `"foo"' means that outgoing
  1582. messages are stored in `nnfolder+archive:foo', but if you use the
  1583. value `"nnml:foo"', then outgoing messages will be stored in
  1584. `nnml:foo'.
  1585. a list of strings
  1586. Messages will be saved in all those groups.
  1587. an alist of regexps, functions and forms
  1588. When a key "matches", the result is used.
  1589. `nil'
  1590. No message archiving will take place.
  1591. Let's illustrate:
  1592. Just saving to a single group called `MisK':
  1593. (setq gnus-message-archive-group "MisK")
  1594. Saving to two groups, `MisK' and `safe':
  1595. (setq gnus-message-archive-group '("MisK" "safe"))
  1596. Save to different groups based on what group you are in:
  1597. (setq gnus-message-archive-group
  1598. '(("^alt" "sent-to-alt")
  1599. ("mail" "sent-to-mail")
  1600. (".*" "sent-to-misc")))
  1601. More complex stuff:
  1602. (setq gnus-message-archive-group
  1603. '((if (message-news-p)
  1604. "misc-news"
  1605. "misc-mail")))
  1606. How about storing all news messages in one file, but storing all mail
  1607. messages in one file per month:
  1608. (setq gnus-message-archive-group
  1609. '((if (message-news-p)
  1610. "misc-news"
  1611. (concat "mail." (format-time-string "%Y-%m")))))
  1612. Now, when you send a message off, it will be stored in the
  1613. appropriate group. (If you want to disable storing for just one
  1614. particular message, you can just remove the `Gcc' header that has been
  1615. inserted.) The archive group will appear in the group buffer the next
  1616. time you start Gnus, or the next time you press `F' in the group
  1617. buffer. You can enter it and read the articles in it just like you'd
  1618. read any other group. If the group gets really big and annoying, you
  1619. can simply rename if (using `G r' in the group buffer) to something
  1620. nice--`misc-mail-september-1995', or whatever. New messages will
  1621. continue to be stored in the old (now empty) group.
  1622. `gnus-gcc-mark-as-read'
  1623. If non-`nil', automatically mark `Gcc' articles as read.
  1624. `gnus-gcc-externalize-attachments'
  1625. If `nil', attach files as normal parts in Gcc copies; if a regexp
  1626. and matches the Gcc group name, attach files as external parts; if
  1627. it is `all', attach local files as external parts; if it is other
  1628. non-`nil', the behavior is the same as `all', but it may be
  1629. changed in the future.
  1630. 
  1631. File: gnus, Node: Posting Styles, Next: Drafts, Prev: Archived Messages, Up: Composing Messages
  1632. 5.6 Posting Styles
  1633. ==================
  1634. All them variables, they make my head swim.
  1635. So what if you want a different `Organization' and signature based
  1636. on what groups you post to? And you post both from your home machine
  1637. and your work machine, and you want different `From' lines, and so on?
  1638. One way to do stuff like that is to write clever hooks that change
  1639. the variables you need to have changed. That's a bit boring, so
  1640. somebody came up with the bright idea of letting the user specify these
  1641. things in a handy alist. Here's an example of a `gnus-posting-styles'
  1642. variable:
  1643. ((".*"
  1644. (signature "Peace and happiness")
  1645. (organization "What me?"))
  1646. ("^comp"
  1647. (signature "Death to everybody"))
  1648. ("comp.emacs.i-love-it"
  1649. (organization "Emacs is it")))
  1650. As you might surmise from this example, this alist consists of
  1651. several "styles". Each style will be applicable if the first element
  1652. "matches", in some form or other. The entire alist will be iterated
  1653. over, from the beginning towards the end, and each match will be
  1654. applied, which means that attributes in later styles that match override
  1655. the same attributes in earlier matching styles. So
  1656. `comp.programming.literate' will have the `Death to everybody'
  1657. signature and the `What me?' `Organization' header.
  1658. The first element in each style is called the `match'. If it's a
  1659. string, then Gnus will try to regexp match it against the group name.
  1660. If it is the form `(header MATCH REGEXP)', then Gnus will look in the
  1661. original article for a header whose name is MATCH and compare that
  1662. REGEXP. MATCH and REGEXP are strings. (The original article is the
  1663. one you are replying or following up to. If you are not composing a
  1664. reply or a followup, then there is nothing to match against.) If the
  1665. `match' is a function symbol, that function will be called with no
  1666. arguments. If it's a variable symbol, then the variable will be
  1667. referenced. If it's a list, then that list will be `eval'ed. In any
  1668. case, if this returns a non-`nil' value, then the style is said to
  1669. "match".
  1670. Each style may contain an arbitrary amount of "attributes". Each
  1671. attribute consists of a `(NAME VALUE)' pair. In addition, you can also
  1672. use the `(NAME :file VALUE)' form or the `(NAME :value VALUE)' form.
  1673. Where `:file' signifies VALUE represents a file name and its contents
  1674. should be used as the attribute value, `:value' signifies VALUE does
  1675. not represent a file name explicitly. The attribute name can be one of:
  1676. * `signature'
  1677. * `signature-file'
  1678. * `x-face-file'
  1679. * `address', overriding `user-mail-address'
  1680. * `name', overriding `(user-full-name)'
  1681. * `body'
  1682. Note that the `signature-file' attribute honors the variable
  1683. `message-signature-directory'.
  1684. The attribute name can also be a string or a symbol. In that case,
  1685. this will be used as a header name, and the value will be inserted in
  1686. the headers of the article; if the value is `nil', the header name will
  1687. be removed. If the attribute name is `eval', the form is evaluated,
  1688. and the result is thrown away.
  1689. The attribute value can be a string, a function with zero arguments
  1690. (the return value will be used), a variable (its value will be used) or
  1691. a list (it will be `eval'ed and the return value will be used). The
  1692. functions and sexps are called/`eval'ed in the message buffer that is
  1693. being set up. The headers of the current article are available through
  1694. the `message-reply-headers' variable, which is a vector of the
  1695. following headers: number subject from date id references chars lines
  1696. xref extra.
  1697. In the case of a string value, if the `match' is a regular
  1698. expression, a `gnus-match-substitute-replacement' is proceed on the
  1699. value to replace the positional parameters `\N' by the corresponding
  1700. parenthetical matches (see *Note Replacing the Text that Matched:
  1701. (elisp)Replacing Match.)
  1702. If you wish to check whether the message you are about to compose is
  1703. meant to be a news article or a mail message, you can check the values
  1704. of the `message-news-p' and `message-mail-p' functions.
  1705. So here's a new example:
  1706. (setq gnus-posting-styles
  1707. '((".*"
  1708. (signature-file "~/.signature")
  1709. (name "User Name")
  1710. (x-face-file "~/.xface")
  1711. (x-url (getenv "WWW_HOME"))
  1712. (organization "People's Front Against MWM"))
  1713. ("^rec.humor"
  1714. (signature my-funny-signature-randomizer))
  1715. ((equal (system-name) "gnarly") ;; A form
  1716. (signature my-quote-randomizer))
  1717. (message-news-p ;; A function symbol
  1718. (signature my-news-signature))
  1719. (window-system ;; A value symbol
  1720. ("X-Window-System" (format "%s" window-system)))
  1721. ;; If I'm replying to Larsi, set the Organization header.
  1722. ((header "from" "larsi.*org")
  1723. (Organization "Somewhere, Inc."))
  1724. ((posting-from-work-p) ;; A user defined function
  1725. (signature-file "~/.work-signature")
  1726. (address "user@bar.foo")
  1727. (body "You are fired.\n\nSincerely, your boss.")
  1728. (organization "Important Work, Inc"))
  1729. ("nnml:.*"
  1730. (From (with-current-buffer gnus-article-buffer
  1731. (message-fetch-field "to"))))
  1732. ("^nn.+:"
  1733. (signature-file "~/.mail-signature"))))
  1734. The `nnml:.*' rule means that you use the `To' address as the `From'
  1735. address in all your outgoing replies, which might be handy if you fill
  1736. many roles. You may also use `message-alternative-emails' instead.
  1737. *Note Message Headers: (message)Message Headers.
  1738. 
  1739. File: gnus, Node: Drafts, Next: Rejected Articles, Prev: Posting Styles, Up: Composing Messages
  1740. 5.7 Drafts
  1741. ==========
  1742. If you are writing a message (mail or news) and suddenly remember that
  1743. you have a steak in the oven (or some pesto in the food processor, you
  1744. craaazy vegetarians), you'll probably wish there was a method to save
  1745. the message you are writing so that you can continue editing it some
  1746. other day, and send it when you feel its finished.
  1747. Well, don't worry about it. Whenever you start composing a message
  1748. of some sort using the Gnus mail and post commands, the buffer you get
  1749. will automatically associate to an article in a special "draft" group.
  1750. If you save the buffer the normal way (`C-x C-s', for instance), the
  1751. article will be saved there. (Auto-save files also go to the draft
  1752. group.)
  1753. The draft group is a special group (which is implemented as an
  1754. `nndraft' group, if you absolutely have to know) called
  1755. `nndraft:drafts'. The variable `nndraft-directory' says where
  1756. `nndraft' is to store its files. What makes this group special is that
  1757. you can't tick any articles in it or mark any articles as read--all
  1758. articles in the group are permanently unread.
  1759. If the group doesn't exist, it will be created and you'll be
  1760. subscribed to it. The only way to make it disappear from the Group
  1761. buffer is to unsubscribe it. The special properties of the draft group
  1762. comes from a group property (*note Group Parameters::), and if lost the
  1763. group behaves like any other group. This means the commands below will
  1764. not be available. To restore the special properties of the group, the
  1765. simplest way is to kill the group, using `C-k', and restart Gnus. The
  1766. group is automatically created again with the correct parameters. The
  1767. content of the group is not lost.
  1768. When you want to continue editing the article, you simply enter the
  1769. draft group and push `D e' (`gnus-draft-edit-message') to do that. You
  1770. will be placed in a buffer where you left off.
  1771. Rejected articles will also be put in this draft group (*note
  1772. Rejected Articles::).
  1773. If you have lots of rejected messages you want to post (or mail)
  1774. without doing further editing, you can use the `D s' command
  1775. (`gnus-draft-send-message'). This command understands the
  1776. process/prefix convention (*note Process/Prefix::). The `D S' command
  1777. (`gnus-draft-send-all-messages') will ship off all messages in the
  1778. buffer.
  1779. If you have some messages that you wish not to send, you can use the
  1780. `D t' (`gnus-draft-toggle-sending') command to mark the message as
  1781. unsendable. This is a toggling command.
  1782. Finally, if you want to delete a draft, use the normal `B DEL'
  1783. command (*note Mail Group Commands::).
  1784. 
  1785. File: gnus, Node: Rejected Articles, Next: Signing and encrypting, Prev: Drafts, Up: Composing Messages
  1786. 5.8 Rejected Articles
  1787. =====================
  1788. Sometimes a news server will reject an article. Perhaps the server
  1789. doesn't like your face. Perhaps it just feels miserable. Perhaps
  1790. _there be demons_. Perhaps you have included too much cited text.
  1791. Perhaps the disk is full. Perhaps the server is down.
  1792. These situations are, of course, totally beyond the control of Gnus.
  1793. (Gnus, of course, loves the way you look, always feels great, has angels
  1794. fluttering around inside of it, doesn't care about how much cited text
  1795. you include, never runs full and never goes down.) So Gnus saves these
  1796. articles until some later time when the server feels better.
  1797. The rejected articles will automatically be put in a special draft
  1798. group (*note Drafts::). When the server comes back up again, you'd then
  1799. typically enter that group and send all the articles off.
  1800. 
  1801. File: gnus, Node: Signing and encrypting, Prev: Rejected Articles, Up: Composing Messages
  1802. 5.9 Signing and encrypting
  1803. ==========================
  1804. Gnus can digitally sign and encrypt your messages, using vanilla PGP
  1805. format or PGP/MIME or S/MIME. For decoding such messages, see the
  1806. `mm-verify-option' and `mm-decrypt-option' options (*note Security::).
  1807. Often, you would like to sign replies to people who send you signed
  1808. messages. Even more often, you might want to encrypt messages which
  1809. are in reply to encrypted messages. Gnus offers
  1810. `gnus-message-replysign' to enable the former, and
  1811. `gnus-message-replyencrypt' for the latter. In addition, setting
  1812. `gnus-message-replysignencrypted' (on by default) will sign
  1813. automatically encrypted messages.
  1814. Instructing MML to perform security operations on a MIME part is
  1815. done using the `C-c C-m s' key map for signing and the `C-c C-m c' key
  1816. map for encryption, as follows.
  1817. `C-c C-m s s'
  1818. Digitally sign current message using S/MIME.
  1819. `C-c C-m s o'
  1820. Digitally sign current message using PGP.
  1821. `C-c C-m s p'
  1822. Digitally sign current message using PGP/MIME.
  1823. `C-c C-m c s'
  1824. Digitally encrypt current message using S/MIME.
  1825. `C-c C-m c o'
  1826. Digitally encrypt current message using PGP.
  1827. `C-c C-m c p'
  1828. Digitally encrypt current message using PGP/MIME.
  1829. `C-c C-m C-n'
  1830. Remove security related MML tags from message.
  1831. *Note Security: (message)Security, for more information.
  1832. 
  1833. File: gnus, Node: Select Methods, Next: Scoring, Prev: Composing Messages, Up: Top
  1834. 6 Select Methods
  1835. ****************
  1836. A "foreign group" is a group not read by the usual (or default) means.
  1837. It could be, for instance, a group from a different NNTP server, it
  1838. could be a virtual group, or it could be your own personal mail group.
  1839. A foreign group (or any group, really) is specified by a "name" and
  1840. a "select method". To take the latter first, a select method is a list
  1841. where the first element says what back end to use (e.g. `nntp',
  1842. `nnspool', `nnml') and the second element is the "server name". There
  1843. may be additional elements in the select method, where the value may
  1844. have special meaning for the back end in question.
  1845. One could say that a select method defines a "virtual server"--so we
  1846. do just that (*note Server Buffer::).
  1847. The "name" of the group is the name the back end will recognize the
  1848. group as.
  1849. For instance, the group `soc.motss' on the NNTP server
  1850. `some.where.edu' will have the name `soc.motss' and select method
  1851. `(nntp "some.where.edu")'. Gnus will call this group
  1852. `nntp+some.where.edu:soc.motss', even though the `nntp' back end just
  1853. knows this group as `soc.motss'.
  1854. The different methods all have their peculiarities, of course.
  1855. * Menu:
  1856. * Server Buffer:: Making and editing virtual servers.
  1857. * Getting News:: Reading USENET news with Gnus.
  1858. * Using IMAP:: Reading mail from IMAP.
  1859. * Getting Mail:: Reading your personal mail with Gnus.
  1860. * Browsing the Web:: Getting messages from a plethora of Web sources.
  1861. * Other Sources:: Reading directories, files.
  1862. * Combined Groups:: Combining groups into one group.
  1863. * Email Based Diary:: Using mails to manage diary events in Gnus.
  1864. * Gnus Unplugged:: Reading news and mail offline.
  1865. 
  1866. File: gnus, Node: Server Buffer, Next: Getting News, Up: Select Methods
  1867. 6.1 Server Buffer
  1868. =================
  1869. Traditionally, a "server" is a machine or a piece of software that one
  1870. connects to, and then requests information from. Gnus does not connect
  1871. directly to any real servers, but does all transactions through one
  1872. back end or other. But that's just putting one layer more between the
  1873. actual media and Gnus, so we might just as well say that each back end
  1874. represents a virtual server.
  1875. For instance, the `nntp' back end may be used to connect to several
  1876. different actual NNTP servers, or, perhaps, to many different ports on
  1877. the same actual NNTP server. You tell Gnus which back end to use, and
  1878. what parameters to set by specifying a "select method".
  1879. These select method specifications can sometimes become quite
  1880. complicated--say, for instance, that you want to read from the NNTP
  1881. server `news.funet.fi' on port number 13, which hangs if queried for
  1882. NOV headers and has a buggy select. Ahem. Anyway, if you had to
  1883. specify that for each group that used this server, that would be too
  1884. much work, so Gnus offers a way of naming select methods, which is what
  1885. you do in the server buffer.
  1886. To enter the server buffer, use the `^'
  1887. (`gnus-group-enter-server-mode') command in the group buffer.
  1888. * Menu:
  1889. * Server Buffer Format:: You can customize the look of this buffer.
  1890. * Server Commands:: Commands to manipulate servers.
  1891. * Example Methods:: Examples server specifications.
  1892. * Creating a Virtual Server:: An example session.
  1893. * Server Variables:: Which variables to set.
  1894. * Servers and Methods:: You can use server names as select methods.
  1895. * Unavailable Servers:: Some servers you try to contact may be down.
  1896. `gnus-server-mode-hook' is run when creating the server buffer.
  1897. 
  1898. File: gnus, Node: Server Buffer Format, Next: Server Commands, Up: Server Buffer
  1899. 6.1.1 Server Buffer Format
  1900. --------------------------
  1901. You can change the look of the server buffer lines by changing the
  1902. `gnus-server-line-format' variable. This is a `format'-like variable,
  1903. with some simple extensions:
  1904. `h'
  1905. How the news is fetched--the back end name.
  1906. `n'
  1907. The name of this server.
  1908. `w'
  1909. Where the news is to be fetched from--the address.
  1910. `s'
  1911. The opened/closed/denied status of the server.
  1912. `a'
  1913. Whether this server is agentized.
  1914. The mode line can also be customized by using the
  1915. `gnus-server-mode-line-format' variable (*note Mode Line Formatting::).
  1916. The following specs are understood:
  1917. `S'
  1918. Server name.
  1919. `M'
  1920. Server method.
  1921. Also *note Formatting Variables::.
  1922. 
  1923. File: gnus, Node: Server Commands, Next: Example Methods, Prev: Server Buffer Format, Up: Server Buffer
  1924. 6.1.2 Server Commands
  1925. ---------------------
  1926. `v'
  1927. The key `v' is reserved for users. You can bind it to some
  1928. command or better use it as a prefix key.
  1929. `a'
  1930. Add a new server (`gnus-server-add-server').
  1931. `e'
  1932. Edit a server (`gnus-server-edit-server').
  1933. `S'
  1934. Show the definition of a server (`gnus-server-show-server').
  1935. `SPACE'
  1936. Browse the current server (`gnus-server-read-server').
  1937. `q'
  1938. Return to the group buffer (`gnus-server-exit').
  1939. `k'
  1940. Kill the current server (`gnus-server-kill-server').
  1941. `y'
  1942. Yank the previously killed server (`gnus-server-yank-server').
  1943. `c'
  1944. Copy the current server (`gnus-server-copy-server').
  1945. `l'
  1946. List all servers (`gnus-server-list-servers').
  1947. `s'
  1948. Request that the server scan its sources for new articles
  1949. (`gnus-server-scan-server'). This is mainly sensible with mail
  1950. servers.
  1951. `g'
  1952. Request that the server regenerate all its data structures
  1953. (`gnus-server-regenerate-server'). This can be useful if you have
  1954. a mail back end that has gotten out of sync.
  1955. `z'
  1956. Compact all groups in the server under point
  1957. (`gnus-server-compact-server'). Currently implemented only in
  1958. nnml (*note Mail Spool::). This removes gaps between article
  1959. numbers, hence getting a correct total article count.
  1960. Some more commands for closing, disabling, and re-opening servers are
  1961. listed in *note Unavailable Servers::.
  1962. 
  1963. File: gnus, Node: Example Methods, Next: Creating a Virtual Server, Prev: Server Commands, Up: Server Buffer
  1964. 6.1.3 Example Methods
  1965. ---------------------
  1966. Most select methods are pretty simple and self-explanatory:
  1967. (nntp "news.funet.fi")
  1968. Reading directly from the spool is even simpler:
  1969. (nnspool "")
  1970. As you can see, the first element in a select method is the name of
  1971. the back end, and the second is the "address", or "name", if you will.
  1972. After these two elements, there may be an arbitrary number of
  1973. `(VARIABLE FORM)' pairs.
  1974. To go back to the first example--imagine that you want to read from
  1975. port 15 on that machine. This is what the select method should look
  1976. like then:
  1977. (nntp "news.funet.fi" (nntp-port-number 15))
  1978. You should read the documentation to each back end to find out what
  1979. variables are relevant, but here's an `nnmh' example:
  1980. `nnmh' is a mail back end that reads a spool-like structure. Say
  1981. you have two structures that you wish to access: One is your private
  1982. mail spool, and the other is a public one. Here's the possible spec for
  1983. your private mail:
  1984. (nnmh "private" (nnmh-directory "~/private/mail/"))
  1985. (This server is then called `private', but you may have guessed
  1986. that.)
  1987. Here's the method for a public spool:
  1988. (nnmh "public"
  1989. (nnmh-directory "/usr/information/spool/")
  1990. (nnmh-get-new-mail nil))
  1991. If you are behind a firewall and only have access to the NNTP server
  1992. from the firewall machine, you can instruct Gnus to `rlogin' on the
  1993. firewall machine and connect with netcat
  1994. (http://netcat.sourceforge.net/) from there to the NNTP server. Doing
  1995. this can be rather fiddly, but your virtual server definition should
  1996. probably look something like this:
  1997. (nntp "firewall"
  1998. (nntp-open-connection-function nntp-open-via-rlogin-and-netcat)
  1999. (nntp-via-address "the.firewall.machine")
  2000. (nntp-address "the.real.nntp.host"))
  2001. If you want to use the wonderful `ssh' program to provide a
  2002. compressed connection over the modem line, you could add the following
  2003. configuration to the example above:
  2004. (nntp-via-rlogin-command "ssh")
  2005. See also `nntp-via-rlogin-command-switches'. Here's an example for
  2006. an indirect connection:
  2007. (setq gnus-select-method
  2008. '(nntp "indirect"
  2009. (nntp-address "news.server.example")
  2010. (nntp-via-user-name "intermediate_user_name")
  2011. (nntp-via-address "intermediate.host.example")
  2012. (nntp-via-rlogin-command "ssh")
  2013. (nntp-via-rlogin-command-switches ("-C"))
  2014. (nntp-open-connection-function nntp-open-via-rlogin-and-netcat)))
  2015. This means that you have to have set up `ssh-agent' correctly to
  2016. provide automatic authorization, of course.
  2017. If you're behind a firewall, but have direct access to the outside
  2018. world through a wrapper command like "runsocks", you could open a
  2019. socksified netcat connection to the news server as follows:
  2020. (nntp "outside"
  2021. (nntp-pre-command "runsocks")
  2022. (nntp-open-connection-function nntp-open-netcat-stream)
  2023. (nntp-address "the.news.server"))
  2024. 
  2025. File: gnus, Node: Creating a Virtual Server, Next: Server Variables, Prev: Example Methods, Up: Server Buffer
  2026. 6.1.4 Creating a Virtual Server
  2027. -------------------------------
  2028. If you're saving lots of articles in the cache by using persistent
  2029. articles, you may want to create a virtual server to read the cache.
  2030. First you need to add a new server. The `a' command does that. It
  2031. would probably be best to use `nnml' to read the cache. You could also
  2032. use `nnspool' or `nnmh', though.
  2033. Type `a nnml RET cache RET'.
  2034. You should now have a brand new `nnml' virtual server called
  2035. `cache'. You now need to edit it to have the right definitions. Type
  2036. `e' to edit the server. You'll be entered into a buffer that will
  2037. contain the following:
  2038. (nnml "cache")
  2039. Change that to:
  2040. (nnml "cache"
  2041. (nnml-directory "~/News/cache/")
  2042. (nnml-active-file "~/News/cache/active"))
  2043. Type `C-c C-c' to return to the server buffer. If you now press
  2044. `RET' over this virtual server, you should be entered into a browse
  2045. buffer, and you should be able to enter any of the groups displayed.
  2046. 
  2047. File: gnus, Node: Server Variables, Next: Servers and Methods, Prev: Creating a Virtual Server, Up: Server Buffer
  2048. 6.1.5 Server Variables
  2049. ----------------------
  2050. One sticky point when defining variables (both on back ends and in Emacs
  2051. in general) is that some variables are typically initialized from other
  2052. variables when the definition of the variables is being loaded. If you
  2053. change the "base" variable after the variables have been loaded, you
  2054. won't change the "derived" variables.
  2055. This typically affects directory and file variables. For instance,
  2056. `nnml-directory' is `~/Mail/' by default, and all `nnml' directory
  2057. variables are initialized from that variable, so `nnml-active-file'
  2058. will be `~/Mail/active'. If you define a new virtual `nnml' server, it
  2059. will _not_ suffice to set just `nnml-directory'--you have to explicitly
  2060. set all the file variables to be what you want them to be. For a
  2061. complete list of variables for each back end, see each back end's
  2062. section later in this manual, but here's an example `nnml' definition:
  2063. (nnml "public"
  2064. (nnml-directory "~/my-mail/")
  2065. (nnml-active-file "~/my-mail/active")
  2066. (nnml-newsgroups-file "~/my-mail/newsgroups"))
  2067. Server variables are often called "server parameters".
  2068. 
  2069. File: gnus, Node: Servers and Methods, Next: Unavailable Servers, Prev: Server Variables, Up: Server Buffer
  2070. 6.1.6 Servers and Methods
  2071. -------------------------
  2072. Wherever you would normally use a select method (e.g.
  2073. `gnus-secondary-select-method', in the group select method, when
  2074. browsing a foreign server) you can use a virtual server name instead.
  2075. This could potentially save lots of typing. And it's nice all over.
  2076. 
  2077. File: gnus, Node: Unavailable Servers, Prev: Servers and Methods, Up: Server Buffer
  2078. 6.1.7 Unavailable Servers
  2079. -------------------------
  2080. If a server seems to be unreachable, Gnus will mark that server as
  2081. `denied'. That means that any subsequent attempt to make contact with
  2082. that server will just be ignored. "It can't be opened," Gnus will tell
  2083. you, without making the least effort to see whether that is actually
  2084. the case or not.
  2085. That might seem quite naughty, but it does make sense most of the
  2086. time. Let's say you have 10 groups subscribed to on server
  2087. `nephelococcygia.com'. This server is located somewhere quite far away
  2088. from you and the machine is quite slow, so it takes 1 minute just to
  2089. find out that it refuses connection to you today. If Gnus were to
  2090. attempt to do that 10 times, you'd be quite annoyed, so Gnus won't
  2091. attempt to do that. Once it has gotten a single "connection refused",
  2092. it will regard that server as "down".
  2093. So, what happens if the machine was only feeling unwell temporarily?
  2094. How do you test to see whether the machine has come up again?
  2095. You jump to the server buffer (*note Server Buffer::) and poke it
  2096. with the following commands:
  2097. `O'
  2098. Try to establish connection to the server on the current line
  2099. (`gnus-server-open-server').
  2100. `C'
  2101. Close the connection (if any) to the server
  2102. (`gnus-server-close-server').
  2103. `D'
  2104. Mark the current server as unreachable (`gnus-server-deny-server').
  2105. `M-o'
  2106. Open the connections to all servers in the buffer
  2107. (`gnus-server-open-all-servers').
  2108. `M-c'
  2109. Close the connections to all servers in the buffer
  2110. (`gnus-server-close-all-servers').
  2111. `R'
  2112. Remove all marks to whether Gnus was denied connection from any
  2113. servers (`gnus-server-remove-denials').
  2114. `c'
  2115. Copy a server and give it a new name (`gnus-server-copy-server').
  2116. This can be useful if you have a complex method definition, and
  2117. want to use the same definition towards a different (physical)
  2118. server.
  2119. `L'
  2120. Set server status to offline (`gnus-server-offline-server').
  2121. 
  2122. File: gnus, Node: Getting News, Next: Using IMAP, Prev: Server Buffer, Up: Select Methods
  2123. 6.2 Getting News
  2124. ================
  2125. A newsreader is normally used for reading news. Gnus currently provides
  2126. only two methods of getting news--it can read from an NNTP server, or
  2127. it can read from a local spool.
  2128. * Menu:
  2129. * NNTP:: Reading news from an NNTP server.
  2130. * News Spool:: Reading news from the local spool.
  2131. 
  2132. File: gnus, Node: NNTP, Next: News Spool, Up: Getting News
  2133. 6.2.1 NNTP
  2134. ----------
  2135. Subscribing to a foreign group from an NNTP server is rather easy. You
  2136. just specify `nntp' as method and the address of the NNTP server as
  2137. the, uhm, address.
  2138. If the NNTP server is located at a non-standard port, setting the
  2139. third element of the select method to this port number should allow you
  2140. to connect to the right port. You'll have to edit the group info for
  2141. that (*note Foreign Groups::).
  2142. The name of the foreign group can be the same as a native group. In
  2143. fact, you can subscribe to the same group from as many different servers
  2144. you feel like. There will be no name collisions.
  2145. The following variables can be used to create a virtual `nntp'
  2146. server:
  2147. `nntp-server-opened-hook'
  2148. is run after a connection has been made. It can be used to send
  2149. commands to the NNTP server after it has been contacted. By
  2150. default it sends the command `MODE READER' to the server with the
  2151. `nntp-send-mode-reader' function. This function should always be
  2152. present in this hook.
  2153. `nntp-authinfo-function'
  2154. This function will be used to send `AUTHINFO' to the NNTP server.
  2155. The default function is `nntp-send-authinfo', which looks through
  2156. your `~/.authinfo' (or whatever you've set the
  2157. `nntp-authinfo-file' variable to) for applicable entries. If none
  2158. are found, it will prompt you for a login name and a password. The
  2159. format of the `~/.authinfo' file is (almost) the same as the `ftp'
  2160. `~/.netrc' file, which is defined in the `ftp' manual page, but
  2161. here are the salient facts:
  2162. 1. The file contains one or more line, each of which define one
  2163. server.
  2164. 2. Each line may contain an arbitrary number of token/value
  2165. pairs.
  2166. The valid tokens include `machine', `login', `password',
  2167. `default'. In addition Gnus introduces two new tokens, not
  2168. present in the original `.netrc'/`ftp' syntax, namely `port'
  2169. and `force'. (This is the only way the `.authinfo' file
  2170. format deviates from the `.netrc' file format.) `port' is
  2171. used to indicate what port on the server the credentials
  2172. apply to and `force' is explained below.
  2173. Here's an example file:
  2174. machine news.uio.no login larsi password geheimnis
  2175. machine nntp.ifi.uio.no login larsi force yes
  2176. The token/value pairs may appear in any order; `machine' doesn't
  2177. have to be first, for instance.
  2178. In this example, both login name and password have been supplied
  2179. for the former server, while the latter has only the login name
  2180. listed, and the user will be prompted for the password. The
  2181. latter also has the `force' tag, which means that the authinfo
  2182. will be sent to the NNTP server upon connection; the default
  2183. (i.e., when there is not `force' tag) is to not send authinfo to
  2184. the NNTP server until the NNTP server asks for it.
  2185. You can also add `default' lines that will apply to all servers
  2186. that don't have matching `machine' lines.
  2187. default force yes
  2188. This will force sending `AUTHINFO' commands to all servers not
  2189. previously mentioned.
  2190. Remember to not leave the `~/.authinfo' file world-readable.
  2191. `nntp-server-action-alist'
  2192. This is a list of regexps to match on server types and actions to
  2193. be taken when matches are made. For instance, if you want Gnus to
  2194. beep every time you connect to innd, you could say something like:
  2195. (setq nntp-server-action-alist
  2196. '(("innd" (ding))))
  2197. You probably don't want to do that, though.
  2198. The default value is
  2199. '(("nntpd 1\\.5\\.11t"
  2200. (remove-hook 'nntp-server-opened-hook
  2201. 'nntp-send-mode-reader)))
  2202. This ensures that Gnus doesn't send the `MODE READER' command to
  2203. nntpd 1.5.11t, since that command chokes that server, I've been
  2204. told.
  2205. `nntp-maximum-request'
  2206. If the NNTP server doesn't support NOV headers, this back end will
  2207. collect headers by sending a series of `head' commands. To speed
  2208. things up, the back end sends lots of these commands without
  2209. waiting for reply, and then reads all the replies. This is
  2210. controlled by the `nntp-maximum-request' variable, and is 400 by
  2211. default. If your network is buggy, you should set this to 1.
  2212. `nntp-connection-timeout'
  2213. If you have lots of foreign `nntp' groups that you connect to
  2214. regularly, you're sure to have problems with NNTP servers not
  2215. responding properly, or being too loaded to reply within reasonable
  2216. time. This is can lead to awkward problems, which can be helped
  2217. somewhat by setting `nntp-connection-timeout'. This is an integer
  2218. that says how many seconds the `nntp' back end should wait for a
  2219. connection before giving up. If it is `nil', which is the default,
  2220. no timeouts are done.
  2221. `nntp-nov-is-evil'
  2222. If the NNTP server does not support NOV, you could set this
  2223. variable to `t', but `nntp' usually checks automatically whether
  2224. NOV can be used.
  2225. `nntp-xover-commands'
  2226. List of strings used as commands to fetch NOV lines from a server.
  2227. The default value of this variable is `("XOVER" "XOVERVIEW")'.
  2228. `nntp-nov-gap'
  2229. `nntp' normally sends just one big request for NOV lines to the
  2230. server. The server responds with one huge list of lines. However,
  2231. if you have read articles 2-5000 in the group, and only want to
  2232. read article 1 and 5001, that means that `nntp' will fetch 4999 NOV
  2233. lines that you will not need. This variable says how big a gap
  2234. between two consecutive articles is allowed to be before the
  2235. `XOVER' request is split into several request. Note that if your
  2236. network is fast, setting this variable to a really small number
  2237. means that fetching will probably be slower. If this variable is
  2238. `nil', `nntp' will never split requests. The default is 5.
  2239. `nntp-xref-number-is-evil'
  2240. When Gnus refers to an article having the `Message-ID' that a user
  2241. specifies or having the `Message-ID' of the parent article of the
  2242. current one (*note Finding the Parent::), Gnus sends a `HEAD'
  2243. command to the NNTP server to know where it is, and the server
  2244. returns the data containing the pairs of a group and an article
  2245. number in the `Xref' header. Gnus normally uses the article
  2246. number to refer to the article if the data shows that that article
  2247. is in the current group, while it uses the `Message-ID' otherwise.
  2248. However, some news servers, e.g., ones running Diablo, run
  2249. multiple engines having the same articles but article numbers are
  2250. not kept synchronized between them. In that case, the article
  2251. number that appears in the `Xref' header varies by which engine is
  2252. chosen, so you cannot refer to the parent article that is in the
  2253. current group, for instance. If you connect to such a server, set
  2254. this variable to a non-`nil' value, and Gnus never uses article
  2255. numbers. For example:
  2256. (setq gnus-select-method
  2257. '(nntp "newszilla"
  2258. (nntp-address "newszilla.example.com")
  2259. (nntp-xref-number-is-evil t)
  2260. ...))
  2261. The default value of this server variable is `nil'.
  2262. `nntp-prepare-server-hook'
  2263. A hook run before attempting to connect to an NNTP server.
  2264. `nntp-record-commands'
  2265. If non-`nil', `nntp' will log all commands it sends to the NNTP
  2266. server (along with a timestamp) in the `*nntp-log*' buffer. This
  2267. is useful if you are debugging a Gnus/NNTP connection that doesn't
  2268. seem to work.
  2269. `nntp-open-connection-function'
  2270. It is possible to customize how the connection to the nntp server
  2271. will be opened. If you specify an `nntp-open-connection-function'
  2272. parameter, Gnus will use that function to establish the connection.
  2273. Seven pre-made functions are supplied. These functions can be
  2274. grouped in two categories: direct connection functions (four
  2275. pre-made), and indirect ones (three pre-made).
  2276. `nntp-never-echoes-commands'
  2277. Non-`nil' means the nntp server never echoes commands. It is
  2278. reported that some nntps server doesn't echo commands. So, you
  2279. may want to set this to non-`nil' in the method for such a server
  2280. setting `nntp-open-connection-function' to `nntp-open-ssl-stream'
  2281. for example. The default value is `nil'. Note that the
  2282. `nntp-open-connection-functions-never-echo-commands' variable
  2283. overrides the `nil' value of this variable.
  2284. `nntp-open-connection-functions-never-echo-commands'
  2285. List of functions that never echo commands. Add or set a function
  2286. which you set to `nntp-open-connection-function' to this list if
  2287. it does not echo commands. Note that a non-`nil' value of the
  2288. `nntp-never-echoes-commands' variable overrides this variable. The
  2289. default value is `(nntp-open-network-stream)'.
  2290. `nntp-prepare-post-hook'
  2291. A hook run just before posting an article. If there is no
  2292. `Message-ID' header in the article and the news server provides the
  2293. recommended ID, it will be added to the article before running this
  2294. hook. It is useful to make `Cancel-Lock' headers even if you
  2295. inhibit Gnus to add a `Message-ID' header, you could say:
  2296. (add-hook 'nntp-prepare-post-hook 'canlock-insert-header)
  2297. Note that not all servers support the recommended ID. This works
  2298. for INN versions 2.3.0 and later, for instance.
  2299. `nntp-server-list-active-group'
  2300. If `nil', then always use `GROUP' instead of `LIST ACTIVE'. This
  2301. is usually slower, but on misconfigured servers that don't update
  2302. their active files often, this can help.
  2303. * Menu:
  2304. * Direct Functions:: Connecting directly to the server.
  2305. * Indirect Functions:: Connecting indirectly to the server.
  2306. * Common Variables:: Understood by several connection functions.
  2307. * NNTP marks:: Storing marks for NNTP servers.
  2308. 
  2309. File: gnus, Node: Direct Functions, Next: Indirect Functions, Up: NNTP
  2310. 6.2.1.1 Direct Functions
  2311. ........................
  2312. These functions are called direct because they open a direct connection
  2313. between your machine and the NNTP server. The behavior of these
  2314. functions is also affected by commonly understood variables (*note
  2315. Common Variables::).
  2316. `nntp-open-network-stream'
  2317. This is the default, and simply connects to some port or other on
  2318. the remote system. If both Emacs and the server supports it, the
  2319. connection will be upgraded to an encrypted STARTTLS connection
  2320. automatically.
  2321. `network-only'
  2322. The same as the above, but don't do automatic STARTTLS upgrades.
  2323. `nntp-open-tls-stream'
  2324. Opens a connection to a server over a "secure" channel. To use
  2325. this you must have GnuTLS (http://www.gnu.org/software/gnutls/)
  2326. installed. You then define a server as follows:
  2327. ;; "nntps" is port 563 and is predefined in our `/etc/services'
  2328. ;; however, `gnutls-cli -p' doesn't like named ports.
  2329. ;;
  2330. (nntp "snews.bar.com"
  2331. (nntp-open-connection-function nntp-open-tls-stream)
  2332. (nntp-port-number 563)
  2333. (nntp-address "snews.bar.com"))
  2334. `nntp-open-ssl-stream'
  2335. Opens a connection to a server over a "secure" channel. To use
  2336. this you must have OpenSSL (http://www.openssl.org) or SSLeay
  2337. (ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL) installed. You then
  2338. define a server as follows:
  2339. ;; "snews" is port 563 and is predefined in our `/etc/services'
  2340. ;; however, `openssl s_client -port' doesn't like named ports.
  2341. ;;
  2342. (nntp "snews.bar.com"
  2343. (nntp-open-connection-function nntp-open-ssl-stream)
  2344. (nntp-port-number 563)
  2345. (nntp-address "snews.bar.com"))
  2346. `nntp-open-netcat-stream'
  2347. Opens a connection to an NNTP server using the `netcat' program.
  2348. You might wonder why this function exists, since we have the
  2349. default `nntp-open-network-stream' which would do the job. (One
  2350. of) the reason(s) is that if you are behind a firewall but have
  2351. direct connections to the outside world thanks to a command
  2352. wrapper like `runsocks', you can use it like this:
  2353. (nntp "socksified"
  2354. (nntp-pre-command "runsocks")
  2355. (nntp-open-connection-function nntp-open-netcat-stream)
  2356. (nntp-address "the.news.server"))
  2357. With the default method, you would need to wrap your whole Emacs
  2358. session, which is not a good idea.
  2359. `nntp-open-telnet-stream'
  2360. Like `nntp-open-netcat-stream', but uses `telnet' rather than
  2361. `netcat'. `telnet' is a bit less robust because of things like
  2362. line-end-conversion, but sometimes netcat is simply not available.
  2363. The previous example would turn into:
  2364. (nntp "socksified"
  2365. (nntp-pre-command "runsocks")
  2366. (nntp-open-connection-function nntp-open-telnet-stream)
  2367. (nntp-address "the.news.server")
  2368. (nntp-end-of-line "\n"))
  2369. 
  2370. File: gnus, Node: Indirect Functions, Next: Common Variables, Prev: Direct Functions, Up: NNTP
  2371. 6.2.1.2 Indirect Functions
  2372. ..........................
  2373. These functions are called indirect because they connect to an
  2374. intermediate host before actually connecting to the NNTP server. All
  2375. of these functions and related variables are also said to belong to the
  2376. "via" family of connection: they're all prefixed with "via" to make
  2377. things cleaner. The behavior of these functions is also affected by
  2378. commonly understood variables (*note Common Variables::).
  2379. `nntp-open-via-rlogin-and-netcat'
  2380. Does an `rlogin' on a remote system, and then uses `netcat' to
  2381. connect to the real NNTP server from there. This is useful for
  2382. instance if you need to connect to a firewall machine first.
  2383. `nntp-open-via-rlogin-and-netcat'-specific variables:
  2384. `nntp-via-rlogin-command'
  2385. Command used to log in on the intermediate host. The default
  2386. is `rsh', but `ssh' is a popular alternative.
  2387. `nntp-via-rlogin-command-switches'
  2388. List of strings to be used as the switches to
  2389. `nntp-via-rlogin-command'. The default is `nil'. If you use
  2390. `ssh' for `nntp-via-rlogin-command', you may set this to
  2391. `("-C")' in order to compress all data connections.
  2392. `nntp-open-via-rlogin-and-telnet'
  2393. Does essentially the same, but uses `telnet' instead of `netcat'
  2394. to connect to the real NNTP server from the intermediate host.
  2395. `telnet' is a bit less robust because of things like
  2396. line-end-conversion, but sometimes `netcat' is simply not
  2397. available.
  2398. `nntp-open-via-rlogin-and-telnet'-specific variables:
  2399. `nntp-telnet-command'
  2400. Command used to connect to the real NNTP server from the
  2401. intermediate host. The default is `telnet'.
  2402. `nntp-telnet-switches'
  2403. List of strings to be used as the switches to the
  2404. `nntp-telnet-command' command. The default is `("-8")'.
  2405. `nntp-via-rlogin-command'
  2406. Command used to log in on the intermediate host. The default
  2407. is `rsh', but `ssh' is a popular alternative.
  2408. `nntp-via-rlogin-command-switches'
  2409. List of strings to be used as the switches to
  2410. `nntp-via-rlogin-command'. If you use `ssh', you may need
  2411. to set this to `("-t" "-e" "none")' or `("-C" "-t" "-e"
  2412. "none")' if the telnet command requires a pseudo-tty
  2413. allocation on an intermediate host. The default is `nil'.
  2414. Note that you may want to change the value for `nntp-end-of-line'
  2415. to `\n' (*note Common Variables::).
  2416. `nntp-open-via-telnet-and-telnet'
  2417. Does essentially the same, but uses `telnet' instead of `rlogin'
  2418. to connect to the intermediate host.
  2419. `nntp-open-via-telnet-and-telnet'-specific variables:
  2420. `nntp-via-telnet-command'
  2421. Command used to `telnet' the intermediate host. The default
  2422. is `telnet'.
  2423. `nntp-via-telnet-switches'
  2424. List of strings to be used as the switches to the
  2425. `nntp-via-telnet-command' command. The default is `("-8")'.
  2426. `nntp-via-user-password'
  2427. Password to use when logging in on the intermediate host.
  2428. `nntp-via-envuser'
  2429. If non-`nil', the intermediate `telnet' session (client and
  2430. server both) will support the `ENVIRON' option and not prompt
  2431. for login name. This works for Solaris `telnet', for
  2432. instance.
  2433. `nntp-via-shell-prompt'
  2434. Regexp matching the shell prompt on the intermediate host.
  2435. The default is `bash\\|\$ *\r?$\\|> *\r?'.
  2436. Note that you may want to change the value for `nntp-end-of-line'
  2437. to `\n' (*note Common Variables::).
  2438. Here are some additional variables that are understood by all the
  2439. above functions:
  2440. `nntp-via-user-name'
  2441. User name to use when connecting to the intermediate host.
  2442. `nntp-via-address'
  2443. Address of the intermediate host to connect to.
  2444. 
  2445. File: gnus, Node: Common Variables, Next: NNTP marks, Prev: Indirect Functions, Up: NNTP
  2446. 6.2.1.3 Common Variables
  2447. ........................
  2448. The following variables affect the behavior of all, or several of the
  2449. pre-made connection functions. When not specified, all functions are
  2450. affected (the values of the following variables will be used as the
  2451. default if each virtual `nntp' server doesn't specify those server
  2452. variables individually).
  2453. `nntp-pre-command'
  2454. A command wrapper to use when connecting through a non native
  2455. connection function (all except `nntp-open-network-stream',
  2456. `nntp-open-tls-stream', and `nntp-open-ssl-stream'). This is
  2457. where you would put a `SOCKS' wrapper for instance.
  2458. `nntp-address'
  2459. The address of the NNTP server.
  2460. `nntp-port-number'
  2461. Port number to connect to the NNTP server. The default is `nntp'.
  2462. If you use NNTP over TLS/SSL, you may want to use integer ports
  2463. rather than named ports (i.e, use `563' instead of `snews' or
  2464. `nntps'), because external TLS/SSL tools may not work with named
  2465. ports.
  2466. `nntp-end-of-line'
  2467. String to use as end-of-line marker when talking to the NNTP
  2468. server. This is `\r\n' by default, but should be `\n' when using
  2469. a non native telnet connection function.
  2470. `nntp-netcat-command'
  2471. Command to use when connecting to the NNTP server through
  2472. `netcat'. This is _not_ for an intermediate host. This is just
  2473. for the real NNTP server. The default is `nc'.
  2474. `nntp-netcat-switches'
  2475. A list of switches to pass to `nntp-netcat-command'. The default
  2476. is `()'.
  2477. 
  2478. File: gnus, Node: NNTP marks, Prev: Common Variables, Up: NNTP
  2479. 6.2.1.4 NNTP marks
  2480. ..................
  2481. Gnus stores marks (*note Marking Articles::) for NNTP servers in marks
  2482. files. A marks file records what marks you have set in a group and
  2483. each file is specific to the corresponding server. Marks files are
  2484. stored in `~/News/marks' (`nntp-marks-directory') under a classic
  2485. hierarchy resembling that of a news server, for example marks for the
  2486. group `gmane.discuss' on the news.gmane.org server will be stored in
  2487. the file `~/News/marks/news.gmane.org/gmane/discuss/.marks'.
  2488. Marks files are useful because you can copy the `~/News/marks'
  2489. directory (using rsync, scp or whatever) to another Gnus installation,
  2490. and it will realize what articles you have read and marked. The data
  2491. in `~/News/marks' has priority over the same data in `~/.newsrc.eld'.
  2492. Note that marks files are very much server-specific: Gnus remembers
  2493. the article numbers so if you don't use the same servers on both
  2494. installations things are most likely to break (most NNTP servers do not
  2495. use the same article numbers as any other server). However, if you use
  2496. servers A, B, C on one installation and servers A, D, E on the other,
  2497. you can sync the marks files for A and then you'll get synchronization
  2498. for that server between the two installations.
  2499. Using NNTP marks can possibly incur a performance penalty so if Gnus
  2500. feels sluggish, try setting the `nntp-marks-is-evil' variable to `t'.
  2501. Marks will then be stored in `~/.newsrc.eld'.
  2502. Related variables:
  2503. `nntp-marks-is-evil'
  2504. If non-`nil', this back end will ignore any marks files. The
  2505. default is `nil'.
  2506. `nntp-marks-directory'
  2507. The directory where marks for nntp groups will be stored.
  2508. 
  2509. File: gnus, Node: News Spool, Prev: NNTP, Up: Getting News
  2510. 6.2.2 News Spool
  2511. ----------------
  2512. Subscribing to a foreign group from the local spool is extremely easy,
  2513. and might be useful, for instance, to speed up reading groups that
  2514. contain very big articles--`alt.binaries.pictures.furniture', for
  2515. instance.
  2516. Anyway, you just specify `nnspool' as the method and `""' (or
  2517. anything else) as the address.
  2518. If you have access to a local spool, you should probably use that as
  2519. the native select method (*note Finding the News::). It is normally
  2520. faster than using an `nntp' select method, but might not be. It
  2521. depends. You just have to try to find out what's best at your site.
  2522. `nnspool-inews-program'
  2523. Program used to post an article.
  2524. `nnspool-inews-switches'
  2525. Parameters given to the inews program when posting an article.
  2526. `nnspool-spool-directory'
  2527. Where `nnspool' looks for the articles. This is normally
  2528. `/usr/spool/news/'.
  2529. `nnspool-nov-directory'
  2530. Where `nnspool' will look for NOV files. This is normally
  2531. `/usr/spool/news/over.view/'.
  2532. `nnspool-lib-dir'
  2533. Where the news lib dir is (`/usr/lib/news/' by default).
  2534. `nnspool-active-file'
  2535. The name of the active file.
  2536. `nnspool-newsgroups-file'
  2537. The name of the group descriptions file.
  2538. `nnspool-history-file'
  2539. The name of the news history file.
  2540. `nnspool-active-times-file'
  2541. The name of the active date file.
  2542. `nnspool-nov-is-evil'
  2543. If non-`nil', `nnspool' won't try to use any NOV files that it
  2544. finds.
  2545. `nnspool-sift-nov-with-sed'
  2546. If non-`nil', which is the default, use `sed' to get the relevant
  2547. portion from the overview file. If `nil', `nnspool' will load the
  2548. entire file into a buffer and process it there.
  2549. 
  2550. File: gnus, Node: Using IMAP, Next: Getting Mail, Prev: Getting News, Up: Select Methods
  2551. 6.3 Using IMAP
  2552. ==============
  2553. The most popular mail backend is probably `nnimap', which provides
  2554. access to IMAP servers. IMAP servers store mail remotely, so the
  2555. client doesn't store anything locally. This means that it's a
  2556. convenient choice when you're reading your mail from different
  2557. locations, or with different user agents.
  2558. * Menu:
  2559. * Connecting to an IMAP Server:: Getting started with IMAP.
  2560. * Customizing the IMAP Connection:: Variables for IMAP connection.
  2561. * Client-Side IMAP Splitting:: Put mail in the correct mail box.
  2562. 
  2563. File: gnus, Node: Connecting to an IMAP Server, Next: Customizing the IMAP Connection, Up: Using IMAP
  2564. 6.3.1 Connecting to an IMAP Server
  2565. ----------------------------------
  2566. Connecting to an IMAP can be very easy. Type `B' in the group buffer,
  2567. or (if your primary interest is reading email), say something like:
  2568. (setq gnus-select-method
  2569. '(nnimap "imap.gmail.com"))
  2570. You'll be prompted for a user name and password. If you grow tired
  2571. of that, then add the following to your `~/.authinfo' file:
  2572. machine imap.gmail.com login <username> password <password> port imap
  2573. That should basically be it for most users.
  2574. 
  2575. File: gnus, Node: Customizing the IMAP Connection, Next: Client-Side IMAP Splitting, Prev: Connecting to an IMAP Server, Up: Using IMAP
  2576. 6.3.2 Customizing the IMAP Connection
  2577. -------------------------------------
  2578. Here's an example method that's more complex:
  2579. (nnimap "imap.gmail.com"
  2580. (nnimap-inbox "INBOX")
  2581. (nnimap-split-methods default)
  2582. (nnimap-expunge t)
  2583. (nnimap-stream ssl))
  2584. `nnimap-address'
  2585. The address of the server, like `imap.gmail.com'.
  2586. `nnimap-server-port'
  2587. If the server uses a non-standard port, that can be specified
  2588. here. A typical port would be `"imap"' or `"imaps"'.
  2589. `nnimap-stream'
  2590. How `nnimap' should connect to the server. Possible values are:
  2591. `undecided'
  2592. This is the default, and this first tries the `ssl' setting,
  2593. and then tries the `network' setting.
  2594. `ssl'
  2595. This uses standard TLS/SSL connections.
  2596. `network'
  2597. Non-encrypted and unsafe straight socket connection, but will
  2598. upgrade to encrypted STARTTLS if both Emacs and the server
  2599. supports it.
  2600. `starttls'
  2601. Encrypted STARTTLS over the normal IMAP port.
  2602. `shell'
  2603. If you need to tunnel via other systems to connect to the
  2604. server, you can use this option, and customize
  2605. `nnimap-shell-program' to be what you need.
  2606. `nnimap-authenticator'
  2607. Some IMAP servers allow anonymous logins. In that case, this
  2608. should be set to `anonymous'.
  2609. `nnimap-expunge'
  2610. If non-`nil', expunge articles after deleting them. This is
  2611. always done if the server supports UID EXPUNGE, but it's not done
  2612. by default on servers that doesn't support that command.
  2613. `nnimap-streaming'
  2614. Virtually all IMAP server support fast streaming of data. If you
  2615. have problems connecting to the server, try setting this to `nil'.
  2616. `nnimap-fetch-partial-articles'
  2617. If non-`nil', fetch partial articles from the server. If set to a
  2618. string, then it's interpreted as a regexp, and parts that have
  2619. matching types will be fetched. For instance, `"text/"' will
  2620. fetch all textual parts, while leaving the rest on the server.
  2621. `nnimap-record-commands'
  2622. If non-`nil', record all IMAP commands in the `"*imap log*"'
  2623. buffer.
  2624. 
  2625. File: gnus, Node: Client-Side IMAP Splitting, Prev: Customizing the IMAP Connection, Up: Using IMAP
  2626. 6.3.3 Client-Side IMAP Splitting
  2627. --------------------------------
  2628. Many people prefer to do the sorting/splitting of mail into their mail
  2629. boxes on the IMAP server. That way they don't have to download the
  2630. mail they're not all that interested in.
  2631. If you do want to do client-side mail splitting, then the following
  2632. variables are relevant:
  2633. `nnimap-inbox'
  2634. This is the IMAP mail box that will be scanned for new mail.
  2635. `nnimap-split-methods'
  2636. Uses the same syntax as `nnmail-split-methods' (*note Splitting
  2637. Mail::), except the symbol `default', which means that it should
  2638. use the value of the `nnmail-split-methods' variable.
  2639. `nnimap-split-fancy'
  2640. Uses the same syntax as `nnmail-split-fancy'.
  2641. `nnimap-unsplittable-articles'
  2642. List of flag symbols to ignore when doing splitting. That is,
  2643. articles that have these flags won't be considered when splitting.
  2644. The default is `(%Deleted %Seen)'.
  2645. Here's a complete example `nnimap' backend with a client-side
  2646. "fancy" splitting method:
  2647. (nnimap "imap.example.com"
  2648. (nnimap-inbox "INBOX")
  2649. (nnimap-split-methods
  2650. (| ("MailScanner-SpamCheck" "spam" "spam.detected")
  2651. (to "foo@bar.com" "foo")
  2652. "undecided")))
  2653. 
  2654. File: gnus, Node: Getting Mail, Next: Browsing the Web, Prev: Using IMAP, Up: Select Methods
  2655. 6.4 Getting Mail
  2656. ================
  2657. Reading mail with a newsreader--isn't that just plain WeIrD? But of
  2658. course.
  2659. * Menu:
  2660. * Mail in a Newsreader:: Important introductory notes.
  2661. * Getting Started Reading Mail:: A simple cookbook example.
  2662. * Splitting Mail:: How to create mail groups.
  2663. * Mail Sources:: How to tell Gnus where to get mail from.
  2664. * Mail Back End Variables:: Variables for customizing mail handling.
  2665. * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
  2666. * Group Mail Splitting:: Use group customize to drive mail splitting.
  2667. * Incorporating Old Mail:: What about the old mail you have?
  2668. * Expiring Mail:: Getting rid of unwanted mail.
  2669. * Washing Mail:: Removing cruft from the mail you get.
  2670. * Duplicates:: Dealing with duplicated mail.
  2671. * Not Reading Mail:: Using mail back ends for reading other files.
  2672. * Choosing a Mail Back End:: Gnus can read a variety of mail formats.
  2673. 
  2674. File: gnus, Node: Mail in a Newsreader, Next: Getting Started Reading Mail, Up: Getting Mail
  2675. 6.4.1 Mail in a Newsreader
  2676. --------------------------
  2677. If you are used to traditional mail readers, but have decided to switch
  2678. to reading mail with Gnus, you may find yourself experiencing something
  2679. of a culture shock.
  2680. Gnus does not behave like traditional mail readers. If you want to
  2681. make it behave that way, you can, but it's an uphill battle.
  2682. Gnus, by default, handles all its groups using the same approach.
  2683. This approach is very newsreaderly--you enter a group, see the
  2684. new/unread messages, and when you read the messages, they get marked as
  2685. read, and you don't see them any more. (Unless you explicitly ask for
  2686. them.)
  2687. In particular, you do not do anything explicitly to delete messages.
  2688. Does this mean that all the messages that have been marked as read
  2689. are deleted? How awful!
  2690. But, no, it means that old messages are "expired" according to some
  2691. scheme or other. For news messages, the expire process is controlled by
  2692. the news administrator; for mail, the expire process is controlled by
  2693. you. The expire process for mail is covered in depth in *note Expiring
  2694. Mail::.
  2695. What many Gnus users find, after using it a while for both news and
  2696. mail, is that the transport mechanism has very little to do with how
  2697. they want to treat a message.
  2698. Many people subscribe to several mailing lists. These are
  2699. transported via SMTP, and are therefore mail. But we might go for
  2700. weeks without answering, or even reading these messages very carefully.
  2701. We may not need to save them because if we should need to read one
  2702. again, they are archived somewhere else.
  2703. Some people have local news groups which have only a handful of
  2704. readers. These are transported via NNTP, and are therefore news. But
  2705. we may need to read and answer a large fraction of the messages very
  2706. carefully in order to do our work. And there may not be an archive, so
  2707. we may need to save the interesting messages the same way we would
  2708. personal mail.
  2709. The important distinction turns out to be not the transport
  2710. mechanism, but other factors such as how interested we are in the
  2711. subject matter, or how easy it is to retrieve the message if we need to
  2712. read it again.
  2713. Gnus provides many options for sorting mail into "groups" which
  2714. behave like newsgroups, and for treating each group (whether mail or
  2715. news) differently.
  2716. Some users never get comfortable using the Gnus (ahem) paradigm and
  2717. wish that Gnus should grow up and be a male, er, mail reader. It is
  2718. possible to whip Gnus into a more mailreaderly being, but, as said
  2719. before, it's not easy. People who prefer proper mail readers should
  2720. try VM instead, which is an excellent, and proper, mail reader.
  2721. I don't mean to scare anybody off, but I want to make it clear that
  2722. you may be required to learn a new way of thinking about messages.
  2723. After you've been subjected to The Gnus Way, you will come to love it.
  2724. I can guarantee it. (At least the guy who sold me the Emacs Subliminal
  2725. Brain-Washing Functions that I've put into Gnus did guarantee it. You
  2726. Will Be Assimilated. You Love Gnus. You Love The Gnus Mail Way. You
  2727. Do.)
  2728. 
  2729. File: gnus, Node: Getting Started Reading Mail, Next: Splitting Mail, Prev: Mail in a Newsreader, Up: Getting Mail
  2730. 6.4.2 Getting Started Reading Mail
  2731. ----------------------------------
  2732. It's quite easy to use Gnus to read your new mail. You just plonk the
  2733. mail back end of your choice into `gnus-secondary-select-methods', and
  2734. things will happen automatically.
  2735. For instance, if you want to use `nnml' (which is a "one file per
  2736. mail" back end), you could put the following in your `~/.gnus.el' file:
  2737. (setq gnus-secondary-select-methods '((nnml "")))
  2738. Now, the next time you start Gnus, this back end will be queried for
  2739. new articles, and it will move all the messages in your spool file to
  2740. its directory, which is `~/Mail/' by default. The new group that will
  2741. be created (`mail.misc') will be subscribed, and you can read it like
  2742. any other group.
  2743. You will probably want to split the mail into several groups, though:
  2744. (setq nnmail-split-methods
  2745. '(("junk" "^From:.*Lars Ingebrigtsen")
  2746. ("crazy" "^Subject:.*die\\|^Organization:.*flabby")
  2747. ("other" "")))
  2748. This will result in three new `nnml' mail groups being created:
  2749. `nnml:junk', `nnml:crazy', and `nnml:other'. All the mail that doesn't
  2750. fit into the first two groups will be placed in the last group.
  2751. This should be sufficient for reading mail with Gnus. You might
  2752. want to give the other sections in this part of the manual a perusal,
  2753. though. Especially *note Choosing a Mail Back End:: and *note Expiring
  2754. Mail::.
  2755. 
  2756. File: gnus, Node: Splitting Mail, Next: Mail Sources, Prev: Getting Started Reading Mail, Up: Getting Mail
  2757. 6.4.3 Splitting Mail
  2758. --------------------
  2759. The `nnmail-split-methods' variable says how the incoming mail is to be
  2760. split into groups.
  2761. (setq nnmail-split-methods
  2762. '(("mail.junk" "^From:.*Lars Ingebrigtsen")
  2763. ("mail.crazy" "^Subject:.*die\\|^Organization:.*flabby")
  2764. ("mail.other" "")))
  2765. This variable is a list of lists, where the first element of each of
  2766. these lists is the name of the mail group (they do not have to be called
  2767. something beginning with `mail', by the way), and the second element is
  2768. a regular expression used on the header of each mail to determine if it
  2769. belongs in this mail group. The first string may contain `\\1' forms,
  2770. like the ones used by `replace-match' to insert sub-expressions from
  2771. the matched text. For instance:
  2772. ("list.\\1" "From:.* \\(.*\\)-list@majordomo.com")
  2773. In that case, `nnmail-split-lowercase-expanded' controls whether the
  2774. inserted text should be made lowercase. *Note Fancy Mail Splitting::.
  2775. The second element can also be a function. In that case, it will be
  2776. called narrowed to the headers with the first element of the rule as the
  2777. argument. It should return a non-`nil' value if it thinks that the
  2778. mail belongs in that group.
  2779. The last of these groups should always be a general one, and the
  2780. regular expression should _always_ be `""' so that it matches any mails
  2781. that haven't been matched by any of the other regexps. (These rules are
  2782. processed from the beginning of the alist toward the end. The first
  2783. rule to make a match will "win", unless you have crossposting enabled.
  2784. In that case, all matching rules will "win".) If no rule matched, the
  2785. mail will end up in the `bogus' group. When new groups are created by
  2786. splitting mail, you may want to run `gnus-group-find-new-groups' to see
  2787. the new groups. This also applies to the `bogus' group.
  2788. If you like to tinker with this yourself, you can set this variable
  2789. to a function of your choice. This function will be called without any
  2790. arguments in a buffer narrowed to the headers of an incoming mail
  2791. message. The function should return a list of group names that it
  2792. thinks should carry this mail message.
  2793. This variable can also be a fancy split method. For the syntax, see
  2794. *note Fancy Mail Splitting::.
  2795. Note that the mail back ends are free to maul the poor, innocent,
  2796. incoming headers all they want to. They all add `Lines' headers; some
  2797. add `X-Gnus-Group' headers; most rename the Unix mbox `From<SPACE>'
  2798. line to something else.
  2799. The mail back ends all support cross-posting. If several regexps
  2800. match, the mail will be "cross-posted" to all those groups.
  2801. `nnmail-crosspost' says whether to use this mechanism or not. Note
  2802. that no articles are crossposted to the general (`""') group.
  2803. `nnmh' and `nnml' makes crossposts by creating hard links to the
  2804. crossposted articles. However, not all file systems support hard
  2805. links. If that's the case for you, set
  2806. `nnmail-crosspost-link-function' to `copy-file'. (This variable is
  2807. `add-name-to-file' by default.)
  2808. If you wish to see where the previous mail split put the messages,
  2809. you can use the `M-x nnmail-split-history' command. If you wish to see
  2810. where re-spooling messages would put the messages, you can use
  2811. `gnus-summary-respool-trace' and related commands (*note Mail Group
  2812. Commands::).
  2813. Header lines longer than the value of
  2814. `nnmail-split-header-length-limit' are excluded from the split function.
  2815. By default, splitting does not decode headers, so you can not match
  2816. on non-ASCII strings. But it is useful if you want to match articles
  2817. based on the raw header data. To enable it, set the
  2818. `nnmail-mail-splitting-decodes' variable to a non-`nil' value. In
  2819. addition, the value of the `nnmail-mail-splitting-charset' variable is
  2820. used for decoding non-MIME encoded string when
  2821. `nnmail-mail-splitting-decodes' is non-`nil'. The default value is
  2822. `nil' which means not to decode non-MIME encoded string. A suitable
  2823. value for you will be `undecided' or be the charset used normally in
  2824. mails you are interested in.
  2825. By default, splitting is performed on all incoming messages. If you
  2826. specify a `directory' entry for the variable `mail-sources' (*note Mail
  2827. Source Specifiers::), however, then splitting does _not_ happen by
  2828. default. You can set the variable `nnmail-resplit-incoming' to a
  2829. non-`nil' value to make splitting happen even in this case. (This
  2830. variable has no effect on other kinds of entries.)
  2831. Gnus gives you all the opportunity you could possibly want for
  2832. shooting yourself in the foot. Let's say you create a group that will
  2833. contain all the mail you get from your boss. And then you accidentally
  2834. unsubscribe from the group. Gnus will still put all the mail from your
  2835. boss in the unsubscribed group, and so, when your boss mails you "Have
  2836. that report ready by Monday or you're fired!", you'll never see it and,
  2837. come Tuesday, you'll still believe that you're gainfully employed while
  2838. you really should be out collecting empty bottles to save up for next
  2839. month's rent money.
  2840. 
  2841. File: gnus, Node: Mail Sources, Next: Mail Back End Variables, Prev: Splitting Mail, Up: Getting Mail
  2842. 6.4.4 Mail Sources
  2843. ------------------
  2844. Mail can be gotten from many different sources--the mail spool, from a
  2845. POP mail server, from a procmail directory, or from a maildir, for
  2846. instance.
  2847. * Menu:
  2848. * Mail Source Specifiers:: How to specify what a mail source is.
  2849. * Mail Source Customization:: Some variables that influence things.
  2850. * Fetching Mail:: Using the mail source specifiers.
  2851. 
  2852. File: gnus, Node: Mail Source Specifiers, Next: Mail Source Customization, Up: Mail Sources
  2853. 6.4.4.1 Mail Source Specifiers
  2854. ..............................
  2855. You tell Gnus how to fetch mail by setting `mail-sources' (*note
  2856. Fetching Mail::) to a "mail source specifier".
  2857. Here's an example:
  2858. (pop :server "pop3.mailserver.com" :user "myname")
  2859. As can be observed, a mail source specifier is a list where the first
  2860. element is a "mail source type", followed by an arbitrary number of
  2861. "keywords". Keywords that are not explicitly specified are given
  2862. default values.
  2863. The `mail-sources' is global for all mail groups. You can specify
  2864. an additional mail source for a particular group by including the
  2865. `group' mail specifier in `mail-sources', and setting a `mail-source'
  2866. group parameter (*note Group Parameters::) specifying a single mail
  2867. source. When this is used, `mail-sources' is typically just `(group)';
  2868. the `mail-source' parameter for a group might look like this:
  2869. (mail-source . (file :path "home/user/spools/foo.spool"))
  2870. This means that the group's (and only this group's) messages will be
  2871. fetched from the spool file `/user/spools/foo.spool'.
  2872. The following mail source types are available:
  2873. `file'
  2874. Get mail from a single file; typically from the mail spool.
  2875. Keywords:
  2876. `:path'
  2877. The file name. Defaults to the value of the `MAIL'
  2878. environment variable or the value of `rmail-spool-directory'
  2879. (usually something like `/usr/mail/spool/user-name').
  2880. `:prescript'
  2881. `:postscript'
  2882. Script run before/after fetching mail.
  2883. An example file mail source:
  2884. (file :path "/usr/spool/mail/user-name")
  2885. Or using the default file name:
  2886. (file)
  2887. If the mail spool file is not located on the local machine, it's
  2888. best to use POP or IMAP or the like to fetch the mail. You can
  2889. not use ange-ftp file names here--it has no way to lock the mail
  2890. spool while moving the mail.
  2891. If it's impossible to set up a proper server, you can use ssh
  2892. instead.
  2893. (setq mail-sources
  2894. '((file :prescript "ssh host bin/getmail >%t")))
  2895. The `getmail' script would look something like the following:
  2896. #!/bin/sh
  2897. # getmail - move mail from spool to stdout
  2898. # flu@iki.fi
  2899. MOVEMAIL=/usr/lib/emacs/20.3/i386-redhat-linux/movemail
  2900. TMP=$HOME/Mail/tmp
  2901. rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP
  2902. Alter this script to fit the `movemail' and temporary file you
  2903. want to use.
  2904. `directory'
  2905. Get mail from several files in a directory. This is typically used
  2906. when you have procmail split the incoming mail into several files.
  2907. That is, there is a one-to-one correspondence between files in that
  2908. directory and groups, so that mail from the file `foo.bar.spool'
  2909. will be put in the group `foo.bar'. (You can change the suffix to
  2910. be used instead of `.spool'.) Setting
  2911. `nnmail-scan-directory-mail-source-once' to non-`nil' forces Gnus
  2912. to scan the mail source only once. This is particularly useful if
  2913. you want to scan mail groups at a specified level.
  2914. There is also the variable `nnmail-resplit-incoming', if you set
  2915. that to a non-`nil' value, then the normal splitting process is
  2916. applied to all the files from the directory, *note Splitting
  2917. Mail::.
  2918. Keywords:
  2919. `:path'
  2920. The name of the directory where the files are. There is no
  2921. default value.
  2922. `:suffix'
  2923. Only files ending with this suffix are used. The default is
  2924. `.spool'.
  2925. `:predicate'
  2926. Only files that have this predicate return non-`nil' are
  2927. returned. The default is `identity'. This is used as an
  2928. additional filter--only files that have the right suffix
  2929. _and_ satisfy this predicate are considered.
  2930. `:prescript'
  2931. `:postscript'
  2932. Script run before/after fetching mail.
  2933. An example directory mail source:
  2934. (directory :path "/home/user-name/procmail-dir/"
  2935. :suffix ".prcml")
  2936. `pop'
  2937. Get mail from a POP server.
  2938. Keywords:
  2939. `:server'
  2940. The name of the POP server. The default is taken from the
  2941. `MAILHOST' environment variable.
  2942. `:port'
  2943. The port number of the POP server. This can be a number (eg,
  2944. `:port 1234') or a string (eg, `:port "pop3"'). If it is a
  2945. string, it should be a service name as listed in
  2946. `/etc/services' on Unix systems. The default is `"pop3"'.
  2947. On some systems you might need to specify it as `"pop-3"'
  2948. instead.
  2949. `:user'
  2950. The user name to give to the POP server. The default is the
  2951. login name.
  2952. `:password'
  2953. The password to give to the POP server. If not specified,
  2954. the user is prompted.
  2955. `:program'
  2956. The program to use to fetch mail from the POP server. This
  2957. should be a `format'-like string. Here's an example:
  2958. fetchmail %u@%s -P %p %t
  2959. The valid format specifier characters are:
  2960. `t'
  2961. The name of the file the mail is to be moved to. This
  2962. must always be included in this string.
  2963. `s'
  2964. The name of the server.
  2965. `P'
  2966. The port number of the server.
  2967. `u'
  2968. The user name to use.
  2969. `p'
  2970. The password to use.
  2971. The values used for these specs are taken from the values you
  2972. give the corresponding keywords.
  2973. `:prescript'
  2974. A script to be run before fetching the mail. The syntax is
  2975. the same as the `:program' keyword. This can also be a
  2976. function to be run.
  2977. One popular way to use this is to set up an SSH tunnel to
  2978. access the POP server. Here's an example:
  2979. (pop :server "127.0.0.1"
  2980. :port 1234
  2981. :user "foo"
  2982. :password "secret"
  2983. :prescript
  2984. "nohup ssh -f -L 1234:pop.server:110 remote.host sleep 3600 &")
  2985. `:postscript'
  2986. A script to be run after fetching the mail. The syntax is
  2987. the same as the `:program' keyword. This can also be a
  2988. function to be run.
  2989. `:function'
  2990. The function to use to fetch mail from the POP server. The
  2991. function is called with one parameter--the name of the file
  2992. where the mail should be moved to.
  2993. `:authentication'
  2994. This can be either the symbol `password' or the symbol `apop'
  2995. and says what authentication scheme to use. The default is
  2996. `password'.
  2997. If the `:program' and `:function' keywords aren't specified,
  2998. `pop3-movemail' will be used. If `pop3-leave-mail-on-server' is
  2999. non-`nil' the mail is to be left on the POP server after fetching
  3000. when using `pop3-movemail'. Note that POP servers maintain no
  3001. state information between sessions, so what the client believes is
  3002. there and what is actually there may not match up. If they do
  3003. not, then you may get duplicate mails or the whole thing can fall
  3004. apart and leave you with a corrupt mailbox.
  3005. Here are some examples for getting mail from a POP server. Fetch
  3006. from the default POP server, using the default user name, and
  3007. default fetcher:
  3008. (pop)
  3009. Fetch from a named server with a named user and password:
  3010. (pop :server "my.pop.server"
  3011. :user "user-name" :password "secret")
  3012. Use `movemail' to move the mail:
  3013. (pop :program "movemail po:%u %t %p")
  3014. `maildir'
  3015. Get mail from a maildir. This is a type of mailbox that is
  3016. supported by at least qmail and postfix, where each file in a
  3017. special directory contains exactly one mail.
  3018. Keywords:
  3019. `:path'
  3020. The name of the directory where the mails are stored. The
  3021. default is taken from the `MAILDIR' environment variable or
  3022. `~/Maildir/'.
  3023. `:subdirs'
  3024. The subdirectories of the Maildir. The default is `("new"
  3025. "cur")'.
  3026. You can also get mails from remote hosts (because maildirs
  3027. don't suffer from locking problems).
  3028. Two example maildir mail sources:
  3029. (maildir :path "/home/user-name/Maildir/"
  3030. :subdirs ("cur" "new"))
  3031. (maildir :path "/user@remotehost.org:~/Maildir/"
  3032. :subdirs ("new"))
  3033. `imap'
  3034. Get mail from a IMAP server. If you don't want to use IMAP as
  3035. intended, as a network mail reading protocol (ie with nnimap), for
  3036. some reason or other, Gnus let you treat it similar to a POP
  3037. server and fetches articles from a given IMAP mailbox. *Note
  3038. Using IMAP::, for more information.
  3039. Keywords:
  3040. `:server'
  3041. The name of the IMAP server. The default is taken from the
  3042. `MAILHOST' environment variable.
  3043. `:port'
  3044. The port number of the IMAP server. The default is `143', or
  3045. `993' for TLS/SSL connections.
  3046. `:user'
  3047. The user name to give to the IMAP server. The default is the
  3048. login name.
  3049. `:password'
  3050. The password to give to the IMAP server. If not specified,
  3051. the user is prompted.
  3052. `:stream'
  3053. What stream to use for connecting to the server, this is one
  3054. of the symbols in `imap-stream-alist'. Right now, this means
  3055. `gssapi', `kerberos4', `starttls', `tls', `ssl', `shell' or
  3056. the default `network'.
  3057. `:authentication'
  3058. Which authenticator to use for authenticating to the server,
  3059. this is one of the symbols in `imap-authenticator-alist'.
  3060. Right now, this means `gssapi', `kerberos4', `digest-md5',
  3061. `cram-md5', `anonymous' or the default `login'.
  3062. `:program'
  3063. When using the `shell' :stream, the contents of this variable
  3064. is mapped into the `imap-shell-program' variable. This
  3065. should be a `format'-like string (or list of strings).
  3066. Here's an example:
  3067. ssh %s imapd
  3068. Make sure nothing is interfering with the output of the
  3069. program, e.g., don't forget to redirect the error output to
  3070. the void. The valid format specifier characters are:
  3071. `s'
  3072. The name of the server.
  3073. `l'
  3074. User name from `imap-default-user'.
  3075. `p'
  3076. The port number of the server.
  3077. The values used for these specs are taken from the values you
  3078. give the corresponding keywords.
  3079. `:mailbox'
  3080. The name of the mailbox to get mail from. The default is
  3081. `INBOX' which normally is the mailbox which receives incoming
  3082. mail.
  3083. `:predicate'
  3084. The predicate used to find articles to fetch. The default,
  3085. `UNSEEN UNDELETED', is probably the best choice for most
  3086. people, but if you sometimes peek in your mailbox with a IMAP
  3087. client and mark some articles as read (or; SEEN) you might
  3088. want to set this to `1:*'. Then all articles in the mailbox
  3089. is fetched, no matter what. For a complete list of
  3090. predicates, see RFC 2060 section 6.4.4.
  3091. `:fetchflag'
  3092. How to flag fetched articles on the server, the default
  3093. `\Deleted' will mark them as deleted, an alternative would be
  3094. `\Seen' which would simply mark them as read. These are the
  3095. two most likely choices, but more flags are defined in RFC
  3096. 2060 section 2.3.2.
  3097. `:dontexpunge'
  3098. If non-`nil', don't remove all articles marked as deleted in
  3099. the mailbox after finishing the fetch.
  3100. An example IMAP mail source:
  3101. (imap :server "mail.mycorp.com"
  3102. :stream kerberos4
  3103. :fetchflag "\\Seen")
  3104. `group'
  3105. Get the actual mail source from the `mail-source' group parameter,
  3106. *Note Group Parameters::.
  3107. "Common Keywords"
  3108. Common keywords can be used in any type of mail source.
  3109. Keywords:
  3110. `:plugged'
  3111. If non-`nil', fetch the mail even when Gnus is unplugged. If
  3112. you use directory source to get mail, you can specify it as
  3113. in this example:
  3114. (setq mail-sources
  3115. '((directory :path "/home/pavel/.Spool/"
  3116. :suffix ""
  3117. :plugged t)))
  3118. Gnus will then fetch your mail even when you are unplugged.
  3119. This is useful when you use local mail and news.
  3120. 6.4.4.2 Function Interface
  3121. ..........................
  3122. Some of the above keywords specify a Lisp function to be executed. For
  3123. each keyword `:foo', the Lisp variable `foo' is bound to the value of
  3124. the keyword while the function is executing. For example, consider the
  3125. following mail-source setting:
  3126. (setq mail-sources '((pop :user "jrl"
  3127. :server "pophost" :function fetchfunc)))
  3128. While the function `fetchfunc' is executing, the symbol `user' is
  3129. bound to `"jrl"', and the symbol `server' is bound to `"pophost"'. The
  3130. symbols `port', `password', `program', `prescript', `postscript',
  3131. `function', and `authentication' are also bound (to their default
  3132. values).
  3133. See above for a list of keywords for each type of mail source.
  3134. 
  3135. File: gnus, Node: Mail Source Customization, Next: Fetching Mail, Prev: Mail Source Specifiers, Up: Mail Sources
  3136. 6.4.4.3 Mail Source Customization
  3137. .................................
  3138. The following is a list of variables that influence how the mail is
  3139. fetched. You would normally not need to set or change any of these
  3140. variables.
  3141. `mail-source-crash-box'
  3142. File where mail will be stored while processing it. The default is
  3143. `~/.emacs-mail-crash-box'.
  3144. `mail-source-delete-incoming'
  3145. If non-`nil', delete incoming files after handling them. If `t',
  3146. delete the files immediately, if `nil', never delete any files.
  3147. If a positive number, delete files older than number of days (the
  3148. deletion will only happen when receiving new mail). You may also
  3149. set `mail-source-delete-incoming' to `nil' and call
  3150. `mail-source-delete-old-incoming' from a hook or interactively.
  3151. `mail-source-delete-incoming' defaults to `10' in alpha Gnusae and
  3152. `2' in released Gnusae. *Note Gnus Development::.
  3153. `mail-source-delete-old-incoming-confirm'
  3154. If non-`nil', ask for confirmation before deleting old incoming
  3155. files. This variable only applies when
  3156. `mail-source-delete-incoming' is a positive number.
  3157. `mail-source-ignore-errors'
  3158. If non-`nil', ignore errors when reading mail from a mail source.
  3159. `mail-source-directory'
  3160. Directory where incoming mail source files (if any) will be
  3161. stored. The default is `~/Mail/'. At present, the only thing
  3162. this is used for is to say where the incoming files will be stored
  3163. if the variable `mail-source-delete-incoming' is `nil' or a number.
  3164. `mail-source-incoming-file-prefix'
  3165. Prefix for file name for storing incoming mail. The default is
  3166. `Incoming', in which case files will end up with names like
  3167. `Incoming30630D_' or `Incoming298602ZD'. This is really only
  3168. relevant if `mail-source-delete-incoming' is `nil' or a number.
  3169. `mail-source-default-file-modes'
  3170. All new mail files will get this file mode. The default is
  3171. `#o600'.
  3172. `mail-source-movemail-program'
  3173. If non-`nil', name of program for fetching new mail. If `nil',
  3174. `movemail' in EXEC-DIRECTORY.
  3175. 
  3176. File: gnus, Node: Fetching Mail, Prev: Mail Source Customization, Up: Mail Sources
  3177. 6.4.4.4 Fetching Mail
  3178. .....................
  3179. The way to actually tell Gnus where to get new mail from is to set
  3180. `mail-sources' to a list of mail source specifiers (*note Mail Source
  3181. Specifiers::).
  3182. If this variable is `nil', the mail back ends will never attempt to
  3183. fetch mail by themselves.
  3184. If you want to fetch mail both from your local spool as well as a
  3185. POP mail server, you'd say something like:
  3186. (setq mail-sources
  3187. '((file)
  3188. (pop :server "pop3.mail.server"
  3189. :password "secret")))
  3190. Or, if you don't want to use any of the keyword defaults:
  3191. (setq mail-sources
  3192. '((file :path "/var/spool/mail/user-name")
  3193. (pop :server "pop3.mail.server"
  3194. :user "user-name"
  3195. :port "pop3"
  3196. :password "secret")))
  3197. When you use a mail back end, Gnus will slurp all your mail from your
  3198. inbox and plonk it down in your home directory. Gnus doesn't move any
  3199. mail if you're not using a mail back end--you have to do a lot of magic
  3200. invocations first. At the time when you have finished drawing the
  3201. pentagram, lightened the candles, and sacrificed the goat, you really
  3202. shouldn't be too surprised when Gnus moves your mail.
  3203. 
  3204. File: gnus, Node: Mail Back End Variables, Next: Fancy Mail Splitting, Prev: Mail Sources, Up: Getting Mail
  3205. 6.4.5 Mail Back End Variables
  3206. -----------------------------
  3207. These variables are (for the most part) pertinent to all the various
  3208. mail back ends.
  3209. `nnmail-read-incoming-hook'
  3210. The mail back ends all call this hook after reading new mail. You
  3211. can use this hook to notify any mail watch programs, if you want
  3212. to.
  3213. `nnmail-split-hook'
  3214. Hook run in the buffer where the mail headers of each message is
  3215. kept just before the splitting based on these headers is done.
  3216. The hook is free to modify the buffer contents in any way it sees
  3217. fit--the buffer is discarded after the splitting has been done,
  3218. and no changes performed in the buffer will show up in any files.
  3219. `gnus-article-decode-encoded-words' is one likely function to add
  3220. to this hook.
  3221. `nnmail-pre-get-new-mail-hook'
  3222. `nnmail-post-get-new-mail-hook'
  3223. These are two useful hooks executed when treating new incoming
  3224. mail--`nnmail-pre-get-new-mail-hook' (is called just before
  3225. starting to handle the new mail) and
  3226. `nnmail-post-get-new-mail-hook' (is called when the mail handling
  3227. is done). Here's and example of using these two hooks to change
  3228. the default file modes the new mail files get:
  3229. (add-hook 'nnmail-pre-get-new-mail-hook
  3230. (lambda () (set-default-file-modes #o700)))
  3231. (add-hook 'nnmail-post-get-new-mail-hook
  3232. (lambda () (set-default-file-modes #o775)))
  3233. `nnmail-use-long-file-names'
  3234. If non-`nil', the mail back ends will use long file and directory
  3235. names. Groups like `mail.misc' will end up in directories
  3236. (assuming use of `nnml' back end) or files (assuming use of
  3237. `nnfolder' back end) like `mail.misc'. If it is `nil', the same
  3238. group will end up in `mail/misc'.
  3239. `nnmail-delete-file-function'
  3240. Function called to delete files. It is `delete-file' by default.
  3241. `nnmail-cache-accepted-message-ids'
  3242. If non-`nil', put the `Message-ID's of articles imported into the
  3243. back end (via `Gcc', for instance) into the mail duplication
  3244. discovery cache. The default is `nil'.
  3245. `nnmail-cache-ignore-groups'
  3246. This can be a regular expression or a list of regular expressions.
  3247. Group names that match any of the regular expressions will never be
  3248. recorded in the `Message-ID' cache.
  3249. This can be useful, for example, when using Fancy Splitting (*note
  3250. Fancy Mail Splitting::) together with the function
  3251. `nnmail-split-fancy-with-parent'.
  3252. 
  3253. File: gnus, Node: Fancy Mail Splitting, Next: Group Mail Splitting, Prev: Mail Back End Variables, Up: Getting Mail
  3254. 6.4.6 Fancy Mail Splitting
  3255. --------------------------
  3256. If the rather simple, standard method for specifying how to split mail
  3257. doesn't allow you to do what you want, you can set
  3258. `nnmail-split-methods' to `nnmail-split-fancy'. Then you can play with
  3259. the `nnmail-split-fancy' variable.
  3260. Let's look at an example value of this variable first:
  3261. ;; Messages from the mailer daemon are not crossposted to any of
  3262. ;; the ordinary groups. Warnings are put in a separate group
  3263. ;; from real errors.
  3264. (| ("from" mail (| ("subject" "warn.*" "mail.warning")
  3265. "mail.misc"))
  3266. ;; Non-error messages are crossposted to all relevant
  3267. ;; groups, but we don't crosspost between the group for the
  3268. ;; (ding) list and the group for other (ding) related mail.
  3269. (& (| (any "ding@ifi\\.uio\\.no" "ding.list")
  3270. ("subject" "ding" "ding.misc"))
  3271. ;; Other mailing lists...
  3272. (any "procmail@informatik\\.rwth-aachen\\.de" "procmail.list")
  3273. (any "SmartList@informatik\\.rwth-aachen\\.de" "SmartList.list")
  3274. ;; Both lists below have the same suffix, so prevent
  3275. ;; cross-posting to mkpkg.list of messages posted only to
  3276. ;; the bugs- list, but allow cross-posting when the
  3277. ;; message was really cross-posted.
  3278. (any "bugs-mypackage@somewhere" "mypkg.bugs")
  3279. (any "mypackage@somewhere" - "bugs-mypackage" "mypkg.list")
  3280. ;; People...
  3281. (any "larsi@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen"))
  3282. ;; Unmatched mail goes to the catch all group.
  3283. "misc.misc")
  3284. This variable has the format of a "split". A split is a (possibly)
  3285. recursive structure where each split may contain other splits. Here
  3286. are the possible split syntaxes:
  3287. `group'
  3288. If the split is a string, that will be taken as a group name.
  3289. Normal regexp match expansion will be done. See below for
  3290. examples.
  3291. `(FIELD VALUE [- RESTRICT [...] ] SPLIT [INVERT-PARTIAL])'
  3292. The split can be a list containing at least three elements. If the
  3293. first element FIELD (a regexp matching a header) contains VALUE
  3294. (also a regexp) then store the message as specified by SPLIT.
  3295. If RESTRICT (yet another regexp) matches some string after FIELD
  3296. and before the end of the matched VALUE, the SPLIT is ignored. If
  3297. none of the RESTRICT clauses match, SPLIT is processed.
  3298. The last element INVERT-PARTIAL is optional. If it is non-`nil',
  3299. the match-partial-words behavior controlled by the variable
  3300. `nnmail-split-fancy-match-partial-words' (see below) is be
  3301. inverted. (New in Gnus 5.10.7)
  3302. `(| SPLIT ...)'
  3303. If the split is a list, and the first element is `|' (vertical
  3304. bar), then process each SPLIT until one of them matches. A SPLIT
  3305. is said to match if it will cause the mail message to be stored in
  3306. one or more groups.
  3307. `(& SPLIT ...)'
  3308. If the split is a list, and the first element is `&', then process
  3309. all SPLITs in the list.
  3310. `junk'
  3311. If the split is the symbol `junk', then don't save (i.e., delete)
  3312. this message. Use with extreme caution.
  3313. `(: FUNCTION ARG1 ARG2 ...)'
  3314. If the split is a list, and the first element is `:', then the
  3315. second element will be called as a function with ARGS given as
  3316. arguments. The function should return a SPLIT.
  3317. For instance, the following function could be used to split based
  3318. on the body of the messages:
  3319. (defun split-on-body ()
  3320. (save-excursion
  3321. (save-restriction
  3322. (widen)
  3323. (goto-char (point-min))
  3324. (when (re-search-forward "Some.*string" nil t)
  3325. "string.group"))))
  3326. The buffer is narrowed to the header of the message in question
  3327. when FUNCTION is run. That's why `(widen)' needs to be called
  3328. after `save-excursion' and `save-restriction' in the example
  3329. above. Also note that with the nnimap backend, message bodies will
  3330. not be downloaded by default. You need to set
  3331. `nnimap-split-download-body' to `t' to do that (*note Client-Side
  3332. IMAP Splitting::).
  3333. `(! FUNC SPLIT)'
  3334. If the split is a list, and the first element is `!', then SPLIT
  3335. will be processed, and FUNC will be called as a function with the
  3336. result of SPLIT as argument. FUNC should return a split.
  3337. `nil'
  3338. If the split is `nil', it is ignored.
  3339. In these splits, FIELD must match a complete field name.
  3340. Normally, VALUE in these splits must match a complete _word_
  3341. according to the fundamental mode syntax table. In other words, all
  3342. VALUE's will be implicitly surrounded by `\<...\>' markers, which are
  3343. word delimiters. Therefore, if you use the following split, for
  3344. example,
  3345. (any "joe" "joemail")
  3346. messages sent from `joedavis@foo.org' will normally not be filed in
  3347. `joemail'. If you want to alter this behavior, you can use any of the
  3348. following three ways:
  3349. 1. You can set the `nnmail-split-fancy-match-partial-words' variable
  3350. to non-`nil' in order to ignore word boundaries and instead the
  3351. match becomes more like a grep. This variable controls whether
  3352. partial words are matched during fancy splitting. The default
  3353. value is `nil'.
  3354. Note that it influences all VALUE's in your split rules.
  3355. 2. VALUE beginning with `.*' ignores word boundaries in front of a
  3356. word. Similarly, if VALUE ends with `.*', word boundaries in the
  3357. rear of a word will be ignored. For example, the VALUE
  3358. `"@example\\.com"' does not match `foo@example.com' but
  3359. `".*@example\\.com"' does.
  3360. 3. You can set the INVERT-PARTIAL flag in your split rules of the
  3361. `(FIELD VALUE ...)' types, aforementioned in this section. If the
  3362. flag is set, word boundaries on both sides of a word are ignored
  3363. even if `nnmail-split-fancy-match-partial-words' is `nil'.
  3364. Contrarily, if the flag is set, word boundaries are not ignored
  3365. even if `nnmail-split-fancy-match-partial-words' is non-`nil'.
  3366. (New in Gnus 5.10.7)
  3367. FIELD and VALUE can also be Lisp symbols, in that case they are
  3368. expanded as specified by the variable `nnmail-split-abbrev-alist'.
  3369. This is an alist of cons cells, where the CAR of a cell contains the
  3370. key, and the CDR contains the associated value. Predefined entries in
  3371. `nnmail-split-abbrev-alist' include:
  3372. `from'
  3373. Matches the `From', `Sender' and `Resent-From' fields.
  3374. `to'
  3375. Matches the `To', `Cc', `Apparently-To', `Resent-To' and
  3376. `Resent-Cc' fields.
  3377. `any'
  3378. Is the union of the `from' and `to' entries.
  3379. `nnmail-split-fancy-syntax-table' is the syntax table in effect when
  3380. all this splitting is performed.
  3381. If you want to have Gnus create groups dynamically based on some
  3382. information in the headers (i.e., do `replace-match'-like substitutions
  3383. in the group names), you can say things like:
  3384. (any "debian-\\b\\(\\w+\\)@lists.debian.org" "mail.debian.\\1")
  3385. In this example, messages sent to `debian-foo@lists.debian.org' will
  3386. be filed in `mail.debian.foo'.
  3387. If the string contains the element `\&', then the previously matched
  3388. string will be substituted. Similarly, the elements `\\1' up to `\\9'
  3389. will be substituted with the text matched by the groupings 1 through 9.
  3390. Where `nnmail-split-lowercase-expanded' controls whether the
  3391. lowercase of the matched string should be used for the substitution.
  3392. Setting it as non-`nil' is useful to avoid the creation of multiple
  3393. groups when users send to an address using different case (i.e.
  3394. mailing-list@domain vs Mailing-List@Domain). The default value is `t'.
  3395. `nnmail-split-fancy-with-parent' is a function which allows you to
  3396. split followups into the same groups their parents are in. Sometimes
  3397. you can't make splitting rules for all your mail. For example, your
  3398. boss might send you personal mail regarding different projects you are
  3399. working on, and as you can't tell your boss to put a distinguishing
  3400. string into the subject line, you have to resort to manually moving the
  3401. messages into the right group. With this function, you only have to do
  3402. it once per thread.
  3403. To use this feature, you have to set `nnmail-treat-duplicates' and
  3404. `nnmail-cache-accepted-message-ids' to a non-`nil' value. And then you
  3405. can include `nnmail-split-fancy-with-parent' using the colon feature,
  3406. like so:
  3407. (setq nnmail-treat-duplicates 'warn ; or `delete'
  3408. nnmail-cache-accepted-message-ids t
  3409. nnmail-split-fancy
  3410. '(| (: nnmail-split-fancy-with-parent)
  3411. ;; other splits go here
  3412. ))
  3413. This feature works as follows: when `nnmail-treat-duplicates' is
  3414. non-`nil', Gnus records the message id of every message it sees in the
  3415. file specified by the variable `nnmail-message-id-cache-file', together
  3416. with the group it is in (the group is omitted for non-mail messages).
  3417. When mail splitting is invoked, the function
  3418. `nnmail-split-fancy-with-parent' then looks at the References (and
  3419. In-Reply-To) header of each message to split and searches the file
  3420. specified by `nnmail-message-id-cache-file' for the message ids. When
  3421. it has found a parent, it returns the corresponding group name unless
  3422. the group name matches the regexp
  3423. `nnmail-split-fancy-with-parent-ignore-groups'. It is recommended that
  3424. you set `nnmail-message-id-cache-length' to a somewhat higher number
  3425. than the default so that the message ids are still in the cache. (A
  3426. value of 5000 appears to create a file some 300 kBytes in size.) When
  3427. `nnmail-cache-accepted-message-ids' is non-`nil', Gnus also records the
  3428. message ids of moved articles, so that the followup messages goes into
  3429. the new group.
  3430. Also see the variable `nnmail-cache-ignore-groups' if you don't want
  3431. certain groups to be recorded in the cache. For example, if all
  3432. outgoing messages are written to an "outgoing" group, you could set
  3433. `nnmail-cache-ignore-groups' to match that group name. Otherwise,
  3434. answers to all your messages would end up in the "outgoing" group.
  3435. 
  3436. File: gnus, Node: Group Mail Splitting, Next: Incorporating Old Mail, Prev: Fancy Mail Splitting, Up: Getting Mail
  3437. 6.4.7 Group Mail Splitting
  3438. --------------------------
  3439. If you subscribe to dozens of mailing lists but you don't want to
  3440. maintain mail splitting rules manually, group mail splitting is for you.
  3441. You just have to set `to-list' and/or `to-address' in group parameters
  3442. or group customization and set `nnmail-split-methods' to
  3443. `gnus-group-split'. This splitting function will scan all groups for
  3444. those parameters and split mail accordingly, i.e., messages posted from
  3445. or to the addresses specified in the parameters `to-list' or
  3446. `to-address' of a mail group will be stored in that group.
  3447. Sometimes, mailing lists have multiple addresses, and you may want
  3448. mail splitting to recognize them all: just set the `extra-aliases' group
  3449. parameter to the list of additional addresses and it's done. If you'd
  3450. rather use a regular expression, set `split-regexp'.
  3451. All these parameters in a group will be used to create an
  3452. `nnmail-split-fancy' split, in which the FIELD is `any', the VALUE is a
  3453. single regular expression that matches `to-list', `to-address', all of
  3454. `extra-aliases' and all matches of `split-regexp', and the SPLIT is the
  3455. name of the group. RESTRICTs are also supported: just set the
  3456. `split-exclude' parameter to a list of regular expressions.
  3457. If you can't get the right split to be generated using all these
  3458. parameters, or you just need something fancier, you can set the
  3459. parameter `split-spec' to an `nnmail-split-fancy' split. In this case,
  3460. all other aforementioned parameters will be ignored by
  3461. `gnus-group-split'. In particular, `split-spec' may be set to `nil',
  3462. in which case the group will be ignored by `gnus-group-split'.
  3463. `gnus-group-split' will do cross-posting on all groups that match,
  3464. by defining a single `&' fancy split containing one split for each
  3465. group. If a message doesn't match any split, it will be stored in the
  3466. group named in `gnus-group-split-default-catch-all-group', unless some
  3467. group has `split-spec' set to `catch-all', in which case that group is
  3468. used as the catch-all group. Even though this variable is often used
  3469. just to name a group, it may also be set to an arbitrarily complex
  3470. fancy split (after all, a group name is a fancy split), and this may be
  3471. useful to split mail that doesn't go to any mailing list to personal
  3472. mail folders. Note that this fancy split is added as the last element
  3473. of a `|' split list that also contains a `&' split with the rules
  3474. extracted from group parameters.
  3475. It's time for an example. Assume the following group parameters have
  3476. been defined:
  3477. nnml:mail.bar:
  3478. ((to-address . "bar@femail.com")
  3479. (split-regexp . ".*@femail\\.com"))
  3480. nnml:mail.foo:
  3481. ((to-list . "foo@nowhere.gov")
  3482. (extra-aliases "foo@localhost" "foo-redist@home")
  3483. (split-exclude "bugs-foo" "rambling-foo")
  3484. (admin-address . "foo-request@nowhere.gov"))
  3485. nnml:mail.others:
  3486. ((split-spec . catch-all))
  3487. Setting `nnmail-split-methods' to `gnus-group-split' will behave as
  3488. if `nnmail-split-fancy' had been selected and variable
  3489. `nnmail-split-fancy' had been set as follows:
  3490. (| (& (any "\\(bar@femail\\.com\\|.*@femail\\.com\\)" "mail.bar")
  3491. (any "\\(foo@nowhere\\.gov\\|foo@localhost\\|foo-redist@home\\)"
  3492. - "bugs-foo" - "rambling-foo" "mail.foo"))
  3493. "mail.others")
  3494. If you'd rather not use group splitting for all your mail groups, you
  3495. may use it for only some of them, by using `nnmail-split-fancy' splits
  3496. like this:
  3497. (: gnus-group-split-fancy GROUPS NO-CROSSPOST CATCH-ALL)
  3498. GROUPS may be a regular expression or a list of group names whose
  3499. parameters will be scanned to generate the output split. NO-CROSSPOST
  3500. can be used to disable cross-posting; in this case, a single `|' split
  3501. will be output. CATCH-ALL is the fall back fancy split, used like
  3502. `gnus-group-split-default-catch-all-group'. If CATCH-ALL is `nil', or
  3503. if `split-regexp' matches the empty string in any selected group, no
  3504. catch-all split will be issued. Otherwise, if some group has
  3505. `split-spec' set to `catch-all', this group will override the value of
  3506. the CATCH-ALL argument.
  3507. Unfortunately, scanning all groups and their parameters can be quite
  3508. slow, especially considering that it has to be done for every message.
  3509. But don't despair! The function `gnus-group-split-setup' can be used
  3510. to enable `gnus-group-split' in a much more efficient way. It sets
  3511. `nnmail-split-methods' to `nnmail-split-fancy' and sets
  3512. `nnmail-split-fancy' to the split produced by `gnus-group-split-fancy'.
  3513. Thus, the group parameters are only scanned once, no matter how many
  3514. messages are split.
  3515. However, if you change group parameters, you'd have to update
  3516. `nnmail-split-fancy' manually. You can do it by running
  3517. `gnus-group-split-update'. If you'd rather have it updated
  3518. automatically, just tell `gnus-group-split-setup' to do it for you.
  3519. For example, add to your `~/.gnus.el':
  3520. (gnus-group-split-setup AUTO-UPDATE CATCH-ALL)
  3521. If AUTO-UPDATE is non-`nil', `gnus-group-split-update' will be added
  3522. to `nnmail-pre-get-new-mail-hook', so you won't ever have to worry
  3523. about updating `nnmail-split-fancy' again. If you don't omit CATCH-ALL
  3524. (it's optional, equivalent to `nil'),
  3525. `gnus-group-split-default-catch-all-group' will be set to its value.
  3526. Because you may want to change `nnmail-split-fancy' after it is set
  3527. by `gnus-group-split-update', this function will run
  3528. `gnus-group-split-updated-hook' just before finishing.
  3529. 
  3530. File: gnus, Node: Incorporating Old Mail, Next: Expiring Mail, Prev: Group Mail Splitting, Up: Getting Mail
  3531. 6.4.8 Incorporating Old Mail
  3532. ----------------------------
  3533. Most people have lots of old mail stored in various file formats. If
  3534. you have set up Gnus to read mail using one of the spiffy Gnus mail
  3535. back ends, you'll probably wish to have that old mail incorporated into
  3536. your mail groups.
  3537. Doing so can be quite easy.
  3538. To take an example: You're reading mail using `nnml' (*note Mail
  3539. Spool::), and have set `nnmail-split-methods' to a satisfactory value
  3540. (*note Splitting Mail::). You have an old Unix mbox file filled with
  3541. important, but old, mail. You want to move it into your `nnml' groups.
  3542. Here's how:
  3543. 1. Go to the group buffer.
  3544. 2. Type `G f' and give the file name to the mbox file when prompted
  3545. to create an `nndoc' group from the mbox file (*note Foreign
  3546. Groups::).
  3547. 3. Type `SPACE' to enter the newly created group.
  3548. 4. Type `M P b' to process-mark all articles in this group's buffer
  3549. (*note Setting Process Marks::).
  3550. 5. Type `B r' to respool all the process-marked articles, and answer
  3551. `nnml' when prompted (*note Mail Group Commands::).
  3552. All the mail messages in the mbox file will now also be spread out
  3553. over all your `nnml' groups. Try entering them and check whether things
  3554. have gone without a glitch. If things look ok, you may consider
  3555. deleting the mbox file, but I wouldn't do that unless I was absolutely
  3556. sure that all the mail has ended up where it should be.
  3557. Respooling is also a handy thing to do if you're switching from one
  3558. mail back end to another. Just respool all the mail in the old mail
  3559. groups using the new mail back end.
  3560. 
  3561. File: gnus, Node: Expiring Mail, Next: Washing Mail, Prev: Incorporating Old Mail, Up: Getting Mail
  3562. 6.4.9 Expiring Mail
  3563. -------------------
  3564. Traditional mail readers have a tendency to remove mail articles when
  3565. you mark them as read, in some way. Gnus takes a fundamentally
  3566. different approach to mail reading.
  3567. Gnus basically considers mail just to be news that has been received
  3568. in a rather peculiar manner. It does not think that it has the power to
  3569. actually change the mail, or delete any mail messages. If you enter a
  3570. mail group, and mark articles as "read", or kill them in some other
  3571. fashion, the mail articles will still exist on the system. I repeat:
  3572. Gnus will not delete your old, read mail. Unless you ask it to, of
  3573. course.
  3574. To make Gnus get rid of your unwanted mail, you have to mark the
  3575. articles as "expirable". (With the default key bindings, this means
  3576. that you have to type `E'.) This does not mean that the articles will
  3577. disappear right away, however. In general, a mail article will be
  3578. deleted from your system if, 1) it is marked as expirable, AND 2) it is
  3579. more than one week old. If you do not mark an article as expirable, it
  3580. will remain on your system until hell freezes over. This bears
  3581. repeating one more time, with some spurious capitalizations: IF you do
  3582. NOT mark articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES.
  3583. You do not have to mark articles as expirable by hand. Gnus provides
  3584. two features, called "auto-expire" and "total-expire", that can help you
  3585. with this. In a nutshell, "auto-expire" means that Gnus hits `E' for
  3586. you when you select an article. And "total-expire" means that Gnus
  3587. considers all articles as expirable that are read. So, in addition to
  3588. the articles marked `E', also the articles marked `r', `R', `O', `K',
  3589. `Y' (and so on) are considered expirable. `gnus-auto-expirable-marks'
  3590. has the full list of these marks.
  3591. When should either auto-expire or total-expire be used? Most people
  3592. who are subscribed to mailing lists split each list into its own group
  3593. and then turn on auto-expire or total-expire for those groups. (*Note
  3594. Splitting Mail::, for more information on splitting each list into its
  3595. own group.)
  3596. Which one is better, auto-expire or total-expire? It's not easy to
  3597. answer. Generally speaking, auto-expire is probably faster. Another
  3598. advantage of auto-expire is that you get more marks to work with: for
  3599. the articles that are supposed to stick around, you can still choose
  3600. between tick and dormant and read marks. But with total-expire, you
  3601. only have dormant and ticked to choose from. The advantage of
  3602. total-expire is that it works well with adaptive scoring (*note
  3603. Adaptive Scoring::). Auto-expire works with normal scoring but not
  3604. with adaptive scoring.
  3605. Groups that match the regular expression
  3606. `gnus-auto-expirable-newsgroups' will have all articles that you read
  3607. marked as expirable automatically. All articles marked as expirable
  3608. have an `E' in the first column in the summary buffer.
  3609. By default, if you have auto expiry switched on, Gnus will mark all
  3610. the articles you read as expirable, no matter if they were read or
  3611. unread before. To avoid having articles marked as read marked as
  3612. expirable automatically, you can put something like the following in
  3613. your `~/.gnus.el' file:
  3614. (remove-hook 'gnus-mark-article-hook
  3615. 'gnus-summary-mark-read-and-unread-as-read)
  3616. (add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read)
  3617. Note that making a group auto-expirable doesn't mean that all read
  3618. articles are expired--only the articles marked as expirable will be
  3619. expired. Also note that using the `d' command won't make articles
  3620. expirable--only semi-automatic marking of articles as read will mark
  3621. the articles as expirable in auto-expirable groups.
  3622. Let's say you subscribe to a couple of mailing lists, and you want
  3623. the articles you have read to disappear after a while:
  3624. (setq gnus-auto-expirable-newsgroups
  3625. "mail.nonsense-list\\|mail.nice-list")
  3626. Another way to have auto-expiry happen is to have the element
  3627. `auto-expire' in the group parameters of the group.
  3628. If you use adaptive scoring (*note Adaptive Scoring::) and
  3629. auto-expiring, you'll have problems. Auto-expiring and adaptive scoring
  3630. don't really mix very well.
  3631. The `nnmail-expiry-wait' variable supplies the default time an
  3632. expirable article has to live. Gnus starts counting days from when the
  3633. message _arrived_, not from when it was sent. The default is seven
  3634. days.
  3635. Gnus also supplies a function that lets you fine-tune how long
  3636. articles are to live, based on what group they are in. Let's say you
  3637. want to have one month expiry period in the `mail.private' group, a one
  3638. day expiry period in the `mail.junk' group, and a six day expiry period
  3639. everywhere else:
  3640. (setq nnmail-expiry-wait-function
  3641. (lambda (group)
  3642. (cond ((string= group "mail.private")
  3643. 31)
  3644. ((string= group "mail.junk")
  3645. 1)
  3646. ((string= group "important")
  3647. 'never)
  3648. (t
  3649. 6))))
  3650. The group names this function is fed are "unadorned" group names--no
  3651. `nnml:' prefixes and the like.
  3652. The `nnmail-expiry-wait' variable and `nnmail-expiry-wait-function'
  3653. function can either be a number (not necessarily an integer) or one of
  3654. the symbols `immediate' or `never'.
  3655. You can also use the `expiry-wait' group parameter to selectively
  3656. change the expiry period (*note Group Parameters::).
  3657. The normal action taken when expiring articles is to delete them.
  3658. However, in some circumstances it might make more sense to move them to
  3659. other groups instead of deleting them. The variable
  3660. `nnmail-expiry-target' (and the `expiry-target' group parameter)
  3661. controls this. The variable supplies a default value for all groups,
  3662. which can be overridden for specific groups by the group parameter.
  3663. default value is `delete', but this can also be a string (which should
  3664. be the name of the group the message should be moved to), or a function
  3665. (which will be called in a buffer narrowed to the message in question,
  3666. and with the name of the group being moved from as its parameter) which
  3667. should return a target--either a group name or `delete'.
  3668. Here's an example for specifying a group name:
  3669. (setq nnmail-expiry-target "nnml:expired")
  3670. Gnus provides a function `nnmail-fancy-expiry-target' which will
  3671. expire mail to groups according to the variable
  3672. `nnmail-fancy-expiry-targets'. Here's an example:
  3673. (setq nnmail-expiry-target 'nnmail-fancy-expiry-target
  3674. nnmail-fancy-expiry-targets
  3675. '((to-from "boss" "nnfolder:Work")
  3676. ("subject" "IMPORTANT" "nnfolder:IMPORTANT.%Y.%b")
  3677. ("from" ".*" "nnfolder:Archive-%Y")))
  3678. With this setup, any mail that has `IMPORTANT' in its Subject header
  3679. and was sent in the year `YYYY' and month `MMM', will get expired to
  3680. the group `nnfolder:IMPORTANT.YYYY.MMM'. If its From or To header
  3681. contains the string `boss', it will get expired to `nnfolder:Work'.
  3682. All other mail will get expired to `nnfolder:Archive-YYYY'.
  3683. If `nnmail-keep-last-article' is non-`nil', Gnus will never expire
  3684. the final article in a mail newsgroup. This is to make life easier for
  3685. procmail users.
  3686. By the way: That line up there, about Gnus never expiring
  3687. non-expirable articles, is a lie. If you put `total-expire' in the
  3688. group parameters, articles will not be marked as expirable, but all read
  3689. articles will be put through the expiry process. Use with extreme
  3690. caution. Even more dangerous is the `gnus-total-expirable-newsgroups'
  3691. variable. All groups that match this regexp will have all read
  3692. articles put through the expiry process, which means that _all_ old
  3693. mail articles in the groups in question will be deleted after a while.
  3694. Use with extreme caution, and don't come crying to me when you discover
  3695. that the regexp you used matched the wrong group and all your important
  3696. mail has disappeared. Be a _man_! Or a _woman_! Whatever you feel
  3697. more comfortable with! So there!
  3698. Most people make most of their mail groups total-expirable, though.
  3699. If `gnus-inhibit-user-auto-expire' is non-`nil', user marking
  3700. commands will not mark an article as expirable, even if the group has
  3701. auto-expire turned on.
  3702. The expirable marks of articles will be removed when copying or
  3703. moving them to a group in which auto-expire is not turned on. This is
  3704. for preventing articles from being expired unintentionally. On the
  3705. other hand, to a group that has turned auto-expire on, the expirable
  3706. marks of articles that are copied or moved will not be changed by
  3707. default. I.e., when copying or moving to such a group, articles that
  3708. were expirable will be left expirable and ones that were not expirable
  3709. will not be marked as expirable. So, even though in auto-expire
  3710. groups, some articles will never get expired (unless you read them
  3711. again). If you don't side with that behavior that unexpirable articles
  3712. may be mixed into auto-expire groups, you can set
  3713. `gnus-mark-copied-or-moved-articles-as-expirable' to a non-`nil' value.
  3714. In that case, articles that have been read will be marked as expirable
  3715. automatically when being copied or moved to a group that has
  3716. auto-expire turned on. The default value is `nil'.
  3717. 
  3718. File: gnus, Node: Washing Mail, Next: Duplicates, Prev: Expiring Mail, Up: Getting Mail
  3719. 6.4.10 Washing Mail
  3720. -------------------
  3721. Mailers and list servers are notorious for doing all sorts of really,
  3722. really stupid things with mail. "Hey, RFC 822 doesn't explicitly
  3723. prohibit us from adding the string `wE aRe ElItE!!!!!1!!' to the end of
  3724. all lines passing through our server, so let's do that!!!!1!" Yes, but
  3725. RFC 822 wasn't designed to be read by morons. Things that were
  3726. considered to be self-evident were not discussed. So. Here we are.
  3727. Case in point: The German version of Microsoft Exchange adds `AW: '
  3728. to the subjects of replies instead of `Re: '. I could pretend to be
  3729. shocked and dismayed by this, but I haven't got the energy. It is to
  3730. laugh.
  3731. Gnus provides a plethora of functions for washing articles while
  3732. displaying them, but it might be nicer to do the filtering before
  3733. storing the mail to disk. For that purpose, we have three hooks and
  3734. various functions that can be put in these hooks.
  3735. `nnmail-prepare-incoming-hook'
  3736. This hook is called before doing anything with the mail and is
  3737. meant for grand, sweeping gestures. It is called in a buffer that
  3738. contains all the new, incoming mail. Functions to be used include:
  3739. `nnheader-ms-strip-cr'
  3740. Remove trailing carriage returns from each line. This is
  3741. default on Emacs running on MS machines.
  3742. `nnmail-prepare-incoming-header-hook'
  3743. This hook is called narrowed to each header. It can be used when
  3744. cleaning up the headers. Functions that can be used include:
  3745. `nnmail-remove-leading-whitespace'
  3746. Clear leading white space that "helpful" listservs have added
  3747. to the headers to make them look nice. Aaah.
  3748. (Note that this function works on both the header on the body
  3749. of all messages, so it is a potentially dangerous function to
  3750. use (if a body of a message contains something that looks
  3751. like a header line). So rather than fix the bug, it is of
  3752. course the right solution to make it into a feature by
  3753. documenting it.)
  3754. `nnmail-remove-list-identifiers'
  3755. Some list servers add an identifier--for example, `(idm)'--to
  3756. the beginning of all `Subject' headers. I'm sure that's nice
  3757. for people who use stone age mail readers. This function
  3758. will remove strings that match the `nnmail-list-identifiers'
  3759. regexp, which can also be a list of regexp.
  3760. `nnmail-list-identifiers' may not contain `\\(..\\)'.
  3761. For instance, if you want to remove the `(idm)' and the
  3762. `nagnagnag' identifiers:
  3763. (setq nnmail-list-identifiers
  3764. '("(idm)" "nagnagnag"))
  3765. This can also be done non-destructively with
  3766. `gnus-list-identifiers', *Note Article Hiding::.
  3767. `nnmail-remove-tabs'
  3768. Translate all `TAB' characters into `SPACE' characters.
  3769. `nnmail-ignore-broken-references'
  3770. Some mail user agents (e.g. Eudora and Pegasus) produce broken
  3771. `References' headers, but correct `In-Reply-To' headers. This
  3772. function will get rid of the `References' header if the
  3773. headers contain a line matching the regular expression
  3774. `nnmail-broken-references-mailers'.
  3775. `nnmail-prepare-incoming-message-hook'
  3776. This hook is called narrowed to each message. Functions to be used
  3777. include:
  3778. `article-de-quoted-unreadable'
  3779. Decode Quoted Readable encoding.
  3780. 
  3781. File: gnus, Node: Duplicates, Next: Not Reading Mail, Prev: Washing Mail, Up: Getting Mail
  3782. 6.4.11 Duplicates
  3783. -----------------
  3784. If you are a member of a couple of mailing lists, you will sometimes
  3785. receive two copies of the same mail. This can be quite annoying, so
  3786. `nnmail' checks for and treats any duplicates it might find. To do
  3787. this, it keeps a cache of old `Message-ID's--
  3788. `nnmail-message-id-cache-file', which is `~/.nnmail-cache' by default.
  3789. The approximate maximum number of `Message-ID's stored there is
  3790. controlled by the `nnmail-message-id-cache-length' variable, which is
  3791. 1000 by default. (So 1000 `Message-ID's will be stored.) If all this
  3792. sounds scary to you, you can set `nnmail-treat-duplicates' to `warn'
  3793. (which is what it is by default), and `nnmail' won't delete duplicate
  3794. mails. Instead it will insert a warning into the head of the mail
  3795. saying that it thinks that this is a duplicate of a different message.
  3796. This variable can also be a function. If that's the case, the
  3797. function will be called from a buffer narrowed to the message in
  3798. question with the `Message-ID' as a parameter. The function must
  3799. return either `nil', `warn', or `delete'.
  3800. You can turn this feature off completely by setting the variable to
  3801. `nil'.
  3802. If you want all the duplicate mails to be put into a special
  3803. "duplicates" group, you could do that using the normal mail split
  3804. methods:
  3805. (setq nnmail-split-fancy
  3806. '(| ;; Messages duplicates go to a separate group.
  3807. ("gnus-warning" "duplicat\\(e\\|ion\\) of message" "duplicate")
  3808. ;; Message from daemons, postmaster, and the like to another.
  3809. (any mail "mail.misc")
  3810. ;; Other rules.
  3811. [...] ))
  3812. Or something like:
  3813. (setq nnmail-split-methods
  3814. '(("duplicates" "^Gnus-Warning:.*duplicate")
  3815. ;; Other rules.
  3816. [...]))
  3817. Here's a neat feature: If you know that the recipient reads her mail
  3818. with Gnus, and that she has `nnmail-treat-duplicates' set to `delete',
  3819. you can send her as many insults as you like, just by using a
  3820. `Message-ID' of a mail that you know that she's already received.
  3821. Think of all the fun! She'll never see any of it! Whee!
  3822. 
  3823. File: gnus, Node: Not Reading Mail, Next: Choosing a Mail Back End, Prev: Duplicates, Up: Getting Mail
  3824. 6.4.12 Not Reading Mail
  3825. -----------------------
  3826. If you start using any of the mail back ends, they have the annoying
  3827. habit of assuming that you want to read mail with them. This might not
  3828. be unreasonable, but it might not be what you want.
  3829. If you set `mail-sources' and `nnmail-spool-file' to `nil', none of
  3830. the back ends will ever attempt to read incoming mail, which should
  3831. help.
  3832. This might be too much, if, for instance, you are reading mail quite
  3833. happily with `nnml' and just want to peek at some old (pre-Emacs 23)
  3834. Rmail file you have stashed away with `nnbabyl'. All back ends have
  3835. variables called back-end-`get-new-mail'. If you want to disable the
  3836. `nnbabyl' mail reading, you edit the virtual server for the group to
  3837. have a setting where `nnbabyl-get-new-mail' to `nil'.
  3838. All the mail back ends will call `nn'*`-prepare-save-mail-hook'
  3839. narrowed to the article to be saved before saving it when reading
  3840. incoming mail.
  3841. 
  3842. File: gnus, Node: Choosing a Mail Back End, Prev: Not Reading Mail, Up: Getting Mail
  3843. 6.4.13 Choosing a Mail Back End
  3844. -------------------------------
  3845. Gnus will read the mail spool when you activate a mail group. The mail
  3846. file is first copied to your home directory. What happens after that
  3847. depends on what format you want to store your mail in.
  3848. There are six different mail back ends in the standard Gnus, and more
  3849. back ends are available separately. The mail back end most people use
  3850. (because it is possibly the fastest) is `nnml' (*note Mail Spool::).
  3851. * Menu:
  3852. * Unix Mail Box:: Using the (quite) standard Un*x mbox.
  3853. * Babyl:: Babyl was used by older versions of Rmail.
  3854. * Mail Spool:: Store your mail in a private spool?
  3855. * MH Spool:: An mhspool-like back end.
  3856. * Maildir:: Another one-file-per-message format.
  3857. * Mail Folders:: Having one file for each group.
  3858. * Comparing Mail Back Ends:: An in-depth looks at pros and cons.
  3859. 
  3860. File: gnus, Node: Unix Mail Box, Next: Babyl, Up: Choosing a Mail Back End
  3861. 6.4.13.1 Unix Mail Box
  3862. ......................
  3863. The "nnmbox" back end will use the standard Un*x mbox file to store
  3864. mail. `nnmbox' will add extra headers to each mail article to say
  3865. which group it belongs in.
  3866. Virtual server settings:
  3867. `nnmbox-mbox-file'
  3868. The name of the mail box in the user's home directory. Default is
  3869. `~/mbox'.
  3870. `nnmbox-active-file'
  3871. The name of the active file for the mail box. Default is
  3872. `~/.mbox-active'.
  3873. `nnmbox-get-new-mail'
  3874. If non-`nil', `nnmbox' will read incoming mail and split it into
  3875. groups. Default is `t'.
  3876. 
  3877. File: gnus, Node: Babyl, Next: Mail Spool, Prev: Unix Mail Box, Up: Choosing a Mail Back End
  3878. 6.4.13.2 Babyl
  3879. ..............
  3880. The "nnbabyl" back end will use a Babyl mail box to store mail.
  3881. `nnbabyl' will add extra headers to each mail article to say which
  3882. group it belongs in.
  3883. Virtual server settings:
  3884. `nnbabyl-mbox-file'
  3885. The name of the Babyl file. The default is `~/RMAIL'
  3886. `nnbabyl-active-file'
  3887. The name of the active file for the Babyl file. The default is
  3888. `~/.rmail-active'
  3889. `nnbabyl-get-new-mail'
  3890. If non-`nil', `nnbabyl' will read incoming mail. Default is `t'
  3891. 
  3892. File: gnus, Node: Mail Spool, Next: MH Spool, Prev: Babyl, Up: Choosing a Mail Back End
  3893. 6.4.13.3 Mail Spool
  3894. ...................
  3895. The "nnml" spool mail format isn't compatible with any other known
  3896. format. It should be used with some caution.
  3897. If you use this back end, Gnus will split all incoming mail into
  3898. files, one file for each mail, and put the articles into the
  3899. corresponding directories under the directory specified by the
  3900. `nnml-directory' variable. The default value is `~/Mail/'.
  3901. You do not have to create any directories beforehand; Gnus will take
  3902. care of all that.
  3903. If you have a strict limit as to how many files you are allowed to
  3904. store in your account, you should not use this back end. As each mail
  3905. gets its own file, you might very well occupy thousands of inodes
  3906. within a few weeks. If this is no problem for you, and it isn't a
  3907. problem for you having your friendly systems administrator walking
  3908. around, madly, shouting "Who is eating all my inodes?! Who? Who!?!",
  3909. then you should know that this is probably the fastest format to use.
  3910. You do not have to trudge through a big mbox file just to read your new
  3911. mail.
  3912. `nnml' is probably the slowest back end when it comes to article
  3913. splitting. It has to create lots of files, and it also generates NOV
  3914. databases for the incoming mails. This makes it possibly the fastest
  3915. back end when it comes to reading mail.
  3916. When the marks file is used (which it is by default), `nnml' servers
  3917. have the property that you may backup them using `tar' or similar, and
  3918. later be able to restore them into Gnus (by adding the proper `nnml'
  3919. server) and have all your marks be preserved. Marks for a group are
  3920. usually stored in the `.marks' file (but see `nnml-marks-file-name')
  3921. within each `nnml' group's directory. Individual `nnml' groups are
  3922. also possible to backup, use `G m' to restore the group (after
  3923. restoring the backup into the nnml directory).
  3924. If for some reason you believe your `.marks' files are screwed up,
  3925. you can just delete them all. Gnus will then correctly regenerate them
  3926. next time it starts.
  3927. Virtual server settings:
  3928. `nnml-directory'
  3929. All `nnml' directories will be placed under this directory. The
  3930. default is the value of `message-directory' (whose default value
  3931. is `~/Mail').
  3932. `nnml-active-file'
  3933. The active file for the `nnml' server. The default is
  3934. `~/Mail/active'.
  3935. `nnml-newsgroups-file'
  3936. The `nnml' group descriptions file. *Note Newsgroups File
  3937. Format::. The default is `~/Mail/newsgroups'.
  3938. `nnml-get-new-mail'
  3939. If non-`nil', `nnml' will read incoming mail. The default is `t'.
  3940. `nnml-nov-is-evil'
  3941. If non-`nil', this back end will ignore any NOV files. The
  3942. default is `nil'.
  3943. `nnml-nov-file-name'
  3944. The name of the NOV files. The default is `.overview'.
  3945. `nnml-prepare-save-mail-hook'
  3946. Hook run narrowed to an article before saving.
  3947. `nnml-marks-is-evil'
  3948. If non-`nil', this back end will ignore any MARKS files. The
  3949. default is `nil'.
  3950. `nnml-marks-file-name'
  3951. The name of the "marks" files. The default is `.marks'.
  3952. `nnml-use-compressed-files'
  3953. If non-`nil', `nnml' will allow using compressed message files.
  3954. This requires `auto-compression-mode' to be enabled (*note
  3955. Compressed Files: (emacs)Compressed Files.). If the value of
  3956. `nnml-use-compressed-files' is a string, it is used as the file
  3957. extension specifying the compression program. You can set it to
  3958. `.bz2' if your Emacs supports it. A value of `t' is equivalent to
  3959. `.gz'.
  3960. `nnml-compressed-files-size-threshold'
  3961. Default size threshold for compressed message files. Message
  3962. files with bodies larger than that many characters will be
  3963. automatically compressed if `nnml-use-compressed-files' is
  3964. non-`nil'.
  3965. If your `nnml' groups and NOV files get totally out of whack, you
  3966. can do a complete update by typing `M-x nnml-generate-nov-databases'.
  3967. This command will trawl through the entire `nnml' hierarchy, looking at
  3968. each and every article, so it might take a while to complete. A better
  3969. interface to this functionality can be found in the server buffer
  3970. (*note Server Commands::).
  3971. 
  3972. File: gnus, Node: MH Spool, Next: Maildir, Prev: Mail Spool, Up: Choosing a Mail Back End
  3973. 6.4.13.4 MH Spool
  3974. .................
  3975. `nnmh' is just like `nnml', except that is doesn't generate NOV
  3976. databases and it doesn't keep an active file or marks file. This makes
  3977. `nnmh' a _much_ slower back end than `nnml', but it also makes it
  3978. easier to write procmail scripts for.
  3979. Virtual server settings:
  3980. `nnmh-directory'
  3981. All `nnmh' directories will be located under this directory. The
  3982. default is the value of `message-directory' (whose default is
  3983. `~/Mail')
  3984. `nnmh-get-new-mail'
  3985. If non-`nil', `nnmh' will read incoming mail. The default is `t'.
  3986. `nnmh-be-safe'
  3987. If non-`nil', `nnmh' will go to ridiculous lengths to make sure
  3988. that the articles in the folder are actually what Gnus thinks they
  3989. are. It will check date stamps and stat everything in sight, so
  3990. setting this to `t' will mean a serious slow-down. If you never
  3991. use anything but Gnus to read the `nnmh' articles, you do not have
  3992. to set this variable to `t'. The default is `nil'.
  3993. 
  3994. File: gnus, Node: Maildir, Next: Mail Folders, Prev: MH Spool, Up: Choosing a Mail Back End
  3995. 6.4.13.5 Maildir
  3996. ................
  3997. `nnmaildir' stores mail in the maildir format, with each maildir
  3998. corresponding to a group in Gnus. This format is documented here:
  3999. `http://cr.yp.to/proto/maildir.html' and here:
  4000. `http://www.qmail.org/man/man5/maildir.html'. `nnmaildir' also stores
  4001. extra information in the `.nnmaildir/' directory within a maildir.
  4002. Maildir format was designed to allow concurrent deliveries and
  4003. reading, without needing locks. With other back ends, you would have
  4004. your mail delivered to a spool of some kind, and then you would
  4005. configure Gnus to split mail from that spool into your groups. You can
  4006. still do that with `nnmaildir', but the more common configuration is to
  4007. have your mail delivered directly to the maildirs that appear as group
  4008. in Gnus.
  4009. `nnmaildir' is designed to be perfectly reliable: `C-g' will never
  4010. corrupt its data in memory, and `SIGKILL' will never corrupt its data
  4011. in the filesystem.
  4012. `nnmaildir' stores article marks and NOV data in each maildir. So
  4013. you can copy a whole maildir from one Gnus setup to another, and you
  4014. will keep your marks.
  4015. Virtual server settings:
  4016. `directory'
  4017. For each of your `nnmaildir' servers (it's very unlikely that
  4018. you'd need more than one), you need to create a directory and
  4019. populate it with maildirs or symlinks to maildirs (and nothing
  4020. else; do not choose a directory already used for other purposes).
  4021. Each maildir will be represented in Gnus as a newsgroup on that
  4022. server; the filename of the symlink will be the name of the group.
  4023. Any filenames in the directory starting with `.' are ignored. The
  4024. directory is scanned when you first start Gnus, and each time you
  4025. type `g' in the group buffer; if any maildirs have been removed or
  4026. added, `nnmaildir' notices at these times.
  4027. The value of the `directory' parameter should be a Lisp form which
  4028. is processed by `eval' and `expand-file-name' to get the path of
  4029. the directory for this server. The form is `eval'ed only when the
  4030. server is opened; the resulting string is used until the server is
  4031. closed. (If you don't know about forms and `eval', don't worry--a
  4032. simple string will work.) This parameter is not optional; you
  4033. must specify it. I don't recommend using `"~/Mail"' or a
  4034. subdirectory of it; several other parts of Gnus use that directory
  4035. by default for various things, and may get confused if `nnmaildir'
  4036. uses it too. `"~/.nnmaildir"' is a typical value.
  4037. `target-prefix'
  4038. This should be a Lisp form which is processed by `eval' and
  4039. `expand-file-name'. The form is `eval'ed only when the server is
  4040. opened; the resulting string is used until the server is closed.
  4041. When you create a group on an `nnmaildir' server, the maildir is
  4042. created with `target-prefix' prepended to its name, and a symlink
  4043. pointing to that maildir is created, named with the plain group
  4044. name. So if `directory' is `"~/.nnmaildir"' and `target-prefix'
  4045. is `"../maildirs/"', then when you create the group `foo',
  4046. `nnmaildir' will create `~/.nnmaildir/../maildirs/foo' as a
  4047. maildir, and will create `~/.nnmaildir/foo' as a symlink pointing
  4048. to `../maildirs/foo'.
  4049. You can set `target-prefix' to a string without any slashes to
  4050. create both maildirs and symlinks in the same `directory'; in this
  4051. case, any maildirs found in `directory' whose names start with
  4052. `target-prefix' will not be listed as groups (but the symlinks
  4053. pointing to them will be).
  4054. As a special case, if `target-prefix' is `""' (the default), then
  4055. when you create a group, the maildir will be created in
  4056. `directory' without a corresponding symlink. Beware that you
  4057. cannot use `gnus-group-delete-group' on such groups without the
  4058. `force' argument.
  4059. `directory-files'
  4060. This should be a function with the same interface as
  4061. `directory-files' (such as `directory-files' itself). It is used
  4062. to scan the server's `directory' for maildirs. This parameter is
  4063. optional; the default is `nnheader-directory-files-safe' if
  4064. `nnheader-directory-files-is-safe' is `nil', and `directory-files'
  4065. otherwise. (`nnheader-directory-files-is-safe' is checked only
  4066. once when the server is opened; if you want to check it each time
  4067. the directory is scanned, you'll have to provide your own function
  4068. that does that.)
  4069. `get-new-mail'
  4070. If non-`nil', then after scanning for new mail in the group
  4071. maildirs themselves as usual, this server will also incorporate
  4072. mail the conventional Gnus way, from `mail-sources' according to
  4073. `nnmail-split-methods' or `nnmail-split-fancy'. The default value
  4074. is `nil'.
  4075. Do _not_ use the same maildir both in `mail-sources' and as an
  4076. `nnmaildir' group. The results might happen to be useful, but
  4077. that would be by chance, not by design, and the results might be
  4078. different in the future. If your split rules create new groups,
  4079. remember to supply a `create-directory' server parameter.
  4080. 6.4.13.6 Group parameters
  4081. .........................
  4082. `nnmaildir' uses several group parameters. It's safe to ignore all
  4083. this; the default behavior for `nnmaildir' is the same as the default
  4084. behavior for other mail back ends: articles are deleted after one week,
  4085. etc. Except for the expiry parameters, all this functionality is
  4086. unique to `nnmaildir', so you can ignore it if you're just trying to
  4087. duplicate the behavior you already have with another back end.
  4088. If the value of any of these parameters is a vector, the first
  4089. element is evaluated as a Lisp form and the result is used, rather than
  4090. the original value. If the value is not a vector, the value itself is
  4091. evaluated as a Lisp form. (This is why these parameters use names
  4092. different from those of other, similar parameters supported by other
  4093. back ends: they have different, though similar, meanings.) (For
  4094. numbers, strings, `nil', and `t', you can ignore the `eval' business
  4095. again; for other values, remember to use an extra quote and wrap the
  4096. value in a vector when appropriate.)
  4097. `expire-age'
  4098. An integer specifying the minimum age, in seconds, of an article
  4099. before it will be expired, or the symbol `never' to specify that
  4100. articles should never be expired. If this parameter is not set,
  4101. `nnmaildir' falls back to the usual
  4102. `nnmail-expiry-wait'(`-function') variables (the `expiry-wait'
  4103. group parameter overrides `nnmail-expiry-wait' and makes
  4104. `nnmail-expiry-wait-function' ineffective). If you wanted a value
  4105. of 3 days, you could use something like `[(* 3 24 60 60)]';
  4106. `nnmaildir' will evaluate the form and use the result. An
  4107. article's age is measured starting from the article file's
  4108. modification time. Normally, this is the same as the article's
  4109. delivery time, but editing an article makes it younger. Moving an
  4110. article (other than via expiry) may also make an article younger.
  4111. `expire-group'
  4112. If this is set to a string such as a full Gnus group name, like
  4113. "backend+server.address.string:group.name"
  4114. and if it is not the name of the same group that the parameter
  4115. belongs to, then articles will be moved to the specified group
  4116. during expiry before being deleted. _If this is set to an
  4117. `nnmaildir' group, the article will be just as old in the
  4118. destination group as it was in the source group._ So be careful
  4119. with `expire-age' in the destination group. If this is set to the
  4120. name of the same group that the parameter belongs to, then the
  4121. article is not expired at all. If you use the vector form, the
  4122. first element is evaluated once for each article. So that form
  4123. can refer to `nnmaildir-article-file-name', etc., to decide where
  4124. to put the article. _Even if this parameter is not set,
  4125. `nnmaildir' does not fall back to the `expiry-target' group
  4126. parameter or the `nnmail-expiry-target' variable._
  4127. `read-only'
  4128. If this is set to `t', `nnmaildir' will treat the articles in this
  4129. maildir as read-only. This means: articles are not renamed from
  4130. `new/' into `cur/'; articles are only found in `new/', not `cur/';
  4131. articles are never deleted; articles cannot be edited. `new/' is
  4132. expected to be a symlink to the `new/' directory of another
  4133. maildir--e.g., a system-wide mailbox containing a mailing list of
  4134. common interest. Everything in the maildir outside `new/' is
  4135. _not_ treated as read-only, so for a shared mailbox, you do still
  4136. need to set up your own maildir (or have write permission to the
  4137. shared mailbox); your maildir just won't contain extra copies of
  4138. the articles.
  4139. `directory-files'
  4140. A function with the same interface as `directory-files'. It is
  4141. used to scan the directories in the maildir corresponding to this
  4142. group to find articles. The default is the function specified by
  4143. the server's `directory-files' parameter.
  4144. `distrust-Lines:'
  4145. If non-`nil', `nnmaildir' will always count the lines of an
  4146. article, rather than use the `Lines:' header field. If `nil', the
  4147. header field will be used if present.
  4148. `always-marks'
  4149. A list of mark symbols, such as `['(read expire)]'. Whenever Gnus
  4150. asks `nnmaildir' for article marks, `nnmaildir' will say that all
  4151. articles have these marks, regardless of whether the marks stored
  4152. in the filesystem say so. This is a proof-of-concept feature that
  4153. will probably be removed eventually; it ought to be done in Gnus
  4154. proper, or abandoned if it's not worthwhile.
  4155. `never-marks'
  4156. A list of mark symbols, such as `['(tick expire)]'. Whenever Gnus
  4157. asks `nnmaildir' for article marks, `nnmaildir' will say that no
  4158. articles have these marks, regardless of whether the marks stored
  4159. in the filesystem say so. `never-marks' overrides `always-marks'.
  4160. This is a proof-of-concept feature that will probably be removed
  4161. eventually; it ought to be done in Gnus proper, or abandoned if
  4162. it's not worthwhile.
  4163. `nov-cache-size'
  4164. An integer specifying the size of the NOV memory cache. To speed
  4165. things up, `nnmaildir' keeps NOV data in memory for a limited
  4166. number of articles in each group. (This is probably not
  4167. worthwhile, and will probably be removed in the future.) This
  4168. parameter's value is noticed only the first time a group is seen
  4169. after the server is opened--i.e., when you first start Gnus,
  4170. typically. The NOV cache is never resized until the server is
  4171. closed and reopened. The default is an estimate of the number of
  4172. articles that would be displayed in the summary buffer: a count of
  4173. articles that are either marked with `tick' or not marked with
  4174. `read', plus a little extra.
  4175. 6.4.13.7 Article identification
  4176. ...............................
  4177. Articles are stored in the `cur/' subdirectory of each maildir. Each
  4178. article file is named like `uniq:info', where `uniq' contains no
  4179. colons. `nnmaildir' ignores, but preserves, the `:info' part. (Other
  4180. maildir readers typically use this part of the filename to store
  4181. marks.) The `uniq' part uniquely identifies the article, and is used
  4182. in various places in the `.nnmaildir/' subdirectory of the maildir to
  4183. store information about the corresponding article. The full pathname
  4184. of an article is available in the variable
  4185. `nnmaildir-article-file-name' after you request the article in the
  4186. summary buffer.
  4187. 6.4.13.8 NOV data
  4188. .................
  4189. An article identified by `uniq' has its NOV data (used to generate
  4190. lines in the summary buffer) stored in `.nnmaildir/nov/uniq'. There is
  4191. no `nnmaildir-generate-nov-databases' function. (There isn't much need
  4192. for it--an article's NOV data is updated automatically when the article
  4193. or `nnmail-extra-headers' has changed.) You can force `nnmaildir' to
  4194. regenerate the NOV data for a single article simply by deleting the
  4195. corresponding NOV file, but _beware_: this will also cause `nnmaildir'
  4196. to assign a new article number for this article, which may cause trouble
  4197. with `seen' marks, the Agent, and the cache.
  4198. 6.4.13.9 Article marks
  4199. ......................
  4200. An article identified by `uniq' is considered to have the mark `flag'
  4201. when the file `.nnmaildir/marks/flag/uniq' exists. When Gnus asks
  4202. `nnmaildir' for a group's marks, `nnmaildir' looks for such files and
  4203. reports the set of marks it finds. When Gnus asks `nnmaildir' to store
  4204. a new set of marks, `nnmaildir' creates and deletes the corresponding
  4205. files as needed. (Actually, rather than create a new file for each
  4206. mark, it just creates hard links to `.nnmaildir/markfile', to save
  4207. inodes.)
  4208. You can invent new marks by creating a new directory in
  4209. `.nnmaildir/marks/'. You can tar up a maildir and remove it from your
  4210. server, untar it later, and keep your marks. You can add and remove
  4211. marks yourself by creating and deleting mark files. If you do this
  4212. while Gnus is running and your `nnmaildir' server is open, it's best to
  4213. exit all summary buffers for `nnmaildir' groups and type `s' in the
  4214. group buffer first, and to type `g' or `M-g' in the group buffer
  4215. afterwards. Otherwise, Gnus might not pick up the changes, and might
  4216. undo them.
  4217. 
  4218. File: gnus, Node: Mail Folders, Next: Comparing Mail Back Ends, Prev: Maildir, Up: Choosing a Mail Back End
  4219. 6.4.13.10 Mail Folders
  4220. ......................
  4221. `nnfolder' is a back end for storing each mail group in a separate
  4222. file. Each file is in the standard Un*x mbox format. `nnfolder' will
  4223. add extra headers to keep track of article numbers and arrival dates.
  4224. When the marks file is used (which it is by default), `nnfolder'
  4225. servers have the property that you may backup them using `tar' or
  4226. similar, and later be able to restore them into Gnus (by adding the
  4227. proper `nnfolder' server) and have all your marks be preserved. Marks
  4228. for a group are usually stored in a file named as the mbox file with
  4229. `.mrk' concatenated to it (but see `nnfolder-marks-file-suffix') within
  4230. the `nnfolder' directory. Individual `nnfolder' groups are also
  4231. possible to backup, use `G m' to restore the group (after restoring the
  4232. backup into the `nnfolder' directory).
  4233. Virtual server settings:
  4234. `nnfolder-directory'
  4235. All the `nnfolder' mail boxes will be stored under this directory.
  4236. The default is the value of `message-directory' (whose default is
  4237. `~/Mail')
  4238. `nnfolder-active-file'
  4239. The name of the active file. The default is `~/Mail/active'.
  4240. `nnfolder-newsgroups-file'
  4241. The name of the group descriptions file. *Note Newsgroups File
  4242. Format::. The default is `~/Mail/newsgroups'
  4243. `nnfolder-get-new-mail'
  4244. If non-`nil', `nnfolder' will read incoming mail. The default is
  4245. `t'
  4246. `nnfolder-save-buffer-hook'
  4247. Hook run before saving the folders. Note that Emacs does the
  4248. normal backup renaming of files even with the `nnfolder' buffers.
  4249. If you wish to switch this off, you could say something like the
  4250. following in your `.emacs' file:
  4251. (defun turn-off-backup ()
  4252. (set (make-local-variable 'backup-inhibited) t))
  4253. (add-hook 'nnfolder-save-buffer-hook 'turn-off-backup)
  4254. `nnfolder-delete-mail-hook'
  4255. Hook run in a buffer narrowed to the message that is to be deleted.
  4256. This function can be used to copy the message to somewhere else,
  4257. or to extract some information from it before removing it.
  4258. `nnfolder-nov-is-evil'
  4259. If non-`nil', this back end will ignore any NOV files. The
  4260. default is `nil'.
  4261. `nnfolder-nov-file-suffix'
  4262. The extension for NOV files. The default is `.nov'.
  4263. `nnfolder-nov-directory'
  4264. The directory where the NOV files should be stored. If `nil',
  4265. `nnfolder-directory' is used.
  4266. `nnfolder-marks-is-evil'
  4267. If non-`nil', this back end will ignore any MARKS files. The
  4268. default is `nil'.
  4269. `nnfolder-marks-file-suffix'
  4270. The extension for MARKS files. The default is `.mrk'.
  4271. `nnfolder-marks-directory'
  4272. The directory where the MARKS files should be stored. If `nil',
  4273. `nnfolder-directory' is used.
  4274. If you have lots of `nnfolder'-like files you'd like to read with
  4275. `nnfolder', you can use the `M-x nnfolder-generate-active-file' command
  4276. to make `nnfolder' aware of all likely files in `nnfolder-directory'.
  4277. This only works if you use long file names, though.
  4278. 
  4279. File: gnus, Node: Comparing Mail Back Ends, Prev: Mail Folders, Up: Choosing a Mail Back End
  4280. 6.4.13.11 Comparing Mail Back Ends
  4281. ..................................
  4282. First, just for terminology, the "back end" is the common word for a
  4283. low-level access method--a transport, if you will, by which something
  4284. is acquired. The sense is that one's mail has to come from somewhere,
  4285. and so selection of a suitable back end is required in order to get that
  4286. mail within spitting distance of Gnus.
  4287. The same concept exists for Usenet itself: Though access to articles
  4288. is typically done by NNTP these days, once upon a midnight dreary,
  4289. everyone in the world got at Usenet by running a reader on the machine
  4290. where the articles lay (the machine which today we call an NNTP
  4291. server), and access was by the reader stepping into the articles'
  4292. directory spool area directly. One can still select between either the
  4293. `nntp' or `nnspool' back ends, to select between these methods, if one
  4294. happens actually to live on the server (or can see its spool directly,
  4295. anyway, via NFS).
  4296. The goal in selecting a mail back end is to pick one which
  4297. simultaneously represents a suitable way of dealing with the original
  4298. format plus leaving mail in a form that is convenient to use in the
  4299. future. Here are some high and low points on each:
  4300. `nnmbox'
  4301. UNIX systems have historically had a single, very common, and well-
  4302. defined format. All messages arrive in a single "spool file", and
  4303. they are delineated by a line whose regular expression matches
  4304. `^From_'. (My notational use of `_' is to indicate a space, to
  4305. make it clear in this instance that this is not the RFC-specified
  4306. `From:' header.) Because Emacs and therefore Gnus emanate
  4307. historically from the Unix environment, it is simplest if one does
  4308. not mess a great deal with the original mailbox format, so if one
  4309. chooses this back end, Gnus' primary activity in getting mail from
  4310. the real spool area to Gnus' preferred directory is simply to copy
  4311. it, with no (appreciable) format change in the process. It is the
  4312. "dumbest" way to move mail into availability in the Gnus
  4313. environment. This makes it fast to move into place, but slow to
  4314. parse, when Gnus has to look at what's where.
  4315. `nnbabyl'
  4316. Once upon a time, there was the DEC-10 and DEC-20, running
  4317. operating systems called TOPS and related things, and the usual
  4318. (only?) mail reading environment was a thing called Babyl. I
  4319. don't know what format was used for mail landing on the system,
  4320. but Babyl had its own internal format to which mail was converted,
  4321. primarily involving creating a spool-file-like entity with a
  4322. scheme for inserting Babyl-specific headers and status bits above
  4323. the top of each message in the file. Rmail was Emacs's first mail
  4324. reader, it was written by Richard Stallman, and Stallman came out
  4325. of that TOPS/Babyl environment, so he wrote Rmail to understand
  4326. the mail files folks already had in existence. Gnus (and VM, for
  4327. that matter) continue to support this format because it's
  4328. perceived as having some good qualities in those mailer-specific
  4329. headers/status bits stuff. Rmail itself still exists as well, of
  4330. course, and is still maintained within Emacs. Since Emacs 23, it
  4331. uses standard mbox format rather than Babyl.
  4332. Both of the above forms leave your mail in a single file on your
  4333. file system, and they must parse that entire file each time you
  4334. take a look at your mail.
  4335. `nnml'
  4336. `nnml' is the back end which smells the most as though you were
  4337. actually operating with an `nnspool'-accessed Usenet system. (In
  4338. fact, I believe `nnml' actually derived from `nnspool' code, lo
  4339. these years ago.) One's mail is taken from the original spool
  4340. file, and is then cut up into individual message files, 1:1. It
  4341. maintains a Usenet-style active file (analogous to what one finds
  4342. in an INN- or CNews-based news system in (for instance)
  4343. `/var/lib/news/active', or what is returned via the `NNTP LIST'
  4344. verb) and also creates "overview" files for efficient group entry,
  4345. as has been defined for NNTP servers for some years now. It is
  4346. slower in mail-splitting, due to the creation of lots of files,
  4347. updates to the `nnml' active file, and additions to overview files
  4348. on a per-message basis, but it is extremely fast on access because
  4349. of what amounts to the indexing support provided by the active
  4350. file and overviews.
  4351. `nnml' costs "inodes" in a big way; that is, it soaks up the
  4352. resource which defines available places in the file system to put
  4353. new files. Sysadmins take a dim view of heavy inode occupation
  4354. within tight, shared file systems. But if you live on a personal
  4355. machine where the file system is your own and space is not at a
  4356. premium, `nnml' wins big.
  4357. It is also problematic using this back end if you are living in a
  4358. FAT16-based Windows world, since much space will be wasted on all
  4359. these tiny files.
  4360. `nnmh'
  4361. The Rand MH mail-reading system has been around UNIX systems for a
  4362. very long time; it operates by splitting one's spool file of
  4363. messages into individual files, but with little or no indexing
  4364. support--`nnmh' is considered to be semantically equivalent to
  4365. "`nnml' without active file or overviews". This is arguably the
  4366. worst choice, because one gets the slowness of individual file
  4367. creation married to the slowness of access parsing when learning
  4368. what's new in one's groups.
  4369. `nnfolder'
  4370. Basically the effect of `nnfolder' is `nnmbox' (the first method
  4371. described above) on a per-group basis. That is, `nnmbox' itself
  4372. puts _all_ one's mail in one file; `nnfolder' provides a little
  4373. bit of optimization to this so that each of one's mail groups has
  4374. a Unix mail box file. It's faster than `nnmbox' because each group
  4375. can be parsed separately, and still provides the simple Unix mail
  4376. box format requiring minimal effort in moving the mail around. In
  4377. addition, it maintains an "active" file making it much faster for
  4378. Gnus to figure out how many messages there are in each separate
  4379. group.
  4380. If you have groups that are expected to have a massive amount of
  4381. messages, `nnfolder' is not the best choice, but if you receive
  4382. only a moderate amount of mail, `nnfolder' is probably the most
  4383. friendly mail back end all over.
  4384. `nnmaildir'
  4385. For configuring expiry and other things, `nnmaildir' uses
  4386. incompatible group parameters, slightly different from those of
  4387. other mail back ends.
  4388. `nnmaildir' is largely similar to `nnml', with some notable
  4389. differences. Each message is stored in a separate file, but the
  4390. filename is unrelated to the article number in Gnus. `nnmaildir'
  4391. also stores the equivalent of `nnml''s overview files in one file
  4392. per article, so it uses about twice as many inodes as `nnml'.
  4393. (Use `df -i' to see how plentiful your inode supply is.) If this
  4394. slows you down or takes up very much space, a non-block-structured
  4395. file system.
  4396. Since maildirs don't require locking for delivery, the maildirs
  4397. you use as groups can also be the maildirs your mail is directly
  4398. delivered to. This means you can skip Gnus' mail splitting if
  4399. your mail is already organized into different mailboxes during
  4400. delivery. A `directory' entry in `mail-sources' would have a
  4401. similar effect, but would require one set of mailboxes for
  4402. spooling deliveries (in mbox format, thus damaging message
  4403. bodies), and another set to be used as groups (in whatever format
  4404. you like). A maildir has a built-in spool, in the `new/'
  4405. subdirectory. Beware that currently, mail moved from `new/' to
  4406. `cur/' instead of via mail splitting will not undergo treatment
  4407. such as duplicate checking.
  4408. `nnmaildir' stores article marks for a given group in the
  4409. corresponding maildir, in a way designed so that it's easy to
  4410. manipulate them from outside Gnus. You can tar up a maildir,
  4411. unpack it somewhere else, and still have your marks. `nnml' also
  4412. stores marks, but it's not as easy to work with them from outside
  4413. Gnus as with `nnmaildir'.
  4414. `nnmaildir' uses a significant amount of memory to speed things up.
  4415. (It keeps in memory some of the things that `nnml' stores in files
  4416. and that `nnmh' repeatedly parses out of message files.) If this
  4417. is a problem for you, you can set the `nov-cache-size' group
  4418. parameter to something small (0 would probably not work, but 1
  4419. probably would) to make it use less memory. This caching will
  4420. probably be removed in the future.
  4421. Startup is likely to be slower with `nnmaildir' than with other
  4422. back ends. Everything else is likely to be faster, depending in
  4423. part on your file system.
  4424. `nnmaildir' does not use `nnoo', so you cannot use `nnoo' to write
  4425. an `nnmaildir'-derived back end.
  4426. 
  4427. File: gnus, Node: Browsing the Web, Next: Other Sources, Prev: Getting Mail, Up: Select Methods
  4428. 6.5 Browsing the Web
  4429. ====================
  4430. Web-based discussion forums are getting more and more popular. On many
  4431. subjects, the web-based forums have become the most important forums,
  4432. eclipsing the importance of mailing lists and news groups. The reason
  4433. is easy to understand--they are friendly to new users; you just point
  4434. and click, and there's the discussion. With mailing lists, you have to
  4435. go through a cumbersome subscription procedure, and most people don't
  4436. even know what a news group is.
  4437. The problem with this scenario is that web browsers are not very
  4438. good at being newsreaders. They do not keep track of what articles
  4439. you've read; they do not allow you to score on subjects you're
  4440. interested in; they do not allow off-line browsing; they require you to
  4441. click around and drive you mad in the end.
  4442. So--if web browsers suck at reading discussion forums, why not use
  4443. Gnus to do it instead?
  4444. Gnus has been getting a bit of a collection of back ends for
  4445. providing interfaces to these sources.
  4446. * Menu:
  4447. * Archiving Mail::
  4448. * Web Searches:: Creating groups from articles that match a string.
  4449. * RSS:: Reading RDF site summary.
  4450. * Customizing W3:: Doing stuff to Emacs/W3 from Gnus.
  4451. All the web sources require Emacs/W3 and the url library or those
  4452. alternatives to work.
  4453. The main caveat with all these web sources is that they probably
  4454. won't work for a very long time. Gleaning information from the HTML
  4455. data is guesswork at best, and when the layout is altered, the Gnus
  4456. back end will fail. If you have reasonably new versions of these back
  4457. ends, though, you should be ok.
  4458. One thing all these Web methods have in common is that the Web
  4459. sources are often down, unavailable or just plain too slow to be fun.
  4460. In those cases, it makes a lot of sense to let the Gnus Agent (*note
  4461. Gnus Unplugged::) handle downloading articles, and then you can read
  4462. them at leisure from your local disk. No more World Wide Wait for you.
  4463. 
  4464. File: gnus, Node: Archiving Mail, Next: Web Searches, Up: Browsing the Web
  4465. 6.5.1 Archiving Mail
  4466. --------------------
  4467. Some of the back ends, notably `nnml', `nnfolder', and `nnmaildir', now
  4468. actually store the article marks with each group. For these servers,
  4469. archiving and restoring a group while preserving marks is fairly simple.
  4470. (Preserving the group level and group parameters as well still
  4471. requires ritual dancing and sacrifices to the `.newsrc.eld' deity
  4472. though.)
  4473. To archive an entire `nnml', `nnfolder', or `nnmaildir' server, take
  4474. a recursive copy of the server directory. There is no need to shut
  4475. down Gnus, so archiving may be invoked by `cron' or similar. You
  4476. restore the data by restoring the directory tree, and adding a server
  4477. definition pointing to that directory in Gnus. The *note Article
  4478. Backlog::, *note Asynchronous Fetching:: and other things might
  4479. interfere with overwriting data, so you may want to shut down Gnus
  4480. before you restore the data.
  4481. It is also possible to archive individual `nnml', `nnfolder', or
  4482. `nnmaildir' groups, while preserving marks. For `nnml' or `nnmaildir',
  4483. you copy all files in the group's directory. For `nnfolder' you need
  4484. to copy both the base folder file itself (`FOO', say), and the marks
  4485. file (`FOO.mrk' in this example). Restoring the group is done with `G
  4486. m' from the Group buffer. The last step makes Gnus notice the new
  4487. directory. `nnmaildir' notices the new directory automatically, so `G
  4488. m' is unnecessary in that case.
  4489. 
  4490. File: gnus, Node: Web Searches, Next: RSS, Prev: Archiving Mail, Up: Browsing the Web
  4491. 6.5.2 Web Searches
  4492. ------------------
  4493. It's, like, too neat to search the Usenet for articles that match a
  4494. string, but it, like, totally _sucks_, like, totally, to use one of
  4495. those, like, Web browsers, and you, like, have to, rilly, like, look at
  4496. the commercials, so, like, with Gnus you can do _rad_, rilly, searches
  4497. without having to use a browser.
  4498. The `nnweb' back end allows an easy interface to the mighty search
  4499. engine. You create an `nnweb' group, enter a search pattern, and then
  4500. enter the group and read the articles like you would any normal group.
  4501. The `G w' command in the group buffer (*note Foreign Groups::) will do
  4502. this in an easy-to-use fashion.
  4503. `nnweb' groups don't really lend themselves to being solid
  4504. groups--they have a very fleeting idea of article numbers. In fact,
  4505. each time you enter an `nnweb' group (not even changing the search
  4506. pattern), you are likely to get the articles ordered in a different
  4507. manner. Not even using duplicate suppression (*note Duplicate
  4508. Suppression::) will help, since `nnweb' doesn't even know the
  4509. `Message-ID' of the articles before reading them using some search
  4510. engines (Google, for instance). The only possible way to keep track of
  4511. which articles you've read is by scoring on the `Date' header--mark all
  4512. articles posted before the last date you read the group as read.
  4513. If the search engine changes its output substantially, `nnweb' won't
  4514. be able to parse it and will fail. One could hardly fault the Web
  4515. providers if they were to do this--their _raison d'être_ is to make
  4516. money off of advertisements, not to provide services to the community.
  4517. Since `nnweb' washes the ads off all the articles, one might think that
  4518. the providers might be somewhat miffed. We'll see.
  4519. You must have the `url' and `W3' package or those alternatives (try
  4520. `customize-group' on the `mm-url' variable group) installed to be able
  4521. to use `nnweb'.
  4522. Virtual server variables:
  4523. `nnweb-type'
  4524. What search engine type is being used. The currently supported
  4525. types are `google', `dejanews', and `gmane'. Note that `dejanews'
  4526. is an alias to `google'.
  4527. `nnweb-search'
  4528. The search string to feed to the search engine.
  4529. `nnweb-max-hits'
  4530. Advisory maximum number of hits per search to display. The
  4531. default is 999.
  4532. `nnweb-type-definition'
  4533. Type-to-definition alist. This alist says what `nnweb' should do
  4534. with the various search engine types. The following elements must
  4535. be present:
  4536. `article'
  4537. Function to decode the article and provide something that Gnus
  4538. understands.
  4539. `map'
  4540. Function to create an article number to message header and
  4541. URL alist.
  4542. `search'
  4543. Function to send the search string to the search engine.
  4544. `address'
  4545. The address the aforementioned function should send the
  4546. search string to.
  4547. `id'
  4548. Format string URL to fetch an article by `Message-ID'.
  4549. 
  4550. File: gnus, Node: RSS, Next: Customizing W3, Prev: Web Searches, Up: Browsing the Web
  4551. 6.5.3 RSS
  4552. ---------
  4553. Some web sites have an RDF Site Summary (RSS). RSS is a format for
  4554. summarizing headlines from news related sites (such as BBC or CNN).
  4555. But basically anything list-like can be presented as an RSS feed:
  4556. weblogs, changelogs or recent changes to a wiki (e.g.
  4557. `http://cliki.net/recent-changes.rdf').
  4558. RSS has a quite regular and nice interface, and it's possible to get
  4559. the information Gnus needs to keep groups updated.
  4560. Note: you had better use Emacs which supports the `utf-8' coding
  4561. system because RSS uses UTF-8 for encoding non-ASCII text by default.
  4562. It is also used by default for non-ASCII group names.
  4563. Use `G R' from the group buffer to subscribe to a feed--you will be
  4564. prompted for the location, the title and the description of the feed.
  4565. The title, which allows any characters, will be used for the group name
  4566. and the name of the group data file. The description can be omitted.
  4567. An easy way to get started with `nnrss' is to say something like the
  4568. following in the group buffer: `B nnrss RET RET y', then subscribe to
  4569. groups.
  4570. The `nnrss' back end saves the group data file in `nnrss-directory'
  4571. (see below) for each `nnrss' group. File names containing non-ASCII
  4572. characters will be encoded by the coding system specified with the
  4573. `nnmail-pathname-coding-system' variable or other. Also *Note
  4574. Non-ASCII Group Names::, for more information.
  4575. The `nnrss' back end generates `multipart/alternative' MIME articles
  4576. in which each contains a `text/plain' part and a `text/html' part.
  4577. You can also use the following commands to import and export your
  4578. subscriptions from a file in OPML format (Outline Processor Markup
  4579. Language).
  4580. -- Function: nnrss-opml-import file
  4581. Prompt for an OPML file, and subscribe to each feed in the file.
  4582. -- Function: nnrss-opml-export
  4583. Write your current RSS subscriptions to a buffer in OPML format.
  4584. The following `nnrss' variables can be altered:
  4585. `nnrss-directory'
  4586. The directory where `nnrss' stores its files. The default is
  4587. `~/News/rss/'.
  4588. `nnrss-file-coding-system'
  4589. The coding system used when reading and writing the `nnrss' groups
  4590. data files. The default is the value of
  4591. `mm-universal-coding-system' (which defaults to `emacs-mule' in
  4592. Emacs or `escape-quoted' in XEmacs).
  4593. `nnrss-ignore-article-fields'
  4594. Some feeds update constantly article fields during their
  4595. publications, e.g. to indicate the number of comments. However,
  4596. if there is a difference between the local article and the distant
  4597. one, the latter is considered to be new. To avoid this and
  4598. discard some fields, set this variable to the list of fields to be
  4599. ignored. The default is `'(slash:comments)'.
  4600. `nnrss-use-local'
  4601. If you set `nnrss-use-local' to `t', `nnrss' will read the feeds
  4602. from local files in `nnrss-directory'. You can use the command
  4603. `nnrss-generate-download-script' to generate a download script
  4604. using `wget'.
  4605. The following code may be helpful, if you want to show the
  4606. description in the summary buffer.
  4607. (add-to-list 'nnmail-extra-headers nnrss-description-field)
  4608. (setq gnus-summary-line-format "%U%R%z%I%(%[%4L: %-15,15f%]%) %s%uX\n")
  4609. (defun gnus-user-format-function-X (header)
  4610. (let ((descr
  4611. (assq nnrss-description-field (mail-header-extra header))))
  4612. (if descr (concat "\n\t" (cdr descr)) "")))
  4613. The following code may be useful to open an nnrss url directly from
  4614. the summary buffer.
  4615. (require 'browse-url)
  4616. (defun browse-nnrss-url (arg)
  4617. (interactive "p")
  4618. (let ((url (assq nnrss-url-field
  4619. (mail-header-extra
  4620. (gnus-data-header
  4621. (assq (gnus-summary-article-number)
  4622. gnus-newsgroup-data))))))
  4623. (if url
  4624. (progn
  4625. (browse-url (cdr url))
  4626. (gnus-summary-mark-as-read-forward 1))
  4627. (gnus-summary-scroll-up arg))))
  4628. (eval-after-load "gnus"
  4629. #'(define-key gnus-summary-mode-map
  4630. (kbd "<RET>") 'browse-nnrss-url))
  4631. (add-to-list 'nnmail-extra-headers nnrss-url-field)
  4632. Even if you have added `text/html' to the
  4633. `mm-discouraged-alternatives' variable (*note Display Customization:
  4634. (emacs-mime)Display Customization.) since you don't want to see HTML
  4635. parts, it might be more useful especially in `nnrss' groups to display
  4636. `text/html' parts. Here's an example of setting
  4637. `mm-discouraged-alternatives' as a group parameter (*note Group
  4638. Parameters::) in order to display `text/html' parts only in `nnrss'
  4639. groups:
  4640. ;; Set the default value of `mm-discouraged-alternatives'.
  4641. (eval-after-load "gnus-sum"
  4642. '(add-to-list
  4643. 'gnus-newsgroup-variables
  4644. '(mm-discouraged-alternatives
  4645. . '("text/html" "image/.*"))))
  4646. ;; Display `text/html' parts in `nnrss' groups.
  4647. (add-to-list
  4648. 'gnus-parameters
  4649. '("\\`nnrss:" (mm-discouraged-alternatives nil)))
  4650. 
  4651. File: gnus, Node: Customizing W3, Prev: RSS, Up: Browsing the Web
  4652. 6.5.4 Customizing W3
  4653. --------------------
  4654. Gnus uses the url library to fetch web pages and Emacs/W3 (or those
  4655. alternatives) to display web pages. Emacs/W3 is documented in its own
  4656. manual, but there are some things that may be more relevant for Gnus
  4657. users.
  4658. For instance, a common question is how to make Emacs/W3 follow links
  4659. using the `browse-url' functions (which will call some external web
  4660. browser like Netscape). Here's one way:
  4661. (eval-after-load "w3"
  4662. '(progn
  4663. (fset 'w3-fetch-orig (symbol-function 'w3-fetch))
  4664. (defun w3-fetch (&optional url target)
  4665. (interactive (list (w3-read-url-with-default)))
  4666. (if (eq major-mode 'gnus-article-mode)
  4667. (browse-url url)
  4668. (w3-fetch-orig url target)))))
  4669. Put that in your `.emacs' file, and hitting links in W3-rendered
  4670. HTML in the Gnus article buffers will use `browse-url' to follow the
  4671. link.
  4672. 
  4673. File: gnus, Node: Other Sources, Next: Combined Groups, Prev: Browsing the Web, Up: Select Methods
  4674. 6.6 Other Sources
  4675. =================
  4676. Gnus can do more than just read news or mail. The methods described
  4677. below allow Gnus to view directories and files as if they were
  4678. newsgroups.
  4679. * Menu:
  4680. * Directory Groups:: You can read a directory as if it was a newsgroup.
  4681. * Anything Groups:: Dired? Who needs dired?
  4682. * Document Groups:: Single files can be the basis of a group.
  4683. * Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
  4684. * The Empty Backend:: The backend that never has any news.
  4685. 
  4686. File: gnus, Node: Directory Groups, Next: Anything Groups, Up: Other Sources
  4687. 6.6.1 Directory Groups
  4688. ----------------------
  4689. If you have a directory that has lots of articles in separate files in
  4690. it, you might treat it as a newsgroup. The files have to have numerical
  4691. names, of course.
  4692. This might be an opportune moment to mention `ange-ftp' (and its
  4693. successor `efs'), that most wonderful of all wonderful Emacs packages.
  4694. When I wrote `nndir', I didn't think much about it--a back end to read
  4695. directories. Big deal.
  4696. `ange-ftp' changes that picture dramatically. For instance, if you
  4697. enter the `ange-ftp' file name `/ftp.hpc.uh.edu:/pub/emacs/ding-list/'
  4698. as the directory name, `ange-ftp' or `efs' will actually allow you to
  4699. read this directory over at `sina' as a newsgroup. Distributed news
  4700. ahoy!
  4701. `nndir' will use NOV files if they are present.
  4702. `nndir' is a "read-only" back end--you can't delete or expire
  4703. articles with this method. You can use `nnmh' or `nnml' for whatever
  4704. you use `nndir' for, so you could switch to any of those methods if you
  4705. feel the need to have a non-read-only `nndir'.
  4706. 
  4707. File: gnus, Node: Anything Groups, Next: Document Groups, Prev: Directory Groups, Up: Other Sources
  4708. 6.6.2 Anything Groups
  4709. ---------------------
  4710. From the `nndir' back end (which reads a single spool-like directory),
  4711. it's just a hop and a skip to `nneething', which pretends that any
  4712. arbitrary directory is a newsgroup. Strange, but true.
  4713. When `nneething' is presented with a directory, it will scan this
  4714. directory and assign article numbers to each file. When you enter such
  4715. a group, `nneething' must create "headers" that Gnus can use. After
  4716. all, Gnus is a newsreader, in case you're forgetting. `nneething' does
  4717. this in a two-step process. First, it snoops each file in question.
  4718. If the file looks like an article (i.e., the first few lines look like
  4719. headers), it will use this as the head. If this is just some arbitrary
  4720. file without a head (e.g. a C source file), `nneething' will cobble up
  4721. a header out of thin air. It will use file ownership, name and date
  4722. and do whatever it can with these elements.
  4723. All this should happen automatically for you, and you will be
  4724. presented with something that looks very much like a newsgroup.
  4725. Totally like a newsgroup, to be precise. If you select an article, it
  4726. will be displayed in the article buffer, just as usual.
  4727. If you select a line that represents a directory, Gnus will pop you
  4728. into a new summary buffer for this `nneething' group. And so on. You
  4729. can traverse the entire disk this way, if you feel like, but remember
  4730. that Gnus is not dired, really, and does not intend to be, either.
  4731. There are two overall modes to this action--ephemeral or solid. When
  4732. doing the ephemeral thing (i.e., `G D' from the group buffer), Gnus
  4733. will not store information on what files you have read, and what files
  4734. are new, and so on. If you create a solid `nneething' group the normal
  4735. way with `G m', Gnus will store a mapping table between article numbers
  4736. and file names, and you can treat this group like any other groups.
  4737. When you activate a solid `nneething' group, you will be told how many
  4738. unread articles it contains, etc., etc.
  4739. Some variables:
  4740. `nneething-map-file-directory'
  4741. All the mapping files for solid `nneething' groups will be stored
  4742. in this directory, which defaults to `~/.nneething/'.
  4743. `nneething-exclude-files'
  4744. All files that match this regexp will be ignored. Nice to use to
  4745. exclude auto-save files and the like, which is what it does by
  4746. default.
  4747. `nneething-include-files'
  4748. Regexp saying what files to include in the group. If this
  4749. variable is non-`nil', only files matching this regexp will be
  4750. included.
  4751. `nneething-map-file'
  4752. Name of the map files.
  4753. 
  4754. File: gnus, Node: Document Groups, Next: Mail-To-News Gateways, Prev: Anything Groups, Up: Other Sources
  4755. 6.6.3 Document Groups
  4756. ---------------------
  4757. `nndoc' is a cute little thing that will let you read a single file as
  4758. a newsgroup. Several files types are supported:
  4759. `babyl'
  4760. The Babyl format.
  4761. `mbox'
  4762. The standard Unix mbox file.
  4763. `mmdf'
  4764. The MMDF mail box format.
  4765. `news'
  4766. Several news articles appended into a file.
  4767. `rnews'
  4768. The rnews batch transport format.
  4769. `nsmail'
  4770. Netscape mail boxes.
  4771. `mime-parts'
  4772. MIME multipart messages.
  4773. `standard-digest'
  4774. The standard (RFC 1153) digest format.
  4775. `mime-digest'
  4776. A MIME digest of messages.
  4777. `lanl-gov-announce'
  4778. Announcement messages from LANL Gov Announce.
  4779. `git'
  4780. `git' commit messages.
  4781. `rfc822-forward'
  4782. A message forwarded according to RFC822.
  4783. `outlook'
  4784. The Outlook mail box.
  4785. `oe-dbx'
  4786. The Outlook Express dbx mail box.
  4787. `exim-bounce'
  4788. A bounce message from the Exim MTA.
  4789. `forward'
  4790. A message forwarded according to informal rules.
  4791. `rfc934'
  4792. An RFC934-forwarded message.
  4793. `mailman'
  4794. A mailman digest.
  4795. `clari-briefs'
  4796. A digest of Clarinet brief news items.
  4797. `slack-digest'
  4798. Non-standard digest format--matches most things, but does it badly.
  4799. `mail-in-mail'
  4800. The last resort.
  4801. You can also use the special "file type" `guess', which means that
  4802. `nndoc' will try to guess what file type it is looking at. `digest'
  4803. means that `nndoc' should guess what digest type the file is.
  4804. `nndoc' will not try to change the file or insert any extra headers
  4805. into it--it will simply, like, let you use the file as the basis for a
  4806. group. And that's it.
  4807. If you have some old archived articles that you want to insert into
  4808. your new & spiffy Gnus mail back end, `nndoc' can probably help you with
  4809. that. Say you have an old `RMAIL' file with mail that you now want to
  4810. split into your new `nnml' groups. You look at that file using `nndoc'
  4811. (using the `G f' command in the group buffer (*note Foreign Groups::)),
  4812. set the process mark on all the articles in the buffer (`M P b', for
  4813. instance), and then re-spool (`B r') using `nnml'. If all goes well,
  4814. all the mail in the `RMAIL' file is now also stored in lots of `nnml'
  4815. directories, and you can delete that pesky `RMAIL' file. If you have
  4816. the guts!
  4817. Virtual server variables:
  4818. `nndoc-article-type'
  4819. This should be one of `mbox', `babyl', `digest', `news', `rnews',
  4820. `mmdf', `forward', `rfc934', `rfc822-forward', `mime-parts',
  4821. `standard-digest', `slack-digest', `clari-briefs', `nsmail',
  4822. `outlook', `oe-dbx', `mailman', and `mail-in-mail' or `guess'.
  4823. `nndoc-post-type'
  4824. This variable says whether Gnus is to consider the group a news
  4825. group or a mail group. There are two valid values: `mail' (the
  4826. default) and `news'.
  4827. * Menu:
  4828. * Document Server Internals:: How to add your own document types.
  4829. 
  4830. File: gnus, Node: Document Server Internals, Up: Document Groups
  4831. 6.6.3.1 Document Server Internals
  4832. .................................
  4833. Adding new document types to be recognized by `nndoc' isn't difficult.
  4834. You just have to whip up a definition of what the document looks like,
  4835. write a predicate function to recognize that document type, and then
  4836. hook into `nndoc'.
  4837. First, here's an example document type definition:
  4838. (mmdf
  4839. (article-begin . "^\^A\^A\^A\^A\n")
  4840. (body-end . "^\^A\^A\^A\^A\n"))
  4841. The definition is simply a unique "name" followed by a series of
  4842. regexp pseudo-variable settings. Below are the possible
  4843. variables--don't be daunted by the number of variables; most document
  4844. types can be defined with very few settings:
  4845. `first-article'
  4846. If present, `nndoc' will skip past all text until it finds
  4847. something that match this regexp. All text before this will be
  4848. totally ignored.
  4849. `article-begin'
  4850. This setting has to be present in all document type definitions.
  4851. It says what the beginning of each article looks like. To do more
  4852. complicated things that cannot be dealt with a simple regexp, you
  4853. can use `article-begin-function' instead of this.
  4854. `article-begin-function'
  4855. If present, this should be a function that moves point to the
  4856. beginning of each article. This setting overrides `article-begin'.
  4857. `head-begin'
  4858. If present, this should be a regexp that matches the head of the
  4859. article. To do more complicated things that cannot be dealt with a
  4860. simple regexp, you can use `head-begin-function' instead of this.
  4861. `head-begin-function'
  4862. If present, this should be a function that moves point to the head
  4863. of the article. This setting overrides `head-begin'.
  4864. `head-end'
  4865. This should match the end of the head of the article. It defaults
  4866. to `^$'--the empty line.
  4867. `body-begin'
  4868. This should match the beginning of the body of the article. It
  4869. defaults to `^\n'. To do more complicated things that cannot be
  4870. dealt with a simple regexp, you can use `body-begin-function'
  4871. instead of this.
  4872. `body-begin-function'
  4873. If present, this function should move point to the beginning of
  4874. the body of the article. This setting overrides `body-begin'.
  4875. `body-end'
  4876. If present, this should match the end of the body of the article.
  4877. To do more complicated things that cannot be dealt with a simple
  4878. regexp, you can use `body-end-function' instead of this.
  4879. `body-end-function'
  4880. If present, this function should move point to the end of the body
  4881. of the article. This setting overrides `body-end'.
  4882. `file-begin'
  4883. If present, this should match the beginning of the file. All text
  4884. before this regexp will be totally ignored.
  4885. `file-end'
  4886. If present, this should match the end of the file. All text after
  4887. this regexp will be totally ignored.
  4888. So, using these variables `nndoc' is able to dissect a document file
  4889. into a series of articles, each with a head and a body. However, a few
  4890. more variables are needed since not all document types are all that
  4891. news-like--variables needed to transform the head or the body into
  4892. something that's palatable for Gnus:
  4893. `prepare-body-function'
  4894. If present, this function will be called when requesting an
  4895. article. It will be called with point at the start of the body,
  4896. and is useful if the document has encoded some parts of its
  4897. contents.
  4898. `article-transform-function'
  4899. If present, this function is called when requesting an article.
  4900. It's meant to be used for more wide-ranging transformation of both
  4901. head and body of the article.
  4902. `generate-head-function'
  4903. If present, this function is called to generate a head that Gnus
  4904. can understand. It is called with the article number as a
  4905. parameter, and is expected to generate a nice head for the article
  4906. in question. It is called when requesting the headers of all
  4907. articles.
  4908. `generate-article-function'
  4909. If present, this function is called to generate an entire article
  4910. that Gnus can understand. It is called with the article number as
  4911. a parameter when requesting all articles.
  4912. `dissection-function'
  4913. If present, this function is called to dissect a document by
  4914. itself, overriding `first-article', `article-begin',
  4915. `article-begin-function', `head-begin', `head-begin-function',
  4916. `head-end', `body-begin', `body-begin-function', `body-end',
  4917. `body-end-function', `file-begin', and `file-end'.
  4918. Let's look at the most complicated example I can come up
  4919. with--standard digests:
  4920. (standard-digest
  4921. (first-article . ,(concat "^" (make-string 70 ?-) "\n\n+"))
  4922. (article-begin . ,(concat "\n\n" (make-string 30 ?-) "\n\n+"))
  4923. (prepare-body-function . nndoc-unquote-dashes)
  4924. (body-end-function . nndoc-digest-body-end)
  4925. (head-end . "^ ?$")
  4926. (body-begin . "^ ?\n")
  4927. (file-end . "^End of .*digest.*[0-9].*\n\\*\\*\\|^End of.*Digest *$")
  4928. (subtype digest guess))
  4929. We see that all text before a 70-width line of dashes is ignored; all
  4930. text after a line that starts with that `^End of' is also ignored; each
  4931. article begins with a 30-width line of dashes; the line separating the
  4932. head from the body may contain a single space; and that the body is run
  4933. through `nndoc-unquote-dashes' before being delivered.
  4934. To hook your own document definition into `nndoc', use the
  4935. `nndoc-add-type' function. It takes two parameters--the first is the
  4936. definition itself and the second (optional) parameter says where in the
  4937. document type definition alist to put this definition. The alist is
  4938. traversed sequentially, and `nndoc-TYPE-type-p' is called for a given
  4939. type TYPE. So `nndoc-mmdf-type-p' is called to see whether a document
  4940. is of `mmdf' type, and so on. These type predicates should return
  4941. `nil' if the document is not of the correct type; `t' if it is of the
  4942. correct type; and a number if the document might be of the correct
  4943. type. A high number means high probability; a low number means low
  4944. probability with `0' being the lowest valid number.
  4945. 
  4946. File: gnus, Node: Mail-To-News Gateways, Next: The Empty Backend, Prev: Document Groups, Up: Other Sources
  4947. 6.6.4 Mail-To-News Gateways
  4948. ---------------------------
  4949. If your local `nntp' server doesn't allow posting, for some reason or
  4950. other, you can post using one of the numerous mail-to-news gateways.
  4951. The `nngateway' back end provides the interface.
  4952. Note that you can't read anything from this back end--it can only be
  4953. used to post with.
  4954. Server variables:
  4955. `nngateway-address'
  4956. This is the address of the mail-to-news gateway.
  4957. `nngateway-header-transformation'
  4958. News headers often have to be transformed in some odd way or other
  4959. for the mail-to-news gateway to accept it. This variable says what
  4960. transformation should be called, and defaults to
  4961. `nngateway-simple-header-transformation'. The function is called
  4962. narrowed to the headers to be transformed and with one
  4963. parameter--the gateway address.
  4964. This default function just inserts a new `To' header based on the
  4965. `Newsgroups' header and the gateway address. For instance, an
  4966. article with this `Newsgroups' header:
  4967. Newsgroups: alt.religion.emacs
  4968. will get this `To' header inserted:
  4969. To: alt-religion-emacs@GATEWAY
  4970. The following pre-defined functions exist:
  4971. `nngateway-simple-header-transformation'
  4972. Creates a `To' header that looks like
  4973. NEWSGROUP@`nngateway-address'.
  4974. `nngateway-mail2news-header-transformation'
  4975. Creates a `To' header that looks like `nngateway-address'.
  4976. Here's an example:
  4977. (setq gnus-post-method
  4978. '(nngateway
  4979. "mail2news@replay.com"
  4980. (nngateway-header-transformation
  4981. nngateway-mail2news-header-transformation)))
  4982. So, to use this, simply say something like:
  4983. (setq gnus-post-method '(nngateway "GATEWAY.ADDRESS"))
  4984. 
  4985. File: gnus, Node: The Empty Backend, Prev: Mail-To-News Gateways, Up: Other Sources
  4986. 6.6.5 The Empty Backend
  4987. -----------------------
  4988. `nnnil' is a backend that can be used as a placeholder if you have to
  4989. specify a backend somewhere, but don't really want to. The classical
  4990. example is if you don't want to have a primary select methods, but want
  4991. to only use secondary ones:
  4992. (setq gnus-select-method '(nnnil ""))
  4993. (setq gnus-secondary-select-methods
  4994. '((nnimap "foo")
  4995. (nnml "")))
  4996. 
  4997. File: gnus, Node: Combined Groups, Next: Email Based Diary, Prev: Other Sources, Up: Select Methods
  4998. 6.7 Combined Groups
  4999. ===================
  5000. Gnus allows combining a mixture of all the other group types into bigger
  5001. groups.
  5002. * Menu:
  5003. * Virtual Groups:: Combining articles from many groups.
  5004. 
  5005. File: gnus, Node: Virtual Groups, Up: Combined Groups
  5006. 6.7.1 Virtual Groups
  5007. --------------------
  5008. An "nnvirtual group" is really nothing more than a collection of other
  5009. groups.
  5010. For instance, if you are tired of reading many small groups, you can
  5011. put them all in one big group, and then grow tired of reading one big,
  5012. unwieldy group. The joys of computing!
  5013. You specify `nnvirtual' as the method. The address should be a
  5014. regexp to match component groups.
  5015. All marks in the virtual group will stick to the articles in the
  5016. component groups. So if you tick an article in a virtual group, the
  5017. article will also be ticked in the component group from whence it came.
  5018. (And vice versa--marks from the component groups will also be shown in
  5019. the virtual group.). To create an empty virtual group, run `G V'
  5020. (`gnus-group-make-empty-virtual') in the group buffer and edit the
  5021. method regexp with `M-e' (`gnus-group-edit-group-method')
  5022. Here's an example `nnvirtual' method that collects all Andrea Dworkin
  5023. newsgroups into one, big, happy newsgroup:
  5024. (nnvirtual "^alt\\.fan\\.andrea-dworkin$\\|^rec\\.dworkin.*")
  5025. The component groups can be native or foreign; everything should work
  5026. smoothly, but if your computer explodes, it was probably my fault.
  5027. Collecting the same group from several servers might actually be a
  5028. good idea if users have set the Distribution header to limit
  5029. distribution. If you would like to read `soc.motss' both from a server
  5030. in Japan and a server in Norway, you could use the following as the
  5031. group regexp:
  5032. "^nntp\\+server\\.jp:soc\\.motss$\\|^nntp\\+server\\.no:soc\\.motss$"
  5033. (Remember, though, that if you're creating the group with `G m', you
  5034. shouldn't double the backslashes, and you should leave off the quote
  5035. characters at the beginning and the end of the string.)
  5036. This should work kinda smoothly--all articles from both groups should
  5037. end up in this one, and there should be no duplicates. Threading (and
  5038. the rest) will still work as usual, but there might be problems with the
  5039. sequence of articles. Sorting on date might be an option here (*note
  5040. Selecting a Group::).
  5041. One limitation, however--all groups included in a virtual group have
  5042. to be alive (i.e., subscribed or unsubscribed). Killed or zombie
  5043. groups can't be component groups for `nnvirtual' groups.
  5044. If the `nnvirtual-always-rescan' variable is non-`nil' (which is the
  5045. default), `nnvirtual' will always scan groups for unread articles when
  5046. entering a virtual group. If this variable is `nil' and you read
  5047. articles in a component group after the virtual group has been
  5048. activated, the read articles from the component group will show up when
  5049. you enter the virtual group. You'll also see this effect if you have
  5050. two virtual groups that have a component group in common. If that's
  5051. the case, you should set this variable to `t'. Or you can just tap
  5052. `M-g' on the virtual group every time before you enter it--it'll have
  5053. much the same effect.
  5054. `nnvirtual' can have both mail and news groups as component groups.
  5055. When responding to articles in `nnvirtual' groups, `nnvirtual' has to
  5056. ask the back end of the component group the article comes from whether
  5057. it is a news or mail back end. However, when you do a `^', there is
  5058. typically no sure way for the component back end to know this, and in
  5059. that case `nnvirtual' tells Gnus that the article came from a not-news
  5060. back end. (Just to be on the safe side.)
  5061. `C-c C-n' in the message buffer will insert the `Newsgroups' line
  5062. from the article you respond to in these cases.
  5063. `nnvirtual' groups do not inherit anything but articles and marks
  5064. from component groups--group parameters, for instance, are not
  5065. inherited.
  5066. 
  5067. File: gnus, Node: Email Based Diary, Next: Gnus Unplugged, Prev: Combined Groups, Up: Select Methods
  5068. 6.8 Email Based Diary
  5069. =====================
  5070. This section describes a special mail back end called `nndiary', and
  5071. its companion library `gnus-diary'. It is "special" in the sense that
  5072. it is not meant to be one of the standard alternatives for reading mail
  5073. with Gnus. See *note Choosing a Mail Back End:: for that. Instead, it
  5074. is used to treat _some_ of your mails in a special way, namely, as
  5075. event reminders.
  5076. Here is a typical scenario:
  5077. * You've got a date with Andy Mc Dowell or Bruce Willis (select
  5078. according to your sexual preference) in one month. You don't want
  5079. to forget it.
  5080. * So you send a "reminder" message (actually, a diary one) to
  5081. yourself.
  5082. * You forget all about it and keep on getting and reading new mail,
  5083. as usual.
  5084. * From time to time, as you type `g' in the group buffer and as the
  5085. date is getting closer, the message will pop up again to remind
  5086. you of your appointment, just as if it were new and unread.
  5087. * Read your "new" messages, this one included, and start dreaming
  5088. again of the night you're gonna have.
  5089. * Once the date is over (you actually fell asleep just after
  5090. dinner), the message will be automatically deleted if it is marked
  5091. as expirable.
  5092. The Gnus Diary back end has the ability to handle regular
  5093. appointments (that wouldn't ever be deleted) as well as punctual ones,
  5094. operates as a real mail back end and is configurable in many ways. All
  5095. of this is explained in the sections below.
  5096. * Menu:
  5097. * The NNDiary Back End:: Basic setup and usage.
  5098. * The Gnus Diary Library:: Utility toolkit on top of nndiary.
  5099. * Sending or Not Sending:: A final note on sending diary messages.
  5100. 
  5101. File: gnus, Node: The NNDiary Back End, Next: The Gnus Diary Library, Up: Email Based Diary
  5102. 6.8.1 The NNDiary Back End
  5103. --------------------------
  5104. `nndiary' is a back end very similar to `nnml' (*note Mail Spool::).
  5105. Actually, it could appear as a mix of `nnml' and `nndraft'. If you
  5106. know `nnml', you're already familiar with the message storing scheme of
  5107. `nndiary': one file per message, one directory per group.
  5108. Before anything, there is one requirement to be able to run
  5109. `nndiary' properly: you _must_ use the group timestamp feature of Gnus.
  5110. This adds a timestamp to each group's parameters. *note Group
  5111. Timestamp:: to see how it's done.
  5112. * Menu:
  5113. * Diary Messages:: What makes a message valid for nndiary.
  5114. * Running NNDiary:: NNDiary has two modes of operation.
  5115. * Customizing NNDiary:: Bells and whistles.
  5116. 
  5117. File: gnus, Node: Diary Messages, Next: Running NNDiary, Up: The NNDiary Back End
  5118. 6.8.1.1 Diary Messages
  5119. ......................
  5120. `nndiary' messages are just normal ones, except for the mandatory
  5121. presence of 7 special headers. These headers are of the form
  5122. `X-Diary-<something>', `<something>' being one of `Minute', `Hour',
  5123. `Dom', `Month', `Year', `Time-Zone' and `Dow'. `Dom' means "Day of
  5124. Month", and `dow' means "Day of Week". These headers actually behave
  5125. like crontab specifications and define the event date(s):
  5126. * For all headers except the `Time-Zone' one, a header value is
  5127. either a star (meaning all possible values), or a list of fields
  5128. (separated by a comma).
  5129. * A field is either an integer, or a range.
  5130. * A range is two integers separated by a dash.
  5131. * Possible integer values are 0-59 for `Minute', 0-23 for `Hour',
  5132. 1-31 for `Dom', 1-12 for `Month', above 1971 for `Year' and 0-6
  5133. for `Dow' (0 meaning Sunday).
  5134. * As a special case, a star in either `Dom' or `Dow' doesn't mean
  5135. "all possible values", but "use only the other field". Note that
  5136. if both are star'ed, the use of either one gives the same result.
  5137. * The `Time-Zone' header is special in that it can only have one
  5138. value (`GMT', for instance). A star doesn't mean "all possible
  5139. values" (because it makes no sense), but "the current local time
  5140. zone". Most of the time, you'll be using a star here. However,
  5141. for a list of available time zone values, see the variable
  5142. `nndiary-headers'.
  5143. As a concrete example, here are the diary headers to add to your
  5144. message for specifying "Each Monday and each 1st of month, at 12:00,
  5145. 20:00, 21:00, 22:00, 23:00 and 24:00, from 1999 to 2010" (I'll let you
  5146. find what to do then):
  5147. X-Diary-Minute: 0
  5148. X-Diary-Hour: 12, 20-24
  5149. X-Diary-Dom: 1
  5150. X-Diary-Month: *
  5151. X-Diary-Year: 1999-2010
  5152. X-Diary-Dow: 1
  5153. X-Diary-Time-Zone: *
  5154. 
  5155. File: gnus, Node: Running NNDiary, Next: Customizing NNDiary, Prev: Diary Messages, Up: The NNDiary Back End
  5156. 6.8.1.2 Running NNDiary
  5157. .......................
  5158. `nndiary' has two modes of operation: "traditional" (the default) and
  5159. "autonomous". In traditional mode, `nndiary' does not get new mail by
  5160. itself. You have to move (`B m') or copy (`B c') mails from your
  5161. primary mail back end to nndiary groups in order to handle them as
  5162. diary messages. In autonomous mode, `nndiary' retrieves its own mail
  5163. and handles it independently from your primary mail back end.
  5164. One should note that Gnus is not inherently designed to allow several
  5165. "master" mail back ends at the same time. However, this does make
  5166. sense with `nndiary': you really want to send and receive diary
  5167. messages to your diary groups directly. So, `nndiary' supports being
  5168. sort of a "second primary mail back end" (to my knowledge, it is the
  5169. only back end offering this feature). However, there is a limitation
  5170. (which I hope to fix some day): respooling doesn't work in autonomous
  5171. mode.
  5172. In order to use `nndiary' in autonomous mode, you have several
  5173. things to do:
  5174. * Allow `nndiary' to retrieve new mail by itself. Put the following
  5175. line in your `~/.gnus.el' file:
  5176. (setq nndiary-get-new-mail t)
  5177. * You must arrange for diary messages (those containing `X-Diary-*'
  5178. headers) to be split in a private folder _before_ Gnus treat them.
  5179. Again, this is needed because Gnus cannot (yet ?) properly handle
  5180. multiple primary mail back ends. Getting those messages from a
  5181. separate source will compensate this misfeature to some extent.
  5182. As an example, here's my procmailrc entry to store diary files in
  5183. `~/.nndiary' (the default `nndiary' mail source file):
  5184. :0 HD :
  5185. * ^X-Diary
  5186. .nndiary
  5187. Once this is done, you might want to customize the following two
  5188. options that affect the diary mail retrieval and splitting processes:
  5189. -- Variable: nndiary-mail-sources
  5190. This is the diary-specific replacement for the standard
  5191. `mail-sources' variable. It obeys the same syntax, and defaults to
  5192. `(file :path "~/.nndiary")'.
  5193. -- Variable: nndiary-split-methods
  5194. This is the diary-specific replacement for the standard
  5195. `nnmail-split-methods' variable. It obeys the same syntax.
  5196. Finally, you may add a permanent `nndiary' virtual server (something
  5197. like `(nndiary "diary")' should do) to your
  5198. `gnus-secondary-select-methods'.
  5199. Hopefully, almost everything (see the TODO section in `nndiary.el')
  5200. will work as expected when you restart Gnus: in autonomous mode, typing
  5201. `g' and `M-g' in the group buffer, will also get your new diary mails
  5202. and split them according to your diary-specific rules, `F' will find
  5203. your new diary groups etc.
  5204. 
  5205. File: gnus, Node: Customizing NNDiary, Prev: Running NNDiary, Up: The NNDiary Back End
  5206. 6.8.1.3 Customizing NNDiary
  5207. ...........................
  5208. Now that `nndiary' is up and running, it's time to customize it. The
  5209. custom group is called `nndiary' (no, really ?!). You should browse it
  5210. to figure out which options you'd like to tweak. The following two
  5211. variables are probably the only ones you will want to change:
  5212. -- Variable: nndiary-reminders
  5213. This is the list of times when you want to be reminded of your
  5214. appointments (e.g. 3 weeks before, then 2 days before, then 1 hour
  5215. before and that's it). Remember that "being reminded" means that
  5216. the diary message will pop up as brand new and unread again when
  5217. you get new mail.
  5218. -- Variable: nndiary-week-starts-on-monday
  5219. Rather self-explanatory. Otherwise, Sunday is assumed (this is the
  5220. default).
  5221. 
  5222. File: gnus, Node: The Gnus Diary Library, Next: Sending or Not Sending, Prev: The NNDiary Back End, Up: Email Based Diary
  5223. 6.8.2 The Gnus Diary Library
  5224. ----------------------------
  5225. Using `nndiary' manually (I mean, writing the headers by hand and so
  5226. on) would be rather boring. Fortunately, there is a library called
  5227. `gnus-diary' written on top of `nndiary', that does many useful things
  5228. for you.
  5229. In order to use it, add the following line to your `~/.gnus.el' file:
  5230. (require 'gnus-diary)
  5231. Also, you shouldn't use any `gnus-user-format-function-[d|D]' (*note
  5232. Summary Buffer Lines::). `gnus-diary' provides both of these (sorry if
  5233. you used them before).
  5234. * Menu:
  5235. * Diary Summary Line Format:: A nicer summary buffer line format.
  5236. * Diary Articles Sorting:: A nicer way to sort messages.
  5237. * Diary Headers Generation:: Not doing it manually.
  5238. * Diary Group Parameters:: Not handling them manually.
  5239. 
  5240. File: gnus, Node: Diary Summary Line Format, Next: Diary Articles Sorting, Up: The Gnus Diary Library
  5241. 6.8.2.1 Diary Summary Line Format
  5242. .................................
  5243. Displaying diary messages in standard summary line format (usually
  5244. something like `From Joe: Subject') is pretty useless. Most of the
  5245. time, you're the one who wrote the message, and you mostly want to see
  5246. the event's date.
  5247. `gnus-diary' provides two supplemental user formats to be used in
  5248. summary line formats. `D' corresponds to a formatted time string for
  5249. the next occurrence of the event (e.g. "Sat, Sep 22 01, 12:00"), while
  5250. `d' corresponds to an approximate remaining time until the next
  5251. occurrence of the event (e.g. "in 6 months, 1 week").
  5252. For example, here's how Joe's birthday is displayed in my
  5253. `nndiary+diary:birthdays' summary buffer (note that the message is
  5254. expirable, but will never be deleted, as it specifies a periodic event):
  5255. E Sat, Sep 22 01, 12:00: Joe's birthday (in 6 months, 1 week)
  5256. In order to get something like the above, you would normally add the
  5257. following line to your diary groups'parameters:
  5258. (gnus-summary-line-format "%U%R%z %uD: %(%s%) (%ud)\n")
  5259. However, `gnus-diary' does it automatically (*note Diary Group
  5260. Parameters::). You can however customize the provided summary line
  5261. format with the following user options:
  5262. -- Variable: gnus-diary-summary-line-format
  5263. Defines the summary line format used for diary groups (*note
  5264. Summary Buffer Lines::). `gnus-diary' uses it to automatically
  5265. update the diary groups'parameters.
  5266. -- Variable: gnus-diary-time-format
  5267. Defines the format to display dates in diary summary buffers.
  5268. This is used by the `D' user format. See the docstring for
  5269. details.
  5270. -- Variable: gnus-diary-delay-format-function
  5271. Defines the format function to use for displaying delays (remaining
  5272. times) in diary summary buffers. This is used by the `d' user
  5273. format. There are currently built-in functions for English and
  5274. French; you can also define your own. See the docstring for
  5275. details.
  5276. 
  5277. File: gnus, Node: Diary Articles Sorting, Next: Diary Headers Generation, Prev: Diary Summary Line Format, Up: The Gnus Diary Library
  5278. 6.8.2.2 Diary Articles Sorting
  5279. ..............................
  5280. `gnus-diary' provides new sorting functions (*note Sorting the Summary
  5281. Buffer:: ) called `gnus-summary-sort-by-schedule',
  5282. `gnus-thread-sort-by-schedule' and `gnus-article-sort-by-schedule'.
  5283. These functions let you organize your diary summary buffers from the
  5284. closest event to the farthest one.
  5285. `gnus-diary' automatically installs `gnus-summary-sort-by-schedule'
  5286. as a menu item in the summary buffer's "sort" menu, and the two others
  5287. as the primary (hence default) sorting functions in the group
  5288. parameters (*note Diary Group Parameters::).
  5289. 
  5290. File: gnus, Node: Diary Headers Generation, Next: Diary Group Parameters, Prev: Diary Articles Sorting, Up: The Gnus Diary Library
  5291. 6.8.2.3 Diary Headers Generation
  5292. ................................
  5293. `gnus-diary' provides a function called `gnus-diary-check-message' to
  5294. help you handle the `X-Diary-*' headers. This function ensures that
  5295. the current message contains all the required diary headers, and
  5296. prompts you for values or corrections if needed.
  5297. This function is hooked into the `nndiary' back end, so that moving
  5298. or copying an article to a diary group will trigger it automatically.
  5299. It is also bound to `C-c C-f d' in `message-mode' and
  5300. `article-edit-mode' in order to ease the process of converting a usual
  5301. mail to a diary one.
  5302. This function takes a prefix argument which will force prompting of
  5303. all diary headers, regardless of their presence or validity. That way,
  5304. you can very easily reschedule an already valid diary message, for
  5305. instance.
  5306. 
  5307. File: gnus, Node: Diary Group Parameters, Prev: Diary Headers Generation, Up: The Gnus Diary Library
  5308. 6.8.2.4 Diary Group Parameters
  5309. ..............................
  5310. When you create a new diary group, or visit one, `gnus-diary'
  5311. automatically checks your group parameters and if needed, sets the
  5312. summary line format to the diary-specific value, installs the
  5313. diary-specific sorting functions, and also adds the different
  5314. `X-Diary-*' headers to the group's posting-style. It is then easier to
  5315. send a diary message, because if you use `C-u a' or `C-u m' on a diary
  5316. group to prepare a message, these headers will be inserted
  5317. automatically (although not filled with proper values yet).
  5318. 
  5319. File: gnus, Node: Sending or Not Sending, Prev: The Gnus Diary Library, Up: Email Based Diary
  5320. 6.8.3 Sending or Not Sending
  5321. ----------------------------
  5322. Well, assuming you've read all of the above, here are two final notes on
  5323. mail sending with `nndiary':
  5324. * `nndiary' is a _real_ mail back end. You really send real diary
  5325. messages for real. This means for instance that you can give
  5326. appointments to anybody (provided they use Gnus and `nndiary') by
  5327. sending the diary message to them as well.
  5328. * However, since `nndiary' also has a `request-post' method, you can
  5329. also use `C-u a' instead of `C-u m' on a diary group and the
  5330. message won't actually be sent; just stored locally in the group.
  5331. This comes in very handy for private appointments.
  5332. 
  5333. File: gnus, Node: Gnus Unplugged, Prev: Email Based Diary, Up: Select Methods
  5334. 6.9 Gnus Unplugged
  5335. ==================
  5336. In olden times (ca. February '88), people used to run their newsreaders
  5337. on big machines with permanent connections to the net. News transport
  5338. was dealt with by news servers, and all the newsreaders had to do was to
  5339. read news. Believe it or not.
  5340. Nowadays most people read news and mail at home, and use some sort of
  5341. modem to connect to the net. To avoid running up huge phone bills, it
  5342. would be nice to have a way to slurp down all the news and mail, hang up
  5343. the phone, read for several hours, and then upload any responses you
  5344. have to make. And then you repeat the procedure.
  5345. Of course, you can use news servers for doing this as well. I've
  5346. used `inn' together with `slurp', `pop' and `sendmail' for some years,
  5347. but doing that's a bore. Moving the news server functionality up to
  5348. the newsreader makes sense if you're the only person reading news on a
  5349. machine.
  5350. Setting up Gnus as an "offline" newsreader is quite simple. In
  5351. fact, you don't have to configure anything as the agent is now enabled
  5352. by default (*note gnus-agent: Agent Variables.).
  5353. Of course, to use it as such, you have to learn a few new commands.
  5354. * Menu:
  5355. * Agent Basics:: How it all is supposed to work.
  5356. * Agent Categories:: How to tell the Gnus Agent what to download.
  5357. * Agent Commands:: New commands for all the buffers.
  5358. * Agent Visuals:: Ways that the agent may effect your summary buffer.
  5359. * Agent as Cache:: The Agent is a big cache too.
  5360. * Agent Expiry:: How to make old articles go away.
  5361. * Agent Regeneration:: How to recover from lost connections and other accidents.
  5362. * Agent and flags:: How the Agent maintains flags.
  5363. * Agent and IMAP:: How to use the Agent with IMAP.
  5364. * Outgoing Messages:: What happens when you post/mail something?
  5365. * Agent Variables:: Customizing is fun.
  5366. * Example Setup:: An example `~/.gnus.el' file for offline people.
  5367. * Batching Agents:: How to fetch news from a `cron' job.
  5368. * Agent Caveats:: What you think it'll do and what it does.
  5369. 
  5370. File: gnus, Node: Agent Basics, Next: Agent Categories, Up: Gnus Unplugged
  5371. 6.9.1 Agent Basics
  5372. ------------------
  5373. First, let's get some terminology out of the way.
  5374. The Gnus Agent is said to be "unplugged" when you have severed the
  5375. connection to the net (and notified the Agent that this is the case).
  5376. When the connection to the net is up again (and Gnus knows this), the
  5377. Agent is "plugged".
  5378. The "local" machine is the one you're running on, and which isn't
  5379. connected to the net continuously.
  5380. "Downloading" means fetching things from the net to your local
  5381. machine. "Uploading" is doing the opposite.
  5382. You know that Gnus gives you all the opportunity you'd ever want for
  5383. shooting yourself in the foot. Some people call it flexibility. Gnus
  5384. is also customizable to a great extent, which means that the user has a
  5385. say on how Gnus behaves. Other newsreaders might unconditionally shoot
  5386. you in your foot, but with Gnus, you have a choice!
  5387. Gnus is never really in plugged or unplugged state. Rather, it
  5388. applies that state to each server individually. This means that some
  5389. servers can be plugged while others can be unplugged. Additionally,
  5390. some servers can be ignored by the Agent altogether (which means that
  5391. they're kinda like plugged always).
  5392. So when you unplug the Agent and then wonder why is Gnus opening a
  5393. connection to the Net, the next step to do is to look whether all
  5394. servers are agentized. If there is an unagentized server, you found
  5395. the culprit.
  5396. Another thing is the "offline" state. Sometimes, servers aren't
  5397. reachable. When Gnus notices this, it asks you whether you want the
  5398. server to be switched to offline state. If you say yes, then the
  5399. server will behave somewhat as if it was unplugged, except that Gnus
  5400. will ask you whether you want to switch it back online again.
  5401. Let's take a typical Gnus session using the Agent.
  5402. * You start Gnus with `gnus-unplugged'. This brings up the Gnus
  5403. Agent in a disconnected state. You can read all the news that you
  5404. have already fetched while in this mode.
  5405. * You then decide to see whether any new news has arrived. You
  5406. connect your machine to the net (using PPP or whatever), and then
  5407. hit `J j' to make Gnus become "plugged" and use `g' to check for
  5408. new mail as usual. To check for new mail in unplugged mode (*note
  5409. Mail Source Specifiers::).
  5410. * You can then read the new news immediately, or you can download the
  5411. news onto your local machine. If you want to do the latter, you
  5412. press `g' to check if there are any new news and then `J s' to
  5413. fetch all the eligible articles in all the groups. (To let Gnus
  5414. know which articles you want to download, *note Agent
  5415. Categories::).
  5416. * After fetching the articles, you press `J j' to make Gnus become
  5417. unplugged again, and you shut down the PPP thing (or whatever).
  5418. And then you read the news offline.
  5419. * And then you go to step 2.
  5420. Here are some things you should do the first time (or so) that you
  5421. use the Agent.
  5422. * Decide which servers should be covered by the Agent. If you have
  5423. a mail back end, it would probably be nonsensical to have it
  5424. covered by the Agent. Go to the server buffer (`^' in the group
  5425. buffer) and press `J a' on the server (or servers) that you wish
  5426. to have covered by the Agent (*note Server Agent Commands::), or
  5427. `J r' on automatically added servers you do not wish to have
  5428. covered by the Agent. By default, no servers are agentized.
  5429. * Decide on download policy. It's fairly simple once you decide
  5430. whether you are going to use agent categories, topic parameters,
  5431. and/or group parameters to implement your policy. If you're new
  5432. to gnus, it is probably best to start with a category, *Note Agent
  5433. Categories::.
  5434. Both topic parameters (*note Topic Parameters::) and agent
  5435. categories (*note Agent Categories::) provide for setting a policy
  5436. that applies to multiple groups. Which you use is entirely up to
  5437. you. Topic parameters do override categories so, if you mix the
  5438. two, you'll have to take that into account. If you have a few
  5439. groups that deviate from your policy, you can use group parameters
  5440. (*note Group Parameters::) to configure them.
  5441. * Uhm... that's it.
  5442. 
  5443. File: gnus, Node: Agent Categories, Next: Agent Commands, Prev: Agent Basics, Up: Gnus Unplugged
  5444. 6.9.2 Agent Categories
  5445. ----------------------
  5446. One of the main reasons to integrate the news transport layer into the
  5447. newsreader is to allow greater control over what articles to download.
  5448. There's not much point in downloading huge amounts of articles, just to
  5449. find out that you're not interested in reading any of them. It's better
  5450. to be somewhat more conservative in choosing what to download, and then
  5451. mark the articles for downloading manually if it should turn out that
  5452. you're interested in the articles anyway.
  5453. One of the more effective methods for controlling what is to be
  5454. downloaded is to create a "category" and then assign some (or all)
  5455. groups to this category. Groups that do not belong in any other
  5456. category belong to the `default' category. Gnus has its own buffer for
  5457. creating and managing categories.
  5458. If you prefer, you can also use group parameters (*note Group
  5459. Parameters::) and topic parameters (*note Topic Parameters::) for an
  5460. alternative approach to controlling the agent. The only real
  5461. difference is that categories are specific to the agent (so there is
  5462. less to learn) while group and topic parameters include the kitchen
  5463. sink.
  5464. Since you can set agent parameters in several different places we
  5465. have a rule to decide which source to believe. This rule specifies that
  5466. the parameter sources are checked in the following order: group
  5467. parameters, topic parameters, agent category, and finally customizable
  5468. variables. So you can mix all of these sources to produce a wide range
  5469. of behavior, just don't blame me if you don't remember where you put
  5470. your settings.
  5471. * Menu:
  5472. * Category Syntax:: What a category looks like.
  5473. * Category Buffer:: A buffer for maintaining categories.
  5474. * Category Variables:: Customize'r'Us.
  5475. 
  5476. File: gnus, Node: Category Syntax, Next: Category Buffer, Up: Agent Categories
  5477. 6.9.2.1 Category Syntax
  5478. .......................
  5479. A category consists of a name, the list of groups belonging to the
  5480. category, and a number of optional parameters that override the
  5481. customizable variables. The complete list of agent parameters are
  5482. listed below.
  5483. `agent-groups'
  5484. The list of groups that are in this category.
  5485. `agent-predicate'
  5486. A predicate which (generally) gives a rough outline of which
  5487. articles are eligible for downloading; and
  5488. `agent-score'
  5489. a score rule which (generally) gives you a finer granularity when
  5490. deciding what articles to download. (Note that this "download
  5491. score" is not necessarily related to normal scores.)
  5492. `agent-enable-expiration'
  5493. a boolean indicating whether the agent should expire old articles
  5494. in this group. Most groups should be expired to conserve disk
  5495. space. In fact, its probably safe to say that the gnus.*
  5496. hierarchy contains the only groups that should not be expired.
  5497. `agent-days-until-old'
  5498. an integer indicating the number of days that the agent should wait
  5499. before deciding that a read article is safe to expire.
  5500. `agent-low-score'
  5501. an integer that overrides the value of `gnus-agent-low-score'.
  5502. `agent-high-score'
  5503. an integer that overrides the value of `gnus-agent-high-score'.
  5504. `agent-short-article'
  5505. an integer that overrides the value of `gnus-agent-short-article'.
  5506. `agent-long-article'
  5507. an integer that overrides the value of `gnus-agent-long-article'.
  5508. `agent-enable-undownloaded-faces'
  5509. a symbol indicating whether the summary buffer should display
  5510. undownloaded articles using the `gnus-summary-*-undownloaded-face'
  5511. faces. Any symbol other than `nil' will enable the use of
  5512. undownloaded faces.
  5513. The name of a category can not be changed once the category has been
  5514. created.
  5515. Each category maintains a list of groups that are exclusive members
  5516. of that category. The exclusivity rule is automatically enforced, add a
  5517. group to a new category and it is automatically removed from its old
  5518. category.
  5519. A predicate in its simplest form can be a single predicate such as
  5520. `true' or `false'. These two will download every available article or
  5521. nothing respectively. In the case of these two special predicates an
  5522. additional score rule is superfluous.
  5523. Predicates of `high' or `low' download articles in respect of their
  5524. scores in relationship to `gnus-agent-high-score' and
  5525. `gnus-agent-low-score' as described below.
  5526. To gain even finer control of what is to be regarded eligible for
  5527. download a predicate can consist of a number of predicates with logical
  5528. operators sprinkled in between.
  5529. Perhaps some examples are in order.
  5530. Here's a simple predicate. (It's the default predicate, in fact,
  5531. used for all groups that don't belong to any other category.)
  5532. short
  5533. Quite simple, eh? This predicate is true if and only if the article
  5534. is short (for some value of "short").
  5535. Here's a more complex predicate:
  5536. (or high
  5537. (and
  5538. (not low)
  5539. (not long)))
  5540. This means that an article should be downloaded if it has a high
  5541. score, or if the score is not low and the article is not long. You get
  5542. the drift.
  5543. The available logical operators are `or', `and' and `not'. (If you
  5544. prefer, you can use the more "C"-ish operators `|', `&' and `!'
  5545. instead.)
  5546. The following predicates are pre-defined, but if none of these fit
  5547. what you want to do, you can write your own.
  5548. When evaluating each of these predicates, the named constant will be
  5549. bound to the value determined by calling `gnus-agent-find-parameter' on
  5550. the appropriate parameter. For example, gnus-agent-short-article will
  5551. be bound to `(gnus-agent-find-parameter group 'agent-short-article)'.
  5552. This means that you can specify a predicate in your category then tune
  5553. that predicate to individual groups.
  5554. `short'
  5555. True if the article is shorter than `gnus-agent-short-article'
  5556. lines; default 100.
  5557. `long'
  5558. True if the article is longer than `gnus-agent-long-article'
  5559. lines; default 200.
  5560. `low'
  5561. True if the article has a download score less than
  5562. `gnus-agent-low-score'; default 0.
  5563. `high'
  5564. True if the article has a download score greater than
  5565. `gnus-agent-high-score'; default 0.
  5566. `spam'
  5567. True if the Gnus Agent guesses that the article is spam. The
  5568. heuristics may change over time, but at present it just computes a
  5569. checksum and sees whether articles match.
  5570. `true'
  5571. Always true.
  5572. `false'
  5573. Always false.
  5574. If you want to create your own predicate function, here's what you
  5575. have to know: The functions are called with no parameters, but the
  5576. `gnus-headers' and `gnus-score' dynamic variables are bound to useful
  5577. values.
  5578. For example, you could decide that you don't want to download
  5579. articles that were posted more than a certain number of days ago (e.g.
  5580. posted more than `gnus-agent-expire-days' ago) you might write a
  5581. function something along the lines of the following:
  5582. (defun my-article-old-p ()
  5583. "Say whether an article is old."
  5584. (< (time-to-days (date-to-time (mail-header-date gnus-headers)))
  5585. (- (time-to-days (current-time)) gnus-agent-expire-days)))
  5586. with the predicate then defined as:
  5587. (not my-article-old-p)
  5588. or you could append your predicate to the predefined
  5589. `gnus-category-predicate-alist' in your `~/.gnus.el' or wherever.
  5590. (require 'gnus-agent)
  5591. (setq gnus-category-predicate-alist
  5592. (append gnus-category-predicate-alist
  5593. '((old . my-article-old-p))))
  5594. and simply specify your predicate as:
  5595. (not old)
  5596. If/when using something like the above, be aware that there are many
  5597. misconfigured systems/mailers out there and so an article's date is not
  5598. always a reliable indication of when it was posted. Hell, some people
  5599. just don't give a damn.
  5600. The above predicates apply to _all_ the groups which belong to the
  5601. category. However, if you wish to have a specific predicate for an
  5602. individual group within a category, or you're just too lazy to set up a
  5603. new category, you can enter a group's individual predicate in its group
  5604. parameters like so:
  5605. (agent-predicate . short)
  5606. This is the group/topic parameter equivalent of the agent category
  5607. default. Note that when specifying a single word predicate like this,
  5608. the `agent-predicate' specification must be in dotted pair notation.
  5609. The equivalent of the longer example from above would be:
  5610. (agent-predicate or high (and (not low) (not long)))
  5611. The outer parenthesis required in the category specification are not
  5612. entered here as, not being in dotted pair notation, the value of the
  5613. predicate is assumed to be a list.
  5614. Now, the syntax of the download score is the same as the syntax of
  5615. normal score files, except that all elements that require actually
  5616. seeing the article itself are verboten. This means that only the
  5617. following headers can be scored on: `Subject', `From', `Date',
  5618. `Message-ID', `References', `Chars', `Lines', and `Xref'.
  5619. As with predicates, the specification of the `download score rule'
  5620. to use in respect of a group can be in either the category definition if
  5621. it's to be applicable to all groups in therein, or a group's parameters
  5622. if it's to be specific to that group.
  5623. In both of these places the `download score rule' can take one of
  5624. three forms:
  5625. 1. Score rule
  5626. This has the same syntax as a normal Gnus score file except only a
  5627. subset of scoring keywords are available as mentioned above.
  5628. example:
  5629. * Category specification
  5630. (("from"
  5631. ("Lars Ingebrigtsen" 1000000 nil s))
  5632. ("lines"
  5633. (500 -100 nil <)))
  5634. * Group/Topic Parameter specification
  5635. (agent-score ("from"
  5636. ("Lars Ingebrigtsen" 1000000 nil s))
  5637. ("lines"
  5638. (500 -100 nil <)))
  5639. Again, note the omission of the outermost parenthesis here.
  5640. 2. Agent score file
  5641. These score files must _only_ contain the permitted scoring
  5642. keywords stated above.
  5643. example:
  5644. * Category specification
  5645. ("~/News/agent.SCORE")
  5646. or perhaps
  5647. ("~/News/agent.SCORE" "~/News/agent.group.SCORE")
  5648. * Group Parameter specification
  5649. (agent-score "~/News/agent.SCORE")
  5650. Additional score files can be specified as above. Need I say
  5651. anything about parenthesis?
  5652. 3. Use `normal' score files
  5653. If you don't want to maintain two sets of scoring rules for a
  5654. group, and your desired `downloading' criteria for a group are the
  5655. same as your `reading' criteria then you can tell the agent to
  5656. refer to your `normal' score files when deciding what to download.
  5657. These directives in either the category definition or a group's
  5658. parameters will cause the agent to read in all the applicable score
  5659. files for a group, _filtering out_ those sections that do not
  5660. relate to one of the permitted subset of scoring keywords.
  5661. * Category Specification
  5662. file
  5663. * Group Parameter specification
  5664. (agent-score . file)
  5665. 
  5666. File: gnus, Node: Category Buffer, Next: Category Variables, Prev: Category Syntax, Up: Agent Categories
  5667. 6.9.2.2 Category Buffer
  5668. .......................
  5669. You'd normally do all category maintenance from the category buffer.
  5670. When you enter it for the first time (with the `J c' command from the
  5671. group buffer), you'll only see the `default' category.
  5672. The following commands are available in this buffer:
  5673. `q'
  5674. Return to the group buffer (`gnus-category-exit').
  5675. `e'
  5676. Use a customization buffer to set all of the selected category's
  5677. parameters at one time (`gnus-category-customize-category').
  5678. `k'
  5679. Kill the current category (`gnus-category-kill').
  5680. `c'
  5681. Copy the current category (`gnus-category-copy').
  5682. `a'
  5683. Add a new category (`gnus-category-add').
  5684. `p'
  5685. Edit the predicate of the current category
  5686. (`gnus-category-edit-predicate').
  5687. `g'
  5688. Edit the list of groups belonging to the current category
  5689. (`gnus-category-edit-groups').
  5690. `s'
  5691. Edit the download score rule of the current category
  5692. (`gnus-category-edit-score').
  5693. `l'
  5694. List all the categories (`gnus-category-list').
  5695. 
  5696. File: gnus, Node: Category Variables, Prev: Category Buffer, Up: Agent Categories
  5697. 6.9.2.3 Category Variables
  5698. ..........................
  5699. `gnus-category-mode-hook'
  5700. Hook run in category buffers.
  5701. `gnus-category-line-format'
  5702. Format of the lines in the category buffer (*note Formatting
  5703. Variables::). Valid elements are:
  5704. `c'
  5705. The name of the category.
  5706. `g'
  5707. The number of groups in the category.
  5708. `gnus-category-mode-line-format'
  5709. Format of the category mode line (*note Mode Line Formatting::).
  5710. `gnus-agent-short-article'
  5711. Articles that have fewer lines than this are short. Default 100.
  5712. `gnus-agent-long-article'
  5713. Articles that have more lines than this are long. Default 200.
  5714. `gnus-agent-low-score'
  5715. Articles that have a score lower than this have a low score.
  5716. Default 0.
  5717. `gnus-agent-high-score'
  5718. Articles that have a score higher than this have a high score.
  5719. Default 0.
  5720. `gnus-agent-expire-days'
  5721. The number of days that a `read' article must stay in the agent's
  5722. local disk before becoming eligible for expiration (While the name
  5723. is the same, this doesn't mean expiring the article on the server.
  5724. It just means deleting the local copy of the article). What is
  5725. also important to understand is that the counter starts with the
  5726. time the article was written to the local disk and not the time
  5727. the article was read. Default 7.
  5728. `gnus-agent-enable-expiration'
  5729. Determines whether articles in a group are, by default, expired or
  5730. retained indefinitely. The default is `ENABLE' which means that
  5731. you'll have to disable expiration when desired. On the other hand,
  5732. you could set this to `DISABLE'. In that case, you would then
  5733. have to enable expiration in selected groups.
  5734. 
  5735. Local Variables:
  5736. coding: iso-8859-1
  5737. End: