aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShengHuo ZHU2001-09-23 12:33:24 +0000
committerShengHuo ZHU2001-09-23 12:33:24 +0000
commita8edc211c0ddd96accdcc2f04e0fcd698eb1cdd9 (patch)
treedfcfd8727026383b743ff5b61349e455e17d4207
parente5b31424022a505152b283c7dc20112be18e18a1 (diff)
downloademacs-a8edc211c0ddd96accdcc2f04e0fcd698eb1cdd9.tar.gz
emacs-a8edc211c0ddd96accdcc2f04e0fcd698eb1cdd9.zip
backend -> back end.
-rw-r--r--man/gnus.texi464
1 files changed, 232 insertions, 232 deletions
diff --git a/man/gnus.texi b/man/gnus.texi
index 42b6aa0f656..aa287419a29 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -631,15 +631,15 @@ Getting Mail
631* Getting Started Reading Mail:: A simple cookbook example. 631* Getting Started Reading Mail:: A simple cookbook example.
632* Splitting Mail:: How to create mail groups. 632* Splitting Mail:: How to create mail groups.
633* Mail Sources:: How to tell Gnus where to get mail from. 633* Mail Sources:: How to tell Gnus where to get mail from.
634* Mail Backend Variables:: Variables for customizing mail handling. 634* Mail Back End Variables:: Variables for customizing mail handling.
635* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. 635* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
636* Group Mail Splitting:: Use group customize to drive mail splitting. 636* Group Mail Splitting:: Use group customize to drive mail splitting.
637* Incorporating Old Mail:: What about the old mail you have? 637* Incorporating Old Mail:: What about the old mail you have?
638* Expiring Mail:: Getting rid of unwanted mail. 638* Expiring Mail:: Getting rid of unwanted mail.
639* Washing Mail:: Removing cruft from the mail you get. 639* Washing Mail:: Removing cruft from the mail you get.
640* Duplicates:: Dealing with duplicated mail. 640* Duplicates:: Dealing with duplicated mail.
641* Not Reading Mail:: Using mail backends for reading other files. 641* Not Reading Mail:: Using mail back ends for reading other files.
642* Choosing a Mail Backend:: Gnus can read a variety of mail formats. 642* Choosing a Mail Back End:: Gnus can read a variety of mail formats.
643 643
644Mail Sources 644Mail Sources
645 645
@@ -647,14 +647,14 @@ Mail Sources
647* Mail Source Customization:: Some variables that influence things. 647* Mail Source Customization:: Some variables that influence things.
648* Fetching Mail:: Using the mail source specifiers. 648* Fetching Mail:: Using the mail source specifiers.
649 649
650Choosing a Mail Backend 650Choosing a Mail Back End
651 651
652* Unix Mail Box:: Using the (quite) standard Un*x mbox. 652* Unix Mail Box:: Using the (quite) standard Un*x mbox.
653* Rmail Babyl:: Emacs programs use the rmail babyl format. 653* Rmail Babyl:: Emacs programs use the rmail babyl format.
654* Mail Spool:: Store your mail in a private spool? 654* Mail Spool:: Store your mail in a private spool?
655* MH Spool:: An mhspool-like backend. 655* MH Spool:: An mhspool-like back end.
656* Mail Folders:: Having one file for each group. 656* Mail Folders:: Having one file for each group.
657* Comparing Mail Backends:: An in-depth looks at pros and cons. 657* Comparing Mail Back Ends:: An in-depth looks at pros and cons.
658 658
659Browsing the Web 659Browsing the Web
660 660
@@ -679,7 +679,7 @@ Document Groups
679SOUP 679SOUP
680 680
681* SOUP Commands:: Commands for creating and sending @sc{soup} packets 681* SOUP Commands:: Commands for creating and sending @sc{soup} packets
682* SOUP Groups:: A backend for reading @sc{soup} packets. 682* SOUP Groups:: A back end for reading @sc{soup} packets.
683* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news. 683* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
684 684
685@sc{imap} 685@sc{imap}
@@ -835,7 +835,7 @@ Customization
835Gnus Reference Guide 835Gnus Reference Guide
836 836
837* Gnus Utility Functions:: Common functions and variable to use. 837* Gnus Utility Functions:: Common functions and variable to use.
838* Backend Interface:: How Gnus communicates with the servers. 838* Back End Interface:: How Gnus communicates with the servers.
839* Score File Syntax:: A BNF definition of the score file standard. 839* Score File Syntax:: A BNF definition of the score file standard.
840* Headers:: How Gnus stores headers internally. 840* Headers:: How Gnus stores headers internally.
841* Ranges:: A handy format for storing mucho numbers. 841* Ranges:: A handy format for storing mucho numbers.
@@ -844,14 +844,14 @@ Gnus Reference Guide
844* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen. 844* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
845* Various File Formats:: Formats of files that Gnus use. 845* Various File Formats:: Formats of files that Gnus use.
846 846
847Backend Interface 847Back End Interface
848 848
849* Required Backend Functions:: Functions that must be implemented. 849* Required Back End Functions:: Functions that must be implemented.
850* Optional Backend Functions:: Functions that need not be implemented. 850* Optional Back End Functions:: Functions that need not be implemented.
851* Error Messaging:: How to get messages and report errors. 851* Error Messaging:: How to get messages and report errors.
852* Writing New Backends:: Extending old backends. 852* Writing New Back Ends:: Extending old back ends.
853* Hooking New Backends Into Gnus:: What has to be done on the Gnus end. 853* Hooking New Back ends Into Gnus:: What has to be done on the Gnus end.
854* Mail-like Backends:: Some tips on mail backends. 854* Mail-like Back ends:: Some tips on mail back ends.
855 855
856Various File Formats 856Various File Formats
857 857
@@ -975,8 +975,8 @@ files during startup (if that's required), and new newsgroups that
975appear on these servers will be subscribed (or not) just as native 975appear on these servers will be subscribed (or not) just as native
976groups are. 976groups are.
977 977
978For instance, if you use the @code{nnmbox} backend to read your mail, you 978For instance, if you use the @code{nnmbox} back end to read your mail,
979would typically set this variable to 979you would typically set this variable to
980 980
981@lisp 981@lisp
982(setq gnus-secondary-select-methods '((nnmbox ""))) 982(setq gnus-secondary-select-methods '((nnmbox "")))
@@ -1093,7 +1093,7 @@ also save you some time at startup. Even if this variable is
1093@code{nil}, you can always subscribe to the new groups just by pressing 1093@code{nil}, you can always subscribe to the new groups just by pressing
1094@kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable 1094@kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
1095is @code{ask-server} by default. If you set this variable to 1095is @code{ask-server} by default. If you set this variable to
1096@code{always}, then Gnus will query the backends for new groups even 1096@code{always}, then Gnus will query the back ends for new groups even
1097when you do the @kbd{g} command (@pxref{Scanning New Messages}). 1097when you do the @kbd{g} command (@pxref{Scanning New Messages}).
1098 1098
1099@menu 1099@menu
@@ -1255,7 +1255,7 @@ Yet another variable that meddles here is
1255thought it would be nice to have two of these. This variable is more 1255thought it would be nice to have two of these. This variable is more
1256meant for setting some ground rules, while the other variable is used 1256meant for setting some ground rules, while the other variable is used
1257more for user fiddling. By default this variable makes all new groups 1257more for user fiddling. By default this variable makes all new groups
1258that come from mail backends (@code{nnml}, @code{nnbabyl}, 1258that come from mail back ends (@code{nnml}, @code{nnbabyl},
1259@code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you 1259@code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you
1260don't like that, just set this variable to @code{nil}. 1260don't like that, just set this variable to @code{nil}.
1261 1261
@@ -2376,7 +2376,7 @@ to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
2376Rename the current group to something else 2376Rename the current group to something else
2377(@code{gnus-group-rename-group}). This is valid only on some 2377(@code{gnus-group-rename-group}). This is valid only on some
2378groups---mail groups mostly. This command might very well be quite slow 2378groups---mail groups mostly. This command might very well be quite slow
2379on some backends. 2379on some back ends.
2380 2380
2381@item G c 2381@item G c
2382@kindex G c @r{(Group)} 2382@kindex G c @r{(Group)}
@@ -2442,7 +2442,7 @@ strings to match on headers (@code{gnus-group-make-kiboze-group}).
2442@findex gnus-group-enter-directory 2442@findex gnus-group-enter-directory
2443@cindex nneething 2443@cindex nneething
2444Read an arbitrary directory as if it were a newsgroup with the 2444Read an arbitrary directory as if it were a newsgroup with the
2445@code{nneething} backend (@code{gnus-group-enter-directory}). 2445@code{nneething} back end (@code{gnus-group-enter-directory}).
2446@xref{Anything Groups}. 2446@xref{Anything Groups}.
2447 2447
2448@item G f 2448@item G f
@@ -2945,7 +2945,7 @@ Sort the group buffer by group rank
2945@item G S m 2945@item G S m
2946@kindex G S m @r{(Group)} 2946@kindex G S m @r{(Group)}
2947@findex gnus-group-sort-groups-by-method 2947@findex gnus-group-sort-groups-by-method
2948Sort the group buffer alphabetically by backend name 2948Sort the group buffer alphabetically by back end name
2949(@code{gnus-group-sort-groups-by-method}). 2949(@code{gnus-group-sort-groups-by-method}).
2950 2950
2951@end table 2951@end table
@@ -2992,7 +2992,7 @@ Sort the groups by group rank
2992@item G P m 2992@item G P m
2993@kindex G P m @r{(Group)} 2993@kindex G P m @r{(Group)}
2994@findex gnus-group-sort-selected-groups-by-method 2994@findex gnus-group-sort-selected-groups-by-method
2995Sort the groups alphabetically by backend name 2995Sort the groups alphabetically by back end name
2996(@code{gnus-group-sort-selected-groups-by-method}). 2996(@code{gnus-group-sort-selected-groups-by-method}).
2997 2997
2998@end table 2998@end table
@@ -3458,7 +3458,7 @@ Sort the current topic by group rank
3458@item T S m 3458@item T S m
3459@kindex T S m (Topic) 3459@kindex T S m (Topic)
3460@findex gnus-topic-sort-groups-by-method 3460@findex gnus-topic-sort-groups-by-method
3461Sort the current topic alphabetically by backend name 3461Sort the current topic alphabetically by back end name
3462(@code{gnus-topic-sort-groups-by-method}). 3462(@code{gnus-topic-sort-groups-by-method}).
3463 3463
3464@end table 3464@end table
@@ -3668,7 +3668,7 @@ Check the server(s) for new articles. If the numerical prefix is used,
3668this command will check only groups of level @var{arg} and lower 3668this command will check only groups of level @var{arg} and lower
3669(@code{gnus-group-get-new-news}). If given a non-numerical prefix, this 3669(@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
3670command will force a total re-reading of the active file(s) from the 3670command will force a total re-reading of the active file(s) from the
3671backend(s). 3671back end(s).
3672 3672
3673@item M-g 3673@item M-g
3674@kindex M-g @r{(Group)} 3674@kindex M-g @r{(Group)}
@@ -5720,7 +5720,7 @@ would like to display as few summary lines as possible, but still
5720connect as many loose threads as possible, you should set this variable 5720connect as many loose threads as possible, you should set this variable
5721to @code{some} or a number. If you set it to a number, no more than 5721to @code{some} or a number. If you set it to a number, no more than
5722that number of extra old headers will be fetched. In either case, 5722that number of extra old headers will be fetched. In either case,
5723fetching old headers only works if the backend you are using carries 5723fetching old headers only works if the back end you are using carries
5724overview files---this would normally be @code{nntp}, @code{nnspool} and 5724overview files---this would normally be @code{nntp}, @code{nnspool} and
5725@code{nnml}. Also remember that if the root of the thread has been 5725@code{nnml}. Also remember that if the root of the thread has been
5726expired by the server, there's not much Gnus can do about that. 5726expired by the server, there's not much Gnus can do about that.
@@ -6104,8 +6104,8 @@ happen automatically.
6104@vindex gnus-use-article-prefetch 6104@vindex gnus-use-article-prefetch
6105You can control how many articles are to be pre-fetched by setting 6105You can control how many articles are to be pre-fetched by setting
6106@code{gnus-use-article-prefetch}. This is 30 by default, which means 6106@code{gnus-use-article-prefetch}. This is 30 by default, which means
6107that when you read an article in the group, the backend will pre-fetch 6107that when you read an article in the group, the back end will pre-fetch
6108the next 30 articles. If this variable is @code{t}, the backend will 6108the next 30 articles. If this variable is @code{t}, the back end will
6109pre-fetch all the articles it can without bound. If it is 6109pre-fetch all the articles it can without bound. If it is
6110@code{nil}, no pre-fetching will be done. 6110@code{nil}, no pre-fetching will be done.
6111 6111
@@ -8202,7 +8202,7 @@ The current select method will be used when fetching by
8202by giving this command a prefix. 8202by giving this command a prefix.
8203 8203
8204@vindex gnus-refer-article-method 8204@vindex gnus-refer-article-method
8205If the group you are reading is located on a backend that does not 8205If the group you are reading is located on a back end that does not
8206support fetching by @code{Message-ID} very well (like @code{nnspool}), 8206support fetching by @code{Message-ID} very well (like @code{nnspool}),
8207you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It 8207you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It
8208would, perhaps, be best if the @sc{nntp} server you consult is the one 8208would, perhaps, be best if the @sc{nntp} server you consult is the one
@@ -8223,7 +8223,7 @@ then ask Deja if that fails:
8223 (nnweb "refer" (nnweb-type dejanews)))) 8223 (nnweb "refer" (nnweb-type dejanews))))
8224@end lisp 8224@end lisp
8225 8225
8226Most of the mail backends support fetching by @code{Message-ID}, but do 8226Most of the mail back ends support fetching by @code{Message-ID}, but do
8227not do a particularly excellent job at it. That is, @code{nnmbox} and 8227not do a particularly excellent job at it. That is, @code{nnmbox} and
8228@code{nnbabyl} are able to locate articles from any groups, while 8228@code{nnbabyl} are able to locate articles from any groups, while
8229@code{nnml} and @code{nnfolder} are only able to locate articles that 8229@code{nnml} and @code{nnfolder} are only able to locate articles that
@@ -10044,22 +10044,22 @@ personal mail group.
10044 10044
10045A foreign group (or any group, really) is specified by a @dfn{name} and 10045A foreign group (or any group, really) is specified by a @dfn{name} and
10046a @dfn{select method}. To take the latter first, a select method is a 10046a @dfn{select method}. To take the latter first, a select method is a
10047list where the first element says what backend to use (e.g. @code{nntp}, 10047list where the first element says what back end to use (e.g. @code{nntp},
10048@code{nnspool}, @code{nnml}) and the second element is the @dfn{server 10048@code{nnspool}, @code{nnml}) and the second element is the @dfn{server
10049name}. There may be additional elements in the select method, where the 10049name}. There may be additional elements in the select method, where the
10050value may have special meaning for the backend in question. 10050value may have special meaning for the back end in question.
10051 10051
10052One could say that a select method defines a @dfn{virtual server}---so 10052One could say that a select method defines a @dfn{virtual server}---so
10053we do just that (@pxref{The Server Buffer}). 10053we do just that (@pxref{The Server Buffer}).
10054 10054
10055The @dfn{name} of the group is the name the backend will recognize the 10055The @dfn{name} of the group is the name the back end will recognize the
10056group as. 10056group as.
10057 10057
10058For instance, the group @samp{soc.motss} on the @sc{nntp} server 10058For instance, the group @samp{soc.motss} on the @sc{nntp} server
10059@samp{some.where.edu} will have the name @samp{soc.motss} and select 10059@samp{some.where.edu} will have the name @samp{soc.motss} and select
10060method @code{(nntp "some.where.edu")}. Gnus will call this group 10060method @code{(nntp "some.where.edu")}. Gnus will call this group
10061@samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp} 10061@samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp}
10062backend just knows this group as @samp{soc.motss}. 10062back end just knows this group as @samp{soc.motss}.
10063 10063
10064The different methods all have their peculiarities, of course. 10064The different methods all have their peculiarities, of course.
10065 10065
@@ -10080,13 +10080,13 @@ The different methods all have their peculiarities, of course.
10080Traditionally, a @dfn{server} is a machine or a piece of software that 10080Traditionally, a @dfn{server} is a machine or a piece of software that
10081one connects to, and then requests information from. Gnus does not 10081one connects to, and then requests information from. Gnus does not
10082connect directly to any real servers, but does all transactions through 10082connect directly to any real servers, but does all transactions through
10083one backend or other. But that's just putting one layer more between 10083one back end or other. But that's just putting one layer more between
10084the actual media and Gnus, so we might just as well say that each 10084the actual media and Gnus, so we might just as well say that each
10085backend represents a virtual server. 10085back end represents a virtual server.
10086 10086
10087For instance, the @code{nntp} backend may be used to connect to several 10087For instance, the @code{nntp} back end may be used to connect to several
10088different actual @sc{nntp} servers, or, perhaps, to many different ports 10088different actual @sc{nntp} servers, or, perhaps, to many different ports
10089on the same actual @sc{nntp} server. You tell Gnus which backend to 10089on the same actual @sc{nntp} server. You tell Gnus which back end to
10090use, and what parameters to set by specifying a @dfn{select method}. 10090use, and what parameters to set by specifying a @dfn{select method}.
10091 10091
10092These select method specifications can sometimes become quite 10092These select method specifications can sometimes become quite
@@ -10126,7 +10126,7 @@ variable, with some simple extensions:
10126@table @samp 10126@table @samp
10127 10127
10128@item h 10128@item h
10129How the news is fetched---the backend name. 10129How the news is fetched---the back end name.
10130 10130
10131@item n 10131@item n
10132The name of this server. 10132The name of this server.
@@ -10212,7 +10212,7 @@ servers.
10212@findex gnus-server-regenerate-server 10212@findex gnus-server-regenerate-server
10213Request that the server regenerate all its data structures 10213Request that the server regenerate all its data structures
10214(@code{gnus-server-regenerate-server}). This can be useful if you have 10214(@code{gnus-server-regenerate-server}). This can be useful if you have
10215a mail backend that has gotten out of sync. 10215a mail back end that has gotten out of sync.
10216 10216
10217@end table 10217@end table
10218 10218
@@ -10233,7 +10233,7 @@ Reading directly from the spool is even simpler:
10233@end lisp 10233@end lisp
10234 10234
10235As you can see, the first element in a select method is the name of the 10235As you can see, the first element in a select method is the name of the
10236backend, and the second is the @dfn{address}, or @dfn{name}, if you 10236back end, and the second is the @dfn{address}, or @dfn{name}, if you
10237will. 10237will.
10238 10238
10239After these two elements, there may be an arbitrary number of 10239After these two elements, there may be an arbitrary number of
@@ -10247,10 +10247,10 @@ look like then:
10247(nntp "news.funet.fi" (nntp-port-number 15)) 10247(nntp "news.funet.fi" (nntp-port-number 15))
10248@end lisp 10248@end lisp
10249 10249
10250You should read the documentation to each backend to find out what 10250You should read the documentation to each back end to find out what
10251variables are relevant, but here's an @code{nnmh} example: 10251variables are relevant, but here's an @code{nnmh} example:
10252 10252
10253@code{nnmh} is a mail backend that reads a spool-like structure. Say 10253@code{nnmh} is a mail back end that reads a spool-like structure. Say
10254you have two structures that you wish to access: One is your private 10254you have two structures that you wish to access: One is your private
10255mail spool, and the other is a public one. Here's the possible spec for 10255mail spool, and the other is a public one. Here's the possible spec for
10256your private mail: 10256your private mail:
@@ -10346,7 +10346,7 @@ buffer, and you should be able to enter any of the groups displayed.
10346@node Server Variables 10346@node Server Variables
10347@subsection Server Variables 10347@subsection Server Variables
10348 10348
10349One sticky point when defining variables (both on backends and in Emacs 10349One sticky point when defining variables (both on back ends and in Emacs
10350in general) is that some variables are typically initialized from other 10350in general) is that some variables are typically initialized from other
10351variables when the definition of the variables is being loaded. If you 10351variables when the definition of the variables is being loaded. If you
10352change the "base" variable after the variables have been loaded, you 10352change the "base" variable after the variables have been loaded, you
@@ -10359,7 +10359,7 @@ directory variables are initialized from that variable, so
10359new virtual @code{nnml} server, it will @emph{not} suffice to set just 10359new virtual @code{nnml} server, it will @emph{not} suffice to set just
10360@code{nnml-directory}---you have to explicitly set all the file 10360@code{nnml-directory}---you have to explicitly set all the file
10361variables to be what you want them to be. For a complete list of 10361variables to be what you want them to be. For a complete list of
10362variables for each backend, see each backend's section later in this 10362variables for each back end, see each back end's section later in this
10363manual, but here's an example @code{nnml} definition: 10363manual, but here's an example @code{nnml} definition:
10364 10364
10365@lisp 10365@lisp
@@ -10448,7 +10448,7 @@ Remove all marks to whether Gnus was denied connection from any servers
10448@node Getting News 10448@node Getting News
10449@section Getting News 10449@section Getting News
10450@cindex reading news 10450@cindex reading news
10451@cindex news backends 10451@cindex news back ends
10452 10452
10453A newsreader is normally used for reading news. Gnus currently provides 10453A newsreader is normally used for reading news. Gnus currently provides
10454only two methods of getting news---it can read from an @sc{nntp} server, 10454only two methods of getting news---it can read from an @sc{nntp} server,
@@ -10582,9 +10582,9 @@ nntpd 1.5.11t, since that command chokes that server, I've been told.
10582 10582
10583@item nntp-maximum-request 10583@item nntp-maximum-request
10584@vindex nntp-maximum-request 10584@vindex nntp-maximum-request
10585If the @sc{nntp} server doesn't support @sc{nov} headers, this backend 10585If the @sc{nntp} server doesn't support @sc{nov} headers, this back end
10586will collect headers by sending a series of @code{head} commands. To 10586will collect headers by sending a series of @code{head} commands. To
10587speed things up, the backend sends lots of these commands without 10587speed things up, the back end sends lots of these commands without
10588waiting for reply, and then reads all the replies. This is controlled 10588waiting for reply, and then reads all the replies. This is controlled
10589by the @code{nntp-maximum-request} variable, and is 400 by default. If 10589by the @code{nntp-maximum-request} variable, and is 400 by default. If
10590your network is buggy, you should set this to 1. 10590your network is buggy, you should set this to 1.
@@ -10596,7 +10596,7 @@ regularly, you're sure to have problems with @sc{nntp} servers not
10596responding properly, or being too loaded to reply within reasonable 10596responding properly, or being too loaded to reply within reasonable
10597time. This is can lead to awkward problems, which can be helped 10597time. This is can lead to awkward problems, which can be helped
10598somewhat by setting @code{nntp-connection-timeout}. This is an integer 10598somewhat by setting @code{nntp-connection-timeout}. This is an integer
10599that says how many seconds the @code{nntp} backend should wait for a 10599that says how many seconds the @code{nntp} back end should wait for a
10600connection before giving up. If it is @code{nil}, which is the default, 10600connection before giving up. If it is @code{nil}, which is the default,
10601no timeouts are done. 10601no timeouts are done.
10602 10602
@@ -10882,15 +10882,15 @@ course.
10882* Getting Started Reading Mail:: A simple cookbook example. 10882* Getting Started Reading Mail:: A simple cookbook example.
10883* Splitting Mail:: How to create mail groups. 10883* Splitting Mail:: How to create mail groups.
10884* Mail Sources:: How to tell Gnus where to get mail from. 10884* Mail Sources:: How to tell Gnus where to get mail from.
10885* Mail Backend Variables:: Variables for customizing mail handling. 10885* Mail Back End Variables:: Variables for customizing mail handling.
10886* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. 10886* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
10887* Group Mail Splitting:: Use group customize to drive mail splitting. 10887* Group Mail Splitting:: Use group customize to drive mail splitting.
10888* Incorporating Old Mail:: What about the old mail you have? 10888* Incorporating Old Mail:: What about the old mail you have?
10889* Expiring Mail:: Getting rid of unwanted mail. 10889* Expiring Mail:: Getting rid of unwanted mail.
10890* Washing Mail:: Removing gruft from the mail you get. 10890* Washing Mail:: Removing gruft from the mail you get.
10891* Duplicates:: Dealing with duplicated mail. 10891* Duplicates:: Dealing with duplicated mail.
10892* Not Reading Mail:: Using mail backends for reading other files. 10892* Not Reading Mail:: Using mail back ends for reading other files.
10893* Choosing a Mail Backend:: Gnus can read a variety of mail formats. 10893* Choosing a Mail Back End:: Gnus can read a variety of mail formats.
10894@end menu 10894@end menu
10895 10895
10896 10896
@@ -10963,18 +10963,18 @@ You Do.)
10963@subsection Getting Started Reading Mail 10963@subsection Getting Started Reading Mail
10964 10964
10965It's quite easy to use Gnus to read your new mail. You just plonk the 10965It's quite easy to use Gnus to read your new mail. You just plonk the
10966mail backend of your choice into @code{gnus-secondary-select-methods}, 10966mail back end of your choice into @code{gnus-secondary-select-methods},
10967and things will happen automatically. 10967and things will happen automatically.
10968 10968
10969For instance, if you want to use @code{nnml} (which is a "one file per 10969For instance, if you want to use @code{nnml} (which is a "one file per
10970mail" backend), you could put the following in your @file{.gnus} file: 10970mail" back end), you could put the following in your @file{.gnus} file:
10971 10971
10972@lisp 10972@lisp
10973(setq gnus-secondary-select-methods 10973(setq gnus-secondary-select-methods
10974 '((nnml "private"))) 10974 '((nnml "private")))
10975@end lisp 10975@end lisp
10976 10976
10977Now, the next time you start Gnus, this backend will be queried for new 10977Now, the next time you start Gnus, this back end will be queried for new
10978articles, and it will move all the messages in your spool file to its 10978articles, and it will move all the messages in your spool file to its
10979directory, which is @code{~/Mail/} by default. The new group that will 10979directory, which is @code{~/Mail/} by default. The new group that will
10980be created (@samp{mail.misc}) will be subscribed, and you can read it 10980be created (@samp{mail.misc}) will be subscribed, and you can read it
@@ -10996,7 +10996,7 @@ last group.
10996 10996
10997This should be sufficient for reading mail with Gnus. You might want to 10997This should be sufficient for reading mail with Gnus. You might want to
10998give the other sections in this part of the manual a perusal, though. 10998give the other sections in this part of the manual a perusal, though.
10999Especially @pxref{Choosing a Mail Backend} and @pxref{Expiring Mail}. 10999Especially @pxref{Choosing a Mail Back End} and @pxref{Expiring Mail}.
11000 11000
11001 11001
11002@node Splitting Mail 11002@node Splitting Mail
@@ -11045,13 +11045,13 @@ arguments in a buffer narrowed to the headers of an incoming mail
11045message. The function should return a list of group names that it 11045message. The function should return a list of group names that it
11046thinks should carry this mail message. 11046thinks should carry this mail message.
11047 11047
11048Note that the mail backends are free to maul the poor, innocent, 11048Note that the mail back ends are free to maul the poor, innocent,
11049incoming headers all they want to. They all add @code{Lines} headers; 11049incoming headers all they want to. They all add @code{Lines} headers;
11050some add @code{X-Gnus-Group} headers; most rename the Unix mbox 11050some add @code{X-Gnus-Group} headers; most rename the Unix mbox
11051@samp{From } line to something else. 11051@samp{From } line to something else.
11052 11052
11053@vindex nnmail-crosspost 11053@vindex nnmail-crosspost
11054The mail backends all support cross-posting. If several regexps match, 11054The mail back ends all support cross-posting. If several regexps match,
11055the mail will be ``cross-posted'' to all those groups. 11055the mail will be ``cross-posted'' to all those groups.
11056@code{nnmail-crosspost} says whether to use this mechanism or not. Note 11056@code{nnmail-crosspost} says whether to use this mechanism or not. Note
11057that no articles are crossposted to the general (@samp{}) group. 11057that no articles are crossposted to the general (@samp{}) group.
@@ -11575,7 +11575,7 @@ The way to actually tell Gnus where to get new mail from is to set
11575(@pxref{Mail Source Specifiers}). 11575(@pxref{Mail Source Specifiers}).
11576 11576
11577If this variable (and the obsolescent @code{nnmail-spool-file}) is 11577If this variable (and the obsolescent @code{nnmail-spool-file}) is
11578@code{nil}, the mail backends will never attempt to fetch mail by 11578@code{nil}, the mail back ends will never attempt to fetch mail by
11579themselves. 11579themselves.
11580 11580
11581If you want to fetch mail both from your local spool as well as a POP 11581If you want to fetch mail both from your local spool as well as a POP
@@ -11600,25 +11600,25 @@ Or, if you don't want to use any of the keyword defaults:
11600@end lisp 11600@end lisp
11601 11601
11602 11602
11603When you use a mail backend, Gnus will slurp all your mail from your 11603When you use a mail back end, Gnus will slurp all your mail from your
11604inbox and plonk it down in your home directory. Gnus doesn't move any 11604inbox and plonk it down in your home directory. Gnus doesn't move any
11605mail if you're not using a mail backend---you have to do a lot of magic 11605mail if you're not using a mail back end---you have to do a lot of magic
11606invocations first. At the time when you have finished drawing the 11606invocations first. At the time when you have finished drawing the
11607pentagram, lightened the candles, and sacrificed the goat, you really 11607pentagram, lightened the candles, and sacrificed the goat, you really
11608shouldn't be too surprised when Gnus moves your mail. 11608shouldn't be too surprised when Gnus moves your mail.
11609 11609
11610 11610
11611 11611
11612@node Mail Backend Variables 11612@node Mail Back End Variables
11613@subsection Mail Backend Variables 11613@subsection Mail Back End Variables
11614 11614
11615These variables are (for the most part) pertinent to all the various 11615These variables are (for the most part) pertinent to all the various
11616mail backends. 11616mail back ends.
11617 11617
11618@table @code 11618@table @code
11619@vindex nnmail-read-incoming-hook 11619@vindex nnmail-read-incoming-hook
11620@item nnmail-read-incoming-hook 11620@item nnmail-read-incoming-hook
11621The mail backends all call this hook after reading new mail. You can 11621The mail back ends all call this hook after reading new mail. You can
11622use this hook to notify any mail watch programs, if you want to. 11622use this hook to notify any mail watch programs, if you want to.
11623 11623
11624@vindex nnmail-split-hook 11624@vindex nnmail-split-hook
@@ -11655,10 +11655,10 @@ default file modes the new mail files get:
11655 11655
11656@item nnmail-use-long-file-names 11656@item nnmail-use-long-file-names
11657@vindex nnmail-use-long-file-names 11657@vindex nnmail-use-long-file-names
11658If non-@code{nil}, the mail backends will use long file and directory 11658If non-@code{nil}, the mail back ends will use long file and directory
11659names. Groups like @samp{mail.misc} will end up in directories 11659names. Groups like @samp{mail.misc} will end up in directories
11660(assuming use of @code{nnml} backend) or files (assuming use of 11660(assuming use of @code{nnml} back end) or files (assuming use of
11661@code{nnfolder} backend) like @file{mail.misc}. If it is @code{nil}, 11661@code{nnfolder} back end) like @file{mail.misc}. If it is @code{nil},
11662the same group will end up in @file{mail/misc}. 11662the same group will end up in @file{mail/misc}.
11663 11663
11664@item nnmail-delete-file-function 11664@item nnmail-delete-file-function
@@ -11669,7 +11669,7 @@ Function called to delete files. It is @code{delete-file} by default.
11669@item nnmail-cache-accepted-message-ids 11669@item nnmail-cache-accepted-message-ids
11670@vindex nnmail-cache-accepted-message-ids 11670@vindex nnmail-cache-accepted-message-ids
11671If non-@code{nil}, put the @code{Message-ID}s of articles imported into 11671If non-@code{nil}, put the @code{Message-ID}s of articles imported into
11672the backend (via @code{Gcc}, for instance) into the mail duplication 11672the back end (via @code{Gcc}, for instance) into the mail duplication
11673discovery cache. The default is @code{nil}. 11673discovery cache. The default is @code{nil}.
11674 11674
11675@end table 11675@end table
@@ -11985,7 +11985,7 @@ by @code{gnus-group-split-update}, this function will run
11985 11985
11986Most people have lots of old mail stored in various file formats. If 11986Most people have lots of old mail stored in various file formats. If
11987you have set up Gnus to read mail using one of the spiffy Gnus mail 11987you have set up Gnus to read mail using one of the spiffy Gnus mail
11988backends, you'll probably wish to have that old mail incorporated into 11988back ends, you'll probably wish to have that old mail incorporated into
11989your mail groups. 11989your mail groups.
11990 11990
11991Doing so can be quite easy. 11991Doing so can be quite easy.
@@ -12025,8 +12025,8 @@ deleting the mbox file, but I wouldn't do that unless I was absolutely
12025sure that all the mail has ended up where it should be. 12025sure that all the mail has ended up where it should be.
12026 12026
12027Respooling is also a handy thing to do if you're switching from one mail 12027Respooling is also a handy thing to do if you're switching from one mail
12028backend to another. Just respool all the mail in the old mail groups 12028back end to another. Just respool all the mail in the old mail groups
12029using the new mail backend. 12029using the new mail back end.
12030 12030
12031 12031
12032@node Expiring Mail 12032@node Expiring Mail
@@ -12337,12 +12337,12 @@ received. Think of all the fun! She'll never see any of it! Whee!
12337@node Not Reading Mail 12337@node Not Reading Mail
12338@subsection Not Reading Mail 12338@subsection Not Reading Mail
12339 12339
12340If you start using any of the mail backends, they have the annoying 12340If you start using any of the mail back ends, they have the annoying
12341habit of assuming that you want to read mail with them. This might not 12341habit of assuming that you want to read mail with them. This might not
12342be unreasonable, but it might not be what you want. 12342be unreasonable, but it might not be what you want.
12343 12343
12344If you set @code{mail-sources} and @code{nnmail-spool-file} to 12344If you set @code{mail-sources} and @code{nnmail-spool-file} to
12345@code{nil}, none of the backends will ever attempt to read incoming 12345@code{nil}, none of the back ends will ever attempt to read incoming
12346mail, which should help. 12346mail, which should help.
12347 12347
12348@vindex nnbabyl-get-new-mail 12348@vindex nnbabyl-get-new-mail
@@ -12352,25 +12352,25 @@ mail, which should help.
12352@vindex nnfolder-get-new-mail 12352@vindex nnfolder-get-new-mail
12353This might be too much, if, for instance, you are reading mail quite 12353This might be too much, if, for instance, you are reading mail quite
12354happily with @code{nnml} and just want to peek at some old @sc{rmail} 12354happily with @code{nnml} and just want to peek at some old @sc{rmail}
12355file you have stashed away with @code{nnbabyl}. All backends have 12355file you have stashed away with @code{nnbabyl}. All back ends have
12356variables called backend-@code{get-new-mail}. If you want to disable 12356variables called back-end-@code{get-new-mail}. If you want to disable
12357the @code{nnbabyl} mail reading, you edit the virtual server for the 12357the @code{nnbabyl} mail reading, you edit the virtual server for the
12358group to have a setting where @code{nnbabyl-get-new-mail} to @code{nil}. 12358group to have a setting where @code{nnbabyl-get-new-mail} to @code{nil}.
12359 12359
12360All the mail backends will call @code{nn}*@code{-prepare-save-mail-hook} 12360All the mail back ends will call @code{nn}*@code{-prepare-save-mail-hook}
12361narrowed to the article to be saved before saving it when reading 12361narrowed to the article to be saved before saving it when reading
12362incoming mail. 12362incoming mail.
12363 12363
12364 12364
12365@node Choosing a Mail Backend 12365@node Choosing a Mail Back End
12366@subsection Choosing a Mail Backend 12366@subsection Choosing a Mail Back End
12367 12367
12368Gnus will read the mail spool when you activate a mail group. The mail 12368Gnus will read the mail spool when you activate a mail group. The mail
12369file is first copied to your home directory. What happens after that 12369file is first copied to your home directory. What happens after that
12370depends on what format you want to store your mail in. 12370depends on what format you want to store your mail in.
12371 12371
12372There are five different mail backends in the standard Gnus, and more 12372There are five different mail back ends in the standard Gnus, and more
12373backends are available separately. The mail backend most people use 12373back ends are available separately. The mail back end most people use
12374(because it is the fastest and most flexible) is @code{nnml} 12374(because it is the fastest and most flexible) is @code{nnml}
12375(@pxref{Mail Spool}). 12375(@pxref{Mail Spool}).
12376 12376
@@ -12378,9 +12378,9 @@ backends are available separately. The mail backend most people use
12378* Unix Mail Box:: Using the (quite) standard Un*x mbox. 12378* Unix Mail Box:: Using the (quite) standard Un*x mbox.
12379* Rmail Babyl:: Emacs programs use the rmail babyl format. 12379* Rmail Babyl:: Emacs programs use the rmail babyl format.
12380* Mail Spool:: Store your mail in a private spool? 12380* Mail Spool:: Store your mail in a private spool?
12381* MH Spool:: An mhspool-like backend. 12381* MH Spool:: An mhspool-like back end.
12382* Mail Folders:: Having one file for each group. 12382* Mail Folders:: Having one file for each group.
12383* Comparing Mail Backends:: An in-depth looks at pros and cons. 12383* Comparing Mail Back Ends:: An in-depth looks at pros and cons.
12384@end menu 12384@end menu
12385 12385
12386 12386
@@ -12391,7 +12391,7 @@ backends are available separately. The mail backend most people use
12391 12391
12392@vindex nnmbox-active-file 12392@vindex nnmbox-active-file
12393@vindex nnmbox-mbox-file 12393@vindex nnmbox-mbox-file
12394The @dfn{nnmbox} backend will use the standard Un*x mbox file to store 12394The @dfn{nnmbox} back end will use the standard Un*x mbox file to store
12395mail. @code{nnmbox} will add extra headers to each mail article to say 12395mail. @code{nnmbox} will add extra headers to each mail article to say
12396which group it belongs in. 12396which group it belongs in.
12397 12397
@@ -12420,7 +12420,7 @@ into groups.
12420 12420
12421@vindex nnbabyl-active-file 12421@vindex nnbabyl-active-file
12422@vindex nnbabyl-mbox-file 12422@vindex nnbabyl-mbox-file
12423The @dfn{nnbabyl} backend will use a babyl mail box (aka. @dfn{rmail 12423The @dfn{nnbabyl} back end will use a babyl mail box (aka. @dfn{rmail
12424mbox}) to store mail. @code{nnbabyl} will add extra headers to each 12424mbox}) to store mail. @code{nnbabyl} will add extra headers to each
12425mail article to say which group it belongs in. 12425mail article to say which group it belongs in.
12426 12426
@@ -12450,7 +12450,7 @@ The @dfn{nnml} spool mail format isn't compatible with any other known
12450format. It should be used with some caution. 12450format. It should be used with some caution.
12451 12451
12452@vindex nnml-directory 12452@vindex nnml-directory
12453If you use this backend, Gnus will split all incoming mail into files, 12453If you use this back end, Gnus will split all incoming mail into files,
12454one file for each mail, and put the articles into the corresponding 12454one file for each mail, and put the articles into the corresponding
12455directories under the directory specified by the @code{nnml-directory} 12455directories under the directory specified by the @code{nnml-directory}
12456variable. The default value is @file{~/Mail/}. 12456variable. The default value is @file{~/Mail/}.
@@ -12459,7 +12459,7 @@ You do not have to create any directories beforehand; Gnus will take
12459care of all that. 12459care of all that.
12460 12460
12461If you have a strict limit as to how many files you are allowed to store 12461If you have a strict limit as to how many files you are allowed to store
12462in your account, you should not use this backend. As each mail gets its 12462in your account, you should not use this back end. As each mail gets its
12463own file, you might very well occupy thousands of inodes within a few 12463own file, you might very well occupy thousands of inodes within a few
12464weeks. If this is no problem for you, and it isn't a problem for you 12464weeks. If this is no problem for you, and it isn't a problem for you
12465having your friendly systems administrator walking around, madly, 12465having your friendly systems administrator walking around, madly,
@@ -12467,10 +12467,10 @@ shouting ``Who is eating all my inodes?! Who? Who!?!'', then you should
12467know that this is probably the fastest format to use. You do not have 12467know that this is probably the fastest format to use. You do not have
12468to trudge through a big mbox file just to read your new mail. 12468to trudge through a big mbox file just to read your new mail.
12469 12469
12470@code{nnml} is probably the slowest backend when it comes to article 12470@code{nnml} is probably the slowest back end when it comes to article
12471splitting. It has to create lots of files, and it also generates 12471splitting. It has to create lots of files, and it also generates
12472@sc{nov} databases for the incoming mails. This makes it the fastest 12472@sc{nov} databases for the incoming mails. This makes it the fastest
12473backend when it comes to reading mail. 12473back end when it comes to reading mail.
12474 12474
12475Virtual server settings: 12475Virtual server settings:
12476 12476
@@ -12494,7 +12494,7 @@ If non-@code{nil}, @code{nnml} will read incoming mail.
12494 12494
12495@item nnml-nov-is-evil 12495@item nnml-nov-is-evil
12496@vindex nnml-nov-is-evil 12496@vindex nnml-nov-is-evil
12497If non-@code{nil}, this backend will ignore any @sc{nov} files. 12497If non-@code{nil}, this back end will ignore any @sc{nov} files.
12498 12498
12499@item nnml-nov-file-name 12499@item nnml-nov-file-name
12500@vindex nnml-nov-file-name 12500@vindex nnml-nov-file-name
@@ -12523,7 +12523,7 @@ Commands}).
12523 12523
12524@code{nnmh} is just like @code{nnml}, except that is doesn't generate 12524@code{nnmh} is just like @code{nnml}, except that is doesn't generate
12525@sc{nov} databases and it doesn't keep an active file. This makes 12525@sc{nov} databases and it doesn't keep an active file. This makes
12526@code{nnmh} a @emph{much} slower backend than @code{nnml}, but it also 12526@code{nnmh} a @emph{much} slower back end than @code{nnml}, but it also
12527makes it easier to write procmail scripts for. 12527makes it easier to write procmail scripts for.
12528 12528
12529Virtual server settings: 12529Virtual server settings:
@@ -12554,7 +12554,7 @@ to set this variable to @code{t}.
12554@cindex mbox folders 12554@cindex mbox folders
12555@cindex mail folders 12555@cindex mail folders
12556 12556
12557@code{nnfolder} is a backend for storing each mail group in a separate 12557@code{nnfolder} is a back end for storing each mail group in a separate
12558file. Each file is in the standard Un*x mbox format. @code{nnfolder} 12558file. Each file is in the standard Un*x mbox format. @code{nnfolder}
12559will add extra headers to keep track of article numbers and arrival 12559will add extra headers to keep track of article numbers and arrival
12560dates. 12560dates.
@@ -12610,13 +12610,13 @@ command to make @code{nnfolder} aware of all likely files in
12610@code{nnfolder-directory}. This only works if you use long file names, 12610@code{nnfolder-directory}. This only works if you use long file names,
12611though. 12611though.
12612 12612
12613@node Comparing Mail Backends 12613@node Comparing Mail Back Ends
12614@subsubsection Comparing Mail Backends 12614@subsubsection Comparing Mail Back Ends
12615 12615
12616First, just for terminology, the @dfn{backend} is the common word for a 12616First, just for terminology, the @dfn{back end} is the common word for a
12617low-level access method---a transport, if you will, by which something 12617low-level access method---a transport, if you will, by which something
12618is acquired. The sense is that one's mail has to come from somewhere, 12618is acquired. The sense is that one's mail has to come from somewhere,
12619and so selection of a suitable backend is required in order to get that 12619and so selection of a suitable back end is required in order to get that
12620mail within spitting distance of Gnus. 12620mail within spitting distance of Gnus.
12621 12621
12622The same concept exists for Usenet itself: Though access to articles is 12622The same concept exists for Usenet itself: Though access to articles is
@@ -12625,11 +12625,11 @@ in the world got at Usenet by running a reader on the machine where the
12625articles lay (the machine which today we call an @sc{nntp} server), and 12625articles lay (the machine which today we call an @sc{nntp} server), and
12626access was by the reader stepping into the articles' directory spool 12626access was by the reader stepping into the articles' directory spool
12627area directly. One can still select between either the @code{nntp} or 12627area directly. One can still select between either the @code{nntp} or
12628@code{nnspool} backends, to select between these methods, if one happens 12628@code{nnspool} back ends, to select between these methods, if one happens
12629actually to live on the server (or can see its spool directly, anyway, 12629actually to live on the server (or can see its spool directly, anyway,
12630via NFS). 12630via NFS).
12631 12631
12632The goal in selecting a mail backend is to pick one which 12632The goal in selecting a mail back end is to pick one which
12633simultaneously represents a suitable way of dealing with the original 12633simultaneously represents a suitable way of dealing with the original
12634format plus leaving mail in a form that is convenient to use in the 12634format plus leaving mail in a form that is convenient to use in the
12635future. Here are some high and low points on each: 12635future. Here are some high and low points on each:
@@ -12645,7 +12645,7 @@ to make it clear in this instance that this is not the RFC-specified
12645@samp{From:} header.) Because Emacs and therefore Gnus emanate 12645@samp{From:} header.) Because Emacs and therefore Gnus emanate
12646historically from the Unix environment, it is simplest if one does not 12646historically from the Unix environment, it is simplest if one does not
12647mess a great deal with the original mailbox format, so if one chooses 12647mess a great deal with the original mailbox format, so if one chooses
12648this backend, Gnus' primary activity in getting mail from the real spool 12648this back end, Gnus' primary activity in getting mail from the real spool
12649area to Gnus' preferred directory is simply to copy it, with no 12649area to Gnus' preferred directory is simply to copy it, with no
12650(appreciable) format change in the process. It is the ``dumbest'' way 12650(appreciable) format change in the process. It is the ``dumbest'' way
12651to move mail into availability in the Gnus environment. This makes it 12651to move mail into availability in the Gnus environment. This makes it
@@ -12675,7 +12675,7 @@ look at your mail.
12675 12675
12676@item nnml 12676@item nnml
12677 12677
12678@code{nnml} is the backend which smells the most as though you were 12678@code{nnml} is the back end which smells the most as though you were
12679actually operating with an @code{nnspool}-accessed Usenet system. (In 12679actually operating with an @code{nnspool}-accessed Usenet system. (In
12680fact, I believe @code{nnml} actually derived from @code{nnspool} code, 12680fact, I believe @code{nnml} actually derived from @code{nnspool} code,
12681lo these years ago.) One's mail is taken from the original spool file, 12681lo these years ago.) One's mail is taken from the original spool file,
@@ -12697,7 +12697,7 @@ tight, shared filesystems. But if you live on a personal machine where
12697the filesystem is your own and space is not at a premium, @code{nnml} 12697the filesystem is your own and space is not at a premium, @code{nnml}
12698wins big. 12698wins big.
12699 12699
12700It is also problematic using this backend if you are living in a 12700It is also problematic using this back end if you are living in a
12701FAT16-based Windows world, since much space will be wasted on all these 12701FAT16-based Windows world, since much space will be wasted on all these
12702tiny files. 12702tiny files.
12703 12703
@@ -12726,7 +12726,7 @@ out how many messages there are in each separate group.
12726If you have groups that are expected to have a massive amount of 12726If you have groups that are expected to have a massive amount of
12727messages, @code{nnfolder} is not the best choice, but if you receive 12727messages, @code{nnfolder} is not the best choice, but if you receive
12728only a moderate amount of mail, @code{nnfolder} is probably the most 12728only a moderate amount of mail, @code{nnfolder} is probably the most
12729friendly mail backend all over. 12729friendly mail back end all over.
12730 12730
12731@end table 12731@end table
12732 12732
@@ -12755,7 +12755,7 @@ you mad in the end.
12755So---if web browsers suck at reading discussion forums, why not use Gnus 12755So---if web browsers suck at reading discussion forums, why not use Gnus
12756to do it instead? 12756to do it instead?
12757 12757
12758Gnus has been getting a bit of a collection of backends for providing 12758Gnus has been getting a bit of a collection of back ends for providing
12759interfaces to these sources. 12759interfaces to these sources.
12760 12760
12761@menu 12761@menu
@@ -12770,8 +12770,8 @@ All the web sources require Emacs/w3 and the url library to work.
12770 12770
12771The main caveat with all these web sources is that they probably won't 12771The main caveat with all these web sources is that they probably won't
12772work for a very long time. Gleaning information from the @sc{html} data 12772work for a very long time. Gleaning information from the @sc{html} data
12773is guesswork at best, and when the layout is altered, the Gnus backend 12773is guesswork at best, and when the layout is altered, the Gnus back end
12774will fail. If you have reasonably new versions of these backends, 12774will fail. If you have reasonably new versions of these back ends,
12775though, you should be ok. 12775though, you should be ok.
12776 12776
12777One thing all these Web methods have in common is that the Web sources 12777One thing all these Web methods have in common is that the Web sources
@@ -12796,7 +12796,7 @@ those, like, Web browsers, and you, like, have to, rilly, like, look at
12796the commercials, so, like, with Gnus you can do @emph{rad}, rilly, 12796the commercials, so, like, with Gnus you can do @emph{rad}, rilly,
12797searches without having to use a browser. 12797searches without having to use a browser.
12798 12798
12799The @code{nnweb} backend allows an easy interface to the mighty search 12799The @code{nnweb} back end allows an easy interface to the mighty search
12800engine. You create an @code{nnweb} group, enter a search pattern, and 12800engine. You create an @code{nnweb} group, enter a search pattern, and
12801then enter the group and read the articles like you would any normal 12801then enter the group and read the articles like you would any normal
12802group. The @kbd{G w} command in the group buffer (@pxref{Foreign 12802group. The @kbd{G w} command in the group buffer (@pxref{Foreign
@@ -12887,7 +12887,7 @@ following in your @file{.gnus.el} file:
12887 '((nnslashdot ""))) 12887 '((nnslashdot "")))
12888@end lisp 12888@end lisp
12889 12889
12890This will make Gnus query the @code{nnslashdot} backend for new comments 12890This will make Gnus query the @code{nnslashdot} back end for new comments
12891and groups. The @kbd{F} command will subscribe each new news article as 12891and groups. The @kbd{F} command will subscribe each new news article as
12892a new Gnus group, and you can read the comments by entering these 12892a new Gnus group, and you can read the comments by entering these
12893groups. (Note that the default subscription method is to subscribe new 12893groups. (Note that the default subscription method is to subscribe new
@@ -13005,7 +13005,7 @@ gnus-group-make-warchive-group @key{RET} an_egroup @key{RET} egroups @key{RET}
13005www.egroups.com @key{RET} your@@email.address @key{RET}}. (Substitute the 13005www.egroups.com @key{RET} your@@email.address @key{RET}}. (Substitute the
13006@sc{an_egroup} with the mailing list you subscribed, the 13006@sc{an_egroup} with the mailing list you subscribed, the
13007@sc{your@@email.address} with your email address.), or to browse the 13007@sc{your@@email.address} with your email address.), or to browse the
13008backend by @kbd{B nnwarchive @key{RET} mail-archive @key{RET}}. 13008back end by @kbd{B nnwarchive @key{RET} mail-archive @key{RET}}.
13009 13009
13010The following @code{nnwarchive} variables can be altered: 13010The following @code{nnwarchive} variables can be altered:
13011 13011
@@ -13085,7 +13085,7 @@ names, of course.
13085This might be an opportune moment to mention @code{ange-ftp} (and its 13085This might be an opportune moment to mention @code{ange-ftp} (and its
13086successor @code{efs}), that most wonderful of all wonderful Emacs 13086successor @code{efs}), that most wonderful of all wonderful Emacs
13087packages. When I wrote @code{nndir}, I didn't think much about it---a 13087packages. When I wrote @code{nndir}, I didn't think much about it---a
13088backend to read directories. Big deal. 13088back end to read directories. Big deal.
13089 13089
13090@code{ange-ftp} changes that picture dramatically. For instance, if you 13090@code{ange-ftp} changes that picture dramatically. For instance, if you
13091enter the @code{ange-ftp} file name 13091enter the @code{ange-ftp} file name
@@ -13095,7 +13095,7 @@ directory over at @samp{sina} as a newsgroup. Distributed news ahoy!
13095 13095
13096@code{nndir} will use @sc{nov} files if they are present. 13096@code{nndir} will use @sc{nov} files if they are present.
13097 13097
13098@code{nndir} is a ``read-only'' backend---you can't delete or expire 13098@code{nndir} is a ``read-only'' back end---you can't delete or expire
13099articles with this method. You can use @code{nnmh} or @code{nnml} for 13099articles with this method. You can use @code{nnmh} or @code{nnml} for
13100whatever you use @code{nndir} for, so you could switch to any of those 13100whatever you use @code{nndir} for, so you could switch to any of those
13101methods if you feel the need to have a non-read-only @code{nndir}. 13101methods if you feel the need to have a non-read-only @code{nndir}.
@@ -13105,7 +13105,7 @@ methods if you feel the need to have a non-read-only @code{nndir}.
13105@subsection Anything Groups 13105@subsection Anything Groups
13106@cindex nneething 13106@cindex nneething
13107 13107
13108From the @code{nndir} backend (which reads a single spool-like 13108From the @code{nndir} back end (which reads a single spool-like
13109directory), it's just a hop and a skip to @code{nneething}, which 13109directory), it's just a hop and a skip to @code{nneething}, which
13110pretends that any arbitrary directory is a newsgroup. Strange, but 13110pretends that any arbitrary directory is a newsgroup. Strange, but
13111true. 13111true.
@@ -13224,7 +13224,7 @@ it---it will simply, like, let you use the file as the basis for a
13224group. And that's it. 13224group. And that's it.
13225 13225
13226If you have some old archived articles that you want to insert into your 13226If you have some old archived articles that you want to insert into your
13227new & spiffy Gnus mail backend, @code{nndoc} can probably help you with 13227new & spiffy Gnus mail back end, @code{nndoc} can probably help you with
13228that. Say you have an old @file{RMAIL} file with mail that you now want 13228that. Say you have an old @file{RMAIL} file with mail that you now want
13229to split into your new @code{nnml} groups. You look at that file using 13229to split into your new @code{nnml} groups. You look at that file using
13230@code{nndoc} (using the @kbd{G f} command in the group buffer 13230@code{nndoc} (using the @kbd{G f} command in the group buffer
@@ -13447,7 +13447,7 @@ You transfer the packet home. Rail, boat, car or modem will do fine.
13447You put the packet in your home directory. 13447You put the packet in your home directory.
13448 13448
13449@item 13449@item
13450You fire up Gnus on your home machine using the @code{nnsoup} backend as 13450You fire up Gnus on your home machine using the @code{nnsoup} back end as
13451the native or secondary server. 13451the native or secondary server.
13452 13452
13453@item 13453@item
@@ -13474,7 +13474,7 @@ reading and Gnus for packing/sending these @sc{soup} packets.
13474 13474
13475@menu 13475@menu
13476* SOUP Commands:: Commands for creating and sending @sc{soup} packets 13476* SOUP Commands:: Commands for creating and sending @sc{soup} packets
13477* SOUP Groups:: A backend for reading @sc{soup} packets. 13477* SOUP Groups:: A back end for reading @sc{soup} packets.
13478* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news. 13478* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
13479@end menu 13479@end menu
13480 13480
@@ -13569,7 +13569,7 @@ Regular expression matching @sc{soup} reply packets in
13569@subsubsection @sc{soup} Groups 13569@subsubsection @sc{soup} Groups
13570@cindex nnsoup 13570@cindex nnsoup
13571 13571
13572@code{nnsoup} is the backend for reading @sc{soup} packets. It will 13572@code{nnsoup} is the back end for reading @sc{soup} packets. It will
13573read incoming packets, unpack them, and put them in a directory where 13573read incoming packets, unpack them, and put them in a directory where
13574you can read them at leisure. 13574you can read them at leisure.
13575 13575
@@ -13668,9 +13668,9 @@ system you just use the first line. If you only want mail to be
13668 13668
13669If your local @code{nntp} server doesn't allow posting, for some reason 13669If your local @code{nntp} server doesn't allow posting, for some reason
13670or other, you can post using one of the numerous mail-to-news gateways. 13670or other, you can post using one of the numerous mail-to-news gateways.
13671The @code{nngateway} backend provides the interface. 13671The @code{nngateway} back end provides the interface.
13672 13672
13673Note that you can't read anything from this backend---it can only be 13673Note that you can't read anything from this back end---it can only be
13674used to post with. 13674used to post with.
13675 13675
13676Server variables: 13676Server variables:
@@ -14125,7 +14125,7 @@ It's possible to set @code{nnimap-split-rule} to
14125splitting. @xref{Fancy Mail Splitting}. 14125splitting. @xref{Fancy Mail Splitting}.
14126 14126
14127However, to be able to have different fancy split rules for nnmail and 14127However, to be able to have different fancy split rules for nnmail and
14128nnimap backends you can set @code{nnimap-split-rule} to 14128nnimap back ends you can set @code{nnimap-split-rule} to
14129@code{nnimap-split-fancy} and define the nnimap specific fancy split 14129@code{nnimap-split-fancy} and define the nnimap specific fancy split
14130rule in @code{nnimap-split-fancy}. 14130rule in @code{nnimap-split-fancy}.
14131 14131
@@ -14270,11 +14270,11 @@ you enter it---it'll have much the same effect.
14270 14270
14271@code{nnvirtual} can have both mail and news groups as component groups. 14271@code{nnvirtual} can have both mail and news groups as component groups.
14272When responding to articles in @code{nnvirtual} groups, @code{nnvirtual} 14272When responding to articles in @code{nnvirtual} groups, @code{nnvirtual}
14273has to ask the backend of the component group the article comes from 14273has to ask the back end of the component group the article comes from
14274whether it is a news or mail backend. However, when you do a @kbd{^}, 14274whether it is a news or mail back end. However, when you do a @kbd{^},
14275there is typically no sure way for the component backend to know this, 14275there is typically no sure way for the component back end to know this,
14276and in that case @code{nnvirtual} tells Gnus that the article came from a 14276and in that case @code{nnvirtual} tells Gnus that the article came from a
14277not-news backend. (Just to be on the safe side.) 14277not-news back end. (Just to be on the safe side.)
14278 14278
14279@kbd{C-c C-t} in the message buffer will insert the @code{Newsgroups} 14279@kbd{C-c C-t} in the message buffer will insert the @code{Newsgroups}
14280line from the article you respond to in these cases. 14280line from the article you respond to in these cases.
@@ -14287,7 +14287,7 @@ line from the article you respond to in these cases.
14287@cindex kibozing 14287@cindex kibozing
14288 14288
14289@dfn{Kibozing} is defined by @sc{oed} as ``grepping through (parts of) 14289@dfn{Kibozing} is defined by @sc{oed} as ``grepping through (parts of)
14290the news feed''. @code{nnkiboze} is a backend that will do this for 14290the news feed''. @code{nnkiboze} is a back end that will do this for
14291you. Oh joy! Now you can grind any @sc{nntp} server down to a halt 14291you. Oh joy! Now you can grind any @sc{nntp} server down to a halt
14292with useless requests! Oh happiness! 14292with useless requests! Oh happiness!
14293 14293
@@ -14447,7 +14447,7 @@ the Agent.
14447 14447
14448@item 14448@item
14449Decide which servers should be covered by the Agent. If you have a mail 14449Decide which servers should be covered by the Agent. If you have a mail
14450backend, it would probably be nonsensical to have it covered by the 14450back end, it would probably be nonsensical to have it covered by the
14451Agent. Go to the server buffer (@kbd{^} in the group buffer) and press 14451Agent. Go to the server buffer (@kbd{^} in the group buffer) and press
14452@kbd{J a} the server (or servers) that you wish to have covered by the 14452@kbd{J a} the server (or servers) that you wish to have covered by the
14453Agent (@pxref{Server Agent Commands}). This will typically be only the 14453Agent (@pxref{Server Agent Commands}). This will typically be only the
@@ -15005,7 +15005,7 @@ unread, ticked and dormant articles will be kept indefinitely.
15005@node Agent and IMAP 15005@node Agent and IMAP
15006@subsection Agent and IMAP 15006@subsection Agent and IMAP
15007 15007
15008The Agent work with any Gnus backend, including nnimap. However, 15008The Agent work with any Gnus back end, including nnimap. However,
15009since there are some conceptual differences between @sc{nntp} and 15009since there are some conceptual differences between @sc{nntp} and
15010@sc{imap}, this section (should) provide you with some information to 15010@sc{imap}, this section (should) provide you with some information to
15011make Gnus Agent work smoother as a @sc{imap} Disconnected Mode client. 15011make Gnus Agent work smoother as a @sc{imap} Disconnected Mode client.
@@ -15778,7 +15778,7 @@ the match, we get the score added if the article has less than 4 lines.
15778(It's easy to get confused and think it's the other way around. But 15778(It's easy to get confused and think it's the other way around. But
15779it's not. I think.) 15779it's not. I think.)
15780 15780
15781When matching on @code{Lines}, be careful because some backends (like 15781When matching on @code{Lines}, be careful because some back ends (like
15782@code{nndir}) do not generate @code{Lines} header, so every article ends 15782@code{nndir}) do not generate @code{Lines} header, so every article ends
15783up being marked as having 0 lines. This can lead to strange results if 15783up being marked as having 0 lines. This can lead to strange results if
15784you happen to lower score of the articles with few lines. 15784you happen to lower score of the articles with few lines.
@@ -18744,16 +18744,16 @@ shut up, but will flash so many messages it will make your head swim.
18744@item gnus-verbose-backends 18744@item gnus-verbose-backends
18745@vindex gnus-verbose-backends 18745@vindex gnus-verbose-backends
18746This variable works the same way as @code{gnus-verbose}, but it applies 18746This variable works the same way as @code{gnus-verbose}, but it applies
18747to the Gnus backends instead of Gnus proper. 18747to the Gnus back ends instead of Gnus proper.
18748 18748
18749@item nnheader-max-head-length 18749@item nnheader-max-head-length
18750@vindex nnheader-max-head-length 18750@vindex nnheader-max-head-length
18751When the backends read straight heads of articles, they all try to read 18751When the back ends read straight heads of articles, they all try to read
18752as little as possible. This variable (default 4096) specifies 18752as little as possible. This variable (default 4096) specifies
18753the absolute max length the backends will try to read before giving up 18753the absolute max length the back ends will try to read before giving up
18754on finding a separator line between the head and the body. If this 18754on finding a separator line between the head and the body. If this
18755variable is @code{nil}, there is no upper read bound. If it is 18755variable is @code{nil}, there is no upper read bound. If it is
18756@code{t}, the backends won't try to read the articles piece by piece, 18756@code{t}, the back ends won't try to read the articles piece by piece,
18757but read the entire articles. This makes sense with some versions of 18757but read the entire articles. This makes sense with some versions of
18758@code{ange-ftp} or @code{efs}. 18758@code{ange-ftp} or @code{efs}.
18759 18759
@@ -18959,8 +18959,8 @@ keep track of millions of people who post?
18959Gnus offers no real solutions to these questions, but I would very much 18959Gnus offers no real solutions to these questions, but I would very much
18960like to see Gnus being used as a testing ground for new methods of 18960like to see Gnus being used as a testing ground for new methods of
18961reading and fetching news. Expanding on @sc{Umeda}-san's wise decision 18961reading and fetching news. Expanding on @sc{Umeda}-san's wise decision
18962to separate the newsreader from the backends, Gnus now offers a simple 18962to separate the newsreader from the back ends, Gnus now offers a simple
18963interface for anybody who wants to write new backends for fetching mail 18963interface for anybody who wants to write new back ends for fetching mail
18964and news from different sources. I have added hooks for customizations 18964and news from different sources. I have added hooks for customizations
18965everywhere I could imagine it being useful. By doing so, I'm inviting 18965everywhere I could imagine it being useful. By doing so, I'm inviting
18966every one of you to explore and invent. 18966every one of you to explore and invent.
@@ -19121,7 +19121,7 @@ Emacsen.
19121 19121
19122Gnus is developed in a two-phased cycle. The first phase involves much 19122Gnus is developed in a two-phased cycle. The first phase involves much
19123discussion on the @samp{ding@@gnus.org} mailing list, where people 19123discussion on the @samp{ding@@gnus.org} mailing list, where people
19124propose changes and new features, post patches and new backends. This 19124propose changes and new features, post patches and new back ends. This
19125phase is called the @dfn{alpha} phase, since the Gnusae released in this 19125phase is called the @dfn{alpha} phase, since the Gnusae released in this
19126phase are @dfn{alpha releases}, or (perhaps more commonly in other 19126phase are @dfn{alpha releases}, or (perhaps more commonly in other
19127circles) @dfn{snapshots}. During this phase, Gnus is assumed to be 19127circles) @dfn{snapshots}. During this phase, Gnus is assumed to be
@@ -19512,7 +19512,7 @@ You can combine groups into virtual groups (@pxref{Virtual Groups}).
19512 19512
19513@item 19513@item
19514You can read a number of different mail formats (@pxref{Getting Mail}). 19514You can read a number of different mail formats (@pxref{Getting Mail}).
19515All the mail backends implement a convenient mail expiry scheme 19515All the mail back ends implement a convenient mail expiry scheme
19516(@pxref{Expiring Mail}). 19516(@pxref{Expiring Mail}).
19517 19517
19518@item 19518@item
@@ -19701,7 +19701,7 @@ news batches, ClariNet briefs collections, and just about everything
19701else (@pxref{Document Groups}). 19701else (@pxref{Document Groups}).
19702 19702
19703@item 19703@item
19704Gnus has a new backend (@code{nnsoup}) to create/read SOUP packets 19704Gnus has a new back end (@code{nnsoup}) to create/read SOUP packets
19705(@pxref{SOUP}). 19705(@pxref{SOUP}).
19706 19706
19707@item 19707@item
@@ -19739,7 +19739,7 @@ All functions for hiding article elements are now toggles.
19739Article headers can be buttonized (@pxref{Article Washing}). 19739Article headers can be buttonized (@pxref{Article Washing}).
19740 19740
19741@item 19741@item
19742All mail backends support fetching articles by @code{Message-ID}. 19742All mail back ends support fetching articles by @code{Message-ID}.
19743 19743
19744@item 19744@item
19745Duplicate mail can now be treated properly (@pxref{Duplicates}). 19745Duplicate mail can now be treated properly (@pxref{Duplicates}).
@@ -19958,11 +19958,11 @@ Process mark sets can be pushed and popped (@pxref{Setting Process
19958Marks}). 19958Marks}).
19959 19959
19960@item 19960@item
19961A new mail-to-news backend makes it possible to post even when the @sc{nntp} 19961A new mail-to-news back end makes it possible to post even when the @sc{nntp}
19962server doesn't allow posting (@pxref{Mail-To-News Gateways}). 19962server doesn't allow posting (@pxref{Mail-To-News Gateways}).
19963 19963
19964@item 19964@item
19965A new backend for reading searches from Web search engines 19965A new back end for reading searches from Web search engines
19966(@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) has been added 19966(@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) has been added
19967(@pxref{Web Searches}). 19967(@pxref{Web Searches}).
19968 19968
@@ -20015,7 +20015,7 @@ added. A plethora of new commands and modes have been added. See
20015@pxref{Gnus Unplugged} for the full story. 20015@pxref{Gnus Unplugged} for the full story.
20016 20016
20017@item 20017@item
20018 The @code{nndraft} backend has returned, but works differently than 20018 The @code{nndraft} back end has returned, but works differently than
20019before. All Message buffers are now also articles in the @code{nndraft} 20019before. All Message buffers are now also articles in the @code{nndraft}
20020group, which is created automatically. 20020group, which is created automatically.
20021 20021
@@ -20124,7 +20124,7 @@ been added.
20124updated by the @code{gnus-start-date-timer} command. 20124updated by the @code{gnus-start-date-timer} command.
20125 20125
20126@item 20126@item
20127 Web listserv archives can be read with the @code{nnlistserv} backend. 20127 Web listserv archives can be read with the @code{nnlistserv} back end.
20128 20128
20129@item 20129@item
20130 Old dejanews archives can now be read by @code{nnweb}. 20130 Old dejanews archives can now be read by @code{nnweb}.
@@ -20179,7 +20179,7 @@ of variables starting with @code{gnus-treat-} have been added.
20179@item The Gnus posting styles have been redone again and now works in a 20179@item The Gnus posting styles have been redone again and now works in a
20180subtly different manner. 20180subtly different manner.
20181 20181
20182@item New web-based backends have been added: @code{nnslashdot}, 20182@item New web-based back ends have been added: @code{nnslashdot},
20183@code{nnwarchive} and @code{nnultimate}. nnweb has been revamped, 20183@code{nnwarchive} and @code{nnultimate}. nnweb has been revamped,
20184again, to keep up with ever-changing layouts. 20184again, to keep up with ever-changing layouts.
20185 20185
@@ -20302,26 +20302,26 @@ Send a mail to the person who has written what you are reading.
20302Post an article to the current newsgroup responding to the article you 20302Post an article to the current newsgroup responding to the article you
20303are reading. 20303are reading.
20304 20304
20305@item backend 20305@item back end
20306@cindex backend 20306@cindex back end
20307Gnus gets fed articles from a number of backends, both news and mail 20307Gnus gets fed articles from a number of back ends, both news and mail
20308backends. Gnus does not handle the underlying media, so to speak---this 20308back ends. Gnus does not handle the underlying media, so to speak---this
20309is all done by the backends. 20309is all done by the back ends.
20310 20310
20311@item native 20311@item native
20312@cindex native 20312@cindex native
20313Gnus will always use one method (and backend) as the @dfn{native}, or 20313Gnus will always use one method (and back end) as the @dfn{native}, or
20314default, way of getting news. 20314default, way of getting news.
20315 20315
20316@item foreign 20316@item foreign
20317@cindex foreign 20317@cindex foreign
20318You can also have any number of foreign groups active at the same time. 20318You can also have any number of foreign groups active at the same time.
20319These are groups that use non-native non-secondary backends for getting 20319These are groups that use non-native non-secondary back ends for getting
20320news. 20320news.
20321 20321
20322@item secondary 20322@item secondary
20323@cindex secondary 20323@cindex secondary
20324Secondary backends are somewhere half-way between being native and being 20324Secondary back ends are somewhere half-way between being native and being
20325foreign, but they mostly act like they are native. 20325foreign, but they mostly act like they are native.
20326 20326
20327@item article 20327@item article
@@ -20357,7 +20357,7 @@ collection of @sc{nov} lines.
20357 20357
20358@item @sc{nov} 20358@item @sc{nov}
20359@cindex nov 20359@cindex nov
20360When Gnus enters a group, it asks the backend for the headers of all 20360When Gnus enters a group, it asks the back end for the headers of all
20361unread articles in the group. Most servers support the News OverView 20361unread articles in the group. Most servers support the News OverView
20362format, which is more compact and much faster to read and parse than the 20362format, which is more compact and much faster to read and parse than the
20363normal @sc{head} format. 20363normal @sc{head} format.
@@ -20404,7 +20404,7 @@ A machine one can connect to and get news (or mail) from.
20404 20404
20405@item select method 20405@item select method
20406@cindex select method 20406@cindex select method
20407A structure that specifies the backend, the server and the virtual 20407A structure that specifies the back end, the server and the virtual
20408server settings. 20408server settings.
20409 20409
20410@item virtual server 20410@item virtual server
@@ -20680,13 +20680,13 @@ it.
20680 20680
20681You can never expect the internals of a program not to change, but I 20681You can never expect the internals of a program not to change, but I
20682will be defining (in some details) the interface between Gnus and its 20682will be defining (in some details) the interface between Gnus and its
20683backends (this is written in stone), the format of the score files 20683back ends (this is written in stone), the format of the score files
20684(ditto), data structures (some are less likely to change than others) 20684(ditto), data structures (some are less likely to change than others)
20685and general methods of operation. 20685and general methods of operation.
20686 20686
20687@menu 20687@menu
20688* Gnus Utility Functions:: Common functions and variable to use. 20688* Gnus Utility Functions:: Common functions and variable to use.
20689* Backend Interface:: How Gnus communicates with the servers. 20689* Back End Interface:: How Gnus communicates with the servers.
20690* Score File Syntax:: A BNF definition of the score file standard. 20690* Score File Syntax:: A BNF definition of the score file standard.
20691* Headers:: How Gnus stores headers internally. 20691* Headers:: How Gnus stores headers internally.
20692* Ranges:: A handy format for storing mucho numbers. 20692* Ranges:: A handy format for storing mucho numbers.
@@ -20762,7 +20762,7 @@ Says whether @var{group} is read-only or not.
20762 20762
20763@item gnus-news-group-p 20763@item gnus-news-group-p
20764@findex gnus-news-group-p 20764@findex gnus-news-group-p
20765Says whether @var{group} came from a news backend. 20765Says whether @var{group} came from a news back end.
20766 20766
20767@item gnus-ephemeral-group-p 20767@item gnus-ephemeral-group-p
20768@findex gnus-ephemeral-group-p 20768@findex gnus-ephemeral-group-p
@@ -20803,7 +20803,7 @@ Narrows the current buffer to the body of the article.
20803 20803
20804@item gnus-check-backend-function 20804@item gnus-check-backend-function
20805@findex gnus-check-backend-function 20805@findex gnus-check-backend-function
20806Takes two parameters, @var{function} and @var{group}. If the backend 20806Takes two parameters, @var{function} and @var{group}. If the back end
20807@var{group} comes from supports @var{function}, return non-@code{nil}. 20807@var{group} comes from supports @var{function}, return non-@code{nil}.
20808 20808
20809@lisp 20809@lisp
@@ -20818,19 +20818,19 @@ Prompts the user for a select method.
20818@end table 20818@end table
20819 20819
20820 20820
20821@node Backend Interface 20821@node Back End Interface
20822@subsection Backend Interface 20822@subsection Back End Interface
20823 20823
20824Gnus doesn't know anything about @sc{nntp}, spools, mail or virtual 20824Gnus doesn't know anything about @sc{nntp}, spools, mail or virtual
20825groups. It only knows how to talk to @dfn{virtual servers}. A virtual 20825groups. It only knows how to talk to @dfn{virtual servers}. A virtual
20826server is a @dfn{backend} and some @dfn{backend variables}. As examples 20826server is a @dfn{back end} and some @dfn{back end variables}. As examples
20827of the first, we have @code{nntp}, @code{nnspool} and @code{nnmbox}. As 20827of the first, we have @code{nntp}, @code{nnspool} and @code{nnmbox}. As
20828examples of the latter we have @code{nntp-port-number} and 20828examples of the latter we have @code{nntp-port-number} and
20829@code{nnmbox-directory}. 20829@code{nnmbox-directory}.
20830 20830
20831When Gnus asks for information from a backend---say @code{nntp}---on 20831When Gnus asks for information from a back end---say @code{nntp}---on
20832something, it will normally include a virtual server name in the 20832something, it will normally include a virtual server name in the
20833function parameters. (If not, the backend should use the ``current'' 20833function parameters. (If not, the back end should use the ``current''
20834virtual server.) For instance, @code{nntp-request-list} takes a virtual 20834virtual server.) For instance, @code{nntp-request-list} takes a virtual
20835server as its only (optional) parameter. If this virtual server hasn't 20835server as its only (optional) parameter. If this virtual server hasn't
20836been opened, the function should fail. 20836been opened, the function should fail.
@@ -20847,8 +20847,8 @@ name. Take this example:
20847Here the virtual server name is @samp{odd-one} while the name of 20847Here the virtual server name is @samp{odd-one} while the name of
20848the physical server is @samp{ifi.uio.no}. 20848the physical server is @samp{ifi.uio.no}.
20849 20849
20850The backends should be able to switch between several virtual servers. 20850The back ends should be able to switch between several virtual servers.
20851The standard backends implement this by keeping an alist of virtual 20851The standard back ends implement this by keeping an alist of virtual
20852server environments that they pull down/push up when needed. 20852server environments that they pull down/push up when needed.
20853 20853
20854There are two groups of interface functions: @dfn{required functions}, 20854There are two groups of interface functions: @dfn{required functions},
@@ -20863,37 +20863,37 @@ talk about @dfn{return value}, I talk about the function value returned by
20863the function call. Functions that fail should return @code{nil} as the 20863the function call. Functions that fail should return @code{nil} as the
20864return value. 20864return value.
20865 20865
20866Some backends could be said to be @dfn{server-forming} backends, and 20866Some back ends could be said to be @dfn{server-forming} back ends, and
20867some might be said not to be. The latter are backends that generally 20867some might be said not to be. The latter are back ends that generally
20868only operate on one group at a time, and have no concept of ``server'' 20868only operate on one group at a time, and have no concept of ``server''
20869-- they have a group, and they deliver info on that group and nothing 20869-- they have a group, and they deliver info on that group and nothing
20870more. 20870more.
20871 20871
20872In the examples and definitions I will refer to the imaginary backend 20872In the examples and definitions I will refer to the imaginary back end
20873@code{nnchoke}. 20873@code{nnchoke}.
20874 20874
20875@cindex @code{nnchoke} 20875@cindex @code{nnchoke}
20876 20876
20877@menu 20877@menu
20878* Required Backend Functions:: Functions that must be implemented. 20878* Required Back End Functions:: Functions that must be implemented.
20879* Optional Backend Functions:: Functions that need not be implemented. 20879* Optional Back End Functions:: Functions that need not be implemented.
20880* Error Messaging:: How to get messages and report errors. 20880* Error Messaging:: How to get messages and report errors.
20881* Writing New Backends:: Extending old backends. 20881* Writing New Back Ends:: Extending old back ends.
20882* Hooking New Backends Into Gnus:: What has to be done on the Gnus end. 20882* Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end.
20883* Mail-like Backends:: Some tips on mail backends. 20883* Mail-like Back Ends:: Some tips on mail back ends.
20884@end menu 20884@end menu
20885 20885
20886 20886
20887@node Required Backend Functions 20887@node Required Back End Functions
20888@subsubsection Required Backend Functions 20888@subsubsection Required Back End Functions
20889 20889
20890@table @code 20890@table @code
20891 20891
20892@item (nnchoke-retrieve-headers ARTICLES &optional GROUP SERVER FETCH-OLD) 20892@item (nnchoke-retrieve-headers ARTICLES &optional GROUP SERVER FETCH-OLD)
20893 20893
20894@var{articles} is either a range of article numbers or a list of 20894@var{articles} is either a range of article numbers or a list of
20895@code{Message-ID}s. Current backends do not fully support either---only 20895@code{Message-ID}s. Current back ends do not fully support either---only
20896sequences (lists) of article numbers, and most backends do not support 20896sequences (lists) of article numbers, and most back ends do not support
20897retrieval of @code{Message-ID}s. But they should try for both. 20897retrieval of @code{Message-ID}s. But they should try for both.
20898 20898
20899The result data should either be HEADs or NOV lines, and the result 20899The result data should either be HEADs or NOV lines, and the result
@@ -20905,7 +20905,7 @@ If @var{fetch-old} is non-@code{nil} it says to try fetching "extra
20905headers", in some meaning of the word. This is generally done by 20905headers", in some meaning of the word. This is generally done by
20906fetching (at most) @var{fetch-old} extra headers less than the smallest 20906fetching (at most) @var{fetch-old} extra headers less than the smallest
20907article number in @code{articles}, and filling the gaps as well. The 20907article number in @code{articles}, and filling the gaps as well. The
20908presence of this parameter can be ignored if the backend finds it 20908presence of this parameter can be ignored if the back end finds it
20909cumbersome to follow the request. If this is non-@code{nil} and not a 20909cumbersome to follow the request. If this is non-@code{nil} and not a
20910number, do maximum fetches. 20910number, do maximum fetches.
20911 20911
@@ -20959,7 +20959,7 @@ For a closer look at what should be in those fields,
20959@var{server} is here the virtual server name. @var{definitions} is a 20959@var{server} is here the virtual server name. @var{definitions} is a
20960list of @code{(VARIABLE VALUE)} pairs that define this virtual server. 20960list of @code{(VARIABLE VALUE)} pairs that define this virtual server.
20961 20961
20962If the server can't be opened, no error should be signaled. The backend 20962If the server can't be opened, no error should be signaled. The back end
20963may then choose to refuse further attempts at connecting to this 20963may then choose to refuse further attempts at connecting to this
20964server. In fact, it should do so. 20964server. In fact, it should do so.
20965 20965
@@ -20978,8 +20978,8 @@ There should be no data returned.
20978 20978
20979@item (nnchoke-request-close) 20979@item (nnchoke-request-close)
20980 20980
20981Close connection to all servers and free all resources that the backend 20981Close connection to all servers and free all resources that the back end
20982have reserved. All buffers that have been created by that backend 20982have reserved. All buffers that have been created by that back end
20983should be killed. (Not the @code{nntp-server-buffer}, though.) This 20983should be killed. (Not the @code{nntp-server-buffer}, though.) This
20984function is generally only called when Gnus is shutting down. 20984function is generally only called when Gnus is shutting down.
20985 20985
@@ -21057,7 +21057,7 @@ info = "211 " 3* [ <number> " " ] <string>
21057@item (nnchoke-close-group GROUP &optional SERVER) 21057@item (nnchoke-close-group GROUP &optional SERVER)
21058 21058
21059Close @var{group} and free any resources connected to it. This will be 21059Close @var{group} and free any resources connected to it. This will be
21060a no-op on most backends. 21060a no-op on most back ends.
21061 21061
21062There should be no data returned. 21062There should be no data returned.
21063 21063
@@ -21103,8 +21103,8 @@ There should be no result data from this function.
21103@end table 21103@end table
21104 21104
21105 21105
21106@node Optional Backend Functions 21106@node Optional Back End Functions
21107@subsubsection Optional Backend Functions 21107@subsubsection Optional Back End Functions
21108 21108
21109@table @code 21109@table @code
21110 21110
@@ -21127,8 +21127,8 @@ group-buffer = *active-line / *group-status
21127 21127
21128@item (nnchoke-request-update-info GROUP INFO &optional SERVER) 21128@item (nnchoke-request-update-info GROUP INFO &optional SERVER)
21129 21129
21130A Gnus group info (@pxref{Group Info}) is handed to the backend for 21130A Gnus group info (@pxref{Group Info}) is handed to the back end for
21131alterations. This comes in handy if the backend really carries all the 21131alterations. This comes in handy if the back end really carries all the
21132information (as is the case with virtual and imap groups). This 21132information (as is the case with virtual and imap groups). This
21133function should destructively alter the info to suit its needs, and 21133function should destructively alter the info to suit its needs, and
21134should return the (altered) group info. 21134should return the (altered) group info.
@@ -21154,7 +21154,7 @@ There should be no result data from this function.
21154 21154
21155Set/remove/add marks on articles. Normally Gnus handles the article 21155Set/remove/add marks on articles. Normally Gnus handles the article
21156marks (such as read, ticked, expired etc) internally, and store them in 21156marks (such as read, ticked, expired etc) internally, and store them in
21157@code{~/.newsrc.eld}. Some backends (such as @sc{imap}) however carry 21157@code{~/.newsrc.eld}. Some back ends (such as @sc{imap}) however carry
21158all information about the articles on the server, so Gnus need to 21158all information about the articles on the server, so Gnus need to
21159propagate the mark information to the server. 21159propagate the mark information to the server.
21160 21160
@@ -21171,7 +21171,7 @@ marks not mentioned) mark and removing (preserving the marks not
21171mentioned) marks. Mark is a list of marks; where each mark is a symbol. 21171mentioned) marks. Mark is a list of marks; where each mark is a symbol.
21172Currently used marks are @code{read}, @code{tick}, @code{reply}, 21172Currently used marks are @code{read}, @code{tick}, @code{reply},
21173@code{expire}, @code{killed}, @code{dormant}, @code{save}, 21173@code{expire}, @code{killed}, @code{dormant}, @code{save},
21174@code{download} and @code{unsend}, but your backend should, if possible, 21174@code{download} and @code{unsend}, but your back end should, if possible,
21175not limit itself to these. 21175not limit itself to these.
21176 21176
21177Given contradictory actions, the last action in the list should be the 21177Given contradictory actions, the last action in the list should be the
@@ -21194,10 +21194,10 @@ There should be no result data from this function.
21194 21194
21195@item (nnchoke-request-update-mark GROUP ARTICLE MARK) 21195@item (nnchoke-request-update-mark GROUP ARTICLE MARK)
21196 21196
21197If the user tries to set a mark that the backend doesn't like, this 21197If the user tries to set a mark that the back end doesn't like, this
21198function may change the mark. Gnus will use whatever this function 21198function may change the mark. Gnus will use whatever this function
21199returns as the mark for @var{article} instead of the original 21199returns as the mark for @var{article} instead of the original
21200@var{mark}. If the backend doesn't care, it must return the original 21200@var{mark}. If the back end doesn't care, it must return the original
21201@var{mark}, and not @code{nil} or any other type of garbage. 21201@var{mark}, and not @code{nil} or any other type of garbage.
21202 21202
21203The only use for this I can see is what @code{nnvirtual} does with 21203The only use for this I can see is what @code{nnvirtual} does with
@@ -21211,10 +21211,10 @@ There should be no result data from this function.
21211@item (nnchoke-request-scan &optional GROUP SERVER) 21211@item (nnchoke-request-scan &optional GROUP SERVER)
21212 21212
21213This function may be called at any time (by Gnus or anything else) to 21213This function may be called at any time (by Gnus or anything else) to
21214request that the backend check for incoming articles, in one way or 21214request that the back end check for incoming articles, in one way or
21215another. A mail backend will typically read the spool file or query the 21215another. A mail back end will typically read the spool file or query the
21216POP server when this function is invoked. The @var{group} doesn't have 21216POP server when this function is invoked. The @var{group} doesn't have
21217to be heeded---if the backend decides that it is too much work just 21217to be heeded---if the back end decides that it is too much work just
21218scanning for a single group, it may do a total scan of all groups. It 21218scanning for a single group, it may do a total scan of all groups. It
21219would be nice, however, to keep things local if that's practical. 21219would be nice, however, to keep things local if that's practical.
21220 21220
@@ -21260,7 +21260,7 @@ There should be no return data.
21260 21260
21261This function should run the expiry process on all articles in the 21261This function should run the expiry process on all articles in the
21262@var{articles} range (which is currently a simple list of article 21262@var{articles} range (which is currently a simple list of article
21263numbers.) It is left up to the backend to decide how old articles 21263numbers.) It is left up to the back end to decide how old articles
21264should be before they are removed by this function. If @var{force} is 21264should be before they are removed by this function. If @var{force} is
21265non-@code{nil}, all @var{articles} should be deleted, no matter how new 21265non-@code{nil}, all @var{articles} should be deleted, no matter how new
21266they are. 21266they are.
@@ -21338,9 +21338,9 @@ There should be no data returned.
21338 21338
21339@findex nnheader-report 21339@findex nnheader-report
21340@findex nnheader-get-report 21340@findex nnheader-get-report
21341The backends should use the function @code{nnheader-report} to report 21341The back ends should use the function @code{nnheader-report} to report
21342error conditions---they should not raise errors when they aren't able to 21342error conditions---they should not raise errors when they aren't able to
21343perform a request. The first argument to this function is the backend 21343perform a request. The first argument to this function is the back end
21344symbol, and the rest are interpreted as arguments to @code{format} if 21344symbol, and the rest are interpreted as arguments to @code{format} if
21345there are multiple of them, or just a string if there is one of them. 21345there are multiple of them, or just a string if there is one of them.
21346This function must always returns @code{nil}. 21346This function must always returns @code{nil}.
@@ -21353,18 +21353,18 @@ This function must always returns @code{nil}.
21353 21353
21354Gnus, in turn, will call @code{nnheader-get-report} when it gets a 21354Gnus, in turn, will call @code{nnheader-get-report} when it gets a
21355@code{nil} back from a server, and this function returns the most 21355@code{nil} back from a server, and this function returns the most
21356recently reported message for the backend in question. This function 21356recently reported message for the back end in question. This function
21357takes one argument---the server symbol. 21357takes one argument---the server symbol.
21358 21358
21359Internally, these functions access @var{backend}@code{-status-string}, 21359Internally, these functions access @var{back-end}@code{-status-string},
21360so the @code{nnchoke} backend will have its error message stored in 21360so the @code{nnchoke} back end will have its error message stored in
21361@code{nnchoke-status-string}. 21361@code{nnchoke-status-string}.
21362 21362
21363 21363
21364@node Writing New Backends 21364@node Writing New Back Ends
21365@subsubsection Writing New Backends 21365@subsubsection Writing New Back Ends
21366 21366
21367Many backends are quite similar. @code{nnml} is just like 21367Many back ends are quite similar. @code{nnml} is just like
21368@code{nnspool}, but it allows you to edit the articles on the server. 21368@code{nnspool}, but it allows you to edit the articles on the server.
21369@code{nnmh} is just like @code{nnml}, but it doesn't use an active file, 21369@code{nnmh} is just like @code{nnml}, but it doesn't use an active file,
21370and it doesn't maintain overview databases. @code{nndir} is just like 21370and it doesn't maintain overview databases. @code{nndir} is just like
@@ -21372,14 +21372,14 @@ and it doesn't maintain overview databases. @code{nndir} is just like
21372editing articles. 21372editing articles.
21373 21373
21374It would make sense if it were possible to ``inherit'' functions from 21374It would make sense if it were possible to ``inherit'' functions from
21375backends when writing new backends. And, indeed, you can do that if you 21375back ends when writing new back ends. And, indeed, you can do that if you
21376want to. (You don't have to if you don't want to, of course.) 21376want to. (You don't have to if you don't want to, of course.)
21377 21377
21378All the backends declare their public variables and functions by using a 21378All the back ends declare their public variables and functions by using a
21379package called @code{nnoo}. 21379package called @code{nnoo}.
21380 21380
21381To inherit functions from other backends (and allow other backends to 21381To inherit functions from other back ends (and allow other back ends to
21382inherit functions from the current backend), you should use the 21382inherit functions from the current back end), you should use the
21383following macros: 21383following macros:
21384 21384
21385@table @code 21385@table @code
@@ -21402,8 +21402,8 @@ a public server variable. Most state-oriented variables should be
21402declared with @code{defvoo} instead of @code{defvar}. 21402declared with @code{defvoo} instead of @code{defvar}.
21403 21403
21404In addition to the normal @code{defvar} parameters, it takes a list of 21404In addition to the normal @code{defvar} parameters, it takes a list of
21405variables in the parent backends to map the variable to when executing 21405variables in the parent back ends to map the variable to when executing
21406a function in those backends. 21406a function in those back ends.
21407 21407
21408@lisp 21408@lisp
21409(defvoo nndir-directory nil 21409(defvoo nndir-directory nil
@@ -21416,7 +21416,7 @@ This means that @code{nnml-current-directory} will be set to
21416of @code{nndir}. (The same with @code{nnmh}.) 21416of @code{nndir}. (The same with @code{nnmh}.)
21417 21417
21418@item nnoo-define-basics 21418@item nnoo-define-basics
21419This macro defines some common functions that almost all backends should 21419This macro defines some common functions that almost all back ends should
21420have. 21420have.
21421 21421
21422@example 21422@example
@@ -21426,11 +21426,11 @@ have.
21426@item deffoo 21426@item deffoo
21427This macro is just like @code{defun} and takes the same parameters. In 21427This macro is just like @code{defun} and takes the same parameters. In
21428addition to doing the normal @code{defun} things, it registers the 21428addition to doing the normal @code{defun} things, it registers the
21429function as being public so that other backends can inherit it. 21429function as being public so that other back ends can inherit it.
21430 21430
21431@item nnoo-map-functions 21431@item nnoo-map-functions
21432This macro allows mapping of functions from the current backend to 21432This macro allows mapping of functions from the current back end to
21433functions from the parent backends. 21433functions from the parent back ends.
21434 21434
21435@example 21435@example
21436(nnoo-map-functions nndir 21436(nnoo-map-functions nndir
@@ -21444,7 +21444,7 @@ third, and fourth parameters will be passed on to
21444value of @code{nndir-current-group}. 21444value of @code{nndir-current-group}.
21445 21445
21446@item nnoo-import 21446@item nnoo-import
21447This macro allows importing functions from backends. It should be the 21447This macro allows importing functions from back ends. It should be the
21448last thing in the source file, since it will only define functions that 21448last thing in the source file, since it will only define functions that
21449haven't already been defined. 21449haven't already been defined.
21450 21450
@@ -21463,7 +21463,7 @@ defined now.
21463 21463
21464@end table 21464@end table
21465 21465
21466Below is a slightly shortened version of the @code{nndir} backend. 21466Below is a slightly shortened version of the @code{nndir} back end.
21467 21467
21468@lisp 21468@lisp
21469;;; nndir.el --- single directory newsgroup access for Gnus 21469;;; nndir.el --- single directory newsgroup access for Gnus
@@ -21532,15 +21532,15 @@ Below is a slightly shortened version of the @code{nndir} backend.
21532@end lisp 21532@end lisp
21533 21533
21534 21534
21535@node Hooking New Backends Into Gnus 21535@node Hooking New Back Ends Into Gnus
21536@subsubsection Hooking New Backends Into Gnus 21536@subsubsection Hooking New Back Ends Into Gnus
21537 21537
21538@vindex gnus-valid-select-methods 21538@vindex gnus-valid-select-methods
21539Having Gnus start using your new backend is rather easy---you just 21539Having Gnus start using your new back end is rather easy---you just
21540declare it with the @code{gnus-declare-backend} functions. This will 21540declare it with the @code{gnus-declare-backend} functions. This will
21541enter the backend into the @code{gnus-valid-select-methods} variable. 21541enter the back end into the @code{gnus-valid-select-methods} variable.
21542 21542
21543@code{gnus-declare-backend} takes two parameters---the backend name and 21543@code{gnus-declare-backend} takes two parameters---the back end name and
21544an arbitrary number of @dfn{abilities}. 21544an arbitrary number of @dfn{abilities}.
21545 21545
21546Here's an example: 21546Here's an example:
@@ -21553,32 +21553,32 @@ The abilities can be:
21553 21553
21554@table @code 21554@table @code
21555@item mail 21555@item mail
21556This is a mailish backend---followups should (probably) go via mail. 21556This is a mailish back end---followups should (probably) go via mail.
21557@item post 21557@item post
21558This is a newsish backend---followups should (probably) go via news. 21558This is a newsish back end---followups should (probably) go via news.
21559@item post-mail 21559@item post-mail
21560This backend supports both mail and news. 21560This back end supports both mail and news.
21561@item none 21561@item none
21562This is neither a post nor mail backend---it's something completely 21562This is neither a post nor mail back end---it's something completely
21563different. 21563different.
21564@item respool 21564@item respool
21565It supports respooling---or rather, it is able to modify its source 21565It supports respooling---or rather, it is able to modify its source
21566articles and groups. 21566articles and groups.
21567@item address 21567@item address
21568The name of the server should be in the virtual server name. This is 21568The name of the server should be in the virtual server name. This is
21569true for almost all backends. 21569true for almost all back ends.
21570@item prompt-address 21570@item prompt-address
21571The user should be prompted for an address when doing commands like 21571The user should be prompted for an address when doing commands like
21572@kbd{B} in the group buffer. This is true for backends like 21572@kbd{B} in the group buffer. This is true for back ends like
21573@code{nntp}, but not @code{nnmbox}, for instance. 21573@code{nntp}, but not @code{nnmbox}, for instance.
21574@end table 21574@end table
21575 21575
21576 21576
21577@node Mail-like Backends 21577@node Mail-like Back Ends
21578@subsubsection Mail-like Backends 21578@subsubsection Mail-like Back Ends
21579 21579
21580One of the things that separate the mail backends from the rest of the 21580One of the things that separate the mail back ends from the rest of the
21581backends is the heavy dependence by the mail backends on common 21581back ends is the heavy dependence by the mail back ends on common
21582functions in @file{nnmail.el}. For instance, here's the definition of 21582functions in @file{nnmail.el}. For instance, here's the definition of
21583@code{nnml-request-scan}: 21583@code{nnml-request-scan}:
21584 21584
@@ -21596,7 +21596,7 @@ This function takes four parameters.
21596 21596
21597@table @var 21597@table @var
21598@item method 21598@item method
21599This should be a symbol to designate which backend is responsible for 21599This should be a symbol to designate which back end is responsible for
21600the call. 21600the call.
21601 21601
21602@item exit-function 21602@item exit-function
@@ -21610,15 +21610,15 @@ This optional argument should be a group name if the splitting is to be
21610performed for one group only. 21610performed for one group only.
21611@end table 21611@end table
21612 21612
21613@code{nnmail-get-new-mail} will call @var{backend}@code{-save-mail} to 21613@code{nnmail-get-new-mail} will call @var{back-end}@code{-save-mail} to
21614save each article. @var{backend}@code{-active-number} will be called to 21614save each article. @var{back-end}@code{-active-number} will be called to
21615find the article number assigned to this article. 21615find the article number assigned to this article.
21616 21616
21617The function also uses the following variables: 21617The function also uses the following variables:
21618@var{backend}@code{-get-new-mail} (to see whether to get new mail for 21618@var{back-end}@code{-get-new-mail} (to see whether to get new mail for
21619this backend); and @var{backend}@code{-group-alist} and 21619this back end); and @var{back-end}@code{-group-alist} and
21620@var{backend}@code{-active-file} to generate the new active file. 21620@var{back-end}@code{-active-file} to generate the new active file.
21621@var{backend}@code{-group-alist} should be a group-active alist, like 21621@var{back-end}@code{-group-alist} should be a group-active alist, like
21622this: 21622this:
21623 21623
21624@example 21624@example