"Fossies" - the Fresh Open Source Software Archive

Member "swaks-20181104.0/doc/Changes.txt" (4 Nov 2018, 45668 Bytes) of package /linux/privat/swaks-20181104.0.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "Changes.txt": 20170101.0_vs_20181104.0.

    1 > 20181104 released 20181104.0
    2 * 20181104 Update release tooling after development environment changes
    3 * 20181104 Spelling fixes
    4 * 20181104 Clean up contact/notifications - remove Google+ everywhere, add
    5            RSS and Twitter to base.pod
    6 * 20181104 Add --output as a synonym for --output-file
    7 * 20181104 --dump-mail should write to the default output filehandle
    8 * 20181104 More --dump improvements and bug fixes
    9              - General layout improvements
   10              - Auth: add output for --auth-hide-password
   11              - Transport: only show the output options relevant to the type
   12              - TLS: Fix bug preventing display of TLS info when
   13                --tls-on-connect used
   14              - Proxy: Add output for --proxy-command and --proxy-protocol
   15              - Transport: add output for --copy-routing
   16              - Transport: add output for -4 and -6
   17              - Output: add output for --protect-prompt and --show-raw-text
   18              - Protocol: add output for --force-getpwuid
   19              - XCLIENT: add output for --xclient-before-starttls and
   20                --xclient-no-verify
   21 * 20181104 Fix bugs causing the interactions between --dump,
   22            --auth-hide-password, --dump-as-body, and
   23            --dump-as-body-shows-password to not always work as documented
   24 * 20181103 Rework --dump to produce more consistent and thorough output
   25              - ensure no leading/trailing space when only dumping sections
   26              - alphabetize lists for reproducible output
   27 * 20181103 Properly document that --drop-after-send takes an argument.
   28 * 20181103 -lp/--local-port was documented but -lp/-lport was implemented.
   29            Now all three are documented and implemented.
   30 * 20181103 Prevent --dump from always listing XCLIENT as active
   31 * 20181101 Using --header now handles replacing a multi-line header properly
   32 * 20181101 --dump now prints all output to the default output filehandle
   33            instead of STDOUT.
   34 * 20181101 --dump and --dump-as-body now take optional arguments which can
   35            limit what is printed, making targeted debugging easier.
   36 * 20181101 Don't allow empty recipient if we're prompting for one
   37 * 20181030 Support TLSv1.3 and DTLSv1.2 in debug strings
   38 * 20180609 Add --xclient-destaddr and --xclient-destport options
   39 * 20180609 If an option-processing callback fails to load, print error and
   40            exit (mostly helpful for development)
   41 * 20180609 Add --xclient-no-verify added to turn off requirement that
   42            XCLIENT attributes must have been advertised by server for Swaks
   43            to send them
   44 * 20180609 Now that we support multiple XCLIENT calls, --xclient-ATTR options
   45            are no longer merged with --xclient into a single XCLIENT call.
   46            This breaks previously documented behavior.
   47 * 20180609 Add --xclient-delim option to allow --xclient-ATTR options to be
   48            grouped into individual XCLIENT calls
   49 * 20180609 Moved xtext encoding out of do_smtp_xclient and into to_xtext
   50            in preparation for implementing xforward, which will also need it
   51 * 20180225 Added license and authorship info to README, base.pod, index.html
   52 * 20180225 Add --xclient-before-starttls option to allow Swaks to attempt
   53            XCLIENT first and then STARTTLS.
   54 * 20180225 Change Swaks to send XCLIENT after STARTTLS (per user bug
   55            report and Postfix mailing list confirmation).
   56 * 20180217 Remove note in documentation that Proxy v2 support is theoretical.
   57            Exim fixed v2 bug in 4.89 and swaks has now been tested with it
   58 * 20180217 Fix bug preventing Proxy from working with --tls-on-connect
   59 * 20180217 Updating copyright date to 2018
   60 * 20170819 Enable https access for website
   61 * 20170308 Add BCC section to faq.html
   62 * 20170308 Implement --dump-mail option
   63 * 20170307 Remove deprecated single-character data tokens and
   64            --use-old-data-tokens option
   65 * 20170307 Fix spelling, grammar, and phrasing issues in base.pod, faq.html,
   66            and index.html
   67 * 20170106 Fix typos in base.pod (reported by Andreas Metzler/Debian)
   68 > 20170101 released 20170101.0
   69 * 20170101 Removed unneeded extra functionality added to transact() for
   70            PRDR implementation (functionality already existed)
   71 * 20170101 Removed some cruft from do_smtp_gen (noticed by accident)
   72 * 20170101 Add PROXY protocol support
   73 * 20170101 Updating copyright date to 2017
   74 * 20161231 Add --prdr support
   75 * 20161231 Remove caveat from --pipeline documentation
   76 * 20161230 Added --drop-after and --drop-after-send options
   77 * 20161230 Added tester to check for option and okey collisions in
   78            @G::raw_option_data
   79 * 20161230 Updating copyright to 2016
   80 * 20151109 Fixed grammar issue in "About the Name" section
   81 * 20150212 Add %SWAKS_VERSION% token and use it by default in the X-Mailer
   82            header.  Suggested by Jan-Pieter Cornet.
   83 * 20150212 Add %MESSAGEID% token and add Message-Id as a part of the default
   84            DATA.
   85 * 20150128 Handle the case where a server advertises XCLIENT but does not
   86            advertise any supported attributes.
   87 * 20141202 Fixing a couple of "an [CONSONANT]" doc typos
   88 * 20141128 Fix incorrect range on XCLIENT rfc1891/xtext encoding caused by
   89            mixing hex and decimal. Reported by Thomas Szukala
   90 * 20141128 Fixed local_cert_subject logging bug, reported by Roman Rybalko
   91 * 20140207 Updated faq.html with typo and phrasing fixes.  Added note that
   92            Homebrew and MacPorts both package swaks (h/t Andrew Langhorn)
   93 * 20140207 Updating copyright to 2014
   94 * 20130906 Fixed some POD formatting errors. Exit code formatting reported by
   95            both Debian and redhat maintainers, caused by Pod::Simple change
   96            in perl-5.18.1.  Others found playing with podchecker.
   97 * 20130422 Fixed typo in man page ("test" -> "text"), reported by
   98            Graeme Hewson.
   99 > 20130209 released 20130209.0
  100 * 20121014 Fixed to send proper "cancel" of SASL transaction (bare '*') when
  101            the server returns an improper rspauth.  swaks would understand
  102            that auth failed, but later than it should have (reported by
  103            Erwan Legrand)
  104 * 20120805 Fixed bug causing swaks to "double-quit" when a rejected MAIL of
  105            RCPT was sent _AND_ a --quit MAIL or --quit RCPT was used _AND_
  106            --pipeline as used.
  107 * 20120805 Fixed bug in TLS and pipe recv code when server has closed
  108            connection but swaks is expecting data to be present
  109 * 20120803 Implemented new --no-send-hints, --no-receive-hints, and
  110            --no-info-hints options (mostly so I could can copy certs from
  111            the output of --tls-get-peer-cert).
  112 * 20120803 Fixed probably-never-traversed bug in last-resort transaction hint
  113 * 20120728 Reworked website, placing all files in swaks/files and redirecting
  114            where necessary; simplified index.html to cut down on casual
  115            consumer confusion; split version/change information into
  116            version.html; applied consistent style to all pages; new style
  117            guideline, changing "swaks" to "Swaks" when used as proper noun
  118 * 20120710 Typo/phrasing review of RELEASE/README.  Adding doc for release
  119            process (failed to update README for 20120320.0)
  120 * 20120624 Added --tls-ca-path option to specify alternate certs for use in
  121            verification
  122 * 20120624 If TLS is attempted but failed, just exit, don't attempt to
  123            send quit because we don't know what state the cxn is in.  This
  124            will likely cause problems with tls-optional connections,
  125            documenting the concern there.
  126 * 20120601 Added --tls-verify option
  127 * 20120531 Added --tls-cipher option to set preferred ciphers list
  128 * 20120531 Added in --tls-protocol option to specify or exclude specific tls
  129            protocols.
  130 * 20120531 fixed wrong exit code for improper use of --tls-key/--tls-cert
  131 * 20120531 Add "available protocols" to the tls section of --dump
  132 * 20120531 Change around tls_get_peer_cert processing so that it's not
  133            touched if TLS isn't going to be attempted
  134 * 20120530 Add tlsv1_1 and tlsv1_2 as "known" protocols in the
  135            post-tls-negotiation info lines
  136 * 20120530 In a secure session, if the protocol version is unknown, print
  137            the raw version number in the post-tls-negotiation info lines
  138 * 20120530 Fix the botched TLS checks in the last commit
  139 * 20120529 Added some more error checking in TLS code, breadcrumbs to the
  140            existing errors (spurred by Debian bug 675009, though the
  141            specific issue in that bug was fixed by commit 311).
  142 * 20120410 typo fixes and clarifications for XCLIENT docs
  143 * 20120407 fix bug w/ xclient impl, using just --xclient didn't cause
  144            XCLIENT to be sent
  145 > 20120405 released 20120405.0-dev to Kevin San Diego and Kurt Anderson
  146            (submitters of independent XCLIENT patches) for comment
  147 * 20120404 added xtext encoding for the xclient options
  148 * 20120404 add and document new --quit-after option 'xclient'
  149 * 20120404 implemented the SMTP portion of XCLIENT, documented the
  150            --xclient-optional(-strict)? behavior.  Added and documented
  151            33,34 exit codes
  152 * 20120402 xclient second pass.  option processing and --dump
  153 * 20120402 xclient first pass.  Added -xclient* options to data struct
  154            made first pass at documenting feature and options
  155 * 20120330 Change the TLS cipher info line from just the NAME to
  156            VERSION:NAME:BITS
  157 * 20120330 A bit more TLS error checking.  Some added on general principle.
  158            Specifically fixed error where swaks would die silently during
  159            SSL protocol negotiation (could replicate by doing -tlsc
  160            against port 25)
  161 * 20120330 Add a new TLS info line, either logging the DN of the local
  162            cert or print that no local cert is being used
  163 * 20120330 cleaned up TLS info lines.  Changed "w/" to "with", changed
  164            "peer subject DN" to "peer DN".
  165 * 20120330 add --tls-cert and --tls-key options to allow swaks to use
  166            certs for its half of the session.  Debian bug 497654,
  167            Luis E. Muņoz provided a patch that was the basis for the
  168            eventual implementation.
  169 * 20120330 add --tls-get-peer-cert to --dump output
  170 > 20120320 released 20120320.0
  171 * 20120320 Small patch to handle (-6 not set, --server IPv6, ipv6 not
  172            available) gracefully. Report from and patch by Ulrich Zehl.
  173 * 20120320 twiddled the --dump code to allow for reuse with --dump-as-body.
  174            noted that plaintext passwords can be shown i --dump output.
  175 * 20120320 add --dump-as-body and --dump-as-body-shows-password.
  176 * 20120320 added reconstruct_options() to generate an effective command line.
  177            Added to --dump output
  178 * 20120319 There are some interactions (DIGEST-MD5 specifically) which can
  179            result in b64-encoded response if successful, plaintext response
  180            if an error.  --auth-plaintext didn't play well with the
  181            plaintext error.
  182 * 20120319 fixed a couple of exit codes to be more specific
  183 * 20120319 change all references for Digest::SHA1 to Digest::SHA, included
  184            in perl core since at least 5.9. Suggested by Andreas Metzler
  185 * 20120319 still more removal of code supporting the -l option (r253 removed
  186            the function parsing the file, but we still checked the now-
  187            never-populated $fconf in lots of option processing)
  188 * 20120319 Rearrange --dump output, group settings closer to how options
  189            are organized in the docs
  190 > 20120223 released 20120224.291-dev
  191 * 20120223 MX tweaks to try to find exchangers with the correct IP type when
  192            -4 or -6 are used
  193 * 20120223 changed several instances of "destination" to "target" in base.pod
  194            to stay consistent with "terms and conventions" section.
  195 * 20120223 Slight change in connection failure error - local interface only
  196            shown if one was set in the first place
  197 * 20120223 Added --local-port option, updated --local-interface to support
  198            specifying a local port using same logic at --server
  199 * 20120223 updated --server parsing to allow alternate syntaxes for specifying
  200            port (SERVER, [SERVER], [SERVER]:PORT, IPV4_OR_HOST:PORT,
  201            SERVER/PORT, [SERVER]/PORT)
  202 * 20120223 First pass at IPv6 support.  Static routing only, implemented -4 and
  203            -6, no MX logic yet.
  204 * 20120214 Removed final breadcrumbs of removed --input-file and additive
  205            --silent from docs
  206 * 20120109 Added "ABOUT THE NAME" section to base.pod
  207 * 20120103 Changed swaks to build version string dynamically for dev builds;
  208            updated gen-release.pl's method for setting release versions
  209 * 20120103 Updating copyright note through 2012
  210 * 20120103 Removed the code for the -m option which had been deprecated
  211            since 20071218.
  212 * 20120101 Finally documenting the --dump option
  213 * 20120101 changed the indent formatting so all the examples are at a
  214            consistent indent.
  215 * 20120101 typo fix in docs (rep. Andreas Metzler)
  216 > 20111230 released 20111230.0
  217 * 20111229 address some -w output related to the DIGEST-MD5 rewrite
  218 * 20111229 Change indent from 2-space to 1-tab, use 120-char width where it
  219            makes sense.
  220 * 20111228 updating contact links at top and adding Id keyword
  221 * 20111222 fix handling of --auth-extra dmd5-serv-name to work around lack
  222            of interface for it in Authen::SASL.
  223 * 20111221 fix --auth-map parsing to accept documented format.
  224 * 20111221 added ability to set realm in the DIGEST-MD5 authenticator using
  225            realm --auth-extra keyword.
  226 * 20111221 removed -au overloading for digest-uri string in DIGEST-MD5. Use
  227            dmd5-serv-type, dmd5-host, and dmd5-serv-name --auth-extra
  228            keywords now.
  229 * 20111221 removed -au overloading to set DOMAIN in NTLM/MSN/SPA.  Use
  230            domain --auth-extra keyword now.
  231 * 20111221 added and documented the --auth-extra option.  Initial keywords
  232            are domain, realm, dmd5-serv-type, dmd5-host, and dmd5-serv-name
  233 * 20111221 moved --auth-map contents in --dump into the "if auth" section.
  234 * 20111209 Allow specifying DIGEST-MD5's digest-uri by extending the -au
  235            option (USERNAME%URI-SERV-TYPE%URI-HOST%URI-SERV-NAME)
  236 * 20111209 Fixed default value of DIGEST-MD5's digest-uri to always include
  237            a "host" value
  238 > 20111203 released 20111202.0-dev to announce list for review
  239 * 20111202 implemented the -raw/--show-raw-text option to print a hex dump
  240            of the raw bytes as received on the wire.
  241 * 20111202 re-implemented reading of server responses in non-TLS, non-pipe
  242            sessions in terms of recv rather than as a standard filehandle
  243            operation (<>) to make it closer to the TLS's read and to allow
  244            a more in-depth view of what's being sent on the wire.
  245 * 20111201 fixed TLS issue when SMTP response sent in multiple packets.
  246            This looks like a regression of the TLS fix from 20050709
  247            (r94) that was made in the implementation of --pipeline in
  248            20060309's r115.  Regression reported by Peter J. Holzer along
  249            with suggested fix.
  250 > 20111130 released r256 to Erwan Legrand (erwan@lightbringer.org)
  251            to evaluate the DIGEST-MD5 changes
  252 * 20111130 Changed the DIGEST-MD5 back end from Authen::DigestMD5 to
  253            Authen::SASL.  Authen::DigestMD5 had some blatant protocol
  254            bugs and swaks did a poor job of supporting DIGEST-MD5
  255            (as pointed out by Erwan Legrand).  Current version
  256            tested against a reasonably new Sendmail install.
  257 * 20111128 Fix option processing so that "no-" prefixed options wipe out
  258            the same option when presented in the same context.  Previously
  259            --no-timeout on command line would erase a timeout set by a
  260            config option or env variable, but would not erase --timeout
  261            given earlier on the same command line.
  262 * 20111128 Removed the additive nature of the --silent/-S option.  Left
  263            a mention of it in doc as breadcrumb.  Remove all mention in next
  264            release
  265 * 20111128 removed the --input-file/-l option from the code.  Left one final
  266            mention on if in the docs as a breadcrumb to anyone who still needs
  267            to move to --config.  Will remove breadcrumb after next release
  268 * 20111128 Adding missing --no-data-fixup option back into the docs
  269 * 20111128 Changed default token parsing from the old single-char version
  270            (%F) to the newer, safer version (%FROM_ADDRESS%).  Added and
  271            and documented the --use-old-data-tokens option to get old
  272            behavior back.  Marked option and older tokens as deprecated
  273            to hopefully get people to transition to new tokens. (The issue
  274            with the overly simplistic tokens and non-ascii language encoding
  275            first reported by Peter Baranyi)
  276 * 20111021 Fixed the date string TZ offset to work correctly for TZs that
  277            are not fixed on an hour boundary.  Report and patch by Peter
  278            Samuelson in Debian bug 646084.
  279 * 20110321 added --auth-hide-password option to replace recoverable passwords
  280            in SMTP transactions with a dummy string
  281 * 20110321 fixed bug which prevented message data to be provided in a file
  282            with a "n" or "\" in the filename.  Reported and fix suggested
  283            by dietrich.rebmann#freenet.de
  284 * 20110309 added --protect-prompt option to make best effort not to
  285            echo user input on sensitive fields (*nix and Win32)
  286 * 20110309 misc typos/style
  287 * 20110309 updated copyright date to 2011
  288 * 20101217 fixed bug where --header no longer worked for setting custom headers
  289            (reported 20101015 by David Favor)
  290 * 20101217 added and documented the --output-file* options
  291 * 20100215 added recipes.pod to repo and added vrfy and fswaks recipes
  292 * 20100212 fixed doc typo
  293 > 20100211 released 20100211.0
  294 * 20100211 moved to swaks.org, redid website
  295 * 20100211 working on release engineering
  296 * 20100211 fixed interaction bug between POD/__END__/&DATA
  297 * 20100204 added --attach-name option to allow setting of custom
  298            name or setting that no name should be used.  Need
  299            pointed out by Stefan Lischke, Christoph Kiechle, and
  300            Cliff Clasen.
  301 * 20100204 set a name for attachments based off of filename
  302 * 20100204 removed requirement for OPTIONS markers in config files
  303 * 20100204 fixed TZ bug which could occasionally generate TZs offsets
  304            like +0099 (instead of +0100) for GMT+X TZs (not GMT-X).
  305            fixed Debian bug 566013)
  306 * 20100203 declaring docs good enough, finished rewrite
  307 * 20100203 updated copyright date to 2010
  308 > 20080618 released 20080618.0-dev to martin#antibodymx.net
  309 * 20080618 add --tls-get-peer-cert to save peer cert for evaluation
  310            (suggested by Martin A. Brooks <martin#antibodymx.net>)
  311 * 20080618 added peer subject DN to TLS information
  312 * 20080618 added post-startup routine for swaks specific tls code
  313            (keep swaks stuff out of start_tls() but also have common
  314            place for code shared between -tls and -tlsc
  315 > 20080417 released 20080208.2-dev to Chris Pimlott <chris#pimlott.net>
  316 * 20080208 not sure if this was a bug or a misfeature, but removed
  317            the code that prevent the same header from being changed
  318            multiple times using --header option
  319 * 20080208 20061227 --add-header now inserts contents at end of
  320            existing headers if no %H tokens in DATA (allows adding
  321            headers to non-default messages read from files)
  322 * 20080208 20071220 added ability for config file data to be read
  323            from __DATA__ if present (portable user defaults)
  324 * 20080208 20071221 added recognition of :port suffix to --server
  325 * 20080104 if --data has no newlines and represents an openable file,
  326            use the contents of the file as the DATA
  327 * 20080104 fixed very obscure bug which caused crash if _no_ option
  328            processing was done (introduced sometime during the
  329            introduction of env/conf file opts I think)
  330 * 20080104 fixed --no- processing to not break processing of valid
  331            options which already begin with "no-"
  332 * 20080103 implemented recognition of "no-" prefix to erase previously
  333            set options
  334 * 20080103 added yet another layer of abstraction to option processing
  335 * 20080103 updated copyright to 2008. changed $p_cp formatting to
  336            remove backslash from email
  337 * 20071231 fixed long standing implementation bug in the inter-op
  338            of the --dump and --silent option.
  339 * 20071231 changed --silent to accept an arg in addition to being
  340            additive.  the additive form is now deprecated
  341 * 20071227 implemented --hide-all and --hide-informational
  342 * 20071221 made --server/--pipe/--socket mutually exclusive
  343 * 20071220 Added banner as synonym for CONNECT
  344            CONNECT behavior that closes the connection without
  345            sending quit immediately after opening it.  Made -q TLS
  346            work after tls-on-connect.
  347 * 20071220 changed the env var namespace from SWAKS_ARG_ to
  348            SWAKS_OPT_.  fixed to replace _ w/ - in var names.
  349 * 20071220 in config, changed flags from ARGS to OPTIONS.
  350            changed option/arg split to be a single space - leading
  351            space on arg is preserved if present.
  352            changed so that dash(es) on option names are optional.
  353 * 20071218 deprecated -m, tis a silly option
  354 * 20071214 completely reworking documentation.  splitting options
  355            into tiers based on types of functionality, driving
  356            requirements into individual sections, and generally
  357            reorganizing to provide more information while also
  358            making it more readable.
  359 * 20071214 removed --input-file and all references to it from
  360            documentation.  Functionality will be removed in future
  361            release.
  362 * 20071016 fixed --tlsos/-tlsos type in POD (haraldme.gmail.com)
  363 > 20070921 released 20070921.0-dev to madduck.debian.org, db403208
  364 * 20070921 20061221 added --config.  Added new config file and
  365            environment variable processing to allow multiple,
  366            ways to specifying options.  Debian bug 403208
  367 * 20070921 rearranged dependency processing for code readability
  368 > 20070920 released 20070920.0-dev to haraldme.gmail.com
  369 * 20070920 implemented --tls-option-strict
  370 * 20070914 finished --auth-optional-strict impl incl test frame
  371 * 20070906 added framework for --auth-optional-strict, needs tweaking
  372            and docs still
  373 * 20070119 DIGEST-MD5 was broken.  Fixed.  (Broke when --pipeline
  374            was implemented.  When underlying transaction code was
  375            rewritten, the piece that treats a send string of
  376            undef and "" differently was lost.  Never noticed because
  377            only DIGEST-MD5 sends a blank line as part of the protocol.)
  378 * 20070115 20061229 added and documented --copy-routing option
  379            to allow routing information of a domain that is unrelated
  380            to the --to address (saves the step of having to look
  381            up and specify MX records manually using --server).  Arg
  382            can be domain, @domain, or lp@domain, where domain can be
  383            a domain name, [1.2.3.4], or #12345678.
  384 * 20070115 20070112 getlogin() is unreliable (see difference in
  385            auto-from between "swaks -t foo" and
  386            "echo bar | swaks -t foo") when su'd to another user.
  387            Replace getlogin() w/ $LOGNAME.  The user can set this
  388            to whatever they want to be known as, and if it's not
  389            set we still fall back on getpwuid
  390 * 20070115 updated copyright year through 2007
  391 * 20061227 20061221 --header and -h-Header args didn't work for
  392            replacing existing headers when DATA read in from file.
  393            Fixed (expected \\n, not \n), though adding new headers
  394            to the same messages is still broken
  395 * 20061227 20061218 in --h-Header construct, allow trailing colon and
  396            allow single dash in addition to double (previously a colon
  397            in the arg name resulted in double colon in header and
  398            a single dash resulted in a HELO string of "-Header"
  399 > 20061116 released 20061116.0
  400 * 20061115 20060806 fixed bug where From: was prompted for on some -q
  401            types that don't require it, too (Helo: too)
  402 * 20061115 documented rfc3848 --protocol options and behaviors
  403 * 20061023 finished implementing protocol overloading (tls and auth)
  404 * 20061018 implemented groundwork for overloading --protocol with
  405            broad protocol types.  implemented overload->simple
  406            protocol mapping, still missing TLS and AUTH mapping
  407 * 20061018 set default port for LMTP to 'lmtp'/24 and documented
  408 * 20061011 20061010 --port can now be a service name as well as
  409            a port number.  Internally, now tries resolve 'smtp' and
  410            'smtps' services as default ports reverting to old 25/465
  411            behavior if those aren't found
  412 * 20061010 20060914 documented --header and --h-Header options
  413            (though badly.  I really need to redo the docs)
  414 * 20061010 fixed bug time bomb with handling legacy AUTH= ESMTP
  415            lines noticed while addressing the above.
  416 * 20061010 made AUTH auth_types case insensitive as required in
  417            rfc2554.  Debian bug 392182
  418 * 20060914 removed some extraneous /e opts from body-processing regexps
  419 * 20060914 added --header-HEADER option where --h-Text foo is
  420            a synonym for --header "Text: foo"
  421 * 20060914 added --header option which, if header already exists,
  422            overwrites it.  Otherwise adds to --add-header processing.
  423 * 20060817 redid --support/avail() again to support concept of
  424            optional (optimizing) modules for full disclosure in output
  425 * 20060804 redid the REQ docs to reflect current requirements
  426            and behaviors.
  427 * 20060804 fixed get_date_string() to return a true GMT string, not
  428            the local time w/ a GMT stamp if date_manip unavailable
  429 * 20060804 didn't realize eb64 needed to support line endings because
  430            of use in encoding mime bodies.  Add in feature.
  431 * 20060804 changed all base64 calls to use local functions if
  432            MIME::Base64 isn't available.  Module is still preferred
  433            due to "many eyes" and speed.  Removed MIME::Base64 from
  434            auth requirements.
  435 * 20060804 added test_support() call to --dump output for testing
  436 * 20060804 moved all other modules to conditionally load, as needed.
  437            This is IO::Socket, IPC::Open2, Time::Local,
  438            Sys::Hostname, and Getopt::Long.  Time::Local and
  439            Sys::Hostname are optional (they are not always used,
  440            and can now be worked around if not available).  IO::Socket
  441            is now only loaded is doing a socket connection and
  442            IPC::Open2 only needed for a --pipe session.
  443 * 20060804 20060201 rewrote module support.  Capabilities are checked
  444            by labels, not with literal modules.  Allows checking
  445            in main code not to change when behind the scenes
  446            implementations change.  added avail() and avail_err(),
  447            test_support(), removed load_modules(), try_load().  Also
  448            some speed gains because program now only loads modules
  449            needed for specific invocation - previously preloaded
  450            every available module, regardless of need.
  451 * 20060803 added and tested load(), but haven't hooked in yet
  452            (part of requirement rewrite)
  453 * 20060724 added and tested local base64 replacements, but haven't
  454            hooked them in yet (waiting for requirement rewrite)
  455 * 20060719 20050709 TLS options now work on --pipe connections
  456 * 20060719 fixed tls/quit-during-second-helo bug introduced by
  457            addition of --protocol
  458 * 20060719 documented --protocol option and args, including new
  459            lmtp protocol
  460 * 20060719 documented all --quit-after synonyms, including new lhlo
  461            based ones.
  462 * 20060718 20050605 added 'lmtp' as a valid protocol
  463 * 20060718 20050625 added --protocol option.  'esmtp' is default with
  464            legacy behavior.  'smtp' only sends HELO, not EHLO.
  465 * 20060623 added url to CONTACT section of docs
  466 * 20060622 Updated FSF address in GPL notice
  467 > 20060621 released 20060621.0
  468 * 20060621 added note at top and in docs about update email address
  469 * 20060621 added comments to top of code about viewing docs
  470 * 20060526 added and document --add-header option (Debian bug 366317)
  471 * 20060526 removed old (pre-pipelining) transaction code
  472 > 20060309 released 20060309.0-dev to exim-users.exim.org
  473 * 20060309 20050406 added --pipeline option
  474 * 20060308 --attach/--body tweaks (add closing boundary in mime,
  475            added ability to use - for multiple body/attach parts,
  476            allowed --body and --attach to coexist, added docs
  477            for the three options)
  478 * 20060307 20050510 added simple implementation of --body, --attach,
  479            and --attach-type options (Debian bug 354084)
  480 * 20060222 swaks died on SIGPIPE on unexpected disconnect over
  481            --socket.  fixed.
  482 > 20060221 released 20060221.4-dev to jh.plonk.de
  483 * 20060221 20060130 if quitting before rcpt and link type is --socket
  484            or --pipe, do not prompt for recipient.
  485 * 20060221 misc code tidying
  486 * 20060221 with io handling on broken connections working better,
  487            remove the CHLD and PIPE signal handlers so --pipe behaves
  488            more like sockets
  489 * 20060221 20051102 despite some error messages to the contrary,
  490            swaks did not handle the remote end closing its
  491            connection unexpectedly.  Fixed transaction routines
  492            to detect and handle properly.
  493 * 20060218 swaks choked if server advertised STARTTLS over a
  494            --tls-on-connect connection.  fixed.  (jpeacock.rowman.com)
  495 > 20060210 released 20060210.0-dev to jh.plonk.de
  496 * 20060210 20060131 change --pipe to use open2().  This causes child
  497            stderr not to be handled by swaks - user can redirect
  498            as desired.  Fixed bug noted by jh.plonk.de
  499 * 20060201 20050810 fixed stupid inefficiency where both do_smtp_rcpt()
  500            and caller of do_smtp_rcpt() are handling comma-delim
  501            recipient list.
  502 * 20060201 added --force-getpwuid option to force old method of
  503            looking up $< to generate sender local part
  504 * 20060201 20050721 changed auto sender address generation to try
  505            to get lowest logged-in user name for the local_part (via
  506            getlogin()).  If that method fails, use old method of
  507            looking up $<
  508 * 20060201 20050909 fixed stupid message 'ANY authentication not
  509            supported' if no auth type is specified and the server
  510            doesn't advertise auth
  511 * 20060201 fixed --dump to handle new auth type format
  512 * 20060201 20050909 can now specify -a as a comma delimited list of ok
  513            types to try, in order of preference
  514 * 20060201 implemented CRAM-SHA1 auth type (suggested jh.plonk.de)
  515 * 20060201 simplified get_digest() code and allowed different
  516            digest types to be used
  517 * 20060131 fixed bug in checking for Authen::DigestMD5 when
  518            trying DIGEST-MD5 auth type (reported by jh.plonk.de)
  519 * 20060121 commented out --auth-hide-password option since we aren't
  520            handling it anyway.  Was undocumented also.
  521 * 20060121 fiddled w/ --dump output, trying to get every possible
  522            option displayed (for test suite)
  523 * 20060121 updated copyright to 2006
  524 > 20050709 released 20050709.1
  525 * 20050709 fixed bug where TLS multiline responses were broken if
  526            sent in multiple packets (reported by
  527            charlieb.budge.apana.org.au)
  528 * 20050629 fixed bug where latent $@ errors caused socket connections
  529            to seem to fail (run --socket on a server w/o Net::DNS)
  530 > 20050625 released 20050625.8
  531 * 20050625 20050605 added --socket option to allow smtp over
  532            unix domain socket
  533 * 20050625 fixed a couple of bugs in --auth-optional (one caused it
  534            not to work at all, the other caused it not to work if
  535            either -a not also used or some arg not supplied)
  536 * 20050625 20050517 added --pipe option to be able to conduct
  537            smtp transaction with a child process.  See Debian
  538            bug ID 309462
  539 * 20050625 moved all connection level into into %G::link very early
  540 * 20050625 saved many lines of code by adding do_smtp_quit
  541 * 20050625 moved timeout into link struct and cleaned up code
  542 * 20050625 cleaned up lots of orphaned code and trimmed socket passing
  543 * 20050625 moved tls info from disconnected global vars to link struct
  544 * 20050625 moved socket from passed var to part of global link struct
  545 * 20050625 cleaned up some unused global vars
  546 * 20050625 fixed bug where <> not correctly handled for user/pass
  547 * 20050625 fixed bug in do_smtp_tls where it ignored timeout on
  548            on STARTTLS call
  549 > 20050605 released 20050605.3
  550 * 20060605 20040909 the line ending translation was very slow for
  551            large files.  fixed.
  552 * 20050605 added portability section to documentation
  553 * 20050605 20050510 added OS test on getpwuid to allow running on
  554            Win32, spent some time evaluating capabilities (reported
  555            alexander.hass#e-domizil.de)
  556 * 20050605 updated copyright dates
  557 > 20040404 released 20040404.1
  558 * 20040404 updated copyright dates
  559 * 20040404 by default, translate all bare newlines to CRLF.  Fixed
  560            Debian bug 241368
  561 * 20040404 added --no-data-fixup option to allow a literal DATA
  562            value to be passed in
  563 > 20040128 released 20040128.1
  564 * 20040128 reworked a split to quell a perl -w gripe
  565 * 20040128 if -q opt is one which doesn't require a to address
  566            (everything before rcpt) and server is otherwise specified,
  567            don't require a to address. (sugg. ametzler)
  568 * 20040128 added a few -q aliases (ehlo, first-ehlo, starttls, from, to)
  569 * 20040128 added error checking for -q opt - error out if unknown val.
  570            (sugg. ametzler)
  571 * 20040128 added new quit type of 'first-helo' (for the first helo
  572            in a STARTTLS session).  Changed HELO type to be second
  573            helo in a TLS session instead of first.
  574 * 20040128 fixed doc bug re: default DATA value (sugg. ametzler)
  575 * 20040115 couldn't use -ao to define specific auth type - fixed
  576 * 20040115 added --dump option (show generated options but don't send)
  577 * 20040115 fixed some badly formatted POD
  578 * 20031226 hostname verification broke FROM and HELO options in -l
  579            file.  fixed.
  580 > 20031218 released 20031218.0
  581 * 20031218 reworked local hostname determination.  hostname() almost
  582            never fails but gethostbyname can, use first results if
  583            second call fails.
  584 * 20031212 in some situations a hostname may not be found automatically
  585            (for instance, on my laptop when my VPN is active).  In this
  586            situation, prompt for helo string and from address.
  587 * 20031212 Added X-Mailer header to default DATA.
  588 * 20031212 oops.  fixed so that -tlsc doesn't cause double EHLO
  589 * 20031212 print SSL error code if negotiation failed
  590 * 20031212 -tlsc implementation uncovered deficiencies in error
  591            checking in start_tls().  reworked.
  592 * 20031212 added --tls-on-connect option to support smtps (suggested
  593            by Benjamin Ritcey <exim#ritcey.com>)
  594 > 20031211 released 20031211.2
  595 * 20031211 duh.  if --help run as root, just change to uid 1 before
  596            running perldoc.  no fuss no muss
  597 * 20031211 since perldoc didn't want to run as root anyway I caught
  598            that case and printed a more informative message
  599 * 20031211 removed -U and -F options from the perldoc call for --help.
  600            (unknown by older perls
  601 * 20031211 the subscripting in the date routine was incorrect, failed
  602            to compile on older perls
  603 > 20031210 released 20031210.0
  604 * 20031210 implemented automatic routing of RFC821 decimal domain
  605            literals (user@#16909060).
  606 * 20031210 moved "Trying..." above actual socket creation, which
  607            makes much more sense in a timeout situation
  608 * 20031210 handle default routing correctly for domain literal
  609            to addresses (@[1.2.3.4]).  Had to specify server explicitly
  610            using -s before.
  611 * 20031207 add 'Date: %D' header to default data string (probably
  612            should have been there all along but this was specifically
  613            added to address a change in the handling of messages
  614            without Date: headers by exim in 4.30)
  615 * 20031207 changed %D body token to be compliant for an RFC Date: header
  616 * 20031201 changed copyright/license to GPL
  617 * 20031201 changed name from vmail to swaks (SWiss Army Knife Smtp)
  618 > 20031111 released 20031111.0
  619 * 20031108 missed a piece in implementing DIGEST-MD5 (missed checking
  620            for Authen::DigestMD5)
  621 * 20031108 reworked do_smtp_auth() to make --auth-map possible and for
  622            general streamlining
  623 * 20031108 added -am option to allow aliasing of auth types
  624 * 20031108 added back in integer timing if 'i' provided as arg to -stl
  625            or Time::HiRes unavailable
  626 * 20031108 changed microtimer precision to thousandths
  627 * 20031108 changed -stl to a microtimer by default
  628 * 20031107 added require section to --help
  629 * 20031107 fixed -apt bug in NTLM exchange
  630 * 20031107 fixed a typo in NTLM doc
  631 * 20031107 implemented DIGEST-MD5 (RFC2831)
  632 * 20031101 fixed bug in NTLM auth (worked with exim but not with
  633            communigate
  634 * 20031027 added -stl option to show lapse between send/receive
  635 * 20031024 changed "empty" placeholder from NULLNULL to <> for
  636            sender, a_user, a_pass
  637 * 20031024 changed server for non-mx domain from localhost to domain's
  638            A record
  639 * 20031024 Added module checking for Authen::NTLM
  640 * 20031024 started rearranging options.  Move from $O:: namespace
  641            to %O hash.  %O is for temporary vars, $G:: is for true
  642            global vars.  moved most of the up-front processing to
  643            a subroutine and rearranged
  644 * 20031021 Added aliases for SPA/MSN to NTLM
  645 * 20031021 added ability to specify %DOMAIN to -ap for NTLM
  646 * 20031021 documented NTLM auth options
  647 * 20031020 switched to alternate Authen::NTLM module to fix username
  648            issue (seems to work so far but might be safer to switch to
  649            native implementation)
  650 * 20031020 NTLM basically works.  Fixed first problem by changing
  651            expected return value from 334 to 235 in getting final auth
  652            verdict.  Still issue w/ username (but pass works fine)
  653 * 20031019 started adding NTLM support (doesn't work totally yet)
  654 * 20031019 cleaned up getopt code (messy since adding long opts
  655 * 20031019 added -hr and -hs options to mute parts of transaction
  656 * 20031019 Added -nth option to turn off transaction hints
  657 * 20031016 arg of '-' to -d sets -g (reads from STDIN)
  658 * 20031016 moved TLS code into sub (mimic AUTH architecture)
  659 * 20031016 documented long options in POD
  660 * 20031016 typo - changed --supress-data to --suppress-data
  661 * 20031014 added longer alternatives to most options (that is, -ao
  662            can also be specified as --auth-optional
  663 * 20031014 changed timeout CLA from -to to -timeout to avoid confusion
  664 * 20031010 added framework for release (--help, --version), initial
  665            population of help framework
  666 * 20031010 fix dots once and for all - honor a trailing dot if it
  667            exists, otherwise add trailing dot.  Quote all other dots
  668 * 20031010 added %D to the default subject
  669 * 20031010 removed most of the input validation - this is meant to be
  670            a test app, not a real agent.  If an admin wants to test
  671            how his server will handle an underscore in a helo string,
  672            he should be able to specify it
  673 * 20031010 -ahp and -apt were defined as string options, but they're
  674            really boolean, changed definition
  675 * 20031010 added 'tls' as valid argument to -q option
  676 * 20031010 fixed bug where QUIT not sent if -tls specified but TLS not
  677            advertised by the server
  678 * 20031010 making TLS confirm to RFC3207 - forget state information
  679            and re-EHLO after successful TLS negotiation
  680 * 20031010 added transaction hints for TLS (<~ and ~>)
  681 * 20031010 added -nsf (no strip from) option to prevent removal
  682            of From_ line
  683 * 20031010 DATA portion now has From_ line removed if present
  684 * 20031008 added -S option. -S only prints errors and anything after,
  685            -S -S only shows errors, -S -S -S never prints anything
  686 * 20031008 standardized printing of program errors to STDERR, all
  687            other prints to STDOUT
  688 * 20031008 changed standard diagnostic prints to use print_trans()
  689            to gain benefit of standard prefixes
  690 * 20031008 changed prefixes so that program errors are differentiated
  691            from SMTP errors (*** vs. <** or **>)
  692 * 20031008 instead of passing literal prefix to print_transaction(),
  693            now pass a code (smtp/program/send/receive/ok/error) and
  694            the sub prints the appropriate prefix.  Allows prefixes
  695            to be controlled in a central place
  696 * 20031008 adjusted Getopt::Long to have case-sensitive single
  697            char options, but insensitive long opts.  It also turns
  698            off single-char option bundling, but I don't see this
  699            as an issue
  700 * 20031008 changed so you can specify in time format (hms).  This
  701            allows you to use 0s to mean no timeout
  702 * 20031008 allow TIMEOUT to be specified in -l file
  703 * 20031008 fixed bug where alarm was not reset after
  704 * 20031008 add -to option to allow timeout to be specified in seconds
  705            on command line. (defaults to 30s)
  706 * 20030826 allow mult recips in form to,to,to (if server is undef,
  707            uses DNS for domain of last recip in list)
  708 * 20030424 allow null sender (-f NULLNULL)
  709 * 20030415 added basic TLS support w/ Net::SSLeay
  710 * 20030414 laid groundwork for adding TLS (option processing)
  711 * 20030410 ugh.  fixed problem w/ default data now having two ending
  712            dots.
  713 * 20030326 fixed error where one too many newlines being added after
  714            trailing . on -g input.  caused a mailer error (extra
  715            newline seen as an unknown command
  716 * 20030326 fixed typo on testing for Net::DNS loading (since 3.24)
  717 * 20030324 added --support option to determine capabilities
  718 * 20030324 changed module handling to load all up front
  719 * 20030317 changed -au to accept 'NULLNULL' to mean empty password
  720            from command line (otherwise you couldn't script it)
  721 * 20030317 changed -ap to accept 'NULLNULL' to mean empty password
  722            from command line (otherwise you couldn't script it)
  723 * 20030317 fixed AUTH LOGIN bug on null password (has existed for
  724            entire implementation)
  725 * 20030312 added -apt opt to translate all base64 strings to plaintext
  726 * 20030312 changed error on socket creation to use print_transaction
  727 * 20030312 added -li opt to specify local interface
  728 * 20030312 fixed base64 encoding bug (would wrap after ~58 chars)
  729            (has existed entire implementation)
  730 * 20030309 fixed to try multiple auth type or specific w/ -a <type>
  731 * 20030308 added basic AUTH for CRAM-MD5
  732 * 20030308 added basic AUTH for LOGIN
  733 * 20030307 added basic AUTH for PLAIN
  734 * 20030307 added 'auth' as valid value for -q
  735 * 20030307 changed -l file processing to simply populate a hash so
  736            whole function doesn't have to be changed each time opt
  737            added
  738 * 20030307 if -l file can't be processed, print error and fall
  739            back to other methods
  740 * 20030306 did away w/ -i option.  Now the arg of those opts is
  741            optional - if the arg is given an opt, it is used.  if
  742            arg is given w/o opt, will prompt on STDIN.  If no arg given
  743            use default (mostly, depends on opt
  744 * 20030306 fixed bug in just sending \n instead of \r\n (affected
  745            mx01.guardent.com (PIX), though not our servers)
  746 * 20030306 changed HELO code to try EHLO, fall back to HELO
  747 * 20030306 changed option processing from ::Std to ::Long to allow
  748            for future expansion
  749 * 20030306 added ability to specify multiple recipients
  750 * 20030306 closes the connection politely if something unexpected happens
  751 * 20030306 use '***' to flag unexpected SMTP responses
  752 * 20030306 added code to allow multiline SMTP responses
  753 * 20030306 exit status changes on unexpected occurrences now
  754 * 20030306 reworked transaction architecture so more features can be
  755            added in the future
  756 * 20030204 added -n option to summarize DATA send instead of sending
  757            whole thing (more useful when sending real (and possibly
  758            large) emails w/ the -g option).
  759 * 20021126 if server isn't specified and Net::DNS not installed, use
  760            localhost as mail server (portability)
  761 * 20021126 removed references to WCS::Util to make more portable
  762 * 20021126 finished implementation of transact.
  763 * 20021126 started cleaning up transaction code a bit
  764 * 20021126 removed the old, commented LWP::Socket code.
  765 * 20021112 added -q option to force premature 'quit'.  it accepts
  766            'connect', 'helo', 'mail', 'rcpt' as params and sends quit
  767            immediately following the named transaction.
  768 * 20021108 added -m option to force emulation of 'Mail -v'
  769 * 20021108 removed nslookup refs and implemented Net::DNS to get MX
  770 * 20020201 rewrote to use IO::Socket instead of LWP::Socket
  771 * 20020116 added -g option to allow DATA to be read from STDIN
  772 * 20011220 changed so it prompts for to if one not supplied (instead
  773            of erroring and dying)
  774 * 20011220 added smart server lookup based off of to address
  775 * 20011220 added smart default for from
  776 * 20011220 added smart default for helo (get_hostname())
  777 * 20011220 added %D token for body
  778 * 20011220 altered transaction hints (-->, <--) to make more clear
  779 * 20011220 added ability to specify pieces to be prompted for
  780            interactively. trumps both file and CL args (-i)
  781 * 20011219 initial version of vmail