Sendmail using echo message attachment on Linux

()

sendmail send message and attachment use echo. sendmail implements Postfix’s compatibility interface and is present in almost all Unix-like operating systems, as mail transfer agent whose history goes back to the early 1980s.

How to sendmail echo message attachment

Sendmail using echo message attachment on Linux

sendmail sends message over the Internet to a specific recipient. This can be done by running the sendmail command on a Linux command line, and can also be used within a shell script.

quote  sendmail: fatal: open /etc/postfix/main.cf: No such file or directory

Make sure sendmail is present on the Linux host with the command which sendmail or man sendmail. If sendmail is not found and no MTA like Postfix is installed, sendmail can be deployed as follows.

$ sudo apt install sendmail -y

sendmail in the command line

The following example shows a sendmail command to send a message from the command line with using the echo command.

$ echo -e "Subject:Test Mail using sendmail \nThis is a Test Message\n" | sendmail youremail@example.tld

The next command sends an email with sender (From:) address.

$ /usr/sbin/sendmail youremail@example.tld
From: nobody@example.tld
Subject: Test Mail using sendmail
This is a Test Message
.

  Enter period (.) ends the editor and the e-mail will by submit.

Example email is interactively created by each line, a message with the subject delivered to inbox of youremail@example.tld.

Change the recipient accordingly, make sure sendmail is present on the host and the host is allowed to send email.

Further, sendmail robs the pipeline instruction, thereby making it possible to send a message using a text file.

$ /usr/sbin/sendmail < message.txt -t -i youremail@example.tld

Example with the content of the message.txt file.

From: nobody@example.tld
Subject: Test Mail using sendmail
This is a Test Message

  The sendmail -i option handles reading the message from standard input without a period (.) at the end of a line.

The -t option extracts the recipients from the message headers and adds them to all recipients specified on the command line.

How to send message with attachment use sendmail

sending an email directly from a host, in this example sendmail is used to send a file as an attachment.

Here is to filter out the delivery attempts rejected as SPAM “blocked using” on a Postfix MTA, and to send them as archives.txt.gz, for this purpose.

Postfix must be configured on the host, it can also be another local MTA, or an external SMTP-Relay is used.

#!/bin/bash
cat /var/log/maillog* | grep 'blocked using' | grep 'middleton.tld' > /tmp/blocked.txt
gzip -f /tmp/blocked.txt
( echo "to: sysop@example.tld"
  echo "from: no_reply@$HOSTNAME"
  echo "subject: Report of messages blocked by $HOSTNAME"
  echo "mime-version: 1.0"
  echo "content-type: multipart/related; boundary=messageBoundary"
  echo
  echo "--messageBoundary"
  echo "content-type: text/plain"
  echo
  echo "Please find the document attached."
  echo
  echo "--messageBoundary"
  echo "content-type: text/plain; name=blocked.txt.gz"
  echo "content-transfer-encoding: base64"
  echo
  openssl base64 < /tmp/blocked.txt.gz) | sendmail -t -i

  The -t option extracts the recipients from the message header.
-i option don´t treat a . character as the end of input.

Conclusion

This example shows how to use sendmail to send an email with attachment directly from the Linux shell.

By changing the individual lines, many other applications can come into play, whereby the Base64 encoding is done by openssl, the echo statements performs the MIME message body.

  more related in this post and here.

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

One thought on “Sendmail using echo message attachment on Linux”

Leave a Reply

Your email address will not be published. Required fields are marked *