nail.1, mk-mk.in: include the VERSION in the manual
[s-mailx.git] / NEWS
blob6dc951e3525d4a49b150f607bbcf2da3506fba9b
1 S - n a i l  N e w s
2 ====================
4 v14.4.4, 2013-10-03
5 -------------------
7 Thanked, Gavin Troy, Gaetan Bisson.
9 - Fix output buffer confusion that would have occurred when parts of
10   a multipart mail had a pipe command set.  Longer story in [e75d16dd].
11   (Gavin Troy)
13 - The makefile now supports a `packager-install' target that bypasses
14   the reevaluation of the configuration (after checking that there is
15   one) and directly steps ahead to the install process.
16   (Gaetan Bisson)
18 - Notes in INSTALL that CFLAGS and LDFLAGS need to be overwritten from
19   within (conf.rc or) the command line.
20   (Gaetan Bisson)
22 v14.4.3, 2013-10-02
23 -------------------
25 I convey special thanks to Karol Błażewicz and Gaetan Bisson.
27 - The new build system didn't allow to overwrite CFLAGS= when used in
28   conjunction with GNU make(1).  To make a long story short, removing
29   a `.POSIX:' directive from the makefile fixed the problem.  Luckily.
30   [e6b26526]
32 - More INSTALL notes for UnixWare 7.1.4, which suffers from the same
33   problem: here the fix is to use the -e option of make(1).
35 - Karol Błażewicz reported a segmentation violation he got when using an
36   Arch Linux S-nail test package, and Gaetan Bisson informed me about
37   that.  The problem was that we didn't assign the resulting default
38   address (which gets used when *from* is not set) to the result which
39   gets used, effectively resulting in a NULL dereference. [cfd60479]
41 v14.4.2, 2013-09-21
42 -------------------
44 Many thanks to Paul Vojta.
46 - On GNU/Linux there is no MAXPATHLEN constant defined by default, as
47   this is a non-standard legacy constant.  Mozilla ran into this some
48   time ago, though a bit different [1].  It made it easier for S-nail.
50     [1] <https://bugzilla.mozilla.org/show_bug.cgi?id=412610>
52   We could include `sys/limits.h' to get at MAXPATHLEN, there it is
53   defined to be PATH_MAX, but let's just include the standard `limits.h'
54   and ensure MAXPATHLEN ends up >= PATH_MAX.  With this condition being
55   true even FORTIFYd sources won't bail with reported buffer overflows
56   because realpath(3) expects a buffer of PATH_MAX bytes. [bee5e57c]
57   (Paul Vojta)
59 - With the builtin LINE_EDITOR, ensure proper interaction with GNU
60   rlogind(8), which is alone in its quest to set the ISTRIP termios(4)
61   flag. [61e00f2d]
63 - Bugfix a codepath that would have prevented compilation when
64   HAVE_ICONV is not set.
65   While there, allow to unselect message attachments when using the `~@'
66   tilde command interactively, which i mysteriously had forgotten when
67   allowing selection of 'em.  (oops?) [4f58ffea]
69 - It's now easier for packagers to get at debug-enabled CFLAGS; simply
70   use WANT_ASSERTS=1 (should not be enabled in shipouts, please).
71   [d8663406]
73 - Fixed a terrible bug that i've introduced in november 2012, that would
74   have corrupted MBOX files when using the `resend' command.  (The
75   so-called "From_ line" would have been quoted to ">From_ line" instead
76   of simply being stripped.) [19d449e2]
78 - Fixed a SIGSEGV for the builtin LINE_EDITOR, that would have occurred
79   if a history traversal (^B or ^F) would have been continued by
80   a reverse history completion (^R).
81   While there, avoid some multiple-beeps-in-a-row that yet occurred due
82   to code reuse, and document that ^G etc. reset the multibyte state
83   machine. [003d9f6f]
85   Also, the expand-on-tab code could have excessed line input maximums,
86   e.g., after `? /usr/bin/*<Tab>'.  This was of course known, but
87   i wanted to keep it because all tested (modern) terminals "mess up but
88   won't break", and thus made it possible to use the data, even if it's
89   visual representation was messed up.  The real solution will be much,
90   *much* more complicated, i.e., show possible *completions*, page-wise,
91   etc., i.e., just like is known by tab *completion*.  This will need
92   far more time because it doesn't make sense to embed such complicated
93   code into the current bed.
94   Now i've chosen to simply don't display excess, but replace the
95   content with a message that says that there was excess.  It simply
96   looks better. [0320c8ba]
98 - I've changed the use of `[?]' as a replacement sequence for invalid
99   / non-displayable characters to `?' (again).  There are still code
100   paths (from the original codebase) which use the real Unicode
101   replacement character instead, so our display is still not unique.
102   On the long term the codepath can anticipate in all levels wether
103   use of Unicode is possible, so that, then, we will be unique again,
104   using either only `?' or the Unicode replacement character. [faf6380]
106 - I've anticipated in v15.0 and implemented *quote-fold* as a stream
107   filter.  It is now multibyte safe and takes into account the visual
108   width of characters, i.e., ideographs etc.  It is working almost as
109   good as an algorithm can work that looks at data linewise, but is yet
110   experimental and incomplete in that it will break lines even if only
111   whitespace or a backslash escape follows.  It is code that is only
112   a few hours old, which is why it is not enabled by default. [
114 v14.4.1, 2013-09-14
115 -------------------
117 How terrible.
119 - Fix some harmless stylos and typos in the manual and `conf.rc'.
120   [1a6b880, 417b066]
122 - Ensure *complete* proper cleanup on signal-caused configuration run
123   aborts. [7a08bda]
125 - Bugfix: reenable empty configuration variable overrides, as in
127     $ make install SID= NAIL=mailx ...
128   [171861d]
130 - Bugfix: rename the `conf.rc' variables SHELL, LISTER and PAGER because
131   they clash with the POSIX standard variables of the same names, which
132   hurts now that the configuration is run through the shell itself.
133   The configuration names are now XSHELL, XLISTER and XPAGER (ouch).
134   [ef93c4e]
136 - nail.rc: comment out some non-portable S-nail(1) specifics, for those
137   who install this file as mailx.rc or so, somewhere. [3f14b01]
139 - From now on S-nail will use simple version tags, as, e.g., `14.4.1',
140   i.e., no more `s-nail-14.4.1'. [a75437d, 183d59c] (Jürgen Daubert)
142   Also move UAGENT out of `version.h' [f7be5be]
144 Uh! v14.4 must have originated in a bad dream; good it's vanished.
146 v14.4, 2013-09-13
147 -----------------
149 Thanks to the entire vivid and virile S-nail(1) user community is
150 proper, especially Stephen Isard, Gavin Troy, Martin Neitzel.
151 Not to forget Ryan Kavanagh and Ayan George.
153 Note this time the changes are in reverse order, i.e., oldest first.
155 Topic Branches
156 ^^^^^^^^^^^^^^
158 15fbe09 ^bf9173f 'topic/varmac-unite'
159   Simplification and unification of variable and macro handling
160 40f6f58 ^15fbe09 'topic/cledit1'
161   Command line editor; new manual section `Line editor'
162 ad28a32 ^40f6f58 'topic/termsize'
163   Honour POSIX mailx(1) and respect $COLUMNS and $LINES on startup
164 dc3cd49 ^a446fd8 'topic/qf'
165   You don't wanna know
166 b8738f7 ^0651fd0 'topic/spam1'
167   Interaction with SpamAssassin; new manual section `Handling spam'
168 5419d6f ^b8738f7 'topic/make1'
169   Reworked build system; please read `INSTALL' and `conf.rc'
170 9ab4d6b ^5419d6f 'topic/list1'
171   Slightly tweaked message thread display, fix `:u :r' to mean it
173 ChangeLog
174 ^^^^^^^^^
176 - The default PAGER is now more(1).  (But read on.)
178 - The `echo' command is now compliant, and fully supports XSI.
180 - The `group' and `ungroup' command aliases have been removed, they are
181   `alias' and `unalias'.
183 - We now have the capability of line editing and history.
184   One may choose from not less than three different implementations:
185   a builtin editor as well as possible linkage against BSD editline(3)
186   and also a GNU readline(3) compatible layer.
187   Please read the new manual section `Line editor'.
189   Input is now compliant in that an interactive line may be continued
190   after escaping the newline character with a backslash.
191   [topic/cledit1]  (all of them)
193   The *prompt* variable may now contain shell escapes, just like the
194   `echo' command. [0938d8a]
195   As a special extension the new \? escape, when used within *prompt*,
196   will expand to the exit status of the last command. [41076d2]
198 - The POSIX standard environment variables $COLUMNS and $LINES are now
199   honoured upon startup. [topic/termsize]
201 - The `help' / `?' commands now support abbreviation, i.e.,
202   ``$ ? unc'' should now find `uncollapse'. [7b86195]
204 - The `~' abbreviation that has been introduced as an alias for `call'
205   is now a real command, not a magic shortcut. [9987289]
207 - The new variable *quote-as-attachment* can be used to additionally
208   embed the quoted message as a `message/rfc822' MIME attachment.
209   [topic/qf]
211 - The compose-mode command `~@' will now attach messages from the
212   current mailbox if given a filename of the style `#NUMBER'.
213   Please read the corresponding manual section `Tilde escapes', though.
215 - The `WANT_JUNK' and `WANT_SCORE', as well as Gunnar Ritters junk mail
216   management have been removed.
218   Instead S-nail(1) can now support interaction with SpamAssassin, but
219   sofar only via the spamc(1) / spamd(1) client / server pair of
220   programs that ships as part of SpamAssassin.  The new configuration
221   directive `WANT_SPAM' controls wether this feature is desired.
223   Please read the new manual section `Handling spam'.
224   [topic/spam1] (Martin Neitzel)
226   (S-nail(1) is now *definitely* floating-point free.)
228 - The configuration and make system have been overhauled / reorganized.
229   The configuration is now in `conf.rc', also contains directives like
230   `PREFIX' etc, and is always read in.  However, only those directives
231   which are not yet set (via environment or command line overwrites) are
232   incorporated into the set of configuration options.  Therefore
234     $ make WANT_IMAP=0
235     $ make WANT_IMAP=1
237   will now build S-nail(1) twice, because of the changed configuration.
239   Note that `WANT_GSSAPI' is now by default disabled, which shrunk
240   a freshly started s-nail image by more than 30 percent.
242   We're not finished yet in that there is no dependency graph etc.
243   Please do read `INSTALL' and `conf.rc'.
244   [topic/make1]
246 - Message selection has been slightly bugfixed in that `:u :r' really
247   means `:u' AND `:r'.  Compared to NetBSD Mail(1) it's still a shame.
249   Threaded message display has been slightly changed in that within
250   a thread identical Subject: lines are not repeated.  It may not be
251   perfect yet due to the general list / thread state. [topic/list1]
253 - If, upon startup, the environment variable `NAIL_NO_SYSTEM_RC' is set,
254   then the system wide initialization file isn't read, just as if the
255   `-n' option had been given. [1b31535]
257 - It is now possible to use CTRL-C during connection hangs.  (But in
258   general error recovery capabilities of the socket related
259   infrastructure is non-existent, practically speaking.) [45a9f36]
261 - *quote-fold* has been temporarily disabled, as it is not multibyte
262   safe.
264 No review for v14.4.  And today is Friday, the 13th.  Ouuuh!
266 v14.3.2, 2013-06-21
267 -------------------
269 I should *maybe* should have and want to give prominence to
270 Martin Neitzel for this, i maybe have misunderstood.
272 - Bugfix *synchronous* *pipe-** execution..
274   Well, unfortunately yet another newly introduced bug slept in
275   S-nail v14.3[.1] -- [a8d724b3, Add @ and @& shell command prefixes
276   for pipe-MIMETYPE, 2013-05-03] falsely changed the waiting state
277   for subprocesses, as has shown up by a HTML-only mail on the
278   Unicode list today.
279   'Seems i'm collecting one line fixes in this codebase; this needs
280   to change in the future.
282 v14.3.1, 2013-06-08
283 -------------------
285 I want to give prominence to Juergen Daubert (jue AT jue DOT li), who
286 reported that i've broken plain-old unfancy send mode in 14.3.
288 + Ok, i'll hope we're out of new errors for the v14.3 series with that.
290 - New variable: *batch-exit-on-error*.
291   Only works if the new -# command line option has been given, and will
292   check the "current" exit status whenever one operation completes
293   (S-nail returns to the command prompt).
294   If the exit status implies error (e.g., sending the last message
295   failed) then we exit forcefully with that error status.  (The normal
296   behaviour is that the status is reset when the command loop ticks.)
297   [4cddd55]
299 - While here again, i've added the new -# command line option.
300   This is the first step to implement a reliable batch mode;
301   unfortunately it still selects the users system mailbox on startup,
302   because we simply cannot go to "no" mailbox for quite some time -- at
303   some future time we will be able to go to some VOID thing, and then
304   this will end up as a rather efficient batch mode.
305   For now it sets *dot*, *emptystart*, *noheader* and *sendwait*, and
306   also implies the -~ command line option.  [7549569]
308     (
309       printf "m ${MBOX}\n~s subject1\nE-Mail Körper 1\n.\n" &&
310       printf "m ${MBOX}\n~s subject2\nEmail body 2\n.\n" &&
311       echo x
312     ) | MAILRC=/dev/null "${NAIL}" -n -#
314 - Also, -N set *header* instead of *noheader*.  [7b4a13f6]
315   (Juergen Daubert.)
317 - Plain old unfancy invocations like
319     $ s-nail user@host
320     $ echo bla|s-nail ./FILE1
322   had been broken (by [522cb3ec]).  [260e19d]
323   (Juergen Daubert.)
325 v14.3, 2013-06-03
326 -----------------
328 Thanks to Gavin Troy (gavtroy AT gmail DOT com) who inspired the @ and
329 @& pipe-command prefixes.
331 Random notes
332 ^^^^^^^^^^^^
334 - S-nail has been registered at Coverity Scan, and the third build
335   (after topic branches *coverity-444* and *coverity-444.2*) produced no
336   more errors.  (<http://scan2.coverity.com/projects/444>.)
337   (Then i used POP3 and IMAP and fixed some SIGSEGV. ;)  Still didn't
338   look at S/MIME, Maildir, caches etc... o()
340 - S-nail v14.3 doesn't produce any spurious linker warnings on
341   OpenBSD 5.3; all (correct!) use cases of strcpy() and strcat() have
342   been replaced.  [7bdf330, 2c8d7cb]
344 - This is the first release with a (though very short) review -- i'm
345   slowly getting comfortable with the code.  (But i'm too stupid to
346   perform reviews on patches, 'always did reviews on C++/Perl/xy
347   classes.  Aaah, how beautiful ... objects.)
349 ChangeLog
350 ^^^^^^^^^
352 - It is now possible to "call" macros without using the `call' command
353   by prefixing them with a tilde, as in
355     ? define au {
356       echo auau
357     }
358     ? ~au
359     auau
360   [93ea8acd]
362 - Added the *pop3-bulk-load* option.
363   Yes, there are mailing lists etc. which use plain text email, and,
364   there, headers are often more data than the body, so it doesn't make
365   sense to download the headers twice (unfortunately POP3 doesn't
366   support a BODY command; if only it would support a RETRDELE command..)
367   [978e13a7]
369   And yep, from this changeset on i personally use S-nail even over the
370   network, no longer my stale and incomplete S-Postman.  And i can tell
371   you, this damn thing is so silent, i always set *verbose* not to go
372   grazy ... but .. i hate to say it .. the healing will take time.
374 - POP3 will now try to use APOP authentication automatically; thus the
375   *use-apop* stuff has been replaced by *pop3-no-apop* options (just in
376   case there are POP3 servers which advertise they support APOP but in
377   fact fail to do so; anyone?)  [6c3c5575]
379 - Some IMAP segmentation violations have been fixed:
381     ? fi imaps://user1@localhost
382     Password:Interrupt            <- CNTRL-C
383     ? set imap-auth=cram-md5      <- hey, 'forgot to set correct auth
384     ? fi imaps://user1@localhost
385     IMAP write error: error:140D00CF:SSL routines:SSL_write:protocol is shutdown
386     Segmentation fault
388   And also, when *folder* was set to an IMAP account but hasn't been
389   opened yet, and no IMAP account ever has been opened, a string
390   comparison against a NULL pointer yet caused a SIGSEGV, too.
391   [417c01f, 413c23d9]
393 - `set folder=' now tolerates `%:' and expands PROTOs stuff etc.:
395     ? short xp %:imaps://user1@localhost
396     ? set folder=xp
398   Pure convenience so that it doesn't need to be typed twice (still no
399   completion in sight...).  Note that setting *folder* to a POP3 box
400   will now be actively rejected.  [b12b17f5]
402   NOTE: while implementing this i've detected another dead-end
403   miscondition in S-nail -- you really should ensure that your target
404   folder/box is connected before you leave your current POP3/network
405   based folder, if there is data to be moved to the target (i.e.,
406   mbox).  This problem will persist for a long time due to the way the
407   entire codebase functions; i hope i can find a short/mid-term
408   solution, but the real healing will take years.  The mentioned
409   solution would at least make S-nail interruptable, currently we get
410   stuck and interrupts are blocked...
412 - If you're using S-nail on Mac OS X and have seen some segmentation
413   faults when expanding shell stuff then you may be pleased to hear that
414   S-nail now works around an Apple bug.  [63273772]
416 - The builtin mime.types have been corrected and a lot of new ones have
417   been added.  New data from
418   <http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/resources/\
419   org/apache/tika/mime/tika-mimetypes.xml>, thanks!  [8072fcb6]
421 - BEWARE: handling of command line arguments has changed a bit!
423   1. The -D, -d, -E, -i, -N and -v command line options are now
424   implemented by means of setting the respective option, as via -S.
425   (This means that from now on resource files can only *temporarily*
426   overwrite command line arguments.)
428   2. The -I and -T command line arguments have been dropped.
429   It seems Gunnar Ritter stopped developing nail/Heirloom mailx once he
430   started implementing Newsreader functionality.  It'll take a long time
431   until we get there, so for now drop all the Newsreader stuff.
433   3. Handling of -r has been changed.  E.g.:
435     s-nail -A test -Snoeditalong -r 'La mort est <fem@me>' -d
436     ? set from=bummer@m1.com
437     ? m t1
438     Subject: s1
439     .
440     Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t1"
441     ? set from=bummer@m2.com
442     ? m t2
443     Subject: s2
444     Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t2"
446   ...
448     s-nail -A test -Snoeditalong -r '' -d
449     ? set from=bummer@m1.com
450     ? m t1
451     Subject: s1
452     .
453     Sendmail arguments: "sendmail" "-i" "-r" "bummer@m1.com" "t1"
454     ? set from=bummer@m2.com
455     ? m t2
456     Subject: s2
457     Sendmail arguments: "sendmail" "-i" "-r" "bummer@m2.com" "t2"
459   [*main-fun-cleanup* topic branch]
461 - *smime-sign-include-certs-** stuff works again, oops..  [9a8597c6]
463 - A whole lot of smallest and small fixes due to registration at
464   Coverity Scan, as project 444.  Error handling in S-nail is ridiculous.
465   [*coverity-444* and *coverity-444.2* topic branches.  The sheer number
466   of fixes was the reason to sit down and go for unplanned S-nail v14.3]
468 - *idna-strict-checks* has been dropped.  It's silly to have in a MUA,
469   especially given that GNU LibIDN doesn't ship with a lot of rules.
470   We were able to drop quite some code (and a use-after-free, too :().
471   [c81fd41d]
473 - The ~p tilde command displays attachments more verbose.
474   Until the big big MIME and send layer rewrite :) this is intermediate
475   since until then we do not really know neither MIME type nor charset
476   of an attachment at the time this is displayed (for sure).  Yet
477   i think it's nicer to show what we have than keep it the way it was.
478   [60e70463]
480 - @ and @& shell command prefixes have been added for the pipe-MIMETYPE
481   mechanism.  The former suppresses filters if multiple messages are
482   displayed at once, the latter adds asynchronous program execution on
483   top of that.  E.g., to display PDF documents, but only if you
484   *explicitly* address the message *alone and by itself*, and without
485   blocking S-nail and the $PAGER, do:
487     set pipe-application/pdf="@&cat >"${TMPDIR}"/s-nail${$}.pdf;\
488       mupdf "${TMPDIR}"/s-nail${$}.pdf; rm "${TMPDIR}"/s-nail${$}.pdf"
490   (Inspired by Gavin Troy.)  [a8d724b3]
492   Note: most of that had been posted to nail-devel@ already, but it was
493   tweaked ([251b636]) so that you now *really* have to say `p MSGNO' to
494   get there.
496 - The NETLESS CONFIG= has been removed; it is almost identical to
497   MINIMAL now (i.e., without WANT_JUNK and WANT_SCORE).
499 - WANT_JUNK and WANT_SCORE have been disabled by default.
500   They don't seem to be too useful; i hope i can implement
501   a SpamAssassin hook for (downloaded) mail messages for v14.4.
502   If so, expect these two "modules" to become removed completely.
504 v14.2.2, 2013-05-01
505 -------------------
507 Another unplanned (minor) bugfix release after Gavin Troy (gavtroy AT
508 gmail DOT com) pointed out that MIME CTE decoding was broken, who
509 i therefore want to give a lot of prominence right here.
511 - Fix MIME content decoding which has been broken by [01c0e135].
512   [882caedd]
513   (Gavin Troy.)
515 v14.2.1, 2013-04-30
516 -------------------
518 An unplanned (minor) bugfix release after i've found two bugs today and
519 heard from Jérémie Courrèges-Anglas (jca+nail AT wxcvbn DOT org) that
520 there exists a S-nail OpenBSD package.
522 I want to give prominence to the following people that helped to
523 improve S-nail(1) during this development cycle, in order of
524 appearance: Dirk Peters (peters AT schwertfisch DOT de).
526 Thank you very much, and best from Germany!
528 - Some warnings of newer clang(1) versions were silenced, including yet
529   another alloca(3) problem (see *memtracer* topic branch in v14.0
530   series).  [6f846efe]
532 - Tweaking the MIME boundary detection left a little hole that could
533   cause boundaries not to be detected, as has been shown by a Microsoft
534   Word generated mail on the ICU list.  [11e5fb5b]
536 - A format string could overflow bounds if unrealistic
537   (18446744073709551615) line numbers or message sizes would have been
538   produced.  [faa65c40]
540 - An algorithmic error could cause overlong lines which wrapped around
541   to the next display line.  [ade52660] 
542   (Dirk Peters.)
544 v14.2, 2013-03-15 [v14.1, 2013-03-12]
545 -------------------------------------
547 I want to give prominence to the following people that helped to
548 improve S-nail(1) during this development cycle, in order of
549 appearance: Martin Neitzel, Christos Zoulas, Stephen Isard, jgw@txo.org
550 and Gavin Troy.
552 Thank you very much, and best from Germany!
554 + v14.2 differs from v14.1 only by one commit, one that fixes
555   (mime_fromhdr(): partial rewrite using n_iconv_str(), 2013-03-12),
556   which i hastily implemented just hours before the release of v14.1,
557   and simply shouldn't have made it (into there).
558   The v14.1 tarball has been removed from the server.
560 - A fix for the quoted-printable codec: "message truncation" occurred
561   when a mail maliciously used a soft linebreak to escape the linebreak
562   of a completely empty line.
563   (That resulted in 0 written and 0 leftover bytes, a condition that was
564   declared erroneous back in november 2012 when i started handling I/O
565   errors.)
567 - The "folders" command will work again when given an argument.
568   A fault of mine introduced in (cmd1.c: expand() may fail, 2012-10-23).
570 - The Base64 codec has been touched again, and we are finally capable to
571   perform sequential decoding; this was targeted for the MIME/send layer
572   rewrite, but it actually was possible today.
573   The result as seen in ps(1), running on the Base64 encoded HTML5
574   standard (4622545 bytes HTML, with a NUL appended to force Base64
575   encoding, resulting in a 6244793 bytes email):
577    7420 s006  S+    2:22pm 0:10.65 plain-nail -f HTML5
578    1440 s006  S+    2:23pm 0:00.36 ./s-nail -f HTML5
580   (So the only thing that is left for a good throughput is sequential
581   decoding of quoted-printable encoded parts that maliciously use soft
582   linebreaks to convert an entire part to a single line.  And i've seen
583   that from Apple Mail.)
585 - New option: *mime-allow-text-controls* (rather long manual entry).
587 - *smtp-auth-password-user@host* and *smtp-auth-user-user@host* will
588   finally work!
589   (Reported by jgw@txo.org in November 2011, fixed by Gavin Troy in
590   January 2012.)
592 - Most *headline* formats now do support the '-' left-alignment flag.
593   Note that you most likely have to change your *headline* accordingly.
594   (The still missing %n format is one reason why there will be v14.2.)
596 - *datefield* and *datefield-markout-older* can now be set to
597   strftime(3) format strings (except %n).
598   (From Stephen Isard's wishlist.)
600 - A possible SEGV has been found and also fixed by Stephen Isard.
601   (The "legendary" cross-world stereo fix!)
603 - Wow!  S-nail will finally compile on GNU based Linux systems like
604   Slackware 14 etc.  (Found while hunting bug reported by
605   Stephen Isard.)
607 - New option: *datefield-markout-older* can be used to choose
608   a different date display for mails that are older than six months,
609   in equal spirit to what POSIX describes for the -l option of the ls(1)
610   command (Stephen Isard).
612 - (Exotic) Years are (would) now (be) interpreted correctly according to
613   RFC 5322, 4.3.
615 - CRAM-MD5 usage has been fixed.
617 - *folder* updates are now tracked when set, and we will show the
618   realpath(3) name of it, showing PREFIX..SUFFIX if that wouldn't fit on
619   the display.
620   Tracking updates made it also possible to perform other more expensive
621   tasks when setting *folder*, so that it is now possible to do
622   something like:
624     :set folder=$HOME
625     :set folder=~
627   et cetera (both ideas by Christos Zoulas).
629 - Bugfix for the ~@ tilde-escape in non-interactive mode.
630   (readtty(): quick shot: work in pipelines (on non-TTY).., 2013-01-25)
631   introduced the possibility to "read data from the terminal" (STDIN
632   that is) in non-interactive mode.
633   The manual documents that attachment input must be terminated with an
634   empty line, but if that had been omitted, as in the example below, we
635   would have yet entered an endless loop.
637      $ cat <<_EOT | /s-nail -~ -s boom ./OUT
638     ~@
639     test.c
640     charset
641     _EOT
643 - Alias expansion will now be performed for members of Reply-To: fields
644   (Martin Neitzel).
646 - Decoding quoted-printable will now be more relaxed.
647   (Even though the standard says that users should be given a hint when
648   input is not absolutely clean; a possible warning will be added later,
649   when we have an error message ring.)
651 - New option: *mimetypes-load-control* can be used to control which of
652   the mime.types resources will be loaded.
654 - The builtin default mime.types have been extended a bit.
656 v14.0, 2013-02-10
657 -----------------
659 I want to give prominence to the following people that helped to
660 improve S-nail(1) during this development cycle, in order of
661 appearance: John Dodson, Gianluca Ramunno, and Anon Ymous from the
662 NetBSD project.
664 Random notes
665 ^^^^^^^^^^^^
667 - Encoding defaults to *quoted-printable* not *8bit*.
668   This has no technical background except that i think it's the better
669   default.
671 - Small progress for the "getting stuck due to the current folder
672   becomes inaccessible due to whatever reasons"  problem.
673   (schdir(): realpath() local files before leaving CWD.., 2013-01-08)
675 - The names of temporary files have changed.  Whereas not all uses of
676   temporary files already use really meaningful names, it has yet become
677   possible to use the pattern "*mail-*"; or, to be compatible with
678   NetBSD Mail(1) in one go, "*mail*".  (E.g., in my ~/.vimrc you'd read:
679     :au   BufRead,BufNewFile *mutt*,*mail* setl fenc= | setf mail
680   [the *mutt* is a leftover from times when i've used MUAs that suck].)
682 ChangeLog
683 ^^^^^^^^^
685 - The Quoted-Printable MIME handling has been rewritten completely.
686   We now correctly encode files with the MS-DOS newline sequence (CRLF).
687   (Part of the *mime-cte* topic branch.)
689   S-nail(1) continues to be able to handle text messages and text
690   attachments without a trailing newline, but because these
691   Content-Transfer-Encoding related things are now handled by the C-T-E
692   layer instead of by sendout.c a text message body that comes in as
693   part of a complete message via the -t command line option will loose
694   the missing final newline (i.e., it'll gain one).
695   This problem does *not* occur when *only* the message body comes in
696   via STDIN, as in 'cat FILE | s-nail', but *only* when the -t option is
697   used.
698   (sendout.c: does no(t/ longer) know about CTE internals!, 2013-02-09)
700 - Filename arguments for -a are now processed *after* all the resource
701   files have been loaded etc., so that the usual "folder" specifics can
702   be used (provided that proper care for shell quoting was taken).
703   ((main(): delay -a processing.., 2013-01-10), as a part of the
704   *mainaflags* topic branch.)
706 - (d38c5bd, When the write command asks.., 2004-11-23) added support
707   for pipes when saving attachments during a "write" command.
708   It however used the wrong SIGPIPE signal handler; e.g.:
710     Enter filename for part 2 (application/x-gzip): |exit
711     Segmentation fault
713   Of course, it still performs a jump and that most likely leaves memory
714   chunks behind, thus causing some memory leaks.  This will be
715   a long-term problem (you may want to read [mime.c:fwrite_td(): TODO
716   notes on unfixable leaks, 2013-01-14] for more).
717   (send.c:sendpart(): fix longjmp() SIGSEGV.., 2013-01-29)
719 - Fixed a name quoting regression that i've introduced in
720   (Rewrite *extract().., 2012-10-20), that would have caused
721   "x \"y\" z" to become "x"y" z" instead of "x "y" z".
722   (S-nail still does not really have RFC compliant parsers, just as
723   NetBSD Mail(1) has, i.e., there are structured and unstructured fields
724   etc...  I hope i can provide them in v15.0.)
725   (names.c:yankname(): fix quote regression.., 2013-01-29)
727 - The IDNA conversion now assumes domain names are specified in
728   *ttycharset*, rather than in the LC_CTYPE locale charset.
729   I.e., it integrates into the usual character set specifications.
730   (IDNA: honour *ttycharset* for domain names, 2013-01-18)
732 - The new *editalong* variable will automatically spawn an editor when
733   composing a mail in interactive mode, just as if `~e' was given.
734   (Add new *editalong* variable, 2012-01-07)
736 - The manual has been converted to mdoc.
737   (The manual has been converted to mdoc, 2012-12-28)
739 - The ~@ tilde escape, when given filename arguments, will treat the
740   arguments as a comma-separated instead of a whitespace-separated list.
741   (collect: change separator of ~@ tilde escape.., 2012-12-28)
743   The interactive mode of ~@ has also been changed, rather massively.
744   Please do reread what the manual says.
745   ((collect: support multiple attachment charsets.., 2013-01-23), as
746   part of the *attach* topic branch.)
748 - Thanks to Gianluca Ramunno (ramunno DOT gianluca AT gmail DOT com)
749   S-Nail will no longer try to issue a STARTTLS command when it is about
750   to establish a SMTPS connection, a task that logically fails since the
751   connection is already secured.
752   (Interestingly the nail codebase performs the necessary test for IMAP
753   and POP3 already.)
754   While here the undocumented nail v11.0 *smtp-use-tls* legacy option
755   has been removed.
756   (Fix SMPTS with a set *smtp-use-starttls*.., 2012-12-22)
758 - The RFC 4155 compliant MBOX quoting is now exclusively used, the
759   shitty *posix-mbox* variable has been removed again.
760   (Shitty because i've implemented RFC 4155 compliant MBOX quoting and
761   tested it, then added *posix-mbox* for those who liked the old
762   behaviour and did not re-test -- the final code path was buggy.)
764   In mails newly created and saved by S-nail(1) no From_ quoting at all
765   will be used no more, but instead the rewritten MIME file classifier
766   will detect unquoted From_ lines and enforce quoted-printable encoding.
767   (This is an approach that is S/MIME compatible all through the way as
768   the file data is not modified at all, but only encoded, so that the
769   data checksum is not changed.)
771   In yet existent mails that S-nail copies or moves around without
772   reclassification an RFC 4155 compliant From_ line detector will apply
773   MBOXO quoting (prepend a single '>') as necessary.
774   Different to the old MBOXRD behaviour S-nail will neither quote yet
775   quoted From_ lines ('>>From xy' -> '>>>From xy') nor will it unquote
776   one quote level when reading etc. mails ('>> From xy' -> '>From xy').
777   As a result the code could be simplified.
779   This changeset also incorporates a fix for NetBSD PR bin/47453, as
780   reported by Martin Brandenburg.  I.e., some mailers, noticeably
781   UW-imap (with MBX format only?), use non-compliant From_ lines with
782   RFC 822 date specifications.  Be aware of 'em.
783   (RFC 4155 MBOX, and drop *posix-mbox* and foldergets().., 2013-01-06)
785 - *rfc822-show-all* has been removed.
786   It didn't work properly for more complex MIME structures, like
787   message/rfc822 messages with attachments etc., just as i've seen today
788   on the file(1) mailing list.
789   So, instead of hacking it now i've dropped it and will come back with
790   a better solution when the MIME and send layers have been overhauled.
791   I.e., the real intent was to be able to specify that an embedded
792   message/rfc822 is treated as a *unity*, and that's the goal.
793   (Drop *rfc822-show-all*, 2013-01-23)
794   [The manual will be adjusted in a different commit.]
796 - *rfc822-no-body-from_* has been renamed to *rfc822-body-from_*.
797   It thus must be set explicitly.
798   On the other hand it now catches all cases...
799   (*rfc822-no-body-from_* -> *rfc822-body-from_*, 2013-01-23)
800   [The manual will be adjusted in a different commit.]
802 - The new *charset-7bit* (defaults to US-ASCII) and *charset-8bit*
803   (defaults to UTF-8) have been introduced.
804   These are used if seven bit clean data is to be sent, and no
805   *sendcharsets* are set or the convertion of all of them failed,
806   respectively:
808   - There is no functional change unless there is iconv(3) support.
809   - There is no functional change unless you set them.
810   (Introduce *charset-8bit* and *charset-7bit* variables.., 2013-01-18)
811   [The manual will be adjusted in a different commit.]
813   In addition the new *sendcharsets-else-ttycharset* variable can now
814   be used to automatically use *ttycharset* as a *sendcharset(s)*,
815   regardless of the new *charset-8bit* variable.
816   (Add *sendcharsets-else-ttycharset* variable, 2013-01-24)
817   [The manual will be adjusted in a different commit.]
819   NOTE: before we apply charset conversion we now perform a string
820   comparison to see wether character sets are identical.  If the strings
821   match (case-insensitively), then *no* conversion is performed.
822   This means that code like
824     $ printf "LATIN1: \0376" | s-nail -Ssendcharsets= -s boom ./out.txt
826   *succeeds* in an UTF-8 environment now, whereas older versions would
827   fail with an "illegal byte sequence" error (unless the iconv(3)
828   library of the system would not perform any conversion that seems
829   superflous, of course).
831   I thought about making this optional, but, in fact, if this would be
832   done in an environment without iconv(3) support then the result would
833   be equally corrupt.  And the way it is now we save the expensive and
834   superflous conversions.  (See TODO for more.)
836   Please *do* reread the manual section "Character sets".
837   +++++++++++++++++++++++++++++++++++++++++++++++++++++++
839 - An attempt was made to improve MIME Content-XY: detection.
840   It should be more RFC compliant, and just overall better :);
841   a simple one-pass classifier cannot match libmagic(3), of course.
843   This changeset removes support of the long obsoleted (4fee1ef,
844   2005-01-06) *charset* variable, as well as for the
845   *maximum-unencoded-line-length* variable that has been introduced in
846   (48a652bd, 2005-07-26).
848   For S-nail v14.0 it'll be no longer necessary to do
850     $ tr -d '\015' < input | s-nail ...
852   to transport files which use the $-DOS (terminal) newline (sequence).
853   We still depend upon *sendcharsets* for a while, though.
854   (Rewrite file-content classification.., 2013-01-02)
856 - The new *mime-counter-evidence* variable can be used to force
857   a classification of non-text MIME parts (attachments) by their
858   filename, i.e., a "reverse-classification" just as would be performed
859   if S-nail(1) would itself *send* the file(name).  This can help
860   against some stupid MUAs (Apple Mail?) that send .diff etc. files as
861   `application/octet-stream' parts etc.
863   At a later time this may become a valued option, causing a temporary
864   save of unnamed attachments followed by a MIME classification of the
865   file contents, followed by forced treatment as plain text if it seems
866   to be human readable.  But not yet.  Just to warn you.
867   (Add *mime-counter-evidence* variable.., 2012-12-29)
869 - The special "pipe-" command "@" can be used to force treatment of
870   a MIME message part as plain text (e.g.,
871   'set pipe-application/pgp-signature=@' will henceforth print those
872   signatures inline and as plain text).
873   (Introduce the special "@" "pipe-" command, 2012-12-27)
875 - The MIME types (as from mime.types(5)) will now be cached.  Before
876   all possible sources would have been opened, read and parsed for each
877   and every message part that required detection of the MIME
878   Content-Type:.
879   The new "mimetypes" command can be used to show or clear that cache.
880   (Add mime.types(5) cache.., 2012-12-27)
882 - A small set of MIME types (template: ./mime.types) will now become
883   compiled into S-nail(1), and be used as a fallback if there are no
884   ~/.mime.types and/or no /etc/mime.types, or those didn't contain
885   a matching type.  E.g., NetBSD 6 doesn't ship a default database.
886   Also, file extensions will be matched case-insensitively (case of
887   attribute values is not specified afaik?).
888   (Introduce compiled-in mime.types(5).., 2012-12-21)
890 - The undocumented *charset7* variable was removed.
892 - The "Message X:" display leader has been changed and will henceforth
893   be matchable via "^[-- Message \d+ -- \d+ lines, \d+ bytes --]:$".
894   These lines can no longer be suppressed by setting the *quiet*
895   option (which was yet possible for print and top, though undocumented).
896   (Change "Message X:" display message.., 2012-12-20)
898 - When displaying multipart messages the "Part X:" introductional string
899   has been changed; if the Content-type: header is not *retain*ed, then
900   this string will include the part's type and size.  Ditto for
901   Content-disposition: and a mentioned attachment filename.
902   This is a first step only, for the final version the MIME and send
903   layers will have to be adjusted.  But the string will be matchable via
904   a "^[-- #.* --]$" regular expression from now on.
905   (Change "Part X:" display message.., 2012-12-20)
907 - MIME boundaries in multipart messages are now handled better in that
908   no boundary string should get through to the display.
909  (Tweak MIME boundary detection.., 2012-12-20)
911 - A couple of long standing, even pre-Heirloom mailx(1) memory leaks and
912   segmentation violations, most of them related to configurations
913   without alloca(3) support, as well as one leak that i have introduced
914   when i implemented RFC 4155 MBOX handling, have been fixed.
915   But S-nail should now survive non-alloca(3) configurations.
916   (*memtracer* topic branch.)
918 - The Base64 MIME handling has been rewritten completely.
919   This was an urgent topic, because the old implementation (a) read in
920   all lines of a base64 encoded text part, repeatedly resizing a string
921   storage and repeatedly decoding that string until all the lines have
922   been swallowed (i.e., or by accident the last decoded byte was
923   a newline character, and that in turn may of course have fucked up for
924   multi-octet encodings, dependent on the actual byte-order), (b) used
925   function local static data to keep state in between multiple
926   invocations, which messed up multi-byte/-octet encodings like this
928     �5��ɽ���Aɥ����́��٥��������[lots of data follows]
930   and (c) did not perform any error checking at all.
931   The new one does not run into the problem that (a) tried to circumvent
932   since leftover decoded data (as opposed to leftover *encoded* data) is
933   transported along the call-chain for later use.  It adds a minimal set
934   of error handling ('may now see "[Invalid Base64 encoding ignored]"),
935   with more to become possible in later S-nail versions when the entire
936   layers are reworked.  (Until then DOS newline sequences [CRLF]
937   embedded into base64 will no longer be decoded to Unix LF newlines.)
938   Base64 encoded lines will now be 76 characters long, as stated (as
939   a maximum value) in RFC 2045, not 72 as before.
941   The Base64 code core has been shamelessly stolen from NetBSD's
942   Mail(1), and i guess it was the second time that this happened :=).
943   (*base64-rewrite* topic branch; and reworked later on the *mime-cte*
944   topic branch.)
946 - The string allocation strategy has been tweaked some more to, i think,
947   a final version (regarding algorithm).
948   In normal non-interactive send mode it should now no longer need any
949   dynamic memory at all (unless some dozen recipients are specified).
950   (Several other places still use normal dynamic memory, of course.)
951   (*dope-stringdope-again* topic branch.)
953 - Support for NSS (Network Security Services) has been removed.
954   I've never worked with it and are, regarding the complexity of
955   network security, not willing to spend any time on it.
956   SSL is installed on all systems i'm using and/or testing on by
957   default, and so i've choosen to go this way.
958   (It may be that sometime in the future S-nail will add support for
959   libcurl(3) connectivity, and then it may happen that not only NSS
960   support is reintroduced again, but also GNU TLS.  All of that applies
961   to network connectivity only, however, not to S/MIME afaik.)
962   (*drop-nss-support* topic branch.)
964 - I finally got a glue and understood that Sourceforge does (a) not
965   support symbolic links and (b) doesn't like dots as regular parts of
966   filenames.  This means that all this time the promised s-nail.tar.gz
967   symbolic link did not work, and that s-nailv13.3.tar.gz wasn't
968   accessible either (via the web interface).
969   In the future S-nail(1) will not provide any more symbolic links (the
970   Sourceforge website offers a "download latest" thing which seems to
971   work), and use underscores in filenames -- s-nailv13.3.tar.gz has been
972   renamed to s-nailv13_3.tar.gz.  The tags continue to use dot notation.
973   Thanks.
975 - The *heirloom-plus* support branch has been removed.
976   The code bases diverged a lot and even more to come.
977   It doesn't make sense to put any effort in that.
979 v13.3, 2012-11-11
980 -----------------
982 - Configuration on UnixWare 7.1.4 will succeed (shell issue fixed).
984 - Even on DragonFly BSD the IMAP GSSAPI is now found
985   (in /usr/pkg/include/krb5/gssapi/gssapi.h).
987 - Support for pkgsrc(7) systems and automatic integration of
988   C_INCLUDE_PATH and LD_LIBRARY_PATH path configurations.
989   Please see INSTALL.
991 - Fixes a mortally embarassing regression that the current maintainer
992   introduced before i really knew what i was doing, in (If *record* is
993   set, avoid writing dead content twice.., 2012-09-14).
994   It hit users that send through a MTA and have *record* set; in this
995   combination data would not have reached the MTA.
996   Interested parties may read the comment in savedeadletter() (part of
997   the changeset) or the (Fix MTA/*record* descriptor clash..,
998   2012-11-10) commit log.
1000   Deepest apologies to tortured users from the current maintainer!
1002 - RFC 4155 compatible MBOX file handling has been introduced, and so
1003   S-nail is now on par with (at least) NetBSD Mail in respect to this.
1004   It can be turned off with the new *posix-mbox* variable, which you may
1005   need to use since not all MUAs are capable to dig those MBOX files.
1006   E.g., less cutting-edge (.-) MUAs fail for this:
1008    |From - Thu May 10 20:40:54 2012
1009    |Date: Wed, 07 Nov 2012 11:48:30 +0100
1010    |To: super@duper.com
1011    |Subject: super1
1012    |
1013    |From me.
1014    |
1015    |From - Thu May 10 20:40:54 2012
1016    |Date: Wed, 07 Nov 2012 11:48:30 +0100
1017    |To: super@duper.com
1018    |Subject: super2
1019    |
1020    |>From - Thu May 10 20:40:54 2012
1021    |From - Thu May 10 20:40:54 2012
1023   I'm not completely happy since S-nail *does* still quote those lines,
1024   how rare they may be -- it *does* modify message content.  mutt(1)
1025   implements something more clever and that is quoted-printable encoding
1026   of the "F" from "From", when seen at the beginning of a line.
1027   This, when applied to just *any* "^From", will be a non-modifying and
1028   all-compatible solution.
1030 - SEND_MBOX handling has been changed to discard any Content-Length: and
1031   Lines: headers when it rewrites a message by default.
1032   I know that mutt(1) generates them (why, after
1033   http://www.jwz.org/doc/content-length.html?).
1034   Anyway, S-nail does neither use nor manage them, so that any
1035   modification renders those fields invalid, and then it seems best to
1036   discard them anyway.
1037   You may turn the new behaviour off with *keep-content-length*.
1039 v13.2, 2012-11-03
1040 -----------------
1042 The problem was that i really wanted to release on a 25th.
1043 But i have been able to improve S-nail(1) some more, so that this is
1044 possibly the first real release of it.  So i'll add only things that
1045 have changed since v13 -- please see below for the complete picture.
1047 - A new CONFIG=CUSTOM make directive was added, and the new user.conf
1048   variables WANT_SCORE and WANT_DOCSTRINGS have been added.  It is
1049   possible to create a floating-point free S-nail(1) now.
1050   Please see INSTALL.
1052 - If a feature is disabled not even functions stubs should remain now.
1054 - Many places which will work only with local filenames do now actually
1055   check that the target is a local filename.
1057 - Space-separated lists should work again, at a few places at least.
1059 - Tilde commands will be possible, even with -r.
1061 - The *sendmail-progname* has been added after NetBSD 6 dropped the
1062   send-mail entry in mailer.conf(5), which broke S-nail(1).  Now users
1063   have an option.
1065 - When editing messages via ~e or ~v file and pipe addressees will no
1066   longer be lost.
1068 - If recipients occur multiple times spread over lists, i.e., To:, Cc:,
1069   Bcc:, then only one occurrence remains, and in the "highest-order"
1070   list.
1072 - The "list" command prints the list alphabetically sorted (somewhat).
1074 - The "help" and "?" commands take an optional argument that shows
1075   a synopsis string for the given command (unless WANT_DOCSTRINGS was
1076   false).
1078 - String allocations are now more efficient.  The situation can still be
1079   improved.  However, for the first time Berkeley Mail(1) integrates
1080   harmonically into the system allocator, which may madvise(2) unused
1081   memory to the operating system as necessary and/or possible!
1083 v13.1, 2012-10-25
1084 -----------------
1086 Well, a version number 13 is anyway an ugly thing...
1088   commit 4f534bb33b7c911272cc66a0e3a9e47b73ad8deb
1089   Date:   2012-10-25 20:46:07 +0200
1091       FIX MIME quoted-printable encoding (char cast)..
1092       
1093       (;-{
1094       Auauauauau!!
1095       
1096       Well, one of the things that have already been started in v13 is
1097       the turn from using "int" when working with 8-bit characters to
1098       "unsigned char" (and as long as we do not support wide
1099       characters).
1100       
1101       Unfortunately one very important piece of code, that is handling
1102       encoding to quoted-printable, still used integer instead of
1103       unsigned char, which caused an automatic extension cast to take
1104       place, and that resulted in a messed up output.
1105       Sorry!
1107 v13, 2012-10-25
1108 ---------------
1110 I want to give prominence to the following people that helped to improve
1111 S-nail(1) during this development cycle, in order of appearance: Martin
1112 Neitzel, Ezequiel Garzón, Björn Persson, Paul Vojta, and, especially,
1113 John Dodson for warm words from beautiful Australia!  Many thanks also
1114 to Christos Zoulas.
1116 After i've officially forked nail(1) aka Heirloom mailx(1) as S-nail(1)
1117 on 2012-09-18 i have been able to work five weeks almost fulltime on
1118 S-nail(1) development.  The first three weeks can be characterized as
1119 hectic fireworks here and there, but then it got better and i was able
1120 to work more or less topic-centric.  In the meanwhile S-nail(1) is more
1121 than 230 commits away from the Heirloom base--and drifting further apart.
1123 S-nail(1) v13 is the first release of S-nail(1), but it was forked from
1124 Heirloom mailx(1) 12.5 7/5/10 that arose from Berkeley Mail 8. unless
1125 i'm mistaken.  What characterizes S-nail(1) v13?
1127 - The build system has been reworked almost completely.
1128   It is possible to fine-tune which features should be present in the
1129   binary and which don't.  The name of the binary can be chosen, and
1130   that choice is reflected all through the manual and the template
1131   resource file.  The manual is always complete and thus may document
1132   features that are not supported by the actual binary, though.
1133   Please see INSTALL for more.
1135 - Compiler warnings can now be used.  Please see the example WARN= flags
1136   in the Makefile, but '-Wall -Wextra -pedantic' should be silent though
1137   certainly insufficient to reflect the complex work of modern compilers.
1139 - The following recipient address list combines some of the major
1140   improvements that have been made:
1142     <addr1@cdröm.de>  (bier) , ./file1,
1143     Steffen Smöregäs (Humbabä) <sauer@bäüer.de> (Hummpäa)    ,
1144          sabberlot@träbbel.de  ,  (bier2) <a2@bür2.de> ,
1145        a3@b3.de (bier3)  , <a4@b4.de> (bier4, und \"bier5\")  ,
1146     |cat > pipe1 ,   (bier 6) <a6@bür6.de>  ,   ./file2        ,
1147     (co\$mm1) abc1@düf.de (cö,bmm,2)   (co\"m\"m.3) ,
1148     co\$bmm1 \"c,ömm2\" co\"m\"m.3 <abc2@däf2.de>  ,  |cat > pipe2 ,
1149     moppel@höppel.org
1151   That, on a single line, may be given to ":m" or (quoted) on the
1152   command line, or to "~c" or whatever, and it will work as expected
1153   (well, everything else would be a bug..) and result in the following
1154   sendmail(1) invocation:
1156   SENDMAIL.SH
1157   <-i a2@xn--br2-hoa.de a3@b3.de a4@b4.de a6@xn--br6-hoa.de abc1@xn--df-xka.de abc2@xn--df2-qla.de addr1@xn--cdrm-7qa.de moppel@xn--hppel-jua.org sabberlot@xn--trbbel-cua.de sauer@xn--ber-qla4j.de>
1158   >>>>>>>>>>>>>>>>>
1159   Date: Thu, 25 Oct 2012 17:12:15 +0200
1160   To:
1161   Cc: Steffen =?utf-8?Q?Sm=C3=B6reg=C3=A4s?=
1162     =?utf-8?Q?_(Humbab=C3=A4)?= <sauer@xn--ber-qla4j.de> (=?utf-8?Q?Hummp=C3=A4a?=),
1163     sabberlot@xn--trbbel-cua.de, moppel@xn--hppel-jua.org,
1164     <addr1@xn--cdrm-7qa.de> (bier),
1165     co$bmm1 =?utf-8?Q?"c,=C3=B6mm2"?= co"m"m.3 <abc2@xn--df2-qla.de>,
1166     (co$mm1) abc1@xn--df-xka.de (=?utf-8?Q?c=C3=B6,bmm,2?=) (co"m"m.3),
1167     (bier 6) <a6@xn--br6-hoa.de>, <a4@b4.de> (bier4, und "bier5"),
1168     a3@b3.de (bier3), (bier2) <a2@xn--br2-hoa.de>
1169   Subject: Re: SubjectTest
1170   MIME-Version: 1.0
1171   Content-Type: text/plain; charset=us-ascii
1172   Content-Transfer-Encoding: 7bit
1174   body
1175   <<<<<<<<<<<<<<<<<
1177   So list parsing has been fixed, IDNA support has been added, and it is
1178   possible to mix pipe and file recipients *and* multiple thereof, and
1179   the result is still correct for *all* of them.
1180   I think this kind of list can be given wherever a user can directly
1181   enter such a list.  And i think all that is unique to S-nail(1).
1183 - When writing back edited messages the target MBOX mailbox can no
1184   longer become "corrupted" when the trailing newline was removed during
1185   the edit.  Also affected FreeBSD and NetBSD mail(1).
1187 - A security fix for CVE-2011-2895 was applied.
1189 - The generated Message-Id: is now more human-friendly.
1191 - The -h command line option has been dropped.  Use "-O -h XY" if your
1192   MTA really supports that.
1194 - The -O and -r command line options no longer enforce a one-shot send
1195   mode, and instead persist for the duration of the entire session.
1197 - Variables set via the -S command line option are now (un)set twice;
1198   immediately and after all the resource files have been loaded.
1200 - Other new or changed options/commands, in order of appearance:
1201   recipients-in-cc, smime-sign-include-certs, quote-fold, stealthmua,
1202   add-file-recipients, write, rfc822-no-body-from_, rfc822-show-all,
1203   mail/Mail, idna-disable, idna-strict-checks, ??
1205 - In the codebase itself an effort to reduce duplicate work and
1206   introduce caching, and to minimize the use of local variables, was
1207   started, but that is long term.  A lot of improvements here and there,
1208   too, like using the well MD5 optimization from Wei Dai, Chris Torek's
1209   hash algorithm for hash tables etc.
1211 - Incredibly important: an heraldic animal was found: snailmail.jpg!
1213 The full history can be inspected by issuing the git(1) command
1215   $ git log --reverse s-nail..s-nailv13
1217 A new TODO has been introduced, and it is getting longer and longer.
1218 Thanks.