[gnu.emacs] Loading up mail-aliases

montnaro@sprite.crd.ge.com (Skip Montanaro) (08/24/89)

I use a version of mailalias.el that understands the "source" command in
~/.mailrc. (It's been posted to various Emacs groups before I believe, and I
could have sworn at one point it was in the Emacs distribution, but it isn't
at the moment. If you want it, drop me a note.) Unfortunately, we have a
couple of huge mail alias files at our site that cause the first call to
sendmail to take forever to start (we're talking over 1800 mail aliases that
take two-three minutes to parse on a Sun-3/260).

What I needed was a way to cache the mail-alises alist, and only update it
when the source files changed. I wrote a short Makefile and some ELisp to
update a cached mail alias file from cron late at night.


The Makefile is:


$(HOME)/.mail-aliases : $(HOME)/.mailrc /usr/local/lib/unix-aliases \
			/usr/local/lib/crd-aliases
	emacs -batch -l cache-mail-aliases.el


The file, cache-mail-aliases.el, contains


    (message "Building mail aliases... ")
    (load "~/emacs/mailalias" nil t)     ; understands "source" command
    (build-mail-aliases "~/.mailrc")
    (set-buffer (find-file-noselect (expand-file-name "~/.mail-aliases")))
    (erase-buffer)
    (insert "(setq mail-aliases '\n")
    (insert (format "%s\n" mail-aliases))
    (insert ")\n")
    (save-buffer)
    (kill-buffer (current-buffer))
    (message "Building mail aliases... Done")


The following additional line in ~/.emacs sets the mail-aliases variable:


    (load "~/.mail-aliases" nil t t)


--
Skip Montanaro (montanaro@sprite.crd.ge.com)