Debian Bug report logs - #278238
IMAP folder saving needs to add carriage returns

version graph

Package: vm; Maintainer for vm is Manoj Srivastava <srivasta@debian.org>; Source for vm is src:vm (PTS, buildd, popcon).

Reported by: Stephen McCamant <smcc@CSAIL.MIT.EDU>

Date: Mon, 25 Oct 2004 17:33:03 UTC

Severity: normal

Found in version 7.19-1

Fixed in version vm/8.0.12-1

Done: Manoj Srivastava <srivasta@golden-gryphon.com>

Bug is archived. No further changes may be made.

Forwarded to bug-vm@wonderworks.com

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Manoj Srivastava <srivasta@debian.org>:
Bug#278238; Package vm. (full text, mbox, link).


Acknowledgement sent to Stephen McCamant <smcc@CSAIL.MIT.EDU>:
New Bug report received and forwarded. Copy sent to Manoj Srivastava <srivasta@debian.org>. (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Stephen McCamant <smcc@CSAIL.MIT.EDU>
To: submit@bugs.debian.org
Subject: IMAP folder saving needs to add carriage returns
Date: Mon, 25 Oct 2004 13:29:44 -0400
Package: vm
Version: 7.19-1

According to a strict reading of the IMAP RFC, all the lines sent to
an IMAP server, including lines inside a message sent in an "APPEND"
command, need to end in a CRLF. However, the VM vm-imap-save-message
function appears to send a message being saved directly from the
contents of an Emacs buffer, which might contain only newlines.

The symptom of this is that if you try to run
vm-save-message-to-imap-folder when connecting to certain strict IMAP
servers (for instance, one here identifying itself as Cyrus IMAP4
v2.1.16-IPv6) it will fail with "server said NO to APPEND data"; the
error from the server in my case is "NO Message contains bare
newlines". The following message on a Cyrus list describes why they
refuse to be more liberal in what they accept:

http://asg.web.cmu.edu/archive/message.php?mailbox=archive.info-cyrus&msg=5639

If it matters, I'm seeing this with xemacs21 21.4.15-7 on sarge.

Let me know if I can be of any other help in reproducing or fixing
this.



Reply sent to srivasta@acm.org:
You have marked Bug as forwarded. (full text, mbox, link).


Message #8 received at 278238-forwarded@bugs.debian.org (full text, mbox, reply):

From: srivasta@acm.org
To: bug-vm@wonderworks.com
Cc: 278238-forwarded@bugs.debian.org, Stephen McCamant <smcc@CSAIL.MIT.EDU>
Subject: IMAP folder saving needs to add carriage returns
Date: Tue, 2 Nov 2004 14:31:27 -0600
Hi,

        [Please retain the CC to 278238-forwarded@bugs.debian.org,  so
        that the Debian bug tracking system has a record of your
        input] 

	This was reported by a Debian user running vm-7.19

======================================================================
 According to a strict reading of the IMAP RFC, all the lines sent to
 an IMAP server, including lines inside a message sent in an "APPEND"
 command, need to end in a CRLF. However, the VM vm-imap-save-message
 function appears to send a message being saved directly from the
 contents of an Emacs buffer, which might contain only newlines.

 The symptom of this is that if you try to run
 vm-save-message-to-imap-folder when connecting to certain strict IMAP
 servers (for instance, one here identifying itself as Cyrus IMAP4
 v2.1.16-IPv6) it will fail with "server said NO to APPEND data"; the
 error from the server in my case is "NO Message contains bare
 newlines". The following message on a Cyrus list describes why they
 refuse to be more liberal in what they accept:

 http://asg.web.cmu.edu/archive/message.php?mailbox=archive.info-cyrus&msg=5639

 If it matters, I'm seeing this with xemacs21 21.4.15-7 on sarge.

 Let me know if I can be of any other help in reproducing or fixing
 this.
======================================================================

	I have reproduced this on FSF emacs as well.

	manoj

Emacs  : GNU Emacs 21.3.50.2 (i686-pc-linux-gnu, GTK+ Version 2.4.13)
 of 2004-10-29 on glaurung
Package: VM 7.19

current state:
==============
(setq
 vm-arrived-message-hook nil
 vm-arrived-messages-hook nil
 vm-auto-center-summary 0
 vm-auto-decode-mime-messages t
 vm-auto-displayed-mime-content-type-exceptions nil
 vm-auto-displayed-mime-content-types '("text" "multipart" "message/rfc822" "plain text"
                                        "mail message" "text/x-vcard" "text/enriched")
 vm-auto-folder-case-fold-search nil
 vm-auto-get-new-mail t
 vm-auto-next-message t
 vm-berkeley-mail-compatibility nil
 vm-check-folder-types t
 vm-circular-folders nil
 vm-confirm-new-folders nil
 vm-confirm-quit 0
 vm-convert-folder-types t
 vm-crash-box "~/INBOX.CRASH"
 vm-crash-box-suffix nil
 vm-default-From_-folder-type 'From_
 vm-default-folder-permission-bits 384
 vm-default-folder-type 'From_
 vm-delete-after-archiving t
 vm-delete-after-bursting t
 vm-delete-after-saving t
 vm-delete-empty-folders t
 vm-digest-burst-type "guess"
 vm-digest-identifier-header-format "X-Digest: %s\n"
 vm-digest-center-preamble t
 vm-digest-preamble-format "\"%s\" (%F)"
 vm-digest-send-type "mime"
 vm-display-buffer-hook nil
 vm-display-using-mime t
 vm-edit-message-hook nil
 vm-edit-message-mode 'text-mode
 vm-fill-paragraphs-containing-long-lines nil
 vm-flush-interval 90
 vm-folder-directory "/home/srivasta/mail/"
 vm-folder-read-only nil
 vm-folders-summary-database "~/.vm.folders.db"
 vm-folders-summary-directories '("~/")
 vm-folders-summary-format "  %12f %4t total, %n new, %u unread, %s spooled\n"
 vm-follow-summary-cursor t
 vm-forward-message-hook nil
 vm-forwarded-headers nil
 vm-forwarding-digest-type "mime"
 vm-forwarding-subject-format "Forwarded message from %F, %h %w,%d %m %y"
 vm-frame-parameter-alist nil
 vm-frame-per-completion t
 vm-frame-per-composition t
 vm-frame-per-edit t
 vm-frame-per-folder t
 vm-frame-per-folders-summary nil
 vm-frame-per-help nil
 vm-frame-per-summary nil
 vm-highlight-url-face 'font-lock-comment-face
 vm-highlighted-header-regexp nil
 vm-honor-mime-content-disposition t
 vm-honor-page-delimiters t
 vm-icontopbm-program "/usr/bin/icontopbm"
 vm-image-directory "/usr/share/emacs/site-lisp/vm/etc"
 vm-imagemagick-convert-program "/usr/bin/convert"
 vm-imagemagick-identify-program "/usr/bin/identify"
 vm-imap-bytes-per-session nil
 vm-imap-expunge-after-retrieving t
 vm-imap-max-message-size nil
 vm-imap-messages-per-session nil
 vm-imap-session-preauth-hook nil
 vm-in-reply-to-format "%i:%F's message of %h %w,%d %m %y "
 vm-included-text-attribution-format "%F writes:\n"
 vm-included-text-discard-header-regexp nil
 vm-included-text-headers '("\\bFrom\\b" "\\bSubject\\b" "\\bDate\\b")
 vm-included-text-prefix " > "
 vm-index-file-suffix nil
 vm-init-file "/home/srivasta/etc/emacs/vm"
 vm-infer-mime-types nil
 vm-invisible-header-regexp nil
 vm-jump-to-new-messages t
 vm-jump-to-unread-messages t
 vm-keep-crash-boxes nil
 vm-keep-sent-messages 2
 vm-lynx-program "lynx"
 vm-mail-header-from "srivasta@acm.org"
 vm-mail-header-insert-date t
 vm-mail-header-insert-message-id t
 vm-mail-hook nil
 vm-mail-check-interval 300
 vm-mail-mode-hook '(mc-install-write-mode)
 vm-mail-send-hook nil
 vm-make-crash-box-name nil
 vm-make-spool-file-name nil
 vm-mime-7bit-composition-charset "us-ascii"
 vm-mime-8bit-composition-charset "iso-8859-1"
 vm-mime-8bit-text-transfer-encoding 'quoted-printable
 vm-mime-alternative-select-method 'best-internal
 vm-mime-attachment-auto-type-alist '(("\\.jpe?g$" . "image/jpeg") ("\\.gif$" . "image/gif")
                                      ("\\.png$" . "image/png") ("\\.tiff?$" . "image/tiff")
                                      ("\\.html?$" . "text/html") ("\\.au$" . "audio/basic")
                                      ("\\.mpe?g$" . "video/mpeg")
                                      ("\\.mov$" . "video/quicktime")
                                      ("\\.e?ps$" . "application/postscript")
                                      ("\\.pdf$" . "application/pdf")
                                      ("\\.xls$" . "application/vnd.ms-excel")
                                      ("\\.doc$" . "application/msword")
                                      ("\\.ppt$" . "application/vnd.ms-powerpoint"))
 vm-mime-attachment-save-directory nil
 vm-mime-avoid-folding-content-type t
 vm-mime-base64-decoder-program "base64-decode"
 vm-mime-base64-decoder-switches nil
 vm-mime-base64-encoder-program "base64-encode"
 vm-mime-base64-encoder-switches nil
 vm-mime-button-face 'gui-button-face
 vm-mime-button-format-alist '(("text" . "%-35.35(%d, %c%) [%k to %a]")
                               ("multipart/alternative" . "%-35.35(%d%) [%k to %a]")
                               ("multipart/digest" . "%-35.35(%d, %n message%s%) [%k to %a]")
                               ("multipart" . "%-35.35(%d, %n part%s%) [%k to %a]")
                               ("message/partial" .
                                "%-35.35(%d, part %N (of %T)%) [%k to %a]")
                               ("message/external-body" . "%-35.35(%d%) [%k to %a (%x)]")
                               ("message" . "%-35.35(%d%) [%k to %a]")
                               ("audio" . "%-35.35(%d%) [%k to %a]")
                               ("video" . "%-35.35(%d%) [%k to %a]")
                               ("image" . "%-35.35(%d%) [%k to %a]")
                               ("application/octet-stream" . "%-35.35(%d, %f%) [%k to %a]"))
 vm-mime-charset-converter-alist nil
 vm-mime-charset-font-alist nil
 vm-mime-confirm-delete t
 vm-mime-decode-for-preview t
 vm-mime-default-face-charset-exceptions nil
 vm-mime-default-face-charsets '("Windows-1257" "Windows-1252" "Windows-1251" "us-ascii"
                                 "iso-8859-1" "iso-8859-2" "iso-8859-3" "iso-8859-4"
                                 "iso-8859-5" "iso-8859-6" "iso-8859-7" "iso-8859-8"
                                 "iso-8859-9" "windows-1251" "windows-1252" "koi8-r"
                                 "us-ascii" "X-roman8")
 vm-mime-delete-after-saving nil
 vm-mime-delete-viewer-processes t
 vm-mime-digest-discard-header-regexp nil
 vm-mime-digest-headers '("Resent-" "From:" "Sender:" "To:" "Cc:" "Subject:" "Date:"
                          "Message-ID:" "Keywords:" "MIME-Version:" "Content-")
 vm-mime-display-function nil
 vm-mime-external-content-types-alist nil
 vm-mime-forward-local-external-bodies nil
 vm-mime-ignore-composite-type-opaque-transfer-encoding t
 vm-mime-ignore-mime-version t
 vm-mime-ignore-missing-multipart-boundary t
 vm-mime-internal-content-type-exceptions nil
 vm-mime-internal-content-types '("text" "multipart" "message/rfc822" "plain text"
                                  "mail message" "text/x-vcard" "text/enriched")
 vm-mime-max-message-size nil
 vm-mime-qp-decoder-program "qp-decode"
 vm-mime-qp-decoder-switches nil
 vm-mime-qp-encoder-program "qp-encode"
 vm-mime-qp-encoder-switches nil
 vm-mime-require-mime-version-header t
 vm-mime-type-converter-alist '(("text/html" "text/plain"
                                 "links -force_html -dump /dev/stdin")
                                )
 vm-mime-use-image-strips t
 vm-mime-use-w3-for-text/html t
 vm-mime-uuencode-decoder-program "uudecode"
 vm-mime-uuencode-decoder-switches nil
 vm-mode-hook '(mc-install-read-mode)
 vm-mode-hooks 'my-vm-mode-function
 vm-mosaic-program "Mosaic"
 vm-mosaic-program-switches nil
 vm-move-after-deleting t
 vm-move-after-undeleting nil
 vm-move-after-killing t
 vm-move-messages-physically nil
 vm-movemail-program "movemail"
 vm-mutable-frames t
 vm-mutable-windows t
 vm-netscape-program "mozilla"
 vm-netscape-program-switches nil
 vm-page-continuation-glyph "...press SPACE to see more..."
 vm-paragraph-fill-column 70
 vm-pop-bytes-per-session nil
 vm-pop-expunge-after-retrieving t
 vm-pop-max-message-size nil
 vm-pop-messages-per-session nil
 vm-pop-md5-program "md5sum"
 vm-popup-menu-on-mouse-3 t
 vm-preferences-file "~/etc/vm.preferences"
 vm-preview-lines 0
 vm-preview-read-messages nil
 vm-primary-inbox "/home/srivasta/mail/INBOX"
 vm-quit-hook '(bbdb-save-db vm-expunge-folder)
 vm-recognize-imap-maildrops "^\\(imap\\|imap-ssl\\|imap-ssh\\):[^:]+:[^:]+:[^:]+:[^:]+:[^:]+:.+"
 vm-recognize-pop-maildrops "^\\(pop:\\|pop-ssl:\\|pop-ssh:\\)?[^:]+:[^:]+:[^:]+:[^:]+:.+"
 vm-reply-hook nil
 vm-reply-ignored-reply-tos nil
 vm-reply-subject-prefix "Re: "
 vm-resend-bounced-discard-header-regexp nil
 vm-resend-bounced-headers '("MIME-Version:" "Content-" "From:" "Sender:" "Reply-To:" "To:"
                             "Cc:" "Subject:" "Newsgroups:" "In-Reply-To:" "References:"
                             "Keywords:" "X-")
 vm-resend-bounced-message-hook nil
 vm-resend-discard-header-regexp "\\(\\(X400-\\)?Received:\\|Resent-\\)"
 vm-resend-headers nil
 vm-resend-message-hook nil
 vm-retrieved-spooled-mail-hook nil
 vm-rfc1153-digest-discard-header-regexp "\\(X400-\\)?Received:"
 vm-rfc1153-digest-headers '("Resent-" "Date:" "From:" "Sender:" "To:" "Cc:" "Subject:"
                             "Message-ID:" "Keywords:")
 vm-rfc934-digest-discard-header-regexp nil
 vm-rfc934-digest-headers '("Resent-" "From:" "Sender:" "To:" "Cc:" "Subject:" "Date:"
                            "Message-ID:" "Keywords:")
 vm-search-using-regexps t
 vm-select-message-hook '(bbdb/vm-pop-up-bbdb-buffer)
 vm-select-new-message-hook nil
 vm-select-unread-message-hook nil
 vm-send-digest-hook nil
 vm-send-using-mime t
 vm-skip-deleted-messages 0
 vm-skip-read-messages nil
 vm-spool-file-suffixes nil
 vm-spooled-mail-waiting-hook nil
 vm-ssh-program "ssh"
 vm-ssh-program-switches nil
 vm-ssh-remote-command "echo ready; sleep 15"
 vm-startup-with-summary 1
 vm-strip-reply-headers t
 vm-stunnel-program "stunnel"
 vm-stunnel-program-switches nil
 vm-stunnel-random-data-method 'generate
 vm-subject-significant-chars nil
 vm-summary-format "%2n%UA%*%a %-17.17UB %-3.3m %2d %4l/%-5c %I\"%s\"\n"
 vm-summary-highlight-face 'font-lock-function-name-face
 vm-summary-mode-hook '(mc-install-read-mode)
 vm-summary-mode-hooks nil
 vm-summary-redo-hook nil
 vm-summary-show-threads t
 vm-summary-thread-indent-level 2
 vm-summary-uninteresting-senders "\\bsrivasta\\b"
 vm-summary-uninteresting-senders-arrow "==> "
 vm-tale-is-an-idiot nil
 vm-temp-file-directory "/tmp"
 vm-thread-using-subject t
 vm-toolbar-pixmap-directory "/usr/share/emacs/site-lisp/vm/etc"
 vm-trust-From_-with-Content-Length nil
 vm-uncompface-program "/usr/bin/uncompface"
 vm-undisplay-buffer-hook nil
 vm-unforwarded-header-regexp "only-drop-this-header"
 vm-url-browser 'vm-mouse-send-url-to-netscape
 vm-url-browser-switches nil
 vm-url-retrieval-methods '(lynx wget fetch curl w3m)
 vm-url-search-limit 12000
 vm-use-menus t
 vm-use-toolbar '(next previous delete/undelete autofile file reply compose print visit quit
                  nil help)
 vm-virtual-folder-alist '(("misc" (("ADMIN" "BCAST" "MISC") (any))))
 vm-virtual-mirror t
 vm-visible-headers '("Resent-" "From:" "Sender:" "To:" "Apparently-To:" "Cc:" "Subject:"
                      "Date:")
 vm-visit-folder-hook nil
 vm-visit-when-saving 'okay
 vm-warp-mouse-to-new-frame nil
 vm-wget-program "wget"
 vm-window-configuration-file "~/etc/vm.windows"
 features '(mailalias vm-reply reporter semanticdb-file semantic-make semantic-make-by
            make-mode vm-delete vm-mime vm-macro vm-page vm-save vm-motion vm-toolbar vm-sort
            vm-summary vm-thread vm-undo vm-message vm-folder vm-misc vm-easymenu vm-mouse
            vm-window vm-menu vm-vcard vcard bbdb-vm gnus-vm log-mail bbdb-sc supercite
            sendmail regi cookie1 gnus-picon sort compface gnus-fun gnus-cite smiley
            ansi-color gnus-async gnus-bcklg gnus-logic gnus-ml disp-table nnspool gnus-topic
            nnfolder url-http url-auth url-gw nnslashdot mm-url nnml nndraft nnmh gnus-agent
            gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache message-x bbdb-gnus
            flyspell debian-bug debian-changelog-mode dired-aux dired skeleton time-stamp
            add-log vc-arch sh-script jit-lock semantic-el semantic-imenu semantic-sb
            find-func loadhist semantic-bovine vc erc-nickserv erc-ezbounce erc-dcc
            erc-autoaway erc-bbdb bbdb-hooks bbdb-gui erc-nets erc-list erc-replace erc-menu
            erc-autojoin erc-button erc-ring erc-pcomplete pcomplete erc-track erc-match
            erc-fill erc-stamp erc-netsplit erc erc-compat easy-mmode thingatpt
            gnuserv-compat gnuserv devices time mailcrypt country-info bbdb-snarf mail-extr
            bbdb-com bbdb gnus-msg gnus-art mm-uu mml2015 mm-view gnus-sum nnoo gnus-group
            gnus-undo nnmail mail-source format-spec gnus-start gnus-spec gnus-int gnus-range
            gnus-win gnus gnus-ems message rfc822 mml mml-sec mml-smime smime dig mm-decode
            mm-bodies mm-encode mailabbrev nnheader gnus-util netrc mail-utils mailheader
            canlock sha1 executable hex-util vm-autoload vm-vars vm-startup vm-version vm
            sasl sasl-anonymous sasl-login sasl-plain uniquify ps-print lpr paren ind-util
            pgg password pgg-parse pgg-def browse-kill-ring edmacro kmacro dictionary link
            connection allout filladapt complete jka-compr flow-ctrl rect cua-rect codepage
            nxml-enc w3m-load path-util develock tex-site emacs-vers bitmap bitmap-ci poem
            poem-e20 poem-e20_3 pces pces-e20 pces-20 broken pcustom cedet speedbar-load
            eieio-load cedet-load ecb-autoloads tempo w3-cus url url-proxy url-privacy
            url-expand url-methods url-history url-cookie url-util url-parse url-auto
            timezone url-vars mailcap mail-parse rfc2045 rfc2231 rfc2047 qp ietf-drums
            mm-util mule-util time-date parse-time mail-prsvr xml-parse doxymacs
            semantic-ede-grammar ede-proj-elisp ede-pconf ede-pmake ede-proj-obj ede-proj
            ede-proj-comp autoconf-edit autoconf-mode ede-speedbar ede ede-source ede-load
            semantic-grammar eldoc semantic-grammar-wy wisent-comp semantic-edit sformat
            semantic-wisent wisent semantic-load semantic-idle semantic-util-modes
            semantic-decorate semantic-util semanticdb-el eieio-opt semantic-ia-sb
            semantic-analyze semantic-ctxt semantic-format semantic-cb eieio-speedbar
            eieio-custom wid-edit semantic-sort semanticdb-find speedbar imenu ange-ftp
            sb-image ezimage dframe easymenu semanticdb-search semantic-find semanticdb
            eieio-base eieio eieio-comp newcomment semantic pp inversion semantic-lex
            semantic-tag assoc working semantic-fw mode-local font-lock syntax regexp-opt
            derived byte-opt bytecomp byte-compile bytecomp-preload macroexp poe pym static
            apel-ver product oneliner w3m-wget comint ring vm-init psgml-init mailcrypt-init
            erc-auto emms-auto emacs-goodies-el emacs-goodies-custom emacs-goodies-loaddefs
            dpkg-dev-el dpkg-dev-el-loaddefs ispell debian-el debian-el-loaddefs crypt
            crypt++ crypt+pgp-pub cedet-autogen advice advice-preload cl cl-19 autoload
            help-fns help-mode view button bbdb-autoloads gnus-init calc-init tooltip image
            tool-bar mwheel x-dnd fontset ediff-hook vc-hooks lisp-float-type lisp-mode
            register page menu-bar timer select scroll-bar mldrag mouse facemenu font-core
            frame ucs-tables georgian utf-8-lang misc-lang vietnamese tibetan thai lao korean
            japanese hebrew greek romanian slovak czech european ethiopic kannada tamil
            malayalam devanagari indian cyrillic chinese case-table help simple faces
            cus-face text-properties overlay md5 base64 format mule env custom widget
            backquote make-network-process gtk x-toolkit)
 )
