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