Hello list,

i'm happily announcing feature freeze of S-nail v14.8, the
"Albatros".  It is available on the [next] branch.
Since i've mirrored the repository to GitLab.com it can also be
downloaded easily via, e.g., 

  $ curl -o rc.tar.bz2 \
  https://gitlab.com/s-nail/s-nail/repository/archive.tar.bz2?ref=next

A lot of things happened, also recently, but don't expect the
release any later than 1st of May 2015.
I think it's worth giving a try already today, what is missing is
time for review, and more work on the manual.

It follows the (preliminary) NEWS entry.

Puuuh!
I'm glad and happy to announce "Albatros" after about six months of
development.  Development that brought many new features, bugfixes,
technical overhauling and behaviour tweaking.  Shall you ever have been
interested in BSD Mail or its deriviatives you might want to give it
a try.

Note there are incompatible changes, documented below.  And it is also
advisable to try out existing configurations with enabled *debug* and/or
*verbose* (-d, -v -v) in order to check for "obsoletion" warnings.
(Here "obsolete" would refer to v15, of course.)

Credits and Thanks go to Ypnose, Jérémie Courrèges-Anglas, Josef Jurek,
Gavin Troy, Rich Salz, Martin Brandenburg, Bob Tennent and
Dominic Meskys.

We welcome Jérémie Courrèges-Anglas, Josef Jurek, Rich Salz,
Dominic Meskys and Dirk Peters in THANKS.
Apologies to Dirk Peters whom i had forgotten to add to THANKS at first
glance once i've added this file; it was nothing but an oversight.

I also say «Thank you» to GitLab.com – i've mirrored the S-nail git(1)
repository (alongside others) to this free service.

NOTES, ChangeLog (packager-affine)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+ Crawling along the path of CVE [topic/cve-2014-7844.2]: to enable MTA
  arguments after -- the new *expandargv* must be set.  Please see below.

+ Even more crawling along the path of the CVE i decided to replace the
  wordexp(3) based shell word expansion mechanism with a completely
  internally implemented restricted mechanism, but complete mitigation
  will take time.  This has consequences in respect to backslash
  escaping in file names (shall you ever have used such a filename with
  S-nail and its predecessors, of course, and only ...).
  Please see [topic/fexpand.2] below.

+ The *attrlist* variable gained a new member (for unsure spam status).
  Since a user setting with a false length will be ignored yet causes an
  error message this is a backward incompatible change. [topic/spam.2]

- New make.rc option: WANT_ALL_SSL_ALGORITHMS (enabled).
  See *smime-cipher* @ below. [topic/ssl.1]

- The make.rc option WANT_IPV6 is gone; we use the respective standard
  library facilities automatically whenever possible. []

- New make.rc option: WANT_TERMCAP (disabled).
  See *term-ca-mode* @ below.  [topic/termcap]

- The make.rc option WANT_SPAM has been dropped.  Instead we have (see
  [topic/spam.2] below for more):

  . WANT_SPAM_SPAMC (default off):
    Rather identical to the former WANT_SPAM (interaction with spamc(1)
    from spamassassin(1)), but internally improved.
  . WANT_SPAM_SPAMD (default off):
    Direct interaction with spamd(1) from spamassassin(1) via a local
    unix(4) domain socket.
  . WANT_SPAM_FILTER (default on):
    Freely configurable hook programs, e.g., bogofilter(1).

- It turned out that the manual wasn't mandb(1) compatible. []

