Notable bugs fixed:
- Last release introduced a bug where Date: headers were localized,
which is against RFC. Further, that localization then broke character
rendering in some locales. A new fix for the original issue (#17) was
put in place, which no longer localizes the Date: header and fixes the
newly introduced rendering issue (#25)
- Last release introduced a bug which prevented –protect-prompt from
working. This is now fixed (#26)
New features:
- Added .netrc support
- Added –tls-sni option
- Swaks is now available on CPAN as App::swaks
- Swaks will now print errors if deprecated functionality is used
Notable changes:
- Automatic file detection is deprecated. Previously, if an argument
to –data, –body, –attach-body, and –attach resolved to an
openable file, the contents of that file would be used as the actual
argument. Now the proper way to do this is to place '@' in front
of the argument to state explicitly that the argument contents are
in a file.
- If any of the –xclient-* family of options (–xclient-name,
–xclient-addr, etc) is provided more than once, only the last option
provided will be used. See –xclient option if you need to simulate
the previous behavior
- -g option is now deprecated
- Time::Local is no longer used and POSIX is now listed as a
required module
Notable bugs fixed:
- Fix for subtle issue related to environment variable options. Affected
error handling for options which required args.
- Fix issue preventing XCLIENT and STARTTLS from working together
properly (#21)
- Fix issue which could cause generated date header to oscillate on the
day of DST transition (#17, deb bug 955798)
pkglint -r --network --only "migrate"
As a side-effect of migrating the homepages, pkglint also fixed a few
indentations in unrelated lines. These and the new homepages have been
checked manually.
- Fixed typos in base.pod and recipes.pod
- Remove re-prompting for port when an invalid service name was
supplied. Just error and exit instead
- Cleaning up error messages that contained extra newlines
- Remove interactive prompts for helo and from when hostname
cannot be determined internally. Just error instead.
- Rearrange internal option definition structure in preparation
for major rework
- Rework how the --show-time-lapse option is tracked internally
and displayed in --dump output
- --protocol's argument was incorrectly marked as optional
- Updating copyright year to 2019
- --use-old-data-tokens was not completely removed, clean up
- --tls-optional-strict was incorrectly marked internally as
optionally accepting an argument
- Fix handling of --option=arg option format which prevented it
from being used with --header and --attach* options
- --attach option processing was calling die() instead of
ptrans/exit on error
- If the arg to --data looks like a file but is not openable,
error and exit instead of using it the file name as the raw
data value
- Add %NEWLINE% as a new --data token
- Small code tidy around %DATE% token replacement
- Enforce key=value format for arguments to --auth-extra and
--auth-map
- Clarify how XCLIENT arguments are grouped in --xclient doc
- Typo in documentation for --ehlo, reported by Konstantin Stephan
- Adding data and dot as valid --drop-after-send and --drop-after
arguments
- Add documentation for missing --quit-after synonym STARTTLS
- Update copyright year to 2019
- --copy-routing should error when no argument given.
- Add validation to --proxy-family (when proxy-version=1) and
--proxy-version options.
- Turn off option bundling. No practical use and it could cause
real confusion (with bundling turned on, -foobar was "-f oobar"
instead of an unknown option.
- Turn on case-sensitivity for configuration options. Needed to
make -S distinct from -s, as documented.
- Add a flag for --dump-mail in the OUTPUT section of --dump
- --version and --help should work even if they aren't the very
first option.
- When processing config file options with no leading '-' and any
environment variable config, prefix the option with '--' for
processing, not '-'. Bandaid for very minor difference between
'-' and '--' option processing which I hope to fix soon.
- Adding an ENVIRONMENT VARIABLES section to the doc.
- Tidying and clarifying the OPTION PROCESSING section of the docs.
- Fix bug causing in "no-" option processing to work unreliably.
- Document the unreliability of using environment variables to unset
other environment variable options with the "no-" prefix.
- Document the general rule that when processing duplicate options,
the last option specified wins, both inter- and intra-method.
- Since there is no inherent order to options provided in environment
variables, sort them before processing to define an order.
- Config file fixes around searching default $SWAKS_HOME, $HOME,
and $LOGDIR locations:
- Searching default locations for the first existing
PATH/.swaksrc did not actually work as documented.
- If none of the default search environment variables was set,
Swaks would not process the "portable" defaults optionally
stored in the actual swaks script.
- Implement --body-attach option to allow more granularity in
setting body information (different mime types, alternatives, etc).
- Fix --attach* option processing to remove possibly ambiguity
- Fix issue with malformed headers. Don't fall over if header
doesn't contain a colon or looks like an illegal continuation.
- Doc fix for default body - %SWAKS_VERSION% missing trailing char.
- --add-header documentation was still referencing a single-char,
no longer valid, replacement token. Replace with the correct token.
New Features:
* Added --dump-mail option.
* Added --xclient-delim, --xclient-destaddr, --xclient-destport,
--xclient-no-verify, and --xclient-before-starttls options.
Notable Changes:
* XCLIENT can now send multiple XCLIENT requests. Because of this,
--xclient and --xclient-ATTR values are no longer merged into one
string. This breaks previously documented behavior.
* Numerous improvements to the output of --dump and --dump-as-body,
including the ability to limit output by section, layout improvements,
adding missing options to output, and fixing bugs.
Notable Bugs Fixed:
* Fixed bug preventing Proxy from working with --tls-on-connect.
* XCLIENT is now sent after STARTTLS to match with Postfix's expectations.
* Fixed bug which could allow mail sending to proceed without a valid
recipient.
* Replacing a multi-line header via --header or --h-HEADER now replaces
the entire header, not just the first line.
* The option for specifying the local port was documented as --local-port
but implemented as --lport. Both are now documented and implemented.
* Fixed two bugs which prevented interactions between --dump,
--auth-hide-password, --dump-as-body, and --dump-as-body-shows-password
from producing consistent output.
swaks' primary design goal is to be a flexible, scriptable, transaction-
oriented SMTP test tool. It handles SMTP features and extensions such as
TLS, authentication, and pipelining; multiple version of the SMTP
protocol including SMTP, ESMTP, and LMTP; and multiple transport methods
including unix-domain sockets, internet-domain sockets, and pipes to
spawned processes. Options can be specified in environment variables,
configuration files, and the command line allowing maximum
configurability and ease of use for operators and scripters.