4 In the following numbers in [] reference either the commit SHA1 hash or
5 the name of a topic branch which relate to the NEWS entry;
6 Likewise, numbers after an at-sign @ are mdocmx(7) manual anchor
7 references which allow directly jumping to the given anchor.
8 Commits can be browsed by appending the commit hash to
9 https://git.sdaoden.eu/cgit/s-nail.git/commit/?id=
11 The complete changelog of commits in between two versions can be
12 inspected by using the git(1) `log' command as shown below, where "OLD"
13 and "NEW" are the two versions to be compared.
16 $ git log --reverse --topo-order --abbrev-commit OLD..NEW
17 # Only topic branch headers (--no-merges for content commits only):
18 $ git log --oneline --reverse --topo-order --merges OLD..NEW
19 # Same, but truly accessible:
20 $ git log --oneline --reverse --topo-order --merges --parents OLD..NEW |
21 while read c1 c2 c3 c4 c5 c6; do
22 printf "%-24s: \$ git log --oneline --no-merges ${c1} ^${c2}\n" "${c6}";
25 v14.8.10 ("Anachalcos"), 2016-08-20
26 -----------------------------------
28 A cumulated bugfix release.
29 And because v14.9 still takes time.
33 Apologies to Sergey and those members of the Roff community which would
36 S-nail will become S-mailx after v14.9, and all project resources
37 will move to www.sdaoden.eu with v14.9; only the ML remains hosted
38 at Sourceforge.net as of this writing.
39 We thank Sourceforge.net for hosting this project so many years!
44 Yes, "quick and dirty" only for Anachalcos.
48 Fixes page-wise movement if the argument is greater than 9.
50 43ad441 THANKS: update mail address of Tim (trondd)
51 8b85b96 Fix compiler warning of [7f7bae1] (Fix `z' (Tim))
52 6afff81 FIX possible intwrap caused delays (for mailboxes with size == 1)
53 530e81f FIX n_utf8_to_utf32() sequence length checks (since [558d8b8],
55 78083c0 HTML filter: filter out some characters
56 407a705 Actively filter out U+00AD characters (Vincent Lefevre)..
57 e5591f2 THANKS: Vincent Lefevre
58 5c458cc FIX MBOX append (since ever (nail 11.16, 2004-11-18])!)..
60 This only fixes invalid non-empty MBOX mailboxes, so "FIX" is possibly
63 75982b9 bidi_info_needed(): no variation selectors etc. -- CText, where are
65 e65db06 FIX n_verr(): cannot reuse va_list..
67 Only for error messages > ~2 KB, which we usually don't produce.
69 23e8697 Fix *quote-fold* (on GNU/Linux iswspace() does not return boolean!)
70 98cf903 FIX: really_rewind() for pre POSIX Issue 7
72 Hardly affects anyone, i had to look into old v5 FreeBSD: maybe.
74 41250b1 FIX: no O_APPEND for .bz2/.xz/*file-hook-load*! Use lseek(2)!!..
76 This is the reason for this release, and applies to all C libraries
77 which optimize fseek(3) and do not adjust the file descriptor via
78 lseek(2) if the resulting offset is in the I/O buffer.
79 It seems to enable me to say
81 set file-hook-load-xz_pgp='gpg -d | xz -dc' \
82 file-hook-save-xz_pgp='xz -zc | gpg -e'
84 on a GNU/Linux system without ending up with corrupted boxes,
85 i.e., a complaining gpg(1) that says that says so.
87 224d858 popen.c:_file_save(): adjust partial [41250b1] cherry-pick
88 87c902a sendmp(): fix possible false insertion of colour reset seq.
90 v14.8.9 ("Dung Beetle"), 2016-06-21
91 -----------------------------------
93 A cumulated bugfix release.
95 Credits Ralph Corderoy.
96 Apologies, Dirk-Wilhelm Peters.
98 S-nail will become S-mailx after v14.9, and all project resources
99 will move to www.sdaoden.eu with v14.9; only the ML remains hosted
100 at Sourceforge.net as of this writing.
101 We thank Sourceforge.net for hosting this project so many years!
106 - *signature* and tail injections now work correctly even in combination
107 with -t. [d4237ac] (Dirk-Wilhelm Peters)
109 - Fix faulty (by-one) buffer overflow calculation in the NCL line editor
110 that could sometimes be seen when using ^W for backward deleting
111 a word when using this at a freshly created rightmost columns.
112 Bug was introduced in [d33bd89] (tty.c, NCL: reduce realloc counts,
113 2013-08-23). (Ralph Corderoy)
118 b0b974e mk-conf.sh: disable -b for tcc(1) [mob]
119 a415c58 makefile:_update-release: symlinks do not work with lighttpd, use hard
121 2fefb1f collect(): fit ~? output in 25 lines (fixes [5dea8a4,4e61d5c] ;)
122 7c7c888 mime.types: oops, fix x-xz tbz->txz extension!
123 c40c206 collect(): hint for `~.' if *ignoreeof* is set, not ".": needs *dot*
124 d4237ac Fix *signature* / tail injection in conjunction with -t..
125 ef6a9c2 mk-conf.sh: pcc(1) as of CVS works without stack protectors!
126 d5cec10 FIX HTML filter: swallow lone ampersands in parameters (SIGH!)..
127 08eb902 FIX: avoid duplicate output for HTML filter..
128 524adf4 makeprint(): filter some iswprint()==true, but which really aren't..
129 552b2b8 `set': fix quoting when printing all variables
130 aa8df72 mk-conf.sh: fix DEVEL<->DEBUG interdependency; terminate printf(1)
132 f84b0cd mk-conf.sh: check for the needed environ(3)
133 b5af710 mk-conf.sh: fix [f84b0cd]: NULL needs stdio.h
134 fdcbf59 Again "improve" ~? listing
135 ba29651 FIX: cntrlchar() was broken since [4e49924] from 2012-10-15!!
136 08ab13f tty.c, NCL fix possible off-by-one (Ralph Corderoy)
137 815e99f makefile:_update-release: rm TODO in [timeline] _shipout release_ ball
139 v14.8.8 ("The Vulture 38"), 2016-03-26 (v14.8.7 as of 2016-03-25 broken)
140 ------------------------------------------------------------------------
142 A cumulated bugfix release.
144 Credits Gaetan Bisson, Sergey Matveev, Dirk-Wilhelm Peters, Allan McRae
146 All the mentioned persons deserve special thanks indeed.
148 We welcome Sergey Matveev, Allan McRae and Ralph Corderoy in THANKS.
150 S-nail will become S-mailx after v14.9, and all project resources
151 will move to www.sdaoden.eu with v14.9; only the ML remains hosted
152 at Sourceforge.net as of this writing.
153 We thank Sourceforge.net for hosting this project so many years!
155 NOTES, ChangeLog (packager-affine)
156 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
158 - Thanks to Sergey Matveev the Maildir code is now compatible to *BSD.
159 Interested persons may read the commit log. [0c30b14] (Sergey Matveev)
161 - The (much to restricted) test target should now work if $SHELL is set
162 to something "nologin". [7876f3a] (Gaetan Bisson)
164 - If *sendmail-no-default-arguments* is set we will NOT (!) terminate
165 MTA options with "--", assuming the user does. This allows, e.g.,
166 very sick things like (ouch) [8b0bdbe]
168 set sendmail="/bin/ssh" \
169 sendmail-arguments="steffen@sdaoden.eu /usr/sbin/sendmail -t" \
170 sendmail-no-default-arguments \
171 sendmail-progname="ssh"
176 - The primitive builtin HTML filter should now correctly parse HTML
177 parameters. It seems to become necessary ;) [e227a78,65df701]
179 - *signature* will now undergo MIME encoding. [fe209f7]
180 (Dirk-Wilhelm Peters)
182 - Operating systems without getaddrinfo(3) but only with gethostname(3)
183 should be able to resolve DNS (port numbers) correctly again.
184 [7dd3a71] (Allan McRae)
186 - The builtin NCL no longer counts gabby history limits against the
187 given maximum persistent history size unless gabbiness is desired.
190 - The builtin NCL couldn't paste more than one line since October 2015.
191 [ff5d914] (Ralph Corderoy)
193 ChangeLog (purely technical)
194 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
196 - WANT_READLINE environments should possibly have a better experience
197 hen interactively editing the attachment list. [ede2800]
198 (In general interactive situation has to improve a lot.)
200 - Fix a bit of weird buffer handling. [536d3a7,0f2cc31,e9a5c22]
203 - Fix the fixed buffer handling which broke v14.8.7. [3e4831a]
206 v14.8.6 ("Hen Harrier II"), 2015-12-28
207 --------------------------------------
209 A cumulated bugfix release.
211 Credits Hilko Bengen, Salvatore Bonaccorso, Martin Sebor,
212 Aharon Robbins and Philip Guenther.
214 We welcome all credited persons in THANKS.
216 NOTES, ChangeLog (packager-affine)
217 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
219 - WANT_AMALGAMATION dependency tracking has been fixed.
222 - "INSTALL": clarification: "make" OR "make install", NOT "[make &&]
223 make install". More to come in v14.9. Also INSTALL now says that the
224 default configuration includes all non-experimental features, whereas
225 the otherwise identical CONFIG=MAXIMAL does include them.
228 - SENDMAIL will now fallback to /usr/sbin/sendmail if we don't find any
229 executable sendmail(1). We had some similar issue on ArchLinux, but
230 i failed to deal with the no-sendmail-available case. sendmail(1) is
231 expected in /usr/sbin on *BSD and according to Debian Policy 11.6.
232 [0e09d5e] (Salvatore Bonaccorso)
234 - SYSCONFRC no longer includes SYSCONFDIR. I.e., S-nail now does
235 load(SYSCONFDIR "/" SYSCONFRC);
238 It seems only CRUX-Linux is affected, and i've sent a patch. [807f64e]
240 - We now support the TinyCCompiler. [topic/tcc]
242 - And -- ouch! -- fix S-nail on Solaris, again. It was broken since
243 [3e863c6] (2015-06-23) since necessary linker flags had been
244 overwritten. [fd40d5a,6fe5448]
245 (We also deal with NAME_MAX being the minimum possible now, see below.)
250 - When `Lreply'ing to multiple messages and using the `~:' tilde command
251 the argument list of the `Lreply' itself would have been overwritten,
252 resulting in crashs. [9f5c403 (+ 1162af5,5f08362)]
254 - Temporarily forbid `mbox' but in a system mailbox. I hope v14.9 can
255 perform the action gracefully. [781ee34]
257 - On systems with "unsigned char" "char"s S-nail was broken for about
258 two and a half year since an E(nd)O(f)F(ile) condition would never
259 have been satisfied, resulting endless loops. Detected by the Debian
260 package build bot who hung endlessly when running "$ make test".
263 - Fixes to false signal handler restoration, partially false forever.
266 - Fix crashes in the error path of Zopen(). If a de-/compressor fails
267 Heirloom mailx would crash, and S-nail would have crashed in the debug
268 path and print "Alert: Invalid file pointer" in optimized code. Since
269 S-nail allows *file-hook-{load,save}-EXTENSION* the situation is much
270 worse, however. [8e7f0f4]
272 - Don't crash in `varedit' when $EDITOR doesn't start up. [5a5350b]
274 - The build system now sorts source files in order to honour
275 <https://reproducible-builds.org/>. [a939517]
277 - The build script has seen improvements. The (mysterious) hangs in VMs
278 are gone now that i have switched configuration evaluation to awk(1)
279 thanks to a suggestion by Aharon Robbins. In fact doing "$ make
280 CC=tcc devel" now takes the same time all-in-all that the mentioned
281 evalution took alone. [fa2e248] (Aharon Robbins)
283 This is true even if we know do a lot more of run tests instead of
284 plain link tests for native environment detection since the GNU
285 C library monster uses empty ENOSYS stubs for system calls it doesn't
286 provide. This is the reason why the Debian kFreeBSD S-nail package
287 doesn't work out by now. We are not aware of booting different
288 kernels with different feature sets than what we detected upon compile
289 time, though. I don't think we ever will. [3ee2d4c]
291 ChangeLog (purely technical)
292 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
294 - Dotlock file locking now ignores lock file creation failures on
295 readonly filesystems. Since the mailbox will be degraded to read-only
296 no dotlock file is needed. [40785bc]
298 And that really hurts: [3517800]! On Solaris NAME_MAX is set to the
299 minimum that POSIX allows (14), and we were not really prepared for
300 that. I.e., the lock for /var/mail/sdaoden would be
301 /var/mail/sdaoden.lock, we require at least one more byte for safe
302 lock file creation and yet included the terminating NUL in the
303 calculation, and whoops, dotlocking failed because of ENAMETOOLONG!
304 So do use pathconf(2) _exclusively_ if that succeeds to give an
305 answer. And we still have room for improvements that i as a C++
306 programmer with speedy dynamic Str objects would never thought i have
309 - Fix pathconf(2) usage. [31ce3e1] (Not wrong: Martin Sebor)
311 - First step to use the new *at() series of system-calls if available,
312 inspired by (Philip Guenther). [topic/time]
314 v14.8.5 ("Hen Harrier"), 2015-09-05
315 -----------------------------------
317 Credits John Dodson, Claudio Cappelli.
319 We welcome Claudio Cappelli in THANKS.
321 NOTES, ChangeLog (packager-affine)
322 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
324 - I've forgotten to add obsoletion warning messages in v14.8.4, so
325 running with enabled -d/*debug* -vv/2x*verbose* may be useful.
328 - A series of bug FIXes (which caused the "Hen Harrier" in the end):
330 . v14.8.4 bug: macro content will be added to the history. [28672e5]
332 . Fallout of massive not-yet-dead style and control flow change series
333 in February 2014, I.: the close-on-exec bit of temporary file
334 descriptors wasn't set. [8f58404]
336 . Fallout of massive not-yet-dead style and control flow change series
337 in February 2014, II.: temporary files were always created in the
338 current directory. Aloha, heh. [edc12c8]
340 . v14.8.4 bug: when `resend'ing messages a crash would happen when
341 generating the Message-Id: (control flow messed up when hastily
342 implementing extended -t parsing). [9e63ae6]
343 (Hello, Bob Tennent: i finally have added at least a simple `resend'
344 test. Don't your worry.)
346 . v14.8.4 bug: plugged a file descriptor leak in the dotlock code (one
347 side of the control pipe was leaked upon success; there you see how
348 large ulimit(3) limits are by default today). [ed5c8cf]
350 - When using -t and a template message recipients given on the command
351 line will now be joined into the message instead of being discarded.
357 - The `set' command will now mark out assembled variables if *debug* or
358 2x*verbose* is set. [2b6e64a]
360 - Added *smime-cipher* @433 option (i.e., generic variant of
361 *smime-cipher-USER@HOST*). [58804ea]
363 - Messages will now _only_ be saved in *DEAD* if *save* is set (POSIX).
366 - The (pretty useless for now) `pipe' command will now also print the
367 overall message info (it printed MIME part infos already). [e0a8196]
369 - NAIL_FILENAME_GENERATED is now nothing but a random string. [36097df]
371 - *debug* now implies no*record* and no*save*. [ca9f512]
373 - After almost three years i've finally heard what John Dodson said and
374 changed/restored behaviour of plain "address" message specifications
375 to reflect the original intent (and a bit POSIX) so we now have
376 A case-insensitive “any substring matches” search against the
377 ‘From:’ header, which will match addresses (too) even if
378 showname[339] is set [things are different if *allnet* is set]
379 [44cec1f] (John Dodson)
381 - ..and therefore we need the possibility to somehow perform "exact
382 boundary" matches: for this i've extended the "@" message
383 specification with a header-name "~" prefix and header abbreviations:
384 ‘f’, ‘t’, ‘c’, ‘b’ and ‘s’ will match ‘From’, ‘To’, ‘Cc’, ‘Bcc’ and
385 ‘Subject’, respectively and case-insensitively.
387 This message specification performs full text comparison, but even
388 with regular expression support it is almost impossible to write a
389 search expression that savely matches only a specific address
390 domain. To request that the content of the header is treated as a
391 list of addresses, and to strip those down to the plain email
392 address which the search expression is to be matched against, pre‐
393 fix the header name (abbreviation) with a tilde ‘~’:
394 '@~f@@a\.safe\.domain\.match$'
397 - New option: *sendmail-no-default-arguments* @426 [d983036]
400 - Do no longer make a difference in "no mail for user" and "missing
401 system mailbox". The latter caused yet an annoying error message even
402 with *emptystart*. [7abff87]
404 - New command `source_if' @187 is like `source' but don't fails if the
405 file cannot be loaded. That is to say, we do not yet support
406 "-f FILE@ tests nor `test -f FILE` shell commands for `if', sigh.
409 ChangeLog (purely technical)
410 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
412 - Unless Gunnar Ritter is directly affected the fourth clause of the BSD
413 copyright has been dropped, as has been done for NetBSD Mail.
416 - Quoted-printable encoding will avoid printing a soft newline if only
417 a single character is about to follow. [6b31542]
419 - The configuration script now shows what it is doing at the beginning,
420 to overcome those hangs that can be seen especially in VMs. [4c29cea]
422 - The configuration will do an automatic "make clean" when the
423 configuration had been updated. [9706734]
425 - We no longer generate a MIME message unless that is necessary. I.e.,
426 a plain 7-bit (US-ASCII) message without attachments send from
427 a system daemon is a plain RFC 822/2822/5322 message and doesn't
428 require any MIME header. [824257a]
430 - To avoid that DNS resolver becomes unusable due to ^C interruption.
431 Also fixes a possible leak in non-getaddrinfo(3) codepath (old boxes).
434 v14.8.4 ("Nameless bird (shot by Hemingway)", 2015-08-04
435 --------------------------------------------------------
437 Thanks for Jérémie Courrèges-Anglas for beating me to it.
439 NOTES, ChangeLog (packager-affine)
440 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
442 - Added support for the (BSD-licensed) idnkit[1] IDNA library which is
443 now in the base system of DragonFly BSD. We still only support
444 encoding, though. (And assume the hostname is in locale encoding.)
447 [1] <https://www.nic.ad.jp/ja/idn/idnkit/download/>
449 - I have rewritten the privilege-separated dotlock helper program,
450 because among others a SETGID one is of no use in todays world.
451 So it is now SETUID to the new PRIVSEP_USER.
453 . WANT_PRIVSEP and PRIVSEP_GROUP have been dropped.
455 . New option: WANT_DOTLOCK, by default enabled.
456 It is henceforth possible to strip any dotlock code off S-nail.
457 So either S-nail has complete dotlock support, including the
458 privilege-separated dotlock helper, or none at all.
460 . New variable: PRIVSEP_USER, by default "root".
461 It must be a privileged user that can be used to implement the new
462 strategy: we create the dotlock file and then fchown(2) it to the
463 UID and GID of the mailbox that we created it for. Like this the
464 owner of the mailbox (remember %USER, $USER, -u USER ..) will be
465 capable to remove the lock file herself. Or himself.
467 . No dotlocking was performed for reading, only for writing. I've
468 changed this. We also didn't perform any (file) locking at all when
469 updating non system-mailboxes, which i have changed, too.
471 . Fixed horrific bug: on systems without realpath(3), e.g., Solaris 9,
472 S-nail would not resolve symbolic links on the mailbox to lock,
473 potentially creating the lock file in the wrong directory.
475 . We now compare the inode/device/etc. of the mailbox file with the
476 information we collected a lot earlier from the open mailbox file
477 descriptor, and bail if they are not identical, to reduce attach
480 . The privsep helper now re-checks that it is capable to read (or
481 read/write) the mailbox it is creating a dotlock for, to reduce the
482 chance of being misused (by itself). I.e., it does so before
483 raising its privileges, say.
487 - The predefined CONFIG=urations have been changed a bit and now
488 "require" more options than they did before.
490 - Renamed WANT_ALL_SSL_ALGORITHMS to WANT_SSL_ALL_ALGORITHMS.
491 That was a no-brainer, default of "yes" remains, but it now can also
492 be "require"d. [910849e]
494 - The GitLab project repository URL has been changed and now is
495 <https://gitlab.com/sdaoden/s-nail.git> (leave off ".git" for browsing
501 - It has become possible to fixate the input character set of
502 attachments from the command line (without going over ~@):
503 when the -a @39 option cannot access(2) the file to be attached it
504 searches the filename for an equals-sign "=" and splits into filename
505 and character set shall it find one. A character set defined like
506 this is "fixated" and therefore no character set conversion occurs.
509 ./s-nail -d -s subject du@auch \
510 -aversion.h -aversion.h=KoI8-r -aversion.h=LaTin1 -aversion.h
512 >>> Content-Type: text/x-chdr; charset=US-ASCII
513 >>> Content-Type: text/x-chdr; charset=KoI8-r
514 >>> Content-Type: text/x-chdr; charset=LaTin1
515 >>> Content-Type: text/x-chdr; charset=US-ASCII
519 - In *debug* mode the content of the message that would have been sent
520 is printed on standard error not only in *smtp*, but also MTA mode.
521 E.g., as in the example above. [c106f35]
523 - S/MIME oops: S-nail yet didn't test for the "application/pkcs7-mime"
524 MIME type at all, but only for "/x-pkcs7-mime" (pre-standardized
525 variant), so that S/MIME messages generated by more modern MUAs (e.g.
526 Alpine) wouldn't have been understood!
527 And we do now use that MIME type ourself, as standardized by RFC
528 5751. However, we are still stupid and don't handle a signed message
529 inside a multipart/mixed message, neither do we support fully
530 encrypted messages (nothing but rfc822 member) etc. [10c2b16]
532 - *smime-cipher-USER@HOST* @431 values changed to versions without
533 hyphen, as that is what OpenSSL uses: e.g., AES256 not AES-256; the
534 latter versions are no longer documented and will be dropped with
537 - New variable *smime-sign-message-digest* [-USER@HOST] @437 can be used
538 to define the message digest for S/MIME signing. RFC 5751 mandates
539 a default of SHA1, by default available are also SHA256, SHA512,
540 SHA384 and SHA224, MD5 may be available, dependent on OpenSSL.
541 With WANT_SSL_ALL_ALGORITHMS more digests may be available. [2f6dac3]
543 - Using NAIL_FILENAME_GENERATED was prevented since some time since it
544 ended up longer than NAME_MAX (ENAMETOOLONG). [3bcbbfc,f632b5b]
546 - Heavily rewritten manual section "Signed and encrypted messages with
547 S/MIME" @35, giving a ready-to-go example for CAcert.org.
549 - Nicer output for `help' @126 / `?' @74 when given an argument:
550 if that is a command ghost we search for the expansion and do print
551 the (further expansion and) help for that if possible [cea8c20]:
554 save: Append <message-list> to <file>
556 s (save): Append <message-list> to <file>
559 s -> s (save): Append <message-list> to <file>
561 - No longer allowing recursive commands in macros to avoid that the
562 following can crash us (check can be bypassed):
571 This is a pity because "? call ouch" does no longer cause a reply,
572 but the real healing will take time.
573 Also the `source' command is now actively disabled during macro
574 evaluation -- this only works(/ed) by accidence and anyway non-
575 synchronously (the `source'd file will be loaded after the macro
576 evaluation has finished). The real healing for this is heavy stuff
577 and will remove a smart and fantastic idea from before 1979, but it
578 won't work out with macro support (see commit message for more upon
581 - And `source' will be actively forbidden in compose mode, too. It
582 never worked the way it should. [abd388c]
584 - Did -t @60 ever work for real? Now it does.
585 Even better it now "supports" some more header fields (References:,
586 In-Reply-To:, Message-ID:, and Mail-Followup-To:, but the latter will
587 be subject of a nice followup content massage) -- S-nail can
588 henceforth be used for git(1)s send-email command.
589 We also improved the interdependency of -t (with[out] From:, Sender:),
590 -r, *from* and *sender*, but i don't say it is perfect yet.
591 [6842f12,631d402,a86ca2d]
593 - Completely reworked *expandaddr* @373 handling, and you can now define
594 *exactly* what you want, e.g., "fail,-all,+addr,+file" will only allow
595 mail address or file recipients and hard error out otherwise.
596 Note that in order to make that work "restrict" has been changed to be
597 effectively "restrict,-all,+name,+addr", which matters in, e.g.,
598 "fail,-all,+file,restrict" which therefore truly is "restrict,fail"!
600 Even in conjunction with -t you should now see proper (-d / *debug*,
601 -v / *verbose*) messages for *expandaddr* caused address stripping,
602 or, with "fail", hard errors. [8668be3]
604 ChangeLog (purely technical)
605 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
607 - We again allow Message-Id:s to start with a leading slash, as in
608 "/p/forge/site-support/10.../...". [143372a]
610 - We now support multiline values in make.rc: to do so, escape the
611 newlines with a backslash "\", e.g. [621cbed,9cf4e7b]
614 if [ -d /var/spool/mail ]; then \
615 echo /var/spool/mail;\
620 - Lowered the memory pressure caused by malicious spam messages that
621 place hundreds of references into the References: header body.
622 And we don't use alloca(3) no more for such things, in order to lower
623 stack usage. [1c4b8c9,47a1a5c]
625 v14.8.3 ("Startled chicken"), 2015-07-05
626 ----------------------------------------
628 Credits go to Martin Neitzel!
630 NOTES, ChangeLog (packager-affine)
631 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
633 - Prefilling INCS and LIBS is finally honoured by the build system, just
634 as documented. [9a34822]
636 - In place of "packager-install" "doinstall" will also do.
638 - New `make.rc' option: WANT_ERRORS, by default enabled.
639 Will enable the new command `errors' @105 (#_105) and an error message
640 queue ring: error messages will no longer get lost but duplicated into
641 the queue, to be displayed in interactive mode via `errors'. This is
642 a finite ring which rotates oldest messages if it full.
645 - S-nail no longer offers hooks for group identity switching: it no
646 longer makes sense to install it SETGID to a mail group (shall anyone
647 has done so). [ac42d24]
649 - New `make.rc' option: WANT_PRIVSEP, by default enabled.
650 The dotlock'ing has been completely rewritten (see `make.rc' for
651 a longer explanation of traditional Unix mailspool locking, please).
653 In order to be able to create lock files in *any* SETGID mailspool
654 directory in which user system mailboxes may reside S-nail now ships
655 with a privilege-separated mini dotlock program (source in
656 `privsep.c'), which will be installed in the new also LIBEXECDIR (as
657 YOUR_MUA_NAME-privsep) SETGID to the group given by the also new
658 PRIVSEP_GROUP (default "mail").
660 This dotlock program will be used whenever a mailbox has to be
661 dotlocked which is owned by group that is not the group of the user
662 who is running S-nail, assuming that the file in question resides in
663 a SETGID mailspool directory.
665 The new variable *dotlock-ignore-error* @294 (#_294) now controls
666 wether it is a failure if creation of a dotlock file is not possible.
667 This variable is by default enabled if WANT_PRIVSEP is false.
673 - Fix file locking, which was broken since v14.8. [7f8ebc0]
676 - -e now works with given boxes; -e is mutual exclusive with -H and -L;
677 and then any of -e, -H and -L causes the mailbox opened in readonly
678 mode. [3bb05a2, 2cf15c1]
680 - In *debug* mode no process will be started for a set *smtp*, but
681 instead the message will be directly generated (on the error channel).
682 Also GSS-API authentication will no longer be performed even with
683 enabled debug, oops. [3333d71]
685 ChangeLog (purely technical)
686 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
688 - A readonly IMAP box is opened via EXAMINE not SELECT. [2d5259c]
690 - snprintf(3) and vsnprintf(3) are now required preconditions. [c58c7e9]
692 v14.8.2 ("Wandering albatross"), 2015-06-17
693 -------------------------------------------
695 Many thanks Bob Tennent, for reporting and testing!
697 NOTES, ChangeLog (packager-affine)
698 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
700 - Configuration will now find clock_gettime(2) in -lrt and
701 gettimeofday(2) as such on Linux. [47c9ea7,5e248d2,df7d77f]
704 - MANDIR now defaults to ${PREFIX}/share/man (not ${PREFIX}/man)
710 - Added missing condition clause in `if' expression parsing
713 ?0[ +mbox]? if $du @@ hey
716 ?0[ +mbox]? if $du @@ hey
717 `if' conditional: unrecognized condition -- near "du"
718 Expression: $du @@ hey
719 Left to parse: $du @@ hey
722 - Ooops, fix pipe-TYPE/SUBTYPE @403 with value "@" (a.k.a. treat as
723 plain text and display "as is"): i've broken that once i've introduced
724 the extended type markers for the `mimetype' command. Must have been
725 a Freudian error, sorry! [ea655de]
727 - Fix a bug introduced in nail 9.29, 2001-12-10: a temporary buffer is
728 closed with fclose() even though it is a registered file that instead
729 needs to be closed via Fclose(). This effectively results in
730 a double-fclose(3) of the underlaying file descriptor once the
731 registered files are cleaned up next, which happens either after
732 signal interruption and, since [65e0510] as of 2015-05-21, whenever
733 the command loop ticks. [97fcb97] (Bob Tennent)
735 v14.8.1 ("Tristan albatross"), 2015-06-11
736 -----------------------------------------
739 Ypnose, Tarqi Kazan, Dagobert Michelsen and OpenCSW.org, Gianluca
740 Ramunno, Bob Tennent.
742 We welcome Dagobert Michelsen in THANKS.
744 NOTES, ChangeLog (packager-affine)
745 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
747 $ In all the following noticable changes to the release candidate are
748 $ marked with a $ in the first column
750 - We have been ported to Sun Solaris!
751 Thanks to Dagobert Michelsen for giving me an account on OpenCSW.org!
753 - The build system will now really find strip(1). [54e91c4]
755 - WANT_TERMCAP fix: we simply passed tputs(3) a pointer to putchar(3)
756 though that may be a macro etc. [cc65bc3]
758 - The following variables can be used to overwrite utilities needed
759 during configuration and build:
761 MAKE=, STRIP=, awk=, cat=, chmod=, cp=, cmp=, cksum=, grep=, mkdir=,
762 mv=, tee=, rm=, sed=, tr=
764 Note that rm(1), sed(1) and tr(1) are needed before `make.rc' is read.
765 Fix: these will now also affect "make test".
767 - WANT_AUTOCC now no longer sets compiler flags as of experience, but
768 compiles a test program to actually detect wether the compiler will
769 swallow the flag. This increases configuration time quite a bit.
770 Users who really did use "make devel" possibly want to use "make
771 CONFIG=DEVEL" followed by "make build" now.
772 Note we now also test for -fPIE as well as relro,now,noexecstack.
774 - WANT_SPAM_SPAMD is now decoupled from WANT_SOCKETS. [d247d86]
776 - The configuration now also detects any changes on PATH, C_INCLUDE_PATH
777 and LD_LIBRARY. [1038028]
782 - Fixed importing of SHELL/LISTER/PAGER variables from the program
783 environment. [940c7f1] (Ypnose)
785 - Moved -X @64 command line option handling before attachment
786 evaluation, so that, e.g., `mimetype's registered via it will already
787 be seen when classifying attachments. [5d9742f]
789 - Honour *asksign* @274 again, even if *askatend* @270 or *bsdcompat* @281
790 are not set. This also changes *askattach* @271 as we'll only ask for
791 addition of attachments if there are none yet. [e054d6a] (Tarqi Kazan)
793 - Support OpenSSL 1.1.0 and above: it obsoletes the more-than-a-decade
794 old SSLv23_client_method() in favour of a new TLS_client_method()
795 (instead of using some "magical" constant like, say, "SSL_METHOD_ANY",
796 but who am i). [c35b567]
798 - Generic file (mailbox) load and save hooks have been introduced:
799 *file-hook-(load|save)-EXTENSION* @374,@375, e.g.:
801 set file-hook-load-xy='echo >&2 XY-LOAD; gzip -cd' \
802 file-hook-save-xy='echo >&2 XY-SAVE; gzip -c' \
805 One could think about using all-encrypted mailboxes, or the like.
806 Note that before v15.0 these variables may not be changed while
807 a mailbox handled by these hooks is open. [b4c2c37] (Tarqi Kazan)
809 - When DNS resolving fails we now print error messages.
810 And then, if it fails because of an unknown service (protocol), we
811 check for the protocol and retry shall we have a well-known port
812 number builtin (smtp, submission, smtps, pop3, pop3s, imap, imaps).
813 [5f52370, (3f189f9)] It is not wrong to credit (Gianluca Ramunno)
815 - One may now force treatment of addresses as files with the new "./"
816 or "/" prefixes -- until now it wasn't possible to address files if
817 the addressee includes an at sign, now "./me@here.com" will do, just
818 as will "/me@here.com". [2cf5890,0da473f] (Bob Tennent)
820 - Fix *record-resent* @329, which never made it to *record* @414 since
821 [a11935b], but instead save the message in a file named after the
822 addressee! [a82af9f] (Bob Tennent)
824 - Fixed signal handler uninstallation in sopen() (DNS lookup and socket
825 creation): v14.8.0 could be forced in endless loop after failed DNS
826 lookups due to this. [3cca23b]
828 - Fixed possible double-free (causing a crash) after failed SSL
829 certificate verification (*ssl-verify*=strict etc.) with OpenSSL
830 versions that support SSL_CONF_CTX (1.0.2+). [c691726]
834 . The builtin HTML filter will now silently discard carriage-return
835 characters (looks better in e.g. less(1)). [cf4d800]
836 . When reopening the same box we now recognize if changes had been
837 written, forcing a reread of the box in order to display the actual
838 real content. [7dfbd38,0835212,a15dfed]
839 . `netrc' output changed, so that the output could (in theory) be fed
840 back into S-nail again in order to gain the same settings. [a9a2722]
841 . *pop3-keepalive* @410 gained (@USER)?-HOST forms [69cae68]
842 . *imap-keepalive* @387 gained (@USER)?-HOST forms [9a8c929]
843 . Do not use the builtin random generator if we find a suitable one in
844 the host environment. [0e01aeb,6bcb430,fc846c6] (Bob Tennent)
845 . The builtin HTML filter will now also expand entities in parameter
847 $ . *crt* will now only be checked when attached to a terminal device;
848 $ and no*crt* will now be honoured. [2508c32]
850 ChangeLog (purely technical)
851 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
853 - Solaris port resulted in a lot of changesets for the build system.
854 - I didn't use git(1) rebasing and the [crawl] branch but only [master].
855 And see where that ended: S-nail would have 10000 fossil commits!
856 - Plugged some memory leaks.
858 v14.8.0 ("Albatros"), 2015-04-30
859 --------------------------------
862 I'm glad and happy to announce "Albatros" after about seven months of
863 development. Development that brought many new features, bugfixes,
864 technical overhauling and behaviour tweaking. Shall you ever have been
865 interested in BSD Mail or its deriviatives you might want to give it
868 "Albatros" is indeed the first version of the codebase as such that
869 should allow IMAP->Maildir->MBOX->Maildir->IMAP message roundtripping
870 without causing possible message splitting due to faulty From_
871 detection / encoding. It also generates compliant MIME parameters.
873 Note there are incompatible changes, documented below. And it is also
874 advisable to try out existing configurations with enabled *debug* and/or
875 *verbose* (-d, -vv) in order to check for "obsoletion" warnings.
876 (Here "obsolete" would refer to v15, of course.)
878 Credits and Thanks go to Ypnose, Jérémie Courrèges-Anglas, Josef Jurek,
879 Gavin Troy, Rich Salz, Martin Brandenburg, Bob Tennent, Dominic Meskys
882 We welcome Jérémie Courrèges-Anglas, Josef Jurek, Rich Salz,
883 Dominic Meskys, Peter Bray, Dirk-Wilhelm Peters and Martin Brandenburg
885 Apologies to Dirk-Wilhelm Peters and Martin Brandenburg whom i had
886 forgotten to add to THANKS at first glance once i've added this file; it
887 was nothing but an oversight.
889 I also say «Thank you» to GitLab.com – i've mirrored the S-nail git(1)
890 repository (alongside others) to this free service.
892 Credits finally also have to go to Coverity.com [1] which helped to find
893 some bugs; the claim of a 0.00 defect density after a Friday 13th test
894 must have been an error from their side, though, as well as that the
895 page [1] still remains at a test with a defect density of 0.01, since
896 i've posted yet another run that must have ended with 0.00. (Note the
897 codebase was tested without IMAP code, i.e. my _next_ developer branch.)
899 [1] https://scan.coverity.com/projects/444
901 NOTES, ChangeLog (packager-affine)
902 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
904 $ In all the following noticable changes to the release candidate are
905 $ marked with a $ in the first column
907 + Crawling along the path of CVE [topic/cve-2014-7844.2]: to enable MTA
908 arguments after -- the new *expandargv* @372 must be set. More below.
910 + Even more crawling along the path of the CVE i decided to replace the
911 wordexp(3) based shell word expansion mechanism with an entirely new,
912 internally implemented restricted one, but complete mitigation will
913 take time. This has consequences in respect to backslash escaping in
914 file names (shall you ever have used such a filename with S-nail and
915 its predecessors, of course, and only ...).
916 Please see [topic/fexpand.2] below.
918 + A new member for the *attrlist* @351 variable (for unsure spam status).
919 Since a user setting with a false length will be ignored yet causes an
920 error message this is a backward incompatible change. [topic/spam.2]
922 - New make.rc option: WANT_ALL_SSL_ALGORITHMS (enabled).
923 See make.rc and *smime-cipher-USER@host* @427 below. [topic/ssl.1]
925 - The make.rc option WANT_IPV6 is gone; we use the respective standard
926 library facilities automatically whenever possible. [999e79a]
928 - New make.rc option: WANT_TERMCAP (disabled).
929 See *term-ca-mode* @345 below. [topic/termcap]
931 - The make.rc option WANT_SPAM has been dropped. Instead we have (see
932 [topic/spam.2] below for more):
934 . WANT_SPAM_SPAMC (default off):
935 Rather identical to the former WANT_SPAM (interaction with spamc(1)
936 from spamassassin(1)), but internally improved.
937 . WANT_SPAM_SPAMD (default off):
938 Direct interaction with spamd(1) from spamassassin(1) via a local
939 unix(4) domain socket.
940 . WANT_SPAM_FILTER (default on):
941 Freely configurable hook programs, e.g., bogofilter(1).
943 - It turned out that the manual wasn't mandb(1) compatible. [f5ab838]
945 - New make.rc option: WANT_FILTER_HTML_TAGSOUP (enabled).
946 S-nail now ships with a very primitive HTML-to-text converter.
947 It'll be used for HTML parts automatically if no pipe handler is
948 installed (and the builtin mime.types haven't been changed).
949 This works because of the new TYPEMARKER extension to mime.types(5) as
950 documented for [topic/mime.types.2] below.
951 (It is quite experimental but i think it rocks except it can be fooled
952 since it doesn't know about double quoted strings, e.g., <a href=""
953 onmouseover='javascript:alert("> This is plain text you see, oops");'>.
954 $ Yet it is ment for displaying HTML mails, and it works really well.
955 $ It doesn't support non-standard type="quote" attributes nor even-more
956 $ non-standard CSS classes "gmail_quote" or whatever it's name was --
957 $ these are used in the wild to generate automatic mail quoting, which
958 $ has resulted in an immense amount of top-posting; but maybe there will
959 $ be a S-nail v14.8.1 which will implement those, to ease the pain.
962 $- List output of `alias' @78, `ghost' @123 and `shortcut' @181
963 $ uses a new syntax that should (in theory) make it possible to feed
964 $ the output back into S-nail. [2913df3]
965 $ Ditto `set' @178 unless *bsdcompat* or *bsdset* are set. [373cc8a]
967 $- *keep* @308 will also affect secondary mailboxes (because *emptybox*
968 $ has been obsoleted, see below). [5fa5f8b]
970 $- New make.rc option: WANT_FORCED_STACKPROT (enabled with WANT_DEVEL or
972 $ In conjunction with WANT_AUTOCC this will trigger stack protectors
973 $ if the detected compiler does support them. (Before they were only
974 $ enabled if WANT_DEBUG was set, automatically.)
976 + v14.8 is the last release with IMAP support, which has been removed
977 from the developer's [crawl] branch for quite some time already.
978 He really hopes he can affort to readd support sometime after v15.0.
983 - S-nail now knows about named booleans (e.g., `localopts' @133 or
984 interactive approval prompts can now be given any of 1/yes/true/on or
985 0/no/false/off, case-insensitively; note this is true for the make.rc
986 $ system, too) and so-called "quad" options (either normal boolean or
987 $ "ask-BOOLEAN", which, in interactive context, will be prompted with
988 $ default values; the default value is chosen in non-interactive mode).
989 $ (on/off support not in the RC.)
992 - The `if' @128 combo:
994 . gained <, >, <= and >= tests;
995 ==, !=, <, <=, >=, > will try to convert their arguments to numbers
996 and perform their test numerically, if possible, [143d409]
997 . `if' supports boolean (as above) arguments, [topic/ifpimp]
998 . `if 1'+ return value fixed, [topic/ifpimp]
999 . `if'+: on syntax error, NOOP anything 'till `endif', [topic/ifpimp]
1000 . `if'+ now support bracket groups, AND-OR lists and unary ! (not),
1001 note that the separating spaces are required: [topic/ifpimp]
1003 if [ [ true ] && [ [ $debug ] || [ $verbose ] ] ]
1006 if true && $debug || $verbose
1007 echo Left associativity, as is known from the shell
1009 if ! ! true && ! [ ! $debug && ! $verbose ]
1010 echo Unary operator support
1013 . `if'+ now support new case-insensitive (ASCII) substring operators
1014 =@ and !@: [topic/ifpimp]
1016 if $features =@ "regex"
1017 if $TERM =~ "^xterm.*"
1018 echo ..in an X terminal
1022 $ . `if'+: the three argument forms can now be given variables also on
1023 $ the right hand side: [topic/ifpimp]
1025 $ set xtest='^xterm.*'
1026 $ if $TERM =~ $xtest
1027 $ echo Variables as right hand value
1030 - `unalias' @198 learned that * means "all aliases".
1031 Fixed: faulty list-head relinking caused "dead" aliases (since ever)
1034 - `unshortcut' @219 learned that * means "all shortcuts".
1035 `shortcut' @181 in turn can now define multiple shortcuts in one go
1038 ?0[ /var/mail/steffen]? sho you 'any one' me 'no "one"'
1039 ?0[ /var/mail/steffen]? sho
1040 shortcut me "no \"one\""
1041 shortcut you "any one"
1042 ?0[ /var/mail/steffen]? unsho*
1043 ?0[ /var/mail/steffen]? sho
1044 ?0[ /var/mail/steffen]?
1046 - S-nail learned how to deal with mailing-lists in respect to
1047 Mail-Followup-To headers etc. (manual: "Mailing lists" @21):
1049 . new commands `(un)?ml(list|subscribe)' to let S-nail decide which
1050 addresses are mailing-lists, [topic/names]
1051 . *headline* learned %T format to display message recipient flags:
1052 "L" for a mailing-list, "S" for a subscribed one, [topic/names]
1053 . new variable *followup-to-honour*, [topic/mft]
1054 . new variable *reply-to-honour*, [topic/mft]
1055 . new command `Lreply', forcing a list-only `reply' if possible.
1056 When `Lreply'ing to messages which seem to originate from
1057 mailing-lists (contain a "List-Post:" header), then S-nail will
1058 treat the list address as a known mailing list (as via `mlist').
1060 (It is advisable to try out several different combinations of non-/
1061 subscribed mailing-lists in conjunction with `reply', `Reply' and
1062 `Lreply' with *debug* set in order to get used to how S-nail will
1063 modify the address lists; the results should be quite logical
1064 though.) [topic/mft]
1065 . For convenience `reply' and `Lreply' can now be used to reply to
1066 multiple messages in one go (each message will still be handled by
1067 itself, we simply start over internally). [topic/mft]
1069 - `unset' @217 no longer "fails" for unset variables, but only prints
1070 a message in *debug* or *verbose* mode. This changes traditional,
1071 decade-old behaviour, but shells don't even say something in (*debug*
1072 or) *verbose* mode, and it really simplifies things. [topic/okeys-attr]
1074 - SSL/TLS changes: [topic/ssl.1]
1076 . new variables: *ssl-cert-HOST* @451, *ssl-key-HOST* @456,
1077 *ssl-method-HOST* @457, *ssl-verify-HOST* @461,
1078 . *ssl-v2-allow* has been dropped,
1079 . *ssl-verify* @461 and *smime-cipher-USER@HOST* @427 use
1080 case-insensitive matching for value checks,
1081 . new variable-chain: *ssl-protocol* @458 (the introduction of which
1082 obsoletes *ssl-method* @457, see below),
1083 . new variants of *ssl-cipher-list* @452: *ssl-cipher-list-USER@HOST*,
1084 *ssl-cipher-list-HOST*,
1085 . new variable: *ssl-config-file* @453,
1086 . *smime-cipher-USER@HOST* @427 dropped builtin support for the
1087 obsolete RC2-40 and RC2-64 ciphers -- use the make.rc option
1088 WANT_ALL_SSL_ALGORITHMS to readd support,
1089 . with SSL_CONF_CTX support (OpenSSL v1.0.2+) the values of the
1090 following variables (and variants) will be parsed by OpenSSL instead
1091 of S-nail, offering more user and packager flexibility:
1092 *ssl-cert* @451, *ssl-cipher-list* @452, *ssl-key* @456,
1093 *ssl-protocol* @458.
1095 E.g., shall a new OpenSSL ship with TLS v1.3 S-nail doesn't need to
1096 be adjusted in order to support TLS v1.3, all there is to do is that
1097 the user has to adjust her *ssl-protocol* setting.
1098 This is at least the theory. :)
1099 And maybe OpenSSL (will) offer(s) symbolic constants like "NEWEST"
1102 - Folder hooks have been extended:
1104 . if there was no *folder-hook-FULLNAME* @376 we'll try
1105 *folder-hook-+NAME* if the mailbox NAME resides in *folder*, e.g.,
1106 the author has "folder-hook-+sent=MACRO" and all his *record*
1107 variables are "record=+sent", therefore MACRO can be shared in
1108 between all accounts with a single hook definition. [a5a4d89]
1109 . `localopts' @133 can now be used in folder hooks: the covered
1110 settings will be reverted once the folder is left again.
1111 $ (I know for sure someone asked for this long ago, directly after
1112 $ `localopts' came up first, but i couldn't find the corresponding
1113 $ message. Sorry!) [2c67091]
1115 - More security control à la CVE 2014-7844, possibly for the first time
1116 enabling safe usage of S-nail via CGI: [topic/cve-2014-7844.2]
1118 . fixed *sendmail-arguments* @420 parsing:
1119 *sendmail-arguments*='-F "Dubi Da"' will now result in <"-F" "Dubi
1120 Da"> not <"-F" ""Dubi Da"">,
1121 . new command line argument "-." @67 forcefully terminates options
1122 and enters send mode. I.e., using this option avoids possible
1123 misinterpretation of the following arguments.
1125 This operation is usually reserved for --, but since S-nail passes
1126 anything after -- to the MTA (but read on) i had to invent something
1127 $ else. Also, -. forcefully enters send mode, which -- couldn't have
1128 $ been overloaded to do.
1129 . New variable: *expandargv* @372: in equal spirit to *expandaddr* @371
1130 this one is required in order to pass arguments after -- to the MTA.
1131 If set to "fail" existence of such arguments is a hard error,
1132 "restrict" likewise except in interactive mode or in conjunction
1133 with the -~ or -# options.
1134 . *expandaddr* @371: new special value "fail" causes presence of
1135 extended recipient addresses to be treated as a hard error.
1136 $ In fact this is now interpreted as a comma separated list and may
1137 $ also include the string "noalias", disallowing non-network-addresses
1138 $ in the remaining (non-"extended") recipient addresses -- note this
1139 $ applies to system global aliases only, not to those of `alias'
1140 $ (except for their content, of course); "noalias" is a hard error in
1141 $ combination with "fail".
1143 - `unaccount' @197 and `undefine' @201 learned that * means "all
1144 accounts" and "all macros", respectively. [4c09114]
1146 - Spam handling has been rewritten completely, revealing a very old
1147 misbehaviour in nail's subprocess handling (malloc in signal handler).
1148 Please reread the manual section "Handling spam" @37 for more.
1149 The motivation was also that bogofilter(1), sylfilter(1) etc. can
1150 export their databases, so should the author ever find time to
1151 implement spam handling in C like his predecessor it will be possible
1152 to continue to use those databases: [topic/spam.2]
1154 . *headline* @380 format %$ has been fixed,
1155 . when working on multiple messages the operation is cancelled if an
1157 . new variables: *spam-interface* @436 chooses the, well, ...
1158 This one has extensive documentation. Plus the interface dependent
1159 *spamc-command* @438, *spamc-arguments* @439, *spamc-user* @440,
1160 *spamd-socket* @441, *spamd-user* @442,
1161 *spamfilter-ham* @443, *spamfilter-noham* @444,
1162 *spamfilter-nospam* @445, *spamfilter-rate* @446,
1163 *spamfilter-spam* @447 and *spamfilter-rate-spamscore* @448.
1164 . The *attrlist* @351 variable gained a new slot for an unsure-spam
1165 status (default character is ~).
1166 Messages with that flag can be specified via the :S colon modifier.
1168 - Fix: even though -# @66 implies *sendwait* @335 a user should have the
1169 option to turn *sendwait* off again. [4274bed]
1171 - Completely reworked mime.types(5) handling, note the backward
1172 incompatible drop of `mimetypes': [topic/mime.types.2]
1174 . dropped the `mimetypes' command,
1175 . new commands: `mimetype' @138 and `unmimetype' @209,
1176 . *encoding* @369 is now parsed case-insensitively,
1177 . *mime-counter-evidence* @390 gained new bit 3 to indicate the desire
1178 to forcefully overwrite MIME types if we think we know it better,
1179 . *mimetypes-load-control* @391 gained an extension that can be used to
1180 load more and specific files, which in addition may make use of
1181 a new non-portable S-nail-specific TYPEMARKER extension. The manual
1182 section "The mime.types files" @32 has been rewritten accordingly.
1183 (In short: mime.types(5) lines can be prefixed by @, @h@ or @H@, for
1184 plain text, builtin HTML filter (plain text fallback), ditto
1185 (without fallback).)
1186 $ . The builtin MIME types now make a lot of use of the @ and @h@
1187 $ TYPEMARKER extensions, so that you possibly can get rid of a lot of
1188 $ pipe-TYPE/SUBTYPE=@ plain-text type hooks, shall you have used them.
1190 - Support for RFC 2231 has been added. This means that S-nail generates
1191 truly MIME compliant messages and no longer requires help from other
1192 MUAs! In fact MIME parameter handling has been rewritten completely.
1195 - On the long run shell word expansion (via wordexp(3)) will be replaced
1196 by a new, restricted (and thus (hopefully) safer), internally
1197 implemented path expansion mechanism that only supports ~/ -> HOMEDIR
1198 and $SHELLVAR / ${SHELLVAR}.
1199 Since the original expansion is *so* hardwired that'll take time, for
1200 now it is used for attachments only, but here all through the way.
1202 But where it is used already it has consequences regarding backslash
1203 escaping; to improve user experience a bit `~@' @239 will display the
1204 escaped filename so that users only have to hit ENTER to accept paths:
1205 e.g., "diet\ is \curd.txt" will show up as "diet\\ is \\curd.txt".
1206 And, e.g., the test script does the following for RFC 2231 (excerpt):
1208 MAILRC=/dev/null "${SNAIL}" ${ARGS} -Snodot \
1209 -a "ma'ger.txt" -a "mä'ger.txt" \
1210 -a 'diet\\\ is\ \\curd.txt' -a diet \"is\" curd.txt \
1211 ^ ^ NOTE: 0x00A0, NBSP
1212 -a ✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆.txt
1214 The introduction of the manual section "COMMANDS" @5 has been updated
1215 accordingly. Also see -a @39. [topic/fexpand.2]
1219 . Multiple crash-causing bugs regarding `source' @185, also if used
1220 via `~:source', have been fixed. [aafb688,6979c73,4c6dfc2]
1221 . The NAILRC environment variable is no longer supported. [104c254]
1222 . The *Replyall* variable has been dropped as it was only an alias
1223 for the POSIX standard *flipr* @296 variable. [topic/mft]
1224 . New variables: *version*, *version-(major|minor|update)*,
1225 *features*. [topic/okeys-attr]
1226 . `varedit' @224 can be used to create variables. [topic/okeys-attr]
1227 . New variable: *charset-unknown-8bit* @357. [9b672f6]
1228 . *smtp-auth* @434 now defaults to "plain" (if *v15-compat* is set).
1229 (Josef Jurek, Gavin Troy) [dcbb31a]
1230 . All obsoleted: *autothread*, `thread' and `unthread'.
1231 Use *autosort*=thread, `sort thread' etc. instead. [ef16f43]
1232 . *showlast* @336 should have gained meaning. [4213d52] (Gavin Troy)
1233 . If the -r @57 option is given a full name specification (rather
1234 than only an address), pass the MTA the respective address parts
1235 via -F and -f. [dd90c14]
1236 $ Also try to pass -F _and_ -f if an empty argument was given to -r
1237 $ but *from* @378 (or, say, "From:") includes a full name. [5f68921]
1238 . New variable: *term-ca-mode* @345 (for WANT_TERMCAP). In
1239 interactive mode S-nail can now be forced to use ti and te termcap
1240 entries; in conjunction with a PAGER that does too ... [topic/termcap]
1241 . `ghost' @123 gained a new mode and tweaks (see manual). [8a49b12]
1242 . -r @57 option: fixed -h output and manual. [9a1a303]
1243 (Martin Brandenburg)
1244 . With *debug* or 2x *verbose* command lines (including those read
1245 from files) are now traced. [06042c4] (Bob Tennent)
1246 . NAIL_TMPDIR (new) and TMPDIR environment variables are now
1247 (guaranteed to be) set in pipe hooks. [a1cfb02]
1248 . "Subject:" Re: trimming: MIME decoding is now performed. [ede7c7d]
1249 . New variants of *pop3-bulk-load* @320: *-[USER@]HOST*. [5f5ae10]
1250 . *crt*=0 @366 now really works. [22f1477]
1251 . Maildir code now uses string relaxation which drastically reduced
1252 memory usage for large mailboxes. [d1c945f]
1253 And for the first time it performs real memory cleanup. [e549110]
1254 . Improved error message on MTA exec failure. (Dominic Meskys)
1255 . Fix: "setenv noVAR" would have set noVAR. [3c1f886]
1256 . When `setenv' is used to set any of HOME, USER, TMPDIR it'll be
1257 reflected by our internal variables. (Still hacky as special code
1258 is needed to do so; also "set HOME=x" shadows HOME for "varshow
1259 HOME" instead of being rejected. Future cleanup work.) [3f03b80]
1260 . Colon modifiers can now be joined, as in "f :uas". [8b6c259]
1261 $ . Maildir code did faulty From_ line detection, resulting in any
1262 $ non-quoted "From " line to start a new message (e.g., when doing
1263 $ things like "copy * MAILDIR" we could have f...ed up completely).
1264 $ Seems to have been added with Heirloom mailx 11.6 ([faf4b65],
1265 $ 2004-09-07). Neither goes credit to Jacob Gelbman nor to Robin
1266 $ Stjerndorff for messages to nail-devel@ on 2015-01-21 and
1267 $ 2015-02-20, respectively. :-)) [ae539c9]
1268 $ . *emptybox* has been obsoleted. *keep* @308 will also affect
1269 $ secondary mailboxes, and then both only deal with local regular
1270 $ MBOXes anyway, not to e.g., maildir files nor IMAP boxes. [d747c0a]
1271 $ . `unghost' @207 learned that * has to drop all ghosts. [34a92a5]
1272 $ . NAIL_TMPDIR (new) and TMPDIR environment variables are now
1273 $ (guaranteed to be) set for *agent-shell-lookup* @350. [5c3d7b5]
1274 $ . Things like "copy * MAILDIR" from within an IMAP (or POP3?) mailbox
1275 $ to a Maildir mailbox should now work again. [d747c0a]
1276 $ . IMAP code did faulty From_ line detection, resulting in some
1277 $ non-quoted "From " line to start a new message (e.g., when doing
1278 $ things like "copy * MAILDIR" we could have f...ed up completely).
1279 $ Present in Heirloom mailx since ever ([^b4ad9f2]). [66e3c93]
1280 $ . New variable: *mbox-rfc4155* @312: because of all the bugs in From_
1281 $ quoting etc., err, no. "Albatros" will last. I've just touched
1282 $ a lot of stuff regarding MBOX writing: From_ quoting (which may
1283 $ happen whenever we save already existent data in a MBOX, shall
1284 $ the original generator not have taken appropriate steps to ensure
1285 $ "false" From_ lines can't happen (S-nail does)) is now definitely
1286 $ POSIX compliant, meaning that we may quote much too much lines.
1287 $ So set *mbox-rfc4155* and we generate RFC 4155 compliant MBOX files,
1288 $ possibly leaving behind backward POSIX-only software. [70ba3ef]
1289 $ . New command line option: "-X cmd" @64 will execute "cmd" right
1290 $ before normal operation starts. The only option to execute commands
1291 $ in non-interactive mode when reading of resource files has been
1292 $ actively suppressed. This is an experimental feature. [d202869]
1294 ChangeLog (purely technical)
1295 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1297 . Improved output flushing, avoidance of printing of useless
1298 output (especially smoothens *editalong*). [topic/stdout-fflush]
1299 . String relaxation is now everywhere (but IMAP), the builtin buffer
1300 sizes were reduced to 1/3.
1301 . Again a manual review. The manual now supports mdocmx(7).
1302 . Using builtin ARC4 pseudo-random for random generation.
1303 . Better signal handling here and there.
1304 . Fixed most "unpluggable memory leaks" by plugging them via chains of
1305 signal handlers and longjmps. Terrible. But no more leaks.
1306 . A lot of this and that. (Really.)
1307 $. Slightly more tolerance for faulty Base64 encoding in message text
1308 $ parts. No real healing possible today, but requires v15.0 environment.
1309 $ This, however, only affects invalid data that, e.g., OpenSSL doesn't
1310 $ even give any output for! [54137fd,4d59cca]
1312 I didn't make it to improved message selection.
1313 And i also can't seem to find the necessary peace of mind to do a real
1314 review with this codebase, it's always that i start off doing something
1315 non-reviewish; but i'll see the day (what i hope).
1317 NEWS entries for the S-nail releases before v14.8.0 have been cut off
1318 after release v14.8.5 and can be found in the git(1) repository, e.g.,:
1319 $ git show v14.8.5:NEWS