- New make.rc option: WANT_FILTER_HTML_TAGSOUP (enabled).
  S-nail now ships with a very primitive HTML-to-text converter.
  It'll be used for HTML parts automatically if no pipe handler is
  installed (and the builtin mime.types haven't been changed).
  This works because of the new TYPEMARKER extension to mime.types(5) as
  documented for [topic/mime.types.2] below.
  (It is quite experimental but i think it rocks except it can be fooled
  since it doesn't know about double quoted strings, e.g., <a href=""
  onmouseover='javascript:alert("> This is plain text you see, oops");'>.
  Yet it is ment for displaying HTML mails, and it works really well
  even for weird things like >700 KB Docbook manuals, > 400 KB Wikipedia
  pages and Change.org pages (which use CSS 2000.0).)

+ v14.8 is the last release with IMAP support, which has been removed
  from the developer's [crawl] branch for quite some time already.
  He really hopes he can affort to readd support sometime after v15.0.

ChangeLog
^^^^^^^^^

- S-nail now knows about named booleans (e.g., `localopts' or
  interactive approval prompts can now be given any of 1/yes/true or
  0/no/false, case-insensitively; note this is true for the make(1).rc
  system, too) and ternary options (ask-[1/yes/true/0/no/false]).
  [topic/xify]

- The `if' @ combo:

  . gained <, >, <= and >= tests;
    ==, !=, <, <=, >=, > will try to convert their arguments to numbers
    and perform their test numerically, if possible, []
  . `if' supports boolean (as above) arguments, [topic/ifpimp]
  . `if 1'+ return value fixed, [topic/ifpimp]
  . `if'+: on syntax error, NOOP anything 'till `endif', [topic/ifpimp]
  . `if'+ now support bracket groups, AND-OR lists and unary ! (not),
    note that the separating spaces are required: [topic/ifpimp]

      if [ [ true ] && [ [ $debug ] || [ $verbose ] ] ]
        echo noisy, noisy
      endif
      if true && [ $debug || $verbose ]
        echo left associativity, as is known from the shell
      endif
      if ! ! true && ! [ ! $debug && ! $verbose ]
        echo unary support
      endif

  . `if'+ now support new case-insensitive (ASCII) substring operators
    =@ and !@: [topic/ifpimp]

      if $features =@ "regex"
        if $TERM =~ "^xterm.*"
          echo ..in an X terminal
        endif
      endif

- `unalias' @ learned that * means "all aliases".
  Fixed: faulty list-head relinking caused "dead" aliases (since ever)
  [topic/names]

- `unshortcut' @ learned that * means "all shortcuts".
  `shortcut' @ in turn can now define multiple shortcuts in one go:
  [topic/names]

    ?0[ /var/mail/steffen]? sho you 'any one' me 'no one'
    ?0[ /var/mail/steffen]? sho
    me=no one
    you=any one
    ?0[ /var/mail/steffen]? unsho*
    ?0[ /var/mail/steffen]? sho
    ?0[ /var/mail/steffen]?

- S-nail learned how to deal with mailing-lists in respect to
  Mail-Followup-To headers etc. (manual: "Mailing lists" @):

  . new commands `(un)?ml(list|subscribe)' to let S-nail decide which
    addresses are mailing-lists, [topic/names] @
  . *headline* @ learned %T format to display message recipient flags:
    "L" for a mailing-list, "S" for a subscribed one, [topic/names]
  . new variable *followup-to-honour* @, [topic/mft]
  . new variable *reply-to-honour* @, [topic/mft]
  . new command `Lreply' @, forcing a list-only `reply' if possible.
    When `Lreply'ing to messages which seem to originate from
    mailing-lists (contain a `List-Post:' header), then S-nail will
    treat the list address as a known mailing list (as via `mlist').

    (It is advisable to try out several different combinations of non-/
    subscribed mailing-lists in conjunction with `reply', `Reply' and
    `Lreply' with *debug* set in order to get used to how S-nail will
    modify the address lists; the results should be quite logical
    though.) [topic/mft]
  . For convenience `reply' and `Lreply' can now be used to reply to
    multiple messages in one go (each message will still be handled by
    itself, we simply start over internally). [topic/mft]

- `unset' @ no longer "fails" for unset variables, but only prints
  a message in *debug* or *verbose* mode.  This changes traditional,
  decade-old behaviour, but shells don't even say something in (*debug*
  or) *verbose* mode, and it really simplifies things. [topic/okeys-attr]

- SSL/TLS changes: [topic/ssl.1]

  . new variables: *ssl-cert-HOST* @, *ssl-key-HOST* @,
    *ssl-method-HOST* @, *ssl-verify-HOST* @,
  . *ssl-v2-allow* has been dropped,
  . *ssl-verify* @ and *smime-cipher-USER@HOST* @ use
    case-insensitive matching for value checks,
  . new variable: *ssl-protocol* @ (obsoletes *ssl-method* @),
  . new variants of *ssl-cipher-list* @: *ssl-cipher-list-USER@HOST*,
    *ssl-cipher-list-HOST*,
  . new variable: *ssl-config-file* @,
  . *smime-cipher* @ (and variants) dropped builtin support for the
    obsolete RC2-40 and RC2-64 ciphers -- use the make.rc option
    WANT_ALL_SSL_ALGORITHMS to readd support,
  . With SSL_CONF_CTX support (OpenSSL v1.0.2+) the values of the
    following variables (and variants) will be parsed by OpenSSL instead
    of S-nail, offering more user and packager flexibility:
    *ssl-cert* @, *ssl-cipher-list* @, *ssl-key* @, *ssl-protocol* @.

    E.g., shall a new OpenSSL ship with TLS v1.3 S-nail doesn't need to
    be adjusted in order to support TLS v1.3, all there is to do is that
    the user has to adjust her *ssl-protocol* setting.
    This is at least the theory. :)
    And maybe OpenSSL (will) offer(s) symbolic constants like "NEWEST"
    or "SAFEST".

- Folder hooks have been extended:

  . if there was no *folder-hook-FULLNAME* @ we'll try
    *folder-hook-+NAME* if the mailbox NAME resides in *folder*, e.g.,
    the author has "folder-hook-+sent=MACRO" and all his *record*
    variables are "record=+sent", therefore MACRO can be shared in
    between all accounts with a single hook definition. []
  . `localopts' can now be used in folder hooks: the covered settings
    will be reverted once the folder is left again. []

- More security control à la CVE 2014-7844, possibly for the first time
  enabling safe usage of S-nail via CGI: [topic/cve-2014-7844.2]

  . fixed *sendmail-arguments* @ parsing:
    *sendmail-arguments*='-F "Dubi Da"' will now result in <"-F" "Dubi
    Da"> not <"-F" ""Dubi Da"">,
  . new command line argument "-." forcefully terminates options and
    enters send mode.  I.e., using this option avoids possible
    misinterpretation of the following arguments.

    This operation is usually reserved for --, but since S-nail passes
    anything after -- to the MTA (but read on) i had to invent something
    else.
  . New variable: *expandargv* @: in equal spirit to *expandaddr*
    this one is required in order to pass arguments after -- to the MTA.
    If set to "fail" existence of such arguments is a hard error,
    "restrict" likewise except in interactive mode or in conjunction
    with the -~ or -# options.
  . *expandaddr* @: new special value "fail" causes presence of extended
    recipient addresses to be treated as a hard error.

- `unaccount' @ and `undefine' @ learned that * means "all accounts" and
  "all macros", respectively. []

- Spam handling has been rewritten completely, also fixing a very old
  misbehaviour in subprocess handling (malloc in signal handler).
  Please reread the manual section "Handling spam" @ for more.
  The motivation was also that bogofilter(1), sylfilter(1) etc. can
  export their databases, so should the author ever find time to
  implement spam handling in C like his predecessor it will be possible
  to continue to use those databases: [topic/spam.2]

  . *headline* @ format %$ has been fixed,
  . when working on multiple messages the operation is cancelled if an
    error occurs,
  . new variables: *spam-interface* @ chooses the, well, ...
    This one has extensive documentation.  Plus the interface dependent
    *spamc-command* @, *spamc-arguments* @, *spamc-user* @,
    *spamd-socket* @, *spamd-user* @,
    *spamfilter-ham* @, *spamfilter-noham* @, *spamfilter-nospam* @,
    *spamfilter-rate* @, *spamfilter-spam* @ and
    *spamfilter-rate-spamscore* @,
  . the *attrlist* variable gained a new slot for an unsure-spam status
    (default character is ~).
    Messages with that flag can be addressed via the :S colon modifier.

- Fix: even though -# implies *sendwait* a user should have the option
  to turn *sendwait* off again. []

- Completely reworked mime.types(5) handling, note the backward
  incompatible drop of `mimetypes': [topic/mime.types.2]

  . dropped the `mimetypes' command,
  . new commands: `mimetype' @ and `unmimetype' @,
  . *encoding* is now parsed case-insensitively,
  . *mime-counter-evidence* @ gained new bit 3 to indicate the desire to
    forcefully overwrite MIME types if we think we know it better,
  . *mimetypes-load-control* gained an extension that can be used to
    load more and specific files, which in addition may make use of
    a new non-portable S-nail-specific TYPEMARKER extension.  The manual
    section "THE mime.types FILES" @ has been rewritten accordingly.
    (In short: mime.types(5) lines can be prefixed by @, @h@ or @H@, for
    plain text, builtin HTML filter (plain text fallback), ditto
    (without fallback).)

- Support for RFC 2231 has been added.  This means that S-nail generates
  truly MIME compliant messages and no longer requires help from other
  MUAs!  In fact MIME parameter handling has been rewritten completely.
  [topic/rfc2231]

- On the long run shell word expansion (via wordexp(3)) will be replaced
  by a new, restricted (and thus (hopefully) safer), internally
  implemented path expansion mechanism that only supports ~/ -> HOMEDIR
  and $SHELLVAR / ${SHELLVAR}.
  Since the original expansion is *so* hardwired that'll take time, for
  now it is used for attachments only, but here all through the way.

  But where it is used already it has consequences regarding backslash
  escaping; to improve user experience a bit ~@ will display the escaped
  filename so that users only have to hit ENTER to accept paths: e.g.,
  "diet\ is \curd.txt" will be displayed as "diet\\ is \\curd.txt".
  And, e.g., the test script does the following for RFC 2231 (excerpt):

    MAILRC=/dev/null "${SNAIL}" ${ARGS} -Snodot \
      -a "ma'ger.txt" -a "mä'ger.txt" \
      -a 'diet\\\ is\ \\curd.txt' -a diet \"is\" curd.txt \
                                         ^      ^ NOTE: 0x00A0, NBSP
      -a ✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆.txt

  The introduction of the manual section "COMMANDS" @ has been updated
  accordingly.  Also see -a @.  [topic/fexpand.2]

- Assorted changes:

  . Multiple crash-causing bugs regarding `source', also if used via
    `~:source', have been fixed. [aafb688,6979c73,4c6dfc2]
  . The NAILRC environment variable is no longer supported. []
  . The *Replyall* variable has been dropped as it was only an alias
    for the POSIX standard *flipr* variable. [topic/mft]
  . New variables: *version*, *version-(major|minor|update)*,
    *features*. [topic/okeys-attr]
  . `varedit' @ can be used to create variables. [topic/okeys-attr]
  . New variable: *charset-unknown-8bit* @. []
  . *smtp-auth* @ now defaults to "plain" (if *v15-compat* is set).
    (Josef Jurek, Gavin Troy) []
  . All obsoleted: *autothread* @, `thread' @ and `unthread' @. []
  . *showlast* @ should have gained meaning. (Gavin Troy) []
  . If the -r option @ is given a full name specification (rather
    than only an address, pass the MTA the respective address parts via
    -F and -f. []
  . New variable: *term-ca-mode* @ (for WANT_TERMCAP). []
  . `ghost' @ gained a new mode and tweaks (see manual). []
  . -r option: fixed -h output and manual. (Martin Brandenburg) []
  . With *debug* or 2x *verbose* command lines (including those read
    from files) are now traced. (Bob Tennent) []
  . NAIL_TMPDIR (new) and TMPDIR environment variables are now
    (guaranteed to be) set in pipe hooks. []
  . Improved Subject: Re: trim: MIME decoding is now performed. []
  . New variants of *pop3-bulk-load* @: *-[USER@]HOST*. []
  . *crt*=0 @ now really works. []
  . Maildir code now uses string relaxation which drastically dropped
    memory usage on large mailboxes. []
    And for the first time it performs real memory cleanup. []
  . Improved error message on MTA exec failure. (Dominic Meskys)
  . Fix: "setenv noVAR" would have set noVAR. []
  . When `setenv' is used to set any of $HOME, $USER, $TMPDIR it'll be
    reflected by our internal variables.  (Still hacky as special code
    is needed; also "set HOME=x" shadows HOME for "varshow HOME" instead
    of being rejected.) []
  . Colon modifiers can now be joined, as :uas. []

ChangeLog (purely technical)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

. Improved output flushing, avoidance of printing of useless
  output (especially smoothens *editalong*). [topic/stdout-fflush]
. String relaxation is now everywhere (but IMAP), the builtin buffer
  sizes were reduced to 1/3.
. Again a manual review.  The manual now supports mdocmx(7).
. Implemented ARC4 pseudo-random for random generation.
. Better signal handling here and there.
. Fixed most "unpluggable memory leaks" by plugging them via chains of
  signal handlers and longjmps.  Terrible.  But no more leaks.
. A lot of this and that.  (Really.)

I didn't make it to improved message selection.

--steffen

------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
S-nail-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/s-nail-users

Reply via email to