-- 
I am not a politician and my other habits are also good. Ward
  



Reply sent to Manoj Srivastava <srivasta@golden-gryphon.com>:
You have taken responsibility. (Tue, 13 Oct 2009 04:06:06 GMT) (full text, mbox, link).


Notification sent to Stephen McCamant <smcc@CSAIL.MIT.EDU>:
Bug acknowledged by developer. (Tue, 13 Oct 2009 04:06:06 GMT) (full text, mbox, link).


Message #13 received at 278238-done@bugs.debian.org (full text, mbox, reply):

From: Manoj Srivastava <srivasta@golden-gryphon.com>
To: 278238-done@bugs.debian.org
Subject: IMAP folder saving needs to add carriage returns
Date: Mon, 12 Oct 2009 22:44:44 -0500
Version: 8.0.12

Hi,

        This has been fixed in recent versions of VM.

        manoj
-- 
A horse breeder has his young colts bottle-fed after they're three days
old.  He heard that a foal and his mummy are soon parted.
Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/>  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C




No longer marked as fixed in versions 8.0.12. Request was from Andreas Beckmann <anbe@debian.org> to control@bugs.debian.org. (Fri, 01 Nov 2013 01:21:21 GMT) (full text, mbox, link).


Marked as fixed in versions vm/8.0.12-1. Request was from Andreas Beckmann <anbe@debian.org> to control@bugs.debian.org. (Fri, 01 Nov 2013 01:21:22 GMT) (full text, mbox, link).


Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Fri, 29 Nov 2013 07:34:42 GMT) (full text, mbox, link).


Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Wed Oct 11 00:24:45 2017; Machine Name: beach

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.