This is the Gnus Frequently Asked Questions list.
Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented as a part of Emacs. It's been around in some form for over 6 years now, and has been distributed as a standard part of Emacs for much of that time. Gnus 5 is the latest (and greatest) incarnation. The original version was called GNUS, and was written by Masanobu UMEDA. When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus.
Its biggest strength is the fact that it is extremely customizable. It is somewhat intimidating at first glance, but most of the complexity can be ignored until you're ready to take advantage of it. If you receive a reasonable volume of e-mail (you're on various mailing lists), or you would like to read high-volume mailing lists but cannot keep up with them, then you definitely want to investigate Gnus for reading mail.
This FAQ is maintained by Justin Sheehy. I would like to thank Steve Baur and Per Abrahamsen for doing a wonderful job with this FAQ before me.
If you have a Web browser, the official hypertext version is at: <URL:http://www.ccs.neu.edu/software/contrib/gnus/> . This version is much nicer than the unofficial hypertext versions that are archived at Utrecht, Oxford, Smart Pages, Ohio State, and other FAQ archives. See the resources question below if you want information on obtaining it in another format.
The information contained here was compiled with the assistance of the Gnus development mailing list, and any errors or misprints are my (Justin Sheehy's) fault, sorry.
This file was last modified on Jun 25, 2001.
gnus-author-copy
?
As of this posting, the latest Gnus version is 5.8.2. Gnus 5.8 should still be considered beta at this time, but is in feature-freeze and bugs are being actively fixed. Download your copy today.
A warning for upgrading users, however: Due to the many changes in 5.8 (especially mail sources and MIME) your dotfiles may not be forward-compatible. Please read the documentation before you upgrade.
Gnus 5.0.13 is included in the official distribution of Emacs 19.30/19.31 and has a version number of 5.1. Do not attempt to use this release of Gnus with other Emacsen, as the necessary required support has been stripped out of it. Gnus 5.2.38 aka Gnus 5.3 is included in Emacs 19.32 and all later versions of Emacs 19.x. Gnus 5.5 is shipped with Emacs 20.x.
Gnus 5.2.25 is included standard with XEmacs 19.14, Gnus 5.4.37 is included with XEmacs 19.15p7, Gnus 5.5 is included with XEmacs 20.4, and Gnus 5.6.45 is packaged alongside XEmacs 21.1.7.
Or, get it from a mirror in South America: <URL:ftp://ftp.unicamp.br/pub/news.software/gnus/> or Australia: <URL:ftp://ftp.monash.edu.au/pub/gnus/>.
Prior to Gnus 5.2, at least GNU Emacs 19.28, or XEmacs 19.12 was recommended. GNU Emacs 19.25 has been reported to work under certain circumstances, but it doesn't officially work on it. 19.27 has also been reported to work.
Because of Gnus 5.2's use of Common Lisp features present only in late-model emacsen, it will only work with Emacs 19.30 or later, and XEmacs 19.13 or later.
Emacs 20.2 has many show-stopping bugs. If you are using Emacs 20.2, upgrade to 20.3.
Gnus 5.4 requires emacsen at least as recent as Emacs 19.33 or XEmacs 19.14.
Gnus has been reported to work under VMS, OS/2, and Microsoft Windows NT 3.51, as well as Unix.
OS/2 requires
(setq gnus-score-file-suffix "score") (setq gnus-adaptive-file-suffix "adapt")in the user's .gnus.
Ed Mccreary <forge@neosoft.com> writes:
[For Microsoft Windows NT]
Be sure to grab the nttcp.exe file needed to perform the
winsock communication and configure emacs to use it instead
of the default tcp. You will also need to put
(setq tcp-program-name "nttcp")in your _emacs file.
Jack Vinson <jvinson@cheux.ecs.umass.edu> writes:
Actually, any TCP program will work.
I have tcp.exe from the people who
are doing win32 ports of Gnu software. I found it at
<URL:ftp://microlib.cc.utexas.edu/microlib/nt/gnu/gnubin.tar.Z>.
Be warned that this is a large (7mb) archive of all sorts of stuff,
including (for some reason) all the e-lisp files you will ever want. I
just downloaded it and extracted the functions I wanted.
Ron Forrester <rjf@infograph.com> writes:
With the release of GNU Emacs 19.31, Microsoft Windows '95 & NT users no
longer need nttcp.exe as Emacs now has open-network-stream built in.
Jason L Tibbitts III <tibbs@hpc.uh.edu> writes:
Archives of the Ding mailing list are easily accessible by using
gnus-group-make-archive-group, by default bound to G a in the Group
buffer. This presents you with a group containing the 500 most recent
articles from the mailing list. When called with a prefix argument, as in
C-u G a, the entire (rather huge) archive is fetched. The archives
are made available via FTP by Jason Tibbitts (tibbs@uh.edu); complain to him
about problems with access. The magic of accessing the archives is
provided by Gnus.
This mailing list is mirrored on the World Wide Web at
<URL:http://www.gnus.org/list-archives/ding/>.
There's a pretty handy search tool to help you find what you're
looking for.
There is a bidirectional Usenet gateway to the mailing list at: <URL:news://sunsite.auc.dk/emacs.ding>.
Gnus has a home World Wide Web page at
<URL:http://www.gnus.org/>.
There is a Gnus info page at
<URL:http://www.miranova.com/~steve/gnus-local.html>.
Gnus has a write up in the comp.windows.x.apps FAQ at: <URL:http://www.ee.ryerson.ca:8080/~elf/xapps/Q-III.html>.
The Gnus manual is also available on the World Wide Web.
To find the mirror closest to you, go to:
<URL:http://www.gnus.org/manual.html>.
PostScript copies of the Gnus Reference card are available from
<URL:ftp://ftp.cs.ualberta.ca/pub/oolog/gnus/>. They are mirrored at
<URL:http://www.thphy.uni-duesseldorf.de/~gnu/doc/gnusref/>
in Germany.
An online version of the Gnus FAQ is available at
<URL:http://www.ccs.neu.edu/software/contrib/gnus/>. Off-line formats are also available:
ASCII: <URL:ftp://gnus.xemacs.org/pub/gnus/gnus-faq>.
PostScript: <URL:ftp://gnus.xemacs.org/pub/gnus/gnus-faq.ps>
HOWTOs, Tips & Tricks forums, Sample Configurations, Screenshot Galleries and tons of angry fruitsalad can be found at <URL:http://my.gnus.org/>. This site is also the home of an excellent Gnus tutorial.
Ben Wing <wing@666.com> writes :
I wonder if you're hitting the infamous libresolv problem.
The basic problem is that under SunOS you can compile either
with DNS or NIS name lookup libraries but not both. Try
substituting the IP address and see if that works; if so, you
need to download the sources and recompile.
Note:Do not use TM with Gnus 5.8.x or later. These versions of Gnus have native MIME support and should not try to use an external MIME library.
It can be obtained from
<URL:ftp://ftp.jaist.ac.jp/pub/GNU/elisp/mime/>.
It has mirrors at:
<URL:ftp://ftp.nis.co.jp/pub/gnu/emacs-lisp/tm/> (Japan)
<URL:ftp://ftp.nisiq.net/pub/gnu/emacs-lisp/tm/> (USA)
<URL:ftp://gnus.xemacs.org/pub/mime/jaist.ac.jp/> (USA)
<URL:ftp://ftp.unicamp.br/pub/mail/mime/tm/> (Brasil)
<URL:ftp://ftp.th-darmstadt.de/pub/editors/GNU-Emacs/lisp/mime/> (Germany)
<URL:ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib/> (Germany).
To use with Gnus add the line
(load "mime-setup")to your .emacs file before you initialize Gnus.
Alternately, you can use gnus-setup.el to activate tm, bbdb, supercite, and other packages. See Question #2.12 for details.
If you are using an XEmacs version of 19.15 or newer, you do not need tm as it is now included standard with XEmacs.
Pranav Kumar Tiwari <pktiwari@eos.ncsu.edu> writes :
I posted the same query recently and I got an answer to it. I am going
to repeat the answer. What you need is a newer version of gnus,
version 5.0.4+. I am using 5.0.12 and it works fine with me with the
following settings:
(setq gnus-check-new-newsgroups nil gnus-read-active-file 'some gnus-nov-is-evil nil gnus-select-method '(nntp gnus-nntp-server))Francesco Potort́ <pot@cnuce.cnr.it> writes :
message-mode
. All your hooks must change to reflect this.
You can either use gnus-setup.el provided with Gnus 5.2
(please see Q2.12 for details), or you can make
the changes by hand.
In particular, mail-mode
, news-reply-mode
, and
news-mode
have all been replaced with message-mode
.
(setq gnus-select-method '(nntp "news.somewhere.edu"))
(setq gnus-select-method '(nnspool ""))
If you tap * on an article, you have made it persistent. Nothing you ever do, except using the M-* command, will remove it from the cache where it's stored.
If you mark an article with the E mark, (ie., made it expirable), it will be deleted by the mail backend when it reaches a certain age. The persistent copy of the message will not be touched.
The two terms are not related.
If you are using an earlier version of Gnus, there are some other packages that you can use with Gnus. A link to Tools for MIME can be found in the other packages question.
Note: TM will not work in any version of Gnus that has native MIME support.
This is Gnus, so there are a number of ways of doing this. You can use the built-in commands to do this. There are the ``F'' and ``R'' keys from the summary buffer which automatically include the article being responded to. These commands are also selectable as Followup and Yank and Reply and Yank in the Post menu.
C-c C-y grabs the previous message and prefixes each line with `message-indentation-spaces' spaces or `message-yank-prefix' if that is non-nil, unless you have set your own `message-cite-function', which will be called to do the job.
You might also consider the Supercite package, which allows for pretty arbitrarily complex quoting styles. Some people love it, some people hate it.
If you decide to use Supercite, you need to modify more than just `mail-citation-hook'. You need something similar to the following:
(autoload 'sc-cite-original "supercite" "Supercite 3.1" t) (setq message-cite-function 'sc-cite-original)
(("Subject" ("^\\(Re: \\)?[^a-z]*$" -200 nil R)))
(("xref" ("alt.fan.oj-simpson" -1000 nil s)) ("subject" ("\\<\\(make\\|fast\\|big\\)\\s-*\\(money\\|cash\\|bucks?\\)\\>" -1000 nil r) ("$$$$" -1000 nil s)))
(("subject" ;; CAPS OF THE WORLD, UNITE ("^..[^a-z]+$" -1 nil R) ;; $$$ Make Money $$$ (Try work) ("$" -1 nil s) ;; I'm important! And I have exclamation marks to prove it! ("!" -1 nil s)))
( (read-only t) ("subject" ;; ALL CAPS SUBJECTS ("^\\([Rr][Ee]: +\\)?[^a-z]+$" -1 nil R) ;; $$$ Make Money $$$ ("$$" -10 nil s) ;; Empty subjects are worthless! ("^ *\\([(<]none[>)]\\|(no subject\\( given\\)?)\\)? *$" -10 nil r) ;; Sometimes interesting announces occur! ("ANN?OU?NC\\(E\\|ING\\)" +10 nil r) ;; Some people think they're on mailing lists ("\\(un\\)?sub?scribe" -100 nil r) ;; Stop Micro$oft NOW!! ("\\(m\\(icro\\)?[s$]\\(oft\\|lot\\)?-?\\)?wind?\\(ows\\|aube\\|oze\\)?[- ]*\\('?95\\|NT\\|3[.]1\\|32\\)" -1001 nil r) ;; I've nothing to buy ("\\(for\\|4\\)[- ]*sale" -100 nil r) ;; SELF-DISCIPLINED people ("\\[[^a-z0-9 \t\n][^a-z0-9 \t\n]\\]" +100 nil r) ) ("from" ;; To keep track of posters from my site (".dgac.fr" +1000 nil s)) ("followup" ;; Keep track of answers to my posts ("boubaker" +1000 nil s)) ("lines" ;; Some people have really nothing to say!! (1 -10 nil <=)) (mark -100) (expunge -1000) )
(("subject" ;; No junk mail please! ("please ignore" -500 nil s) ("test" -500 nil e)) )
("xref" ;; the more cross posting, the exponentially worse the article ("^xref: \\S-+ \\S-+ \\S-+ \\S-+" -1 nil r) ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -2 nil r) ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -4 nil r) ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -8 nil r) ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -16 nil r) ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -32 nil r) ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -64 nil r) ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -128 nil r) ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -256 nil r) ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -512 nil r))Or see <URL:http://www.cs.ubc.ca/spider/edmonds/usenet/gnus/SCORE> which also includes pointers to my SMEGHEADS and BLACKLIST files.
("from" ("Law Doctor" -10000 nil s) ("Manus" -10000 nil s) ("Grubor" -10000 nil s) ("DrG" -10000 nil s))
(("subject" ("windows" -100) ("dos" -100)) (orphan -200) (mark-and-expunge -100))
You should set your browse-url-browser-function:
(setq browse-url-browser-function 'browse-url-netscape)
You can increase the score of all articles written by Larry Wall in comp.lang.perl by entering the group, find an article written by Larry Wall, and type I A (Increase Author) or even better I a s p (Increase author by substring permanently). You will be prompted with the content of the From header for the current article, so you can edit trim string down to just Larry Wall if you want.
(defun my-signature () (cond ((string-match "ding" gnus-newsgroup-name) "Signature for Ding") ((string-match "^nnml:" gnus-newsgroup-name) "Signature for mail groups") (t "Default signature"))) (setq message-signature 'my-signature)You get the idea ...
Jack Vinson <jvinson@cheux.ecs.umass.edu> writes:
For multiple signature files, I advise the message-insert-signature
function to set message-signature-file to a
random file from my signature
directory: (I have files that look like sig1 sig2 etc in that
directory).
;; random insertion of .signature file ;; Thanks to Glenn R Coombs: glenn@prl.philips.co.uk (defvar grc-signature-dir "~/.sig/") (defvar grc-signature-base "sig") (defadvice message-insert-signature (before random-mail-sig-ag act comp) "Change the value of message-signature-file each time `message-insert-signature' is called." (let ((files (file-name-all-completions grc-signature-base (expand-file-name grc-signature-dir)))) (if files (let ((file (nth (random (length files)) files))) (setq message-signature-file (concat grc-signature-dir file)) ))))
Ralph Schleicher <rs@purple.UL.BaWue.DE> writes:
Here's a version which will add a fortune cookie to your .signature.
(setq message-signature 'fortune) (defvar fortune-program nil "*Program used to generate epigrams, default \"fortune\".") (defvar fortune-switches nil "*List of extra arguments when `fortune-program' is invoked.") (defun fortune (&optional long-p) "Generate a random epigram. An optional prefix argument generates a long epigram. The epigram is inserted at point if called interactively." (interactive "*P") (let ((fortune-buffer (generate-new-buffer " fortune")) (fortune-string "Have an adequate day.")) (unwind-protect (save-excursion (set-buffer fortune-buffer) (apply 'call-process (append (list (or fortune-program "fortune") nil t nil) fortune-switches (list (if long-p "-l" "-s")))) (skip-chars-backward "\n\t ") (setq fortune-string (buffer-substring (point-min) (point)))) (kill-buffer fortune-buffer)) (if (interactive-p) (insert fortune-string)) fortune-string))
Bjorn Borud <borud@guardian.no> offers:
(setq message-borud-newsgroup-signature '( ("^no\\.test$" . "~/.no.test-signatur") ("^no\\.irc$" . "~/.no.irc-signature") ("^no\\.general" . "~/.no.general-signature") ("^no\\.alt\\.frust" . "~/.no.alt.frustrasjoner-signature") ("^no\\.alt\\." . "~/.no.alt-signature") ("www" . "~/.www-signature") ("^no\\." . "~/.no-signature") ("^alt\\.irc" . "~/.alt.irc-signature") ("^alt\\." . "~/.alt-signature") ("^comp\\." . "~/.comp-signature"))) (setq message-borud-default-signature (expand-file-name "~/.signature")) (defun message-borud-signature (group) "Find the signature file that applies to the newsgroup specified by GROUP. If this file is not found return the value of message-borud-default-signature" (let ((tmp message-borud-newsgroup-signature)) (while (and tmp (not (string-match (caar tmp) group))) (setq tmp (cdr tmp))) (if tmp (cdar tmp) message-borud-default-signature))) ;;; Standard stuff (setq message-signature (lambda () (progn (let ((sigfile (message-borud-signature gnus-newsgroup-name))) (if (file-exists-p sigfile) (save-excursion (progn (goto-char (point-max)) (insert "\n\n-- \n") (insert-file-contents sigfile) (goto-char (point-min)))))))))
The solution: do not allow periods in the pseudo-random Incoming file names.
Editor's note: Similar behavior has been observed with jka-compr as well.
This problem has been fixed in Gnus 5.4.
Steve Baur <steve@miranova.com> writes:
You're probably not using gnus-setup.el, but you should. So long as
you have sgnus as a subdirectory of site-lisp in the standard location
all you need to do put in your .emacs is:
(setq gnus-use-september t) (load "/usr/local/share/emacs/site-lisp/sgnus/lisp/gnus-setup.el")and everything is set up for you.
gnus-setup also handles integration with tm, bbdb, mailcrypt, vm, and mh-e. Set these variable to choose exactly what you want:
The following variables are used at present for News:
gnus-article-save-directory
gnus-kill-files-directory
Mark Eichin <eichin@cygnus.com> writes
(setq gnus-startup-file "~/.mit-newsrc") (setq nnml-directory "~/MITmail/") (setq nnmail-crash-box "~/.mit-gnus-crash-box") (setq nnml-newsgroups-file (concat (file-name-as-directory nnml-directory) "newsgroups")) (setq gnus-message-archive-method '(nnfolder "archive" (nnfolder-directory "~/MITmail/archive/") (nnfolder-active-file "~/MITmail/archive/active") (nnfolder-get-new-mail nil) (nnfolder-inhibit-expiry t)))but that's only for mail, not news.
An additional note: Be careful if you set variables such as nnfolder-directory in your ~/.emacs and then change them again at a later date. Server parameters are stored in your ~/.newsrc.eld and will need to be changed there as well.
Gnus colors don't look quite right on my background, and it'll take a bit of fiddling to get it right.
Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no> writes:
It's quite difficult to come up with a set of colors that work with
the entire range of dark backgrounds. The current defaults seem to
work quite well on very dark backgrounds (and very light
backgrounds), but if you use mid-range background colours, you have to
do some fiddling.
Per Abrahamsen <abraham@dina.kvl.dk> writes:
No. If you think it serves a useful purpose for the user to change
the value of the Sender field, then you do not understand the purpose
of that field.
The Sender field contains the following information: The user has customized the from address. Here is the original, uncustomized value. Thus, if you customize the Sender field in any way, it will be wrong.
Addendum by Justin Sheehy:
Per's advice is true for all systems where the (user-login-name) and
(system-name) functions accurately describe your identity and host in such
a manner that they can be combined to form a meaningful address that
could be used to reach you. Regrettably, this is not true in all cases.
Gnus attempts to follow mail and news RFCs by adding a Sender header when it detects that you are sending a message with a From address that is different from what it has guessed your local email address to be.
There are two situations in which this guess will be incorrect.
(user-login-name)@(system-name)
should be a valid email
address for you, but Gnus is creating an invalid Sender field.
In this case, your system is most likely misconfigured. You should not change your Gnus configuration. Instead, track down the configuration problem and fix it.
(user-login-name)@(system-name)
does not produce a value
that is meaningful in any way. This is the case for many windows
users and users with NAT-based home networks, for example.
If this is so, then you should override the functions (user-login-name) and (system-name) in your ~/.emacs file.
Take a look at http://www.interhack.net/pubs/munging-harmful/ for just a couple of the reasons not to munge your address.
Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no> writes:
Set user-mail-address to gail.gurman@sybase.com or
mail-host-address to sybase.com.
Andre Deparade <deparade@bartok.informatik.rwth-aachen.de> asked:
What can I do, if I get this 'misconfigured_system_so_shoot_me'
Message-ID when I try to post something?
The solution is the same as for the above problem. Set either user-mail-address or mail-host-address to the correct value.
In Gnus 5.4, the error message was changed to make this fix more obvious. The Message-ID, instead of saying that your system is misconfigured, will tell you to set mail-host-address.
Please note that this also works with ISO-Latin 1 characters like:
(setq user-full-name "Finn Håkansson")
gnus-author-copy
?
(setq message-default-headers "Fcc: ~/spool/sent.spool\n") (setq message-default-mail-headers "Fcc: ~/spool/sent-mail.spool\n") (setq message-default-news-headers "Fcc: ~/spool/sent-news.spool\n")Replace Fcc: with Bcc: if you wish.
Another possibility is to use the Gcc: header:
(setq gnus-message-archive-method `(nnfolder "archive" (nnfolder-directory ,(nnheader-concat message-directory "archive")) (nnfolder-active-file ,(nnheader-concat message-directory "archive/active")) (nnfolder-get-new-mail nil) (nnfolder-inhibit-expiry t))) (setq gnus-message-archive-group '((if (message-news-p) "misc-news" "misc-mail")))
Kai Grossjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> adds:
I use the following code to automatically add a Gcc header to every message. I also define a function which can be bound to a key in message-mode which toggles the Gcc header.
;; select group for Gcc (defun kai-gnus-outgoing-message-group () (cond ((and gnus-newsgroup-name (stringp gnus-newsgroup-name) (string-match "^nnml" gnus-newsgroup-name)) gnus-newsgroup-name) (t "nnml:mail.misc"))) ;; automatically add Gcc header (setq gnus-outgoing-message-group 'kai-gnus-outgoing-message-group) ;; toggle Gcc header (bind this to a key in message-mode) (defun message-toggle-gcc () (interactive) (save-excursion (save-restriction (let ((pmin (progn (beginning-of-buffer) (point))) (pmax (progn (beginning-of-buffer) (re-search-forward (concat "^" mail-header-separator "$")) (beginning-of-line) (point)))) (beginning-of-buffer) (narrow-to-region pmin pmax) (if (re-search-forward "^gcc: .*" nil t) (progn (beginning-of-line) (kill-line 1)) (goto-char pmax) (insert (concat "Gcc: " (kai-gnus-outgoing-message-group) "\n")))))))
Francisco Solsona <solsona@cs.utexas.edu> adds an alternate method of toggling the Gcc: as follows:
(defun toggle-gcc-header () (when (y-or-n-p "gcc-it?: ") (kai-gnus-outgoing-message-group))) (setq gnus-outgoing-message-group 'toggle-gcc-header)
If you want something a bit faster, get Jamie Zawinsky's netscape-remote program, found at <URL:http://home.netscape.com/newsref/std/remote.c>. You then need to tell browse-url to use this instead of netscape:
(setq browse-url-browser-program "netscape-remote")
(setq browse-url-browser-function ;; No window system at build time, ie. site-start.el, ~/.emacs ;; or ~/.gnus (if window-system (if (eq system-type 'windows-nt) 'shell-execute-url 'browse-url-netscape) ; or browse-url-mosaic 'browse-url-w3)) (defun shell-execute-url (url &optional new-window) "Invoke the shell-execute-helper program to call ShellExecute and launch or re-direct a web browser on the specified url." (interactive "sURL: ") (call-process shell-execute-helper nil nil nil url)) Also see <URL:http://www.cs.washington.edu/homes/voelker/ntemacs.html> for shell-execute-helper and other NT related stuff.
For example, if you have Nathaniel Borenstein's "metamail" package, here is how to tell Gnus to use its `mimencode' program to decode base64:
(setq base64-decoder-program "mimencode" base64-decoder-switches '("-u")) (setq base64-encoder-program "mimencode")
Note that, beginning with XEmacs 21.2 and GNU Emacs 20.4, the popular Emacsen will support base64 natively, which will be faster than even the external encoders, making above hack obsolete.
Also note that uudecoding, as performed by mm-uu, is also done in Lisp by default. You can make Gnus use the external Unix decoder like this:
(setq mm-uu-decode-function 'uudecode-decode-region-external)
The variable mm-discouraged-alternatives may be helpful. If you do the following:
(setq mm-discouraged-alternatives '("text/html" "text/richtext"))It will always show the text/plain part of a multipart which has both a text/plain and a text/html part, for instance. However, if there is no plaintext part, Gnus will still process the HTML. If you wish to prevent that, you can do one or the other of the following:
If you set this variable to the same value that mm-discouraged-alternatives is set to in the above example, the HTML will initially be buttonized instead of displayed.
Dale Hagglund <rdh@best.com>writes:
I added the following to my .gnus file not too long ago.
(setq mm-inline-media-tests (cons '("text/html" nil (lambda (h) nil)) mm-inline-media-tests))[...] text/html parts are not automatically displayed using w3 or any other browser; they are given buttons, and the html text is shown inline. if you click the button twice, gnus starts any text/html viewer specified in you .mailcap file.
(add-hook 'nntp-server-opened-hook 'nntp-send-authinfo)
This is what I use...customize as necessary... ;;; Don't auto-select first article if reading sources, or archives or ;;; jobs postings, etc. and just display the summary buffer (add-hook 'gnus-select-group-hook (function (lambda () (cond ((string-match "sources" gnus-newsgroup-name) (setq gnus-auto-select-first nil)) ((string-match "jobs" gnus-newsgroup-name) (setq gnus-auto-select-first nil)) ((string-match "comp\\.archives" gnus-newsgroup-name) (setq gnus-auto-select-first nil)) ((string-match "reviews" gnus-newsgroup-name) (setq gnus-auto-select-first nil)) ((string-match "announce" gnus-newsgroup-name) (setq gnus-auto-select-first nil)) ((string-match "binaries" gnus-newsgroup-name) (setq gnus-auto-select-first nil)) (t (setq gnus-auto-select-first t))))))
((local (gnus-auto-select-first nil))) and insert (setq gnus-auto-select-first t)in your .gnus.
Gnus will read news overview files to build its article lists for a group. An (unfortunately) optional field contains information about where an article is crossposted to. If this is disabled, then Gnus will not be able to properly deal with crossposts.
Get your system administrator to enable Xref in the news overview files.
Failing that, if you add
(setq nntp-nov-is-evil t)to your .gnus, Gnus will do The Right Thing with respect to cross posts at the cost of slower group entry and exit.
Francesco Potort́ <pot@cnuce.cnr.it> writes:
Just use C-u SPC or C-u RET for entering the group.
Gnus 5.4 has a more convenient mechanism whereby you can mark individual groups so that they will always show previously read mail with:
(display . all)in the group parameters.
Yair Friedman <yair@cs.huji.ac.il> writes:
Does anyone has experience with setting nntp-nov-is-evil to t?
What exactly will I gain or lose by setting this variable?
Setting this variable only makes sense if netnews is set up on your system to not provide XREF (cross reference information) in the overview files Gnus reads to build group summaries.
A quick test to see if you need to use it is this (substitute your
nntp server, and use the last number returned on the 211 line as the
parameter to XOVER):
(Example courtesy of Christopher Davis <ckd@loiosh.kei.com>).
$ telnet news.somewhere.com nntp LIST overview.fmt You should see something like the following (on INN systems anyway): 215 Order of fields in overview database. Subject: From: Date: Message-ID: References: Bytes: Lines: Xref:fullIf the Xref:full is missing, ask your news administrator to add it in.
Assuming you have a broken newsfeed, you gain by setting nntp-nov-is-evil the ability for Gnus to mark all crossposted articles as read the first time you see them. Otherwise, every crossposted article is spam, and you see it over and over again if you also read the other groups it is crossposted to.
You lose the ability to have Gnus fill in old headers to flesh partially read threads with old articles. This may not matter a whole lot if expiration times are short. Building group summaries is also somewhat slower, though if your network connection to the news server is decent this isn't a huge loss.
Reading news off of multiple news servers is great, but posting to foreign servers fails. What do I do?
Give a prefix to the posting command. That is, type C-u C-c C-c instead of C-c C-c.
This will be changed in the near future so that postings will go to the server that the group is being read from when no prefix is given.
Steinar Bang <sb@metis.no> suggests a workaround until then:
Put the following in ~/.emacs or ~/.gnus:
;; Hack for posting on foreign servers (add-hook 'message-setup-hook (lambda () (local-set-key "\C-c\C-c" 'message-send-and-exit-with-prefix))) (defun message-send-and-exit-with-prefix () "Call the message-send-and-exit function with a positive number argument to make it post the message on the foreign NNTP server of a group, instead of the default NNTP server" (interactive) (message-send-and-exit 1))
If you experience this problem, you should upgrade to a version of Gnus with a version number of 5.6 or greater. The most recent non-beta release is recommended.
Use ``u'', ``!'', `d' or `M-u' in the summary buffer. You just remove the `E' mark by setting some other mark. It's not necessary to tick the articles.
G DELto remove the mail group.
In very old versions of Gnus, it was rather tricky. If you are stuck with such a Gnus and want to remove mail groups, you basically have to kill the groups in Gnus, shut down Gnus, edit the active file to exclude these groups, and probably remove the nnml directories that contained these groups as well. Then start Gnus back up again.
I recommend simply upgrading your Gnus.
They are probably there, but as zombies. Press `A z' to list zombie groups, and then subscribe to the groups you want with `u'. This is all documented quite nicely in the user's manual.
Use an nnbabyl:all.SCORE (or nnmh, or nnml, or whatever) file containing:
((adapt ignore) (local (gnus-use-scoring nil)) (exclude-files "all.SCORE"))
John S Cooper <John.Cooper@digitivity.com> mentioned that
NT seems to prohibit creation of files containing `:' (presumably as
it's the drive letter separator).
Toby Speight <Toby.Speight@digitivity.com> writes:
Under NT, you have to use "_" (underscore) instead of ":".
I.e. "nnbabyl_all.SCORE"
Works for me (with nnml_all.SCORE).
Either write a regexp matching the desired groups and place it in gnus-permanently-visible-groups, or set the visible group parameter.
Colin Rafferty <craffert@spspme.ml.com> writes:
Yes.
Enter the group, mark all articles, and then move them all to the current group. If they were spread out between 1 and 200, they will now all be numbered consecutively starting at 201.
In response to the further question: Can this be done without
breaking the xref info?
Lars Magne Ingebrigtsen <larsi@ifi.uio.no> writes:
Well -- if these are Xreffed from a different group, this'll break the
Xref info in the other groups. That is, if you (after renumbering the
articles) read the articles in a different group, they won't be marked
as read in the renumbered group.
Randal Schwartz <merlyn@stonehenge.com> writes:
With procmail, you cannot write directly into the nnml directories.
You must create spool files that will be merged into the nnml
directories at times of Gnus' choosing. Asynch delivery just isn't in
the cards.
I just posted my setup a week ago. Here it is one more time:
(setq gnus-secondary-select-methods '((nnml "")) nnmail-use-procmail t nnmail-spool-file 'procmail ; same as nnmail-use-procmail :-) nnmail-procmail-directory "~/.incoming/" nnmail-delete-incoming t )
And then I have procmail deliver to ~/.incoming/inbox.spool and ~/.incoming/list.traffic.spool and so on. The name before .spool becomes the nnml: folder in which the stuff will end up.
If your Gnus has a version of 5.8 or later, you can use the following code instead of Randal's for a similar effect. See the manual section on "Mail Sources" for more information.
(setq gnus-secondary-select-methods '((nnml "")) mail-sources '((directory :path "~/.incoming/" :suffix ".spool")) mail-source-delete-incoming t )
B min the summary buffer. Other articles can be moved without problem (on a set of process marked articles, some are moved, others are left untouched).
Yair Friedman <yfriedma@JohnBryce.Co.Il> suggests:
What is the value of nnmail-keep-last-article? If it is t and the
article is last in the group, you can't move it.
To this, Steinar Bang <sb@metis.no> adds:
You should add that nnmail-keep-last-article can be set
specifically for single groups, in the Group Parameters of that group.
(ie. if the global setting is t, you can set it to nil for one
particular group, by putting
(nnmail-keep-last-article nil)in group parameters
G pin the *Group* buffer. (It may work the other way around as well, but I haven't actually _verified_ that setting it to t in Group Parameters, will make it leave the last article, when expiring))
Rich Pieri <rich.pieri@prescienttech.com> responds:
Change your primary select method to your mail backend:
(setq gnus-select-method '(nnml "")) (setq gnus-secondary-select-methods nil)Has been working fine for me since, oh, half way through the (ding) development cycle.
Lars Magne Ingebrigtsen <larsi@trym.ifi.uio.no> replies:
Yes. Just gzip the files. You'll need to say `(require 'jka-compr)'
in your .emacs, though.
Note: this only works in Red Gnus (Gnus 5.4) and later.
Earlier versions of Gnus are unable to use IMAP.
Under Gnus 5.8.x, see the manual section Select Methods->Getting Mail->Mail Sources.
For older Gnusae, just set nnmail-spool-file to a list of your mail sources. For example,
(setq nnmail-spool-file '("/var/spool/mail/dworkin" "po:dworkin"))note: The POP part of this example will work with the external movemail program, but not with Gnus' built-in pop3 library.
Earlier versions of Gnus have no built-in functionality for this, and there are a few different known workarounds, none of them ideal.
If you really need maildir support, you should consider upgrading to Gnus 5.8.
Richard Pieri <ratinox@peorth.gweep.net> says:
It does not require an external program, which is important on certain
versions of Emacs running on certain operating systems that cannot
properly handle inferior processes. It has a running count, x of y,
of messages downloaded; feedback on a process is always a good thing.
It does not convert your incoming mailbox to Babyl format. It does
not pass password information to an external process insecurely.
Why would you not want to use pop3.el instead of an external movemail?
It does not handle multiple maildrops, so if you get your mail from multiple POP servers, or from a POP server and a local spool, it may not work right. A fix is on the to-do list.
If you use an "expensive" authentication scheme such as KPOP (Kerberized POP). KPOP is not going to happen until such time as Kerberos is incorporated directly into Emacs.
Using pop3.el
Configure Gnus to use the external movemail program per documentation, then add the following line to your ~/.gnus:
(setq nnmail-movemail-program 'nnmail-pop3-movemail)
The following variables may need to be set manually if they are not inherited from your environment (or are simply incorrect or undefined).
pop3-maildrop
Your POP3 login name. Inherited from
user-login-name, $LOGNAME, $USER; otherwise nil. Change this if your
POP login is different from your local login.
pop3-mailhost
Server from which you get your mail.
Inherited from $MAILHOST; otherwise nil.
pop3-port
Port your POP3 server is on. Defaults to 110.
nnmail-pop-password-required
't' if you need to supply a
password. Defaults to nil. You will probably need to make this 't'.
pop3-authentication-scheme
authentication scheme, either
'pass or 'apop.
pop3.el/nnmail-pop3-movemail currently does not support multiple maildrops.
To deal with this, Gnus excludes long header lines from the function that does the splitting. If a mail message has, for example, a To: header longer than 1024 characters, that line will not be considered for splitting purposes.
Very recent versions of Gnus (pgnus, thus all official
versions >= 5.8) deal with this a bit better. In those versions, the
long lines are truncated instead of excluded, and there is a variable,
nnmail-split-header-length-limit
, to control the
threshold for truncation.
When an article is read (the word `read' here being a verb, not a noun referring to the mark), Gnus also marks it as expirable (`E'). When the expiry process occurs, it explicitly uses the articles marked with `E' as the set of articles eligible for expiration.
No `E' marks are used or relevant at all. When the expiry process occurs, articles marked as read are eligible for expiration. Note that this means articles that are not unmarked and are not marked with either `!' or `?' as both of those marks are just special ways of saying "unread".
The benefit of total-expire is that it is simpler. There is no such thing as a special mark for expirable messages. All articles that are read and not marked otherwise will be expired once they are old enough.
This FAQ is Copyright © 1995, 1996 Free Software Foundation. Please send comments, and suggestions to Justin Sheehy <URL:mailto:dworkin@ccs.neu.edu>.