From 1883f38b74fab6f64ad782a11b47c904f5749fd7 Mon Sep 17 00:00:00 2001 From: Michael Ludvig Date: Fri, 6 Apr 2018 14:13:14 +1200 Subject: [PATCH 1/5] Version 3.9 --- smtp-cli | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/smtp-cli b/smtp-cli index fb34a86..448e18d 100755 --- a/smtp-cli +++ b/smtp-cli @@ -2,7 +2,7 @@ # # Command line SMTP client with SSL, STARTTLS, SMTP-AUTH and IPv6 support. -# Michal Ludvig, 2003-2017 +# Michal Ludvig, 2003-2018 # See http://smtp-cli.logix.cz for details # and https://github.com/mludvig/smtp-cli for code. # Thanks to all contributors for ideas and fixes! @@ -12,6 +12,9 @@ my $version = "3.8"; # # ChangeLog: +# * Version 3.9 (2018-04-06) +# - Don't attempt to use IO::Socket::INET6 with --ipv4. +# # * Version 3.8 (2017-07-05) # - New parameter --local-addr # - Support body and attachment reading from non-regular files From 1a12b7255e0fa7d9edc6424186a04cb0d4d11a60 Mon Sep 17 00:00:00 2001 From: Michael Ludvig Date: Fri, 6 Apr 2018 17:13:06 +1200 Subject: [PATCH 2/5] Added README.md --- README.md | 233 ++++++++++++++++++++ examples/PayPal-Donate-Button-PNG-Image.png | Bin 0 -> 12757 bytes examples/screenshot-img-body.png | Bin 0 -> 24634 bytes examples/screenshot-img-inline.png | Bin 0 -> 28528 bytes 4 files changed, 233 insertions(+) create mode 100644 README.md create mode 100644 examples/PayPal-Donate-Button-PNG-Image.png create mode 100644 examples/screenshot-img-body.png create mode 100644 examples/screenshot-img-inline.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..0352af5 --- /dev/null +++ b/README.md @@ -0,0 +1,233 @@ +smtp-cli — command line SMTP client +=================================== + +`smtp-cli` is a powerful **SMTP command line client** with a support for advanced features, such as **STARTTLS**, **SMTP-AUTH**, or **IPv6** and with a scriptable _message composition_ capabilities supporting anything from simple _plain-text_ messages right up to building _complex HTML emails_ with alternative plain-text part, attachments and inline images. The MIME-Type of the attachments can either be guessed automatically or alternatively set on the command line, separately for each attachment if required. + +It's also a convenient tool for _testing_ and _debugging_ SMTP servers setups. Even the hardcore mail admins used to typing the SMTP protocol over telnet need a specialised tool when it comes to verifying encryption settings of their TLS enabled server with a subsequent user authentication. Such things are pretty hard to type into a telnet session by hand :-) + +The name `smtp-cli` stands for: + +1. **smtp-cli**ent +2. **S**mtp-command **L**ine **I**nterface + +Use `smtp-cli` if you want to: + +1. check mail server capabilities +2. test the server setup +3. create and send complex emails from scripts or cron-jobs + +The `smtp-cli` usage is intuitive, everything is scriptable and can run in a completely non-interactive mode from various scripts or cron jobs. It is also ideal for shipping log files from remote machines, running periodical mail delivery test loops, etc. Also if you ever needed to send a complex email with attachments from a command line, this script is all you need. + +## Installation + +Download the latest release from [smtp-cli on GitHub](https://github.com/mludvig/smtp-cli/releases) and make it executable: + +```sh +~ $ wget -o smtp-cli https://github.com/mludvig/smtp-cli/releases/{LATEST_RELEASE} +~ $ chmod +x smtp-cli +``` + +### Optional dependencies + +Some features of smtp-cli are optional and available only when the appropriate perl modules are installed: + +* RedHat Enterprise (RHEL), Fedora, Oracle Linux and CentOS users may want to install the following packages: + + ```sh + $ sudo yum install perl-IO-Socket-SSL perl-Digest-HMAC perl-TermReadKey \ + perl-MIME-Lite perl-File-LibMagic perl-IO-Socket-INET6 + ``` + + If `yum` can't find them all try to enable [EPEL repository](http://fedoraproject.org/wiki/EPEL). + +* openSUSE and SUSE Enterprise (SLES) users should install these packages: + + ```sh + $ sudo zypper install perl-IO-Socket-SSL perl-Digest-HMAC perl-TermReadKey \ + perl-MIME-Lite perl-File-LibMagic perl-IO-Socket-INET6 + ``` + +* Users of Debian, Ubuntu and derivates should install these packages: + + ```sh + $ sudo apt install libio-socket-ssl-perl libdigest-hmac-perl libterm-readkey-perl \ + libmime-lite-perl libfile-libmagic-perl libio-socket-inet6-perl + ``` + +Users of other Linux distributions will have to find the appropriate packages by themselves, or install the modules directly from [CPAN](http://cpan.perl.org/). + +## Donate please :) + +Please consider donating, even if it's just enough for a coffee. + +[![Donate with PayPal](examples/PayPal-Donate-Button-PNG-Image.png)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R8BYGL3B24QNE) + + + +## Usage examples + +These examples are for _testing_ and _verifying_ mail servers configurations: + +### Example 1 - Test your localhost + +The simplest example - it will not actually send anything. Only connect to a server, do some SMTP chatting and disconnect. + +``` +$ ./smtp-cli --verbose --server localhost +[220] 'localhost ESMTP Postfix' +> EHLO localhost +[250] 'localhost' +[250] 'PIPELINING' +[250] 'SIZE 20480000' +[250] 'ETRN' +[250] '8BITMIME' +> QUIT +[221] 'Bye' +``` + +### Example 2 - Send an e-mail through a host which requires encryption and authentication + +Things are getting more interesting. We will use `--server smtp.example.com:587` to connect to port 587 +that is usually used by email clients (port 25 is usually for server-to-server communication). Port 587 +also _usually_ requires authentication. + +For that we'll supply `--user test` and optional `--password ...` to supply the credentials. +If the password is not supplied we will be asked interactively. + +To actually send something we will also supply `--from` and `--to` parameters and also `--data message.txt`. + +Note tat this `message.txt` must contain both the _headers_ and the _message body_. If you don't want to +bother with creating the message headers yourself use `--body` instead, see the next example for details. + +``` +$ ./smtp-cli --verbose --host smtp.example.com:587 --enable-auth --user test \ +--from test@example.com --to user@another.example.org --data message.txt + +[220] 'smtp.example.com ESMTP Postfix' +> EHLO localhost +[250] 'smtp.example.com' +[250] 'PIPELINING' +[250] 'SIZE 10240000' +[250] 'VRFY' +[250] 'ETRN' +[250] 'STARTTLS' +[250] 'XVERP' +[250] '8BITMIME' +Starting TLS... +> STARTTLS +[220] 'Ready to start TLS' +Using cipher: EDH-RSA-DES-CBC3-SHA +Subject Name: /C=XX/CN=smtp.example.com/Email=info@example.com +Issuer Name: /C=XX/CN=Example.COM Root CA/Email=ca@example.com +> EHLO localhost +[250] 'smtp.example.com' +[250] 'PIPELINING' +[250] 'SIZE 10240000' +[250] 'VRFY' +[250] 'ETRN' +[250] 'AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5' +[250] 'AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5' +[250] 'XVERP' +[250] '8BITMIME' +AUTH method (PLAIN LOGIN DIGEST-MD5 CRAM-MD5): using CRAM-MD5 +> AUTH CRAM-MD5 +[334] 'PDE0OTQyOTcxOC4yNjAwOTYwQHNlcnZlci5kb21haW4udG9wPg==' +> dGVzdCBmOTUyY2RkM2VlODBiMzk1YjYxNDI4NjBlYzg2Y2ExZnJvb3Q= +[235] 'Authentication successful' +Authentication of test@localhost succeeded +> MAIL FROM: +[250] 'Ok' +> RCPT TO: +[250] 'Ok' +> DATA +[354] 'End data with .' +[250] 'Ok: queued as C5C3A299D7' +> QUIT +[221] 'Bye' +``` + +### Example 3 - Compose a plain text email with attachments +For composing emails you will need an optional `MIME::Lite` perl module. See the _Optional dependencies_ section above for details. + +``` +$ ./smtp-cli [--server / --auth / --verbose flags] \ + --from test@domain.com --to user@another.domain.org \ + --subject "Simple test with attachments" \ + --body-plain "Log files are attached." \ + --attach /var/log/some.log@text/plain \ + --attach /var/log/other.log +``` + +This example composes a standard plain text email with two attachments. The interesting part is the syntax used for enforcing _MIME-Type_ of the first attachment. + +The syntax `some.log@text/plain` will make `some.log` attached as **text/plain** part, while the _MIME-Type_ of `other.log` will be guessed by the script and eventually default to **application/octet-stream**. + +### Example 4 - Attachment as an email body +``` +$ ./smtp-cli [--server / --auth / --verbose flags] \ + --from test@domain.com --to user@another.domain.org \ + --subject "Image as a mail body" \ + --attach /path/to/tux.png +``` + +If there is only one text or image file to be sent, the file itself could be the message body. At the same time it will be accessible as an attachment with a file name for easy saving. Best to show a screenshot I guess... + +![Attachment as an email body](examples/screenshot-img-body.png) + +There is no _Text_ or _HTML_ body part and the email is not _multipart/mixed_. All that is in the email is Tux the Penguin image. You can immediately see it in your mailer but also can easily save it with its provided name tux.png. The same way it works with text files (or files forced to be text/plain, to be precise). + +### Example 5 - Compose a multipart/alternative email with both HTML and Plain text part and inline images + +Sending HTML emails is popular, especially among non-technical people. They like to change font colours, backgrounds, embed images and apply all sorts of other useless effects to their one short line of text. Indeed, me and you are more than happy with plain text and we both know that some mail readers can't even display colours and graphics at all (our office manager wouldn't believe!). Therefore it is a good practice for HTML messages to use **multipart/alternative** MIME format with _both_ HTML and TEXT parts. In this example we're going to go wild and even embed an inlined image or two into the HTML part. + +First of all prepare the message body. Or bodies, actually. The HTML one is `body.html`: + +```html + + + + +
+Here comes embedded Mr Tux
+
+Nice, isn't it?
+
+
+ + +``` + +Note the `` tags with `cid:filename.xyz` source — that's the way to refer _inlined attachments_ from inside the message. We will obviously have to inline-attach `tux.png` and `smiley.png` to the message to make it work. + +The second body file is a _plain text_ representation of the above, call it `body.txt`: + +``` +Here comes embedded Mr Tux +... actually it doesn't ... +Not in a text-only mail reader. +Sorry +``` + +That's it. Here comes the magic command line that puts it all together: + +``` +$ ./smtp-cli --from test@domain.com --to user@another.domain.org \ + --subject "HTML with embedded image" \ + --body-html body.html --body-plain body.txt \ + --attach-inline tux.png --attach-inline smiley.png +``` + +And this is what we get: + +![Multipart HTML email with embedded image](examples/screenshot-img-inline.png) + +## Donate please :) + +Please consider donating, even if it's just enough for a coffee. + +[![Donate with PayPal](examples/PayPal-Donate-Button-PNG-Image.png)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R8BYGL3B24QNE) + + +## Author + +**Michael Ludvig** - get in touch through the [Issues](https://github.com/mludvig/smtp-cli/issues) section above. diff --git a/examples/PayPal-Donate-Button-PNG-Image.png b/examples/PayPal-Donate-Button-PNG-Image.png new file mode 100644 index 0000000000000000000000000000000000000000..16564249d37aaacfd6174e33128c227ae9b99f3d GIT binary patch literal 12757 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 literal 0 HcmV?d00001 diff --git a/examples/screenshot-img-body.png b/examples/screenshot-img-body.png new file mode 100644 index 0000000000000000000000000000000000000000..ff96aa929dd3d795457ce63e83798eca6a3e293b GIT binary patch literal 24634 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 literal 0 HcmV?d00001 diff --git a/examples/screenshot-img-inline.png b/examples/screenshot-img-inline.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba98f64690fcd0f9cca3237625c96bad135c673 GIT binary patch literal 28528 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 Date: Mon, 28 May 2018 16:26:37 +1200 Subject: [PATCH 3/5] Fixed $version --- smtp-cli | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/smtp-cli b/smtp-cli index 448e18d..d6a04cb 100755 --- a/smtp-cli +++ b/smtp-cli @@ -8,7 +8,7 @@ # Thanks to all contributors for ideas and fixes! # -my $version = "3.8"; +my $version = "3.9"; # # ChangeLog: From 7b3dd034d6f90268256ec622ac3dc5b03c55f307 Mon Sep 17 00:00:00 2001 From: xufan6 Date: Sat, 29 Dec 2018 14:43:36 -0800 Subject: [PATCH 4/5] add message-id option --- smtp-cli | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/smtp-cli b/smtp-cli index d6a04cb..d81130a 100755 --- a/smtp-cli +++ b/smtp-cli @@ -123,7 +123,7 @@ my ($user, $pass, $host, $port, $addr_family, $localaddr, @attachments, @attachments_inline, @add_headers, @replace_headers, @remove_headers, $ssl_ca_file, $ssl_ca_path, - $sock, $built_message); + $sock, $built_message, $message_id); $host = undef; $port = 'smtp(25)'; @@ -143,6 +143,7 @@ $missing_modules_count = 0; $charset = undef; $text_encoding = "quoted-printable"; $print_only = 0; +$message_id = time()."-".int(rand(999999))."\@smtp-cli"; # Get command line options. GetOptions ( @@ -184,6 +185,7 @@ GetOptions ( 'missing-modules-ok' => \$missing_modules_ok, 'ssl-ca-file=s' => \$ssl_ca_file, 'ssl-ca-path=s' => \$ssl_ca_path, + 'message-id=s' => \$message_id, 'v|verbose+' => \$verbose, 'version' => sub { &version() }, 'help' => sub { &usage() } ); @@ -905,7 +907,7 @@ sub build_message $message->replace("Cc" => join(", ", @cc)); $message->replace("Subject" => $subject); $message->replace("X-Mailer" => "smtp-cli $version, see http://smtp-cli.logix.cz"); - $message->replace("Message-ID" => "<".time()."-".int(rand(999999))."\@smtp-cli>"); + $message->replace("Message-ID" => $message_id); for my $header (@add_headers) { my ($hdr, $val) = ($header =~ /^([^:]+):\s*(.*)$/); @@ -1055,6 +1057,8 @@ Usage: smtp-cli [--options] to remove it altogether --remove-header=X-Mailer or to add a completely custom header use --add-header=\"X-Something: foo bar\". + --message-id=\"Message-Id\" + Unique Message-Id in the header. --print-only Dump the composed MIME message to standard output. This is useful mainly for debugging or in the case you need to run the message From 96687163a06d405a6a9c35631df4fa8c99f54869 Mon Sep 17 00:00:00 2001 From: xufan6 Date: Sat, 29 Dec 2018 14:58:48 -0800 Subject: [PATCH 5/5] change back default message-id --- smtp-cli | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/smtp-cli b/smtp-cli index d81130a..6bb1203 100755 --- a/smtp-cli +++ b/smtp-cli @@ -143,7 +143,7 @@ $missing_modules_count = 0; $charset = undef; $text_encoding = "quoted-printable"; $print_only = 0; -$message_id = time()."-".int(rand(999999))."\@smtp-cli"; +$message_id = "<".time()."-".int(rand(999999))."\@smtp-cli>"; # Get command line options. GetOptions (