[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Traditionally, a server is a machine or a piece of software that one connects to, and then requests information from. Gnus does not connect directly to any real servers, but does all transactions through one back end or other. But that’s just putting one layer more between the actual media and Gnus, so we might just as well say that each back end represents a virtual server.
For instance, the nntp
back end may be used to connect to several
different actual NNTP servers, or, perhaps, to many different ports
on the same actual NNTP server. You tell Gnus which back end to
use, and what parameters to set by specifying a select method.
These select method specifications can sometimes become quite complicated—say, for instance, that you want to read from the NNTP server ‘news.funet.fi’ on port number 13, which hangs if queried for NOV headers and has a buggy select. Ahem. Anyway, if you had to specify that for each group that used this server, that would be too much work, so Gnus offers a way of naming select methods, which is what you do in the server buffer.
To enter the server buffer, use the ^
(gnus-group-enter-server-mode
) command in the group buffer.
6.1.1 Server Buffer Format | You can customize the look of this buffer. | |
6.1.2 Server Commands | Commands to manipulate servers. | |
6.1.3 Example Methods | Examples server specifications. | |
6.1.4 Creating a Virtual Server | An example session. | |
6.1.5 Server Variables | Which variables to set. | |
6.1.6 Servers and Methods | You can use server names as select methods. | |
6.1.7 Unavailable Servers | Some servers you try to contact may be down. |
gnus-server-mode-hook
is run when creating the server buffer.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
You can change the look of the server buffer lines by changing the
gnus-server-line-format
variable. This is a format
-like
variable, with some simple extensions:
How the news is fetched—the back end name.
The name of this server.
Where the news is to be fetched from—the address.
The opened/closed/denied status of the server.
Whether this server is agentized.
The mode line can also be customized by using the
gnus-server-mode-line-format
variable (see section Mode Line Formatting). The following specs are understood:
Server name.
Server method.
Also see section Formatting Variables.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The key v is reserved for users. You can bind it to some command or better use it as a prefix key.
Add a new server (gnus-server-add-server
).
Edit a server (gnus-server-edit-server
).
Show the definition of a server (gnus-server-show-server
).
Browse the current server (gnus-server-read-server
).
Return to the group buffer (gnus-server-exit
).
Kill the current server (gnus-server-kill-server
).
Yank the previously killed server (gnus-server-yank-server
).
Copy the current server (gnus-server-copy-server
).
List all servers (gnus-server-list-servers
).
Request that the server scan its sources for new articles
(gnus-server-scan-server
). This is mainly sensible with mail
servers.
Request that the server regenerate all its data structures
(gnus-server-regenerate-server
). This can be useful if you have
a mail back end that has gotten out of sync.
Compact all groups in the server under point
(gnus-server-compact-server
). Currently implemented only in
nnml (see section Mail Spool). This removes gaps between article numbers,
hence getting a correct total article count.
Some more commands for closing, disabling, and re-opening servers are listed in Unavailable Servers.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Most select methods are pretty simple and self-explanatory:
(nntp "news.funet.fi") |
Reading directly from the spool is even simpler:
(nnspool "") |
As you can see, the first element in a select method is the name of the back end, and the second is the address, or name, if you will.
After these two elements, there may be an arbitrary number of
(variable form)
pairs.
To go back to the first example—imagine that you want to read from port 15 on that machine. This is what the select method should look like then:
(nntp "news.funet.fi" (nntp-port-number 15)) |
You should read the documentation to each back end to find out what
variables are relevant, but here’s an nnmh
example:
nnmh
is a mail back end that reads a spool-like structure. Say
you have two structures that you wish to access: One is your private
mail spool, and the other is a public one. Here’s the possible spec for
your private mail:
(nnmh "private" (nnmh-directory "~/private/mail/")) |
(This server is then called ‘private’, but you may have guessed that.)
Here’s the method for a public spool:
(nnmh "public" (nnmh-directory "/usr/information/spool/") (nnmh-get-new-mail nil)) |
If you are behind a firewall and only have access to the NNTP
server from the firewall machine, you can instruct Gnus to rlogin
on the firewall machine and connect with
netcat from there to the
NNTP server.
Doing this can be rather fiddly, but your virtual server definition
should probably look something like this:
(nntp "firewall" (nntp-open-connection-function nntp-open-via-rlogin-and-netcat) (nntp-via-address "the.firewall.machine") (nntp-address "the.real.nntp.host")) |
If you want to use the wonderful ssh
program to provide a
compressed connection over the modem line, you could add the following
configuration to the example above:
(nntp-via-rlogin-command "ssh") |
See also nntp-via-rlogin-command-switches
. Here’s an example for
an indirect connection:
(setq gnus-select-method '(nntp "indirect" (nntp-address "news.server.example") (nntp-via-user-name "intermediate_user_name") (nntp-via-address "intermediate.host.example") (nntp-via-rlogin-command "ssh") (nntp-via-rlogin-command-switches ("-C")) (nntp-open-connection-function nntp-open-via-rlogin-and-netcat))) |
This means that you have to have set up ssh-agent
correctly to
provide automatic authorization, of course.
If you’re behind a firewall, but have direct access to the outside world through a wrapper command like "runsocks", you could open a socksified netcat connection to the news server as follows:
(nntp "outside" (nntp-pre-command "runsocks") (nntp-open-connection-function nntp-open-netcat-stream) (nntp-address "the.news.server")) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If you’re saving lots of articles in the cache by using persistent articles, you may want to create a virtual server to read the cache.
First you need to add a new server. The a command does that. It
would probably be best to use nnml
to read the cache. You
could also use nnspool
or nnmh
, though.
Type a nnml RET cache RET.
You should now have a brand new nnml
virtual server called
‘cache’. You now need to edit it to have the right definitions.
Type e to edit the server. You’ll be entered into a buffer that
will contain the following:
(nnml "cache") |
Change that to:
(nnml "cache" (nnml-directory "~/News/cache/") (nnml-active-file "~/News/cache/active")) |
Type C-c C-c to return to the server buffer. If you now press RET over this virtual server, you should be entered into a browse buffer, and you should be able to enter any of the groups displayed.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
One sticky point when defining variables (both on back ends and in Emacs in general) is that some variables are typically initialized from other variables when the definition of the variables is being loaded. If you change the “base” variable after the variables have been loaded, you won’t change the “derived” variables.
This typically affects directory and file variables. For instance,
nnml-directory
is ‘~/Mail/’ by default, and all nnml
directory variables are initialized from that variable, so
nnml-active-file
will be ‘~/Mail/active’. If you define a
new virtual nnml
server, it will not suffice to set just
nnml-directory
—you have to explicitly set all the file
variables to be what you want them to be. For a complete list of
variables for each back end, see each back end’s section later in this
manual, but here’s an example nnml
definition:
(nnml "public" (nnml-directory "~/my-mail/") (nnml-active-file "~/my-mail/active") (nnml-newsgroups-file "~/my-mail/newsgroups")) |
Server variables are often called server parameters.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Wherever you would normally use a select method
(e.g., gnus-secondary-select-method
, in the group select method,
when browsing a foreign server) you can use a virtual server name
instead. This could potentially save lots of typing. And it’s nice all
over.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If a server seems to be unreachable, Gnus will mark that server as
denied
. That means that any subsequent attempt to make contact
with that server will just be ignored. “It can’t be opened,” Gnus
will tell you, without making the least effort to see whether that is
actually the case or not.
That might seem quite naughty, but it does make sense most of the time. Let’s say you have 10 groups subscribed to on server ‘nephelococcygia.com’. This server is located somewhere quite far away from you and the machine is quite slow, so it takes 1 minute just to find out that it refuses connection to you today. If Gnus were to attempt to do that 10 times, you’d be quite annoyed, so Gnus won’t attempt to do that. Once it has gotten a single “connection refused”, it will regard that server as “down”.
So, what happens if the machine was only feeling unwell temporarily? How do you test to see whether the machine has come up again?
You jump to the server buffer (see section Server Buffer) and poke it with the following commands:
Try to establish connection to the server on the current line
(gnus-server-open-server
).
Close the connection (if any) to the server
(gnus-server-close-server
).
Mark the current server as unreachable
(gnus-server-deny-server
).
Open the connections to all servers in the buffer
(gnus-server-open-all-servers
).
Close the connections to all servers in the buffer
(gnus-server-close-all-servers
).
Remove all marks to whether Gnus was denied connection from any servers
(gnus-server-remove-denials
).
Copy a server and give it a new name
(gnus-server-copy-server
). This can be useful if you have a
complex method definition, and want to use the same definition towards
a different (physical) server.
Set server status to offline (gnus-server-offline-server
).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated on January 25, 2015 using texi2html 1.82.