Mail from Linux/Shell


Recommended Posts

There is a standard utility simply called mail that is installed by default on most Linux and UNIX systems. You can find a basic tutorial for it here. If you need more functionality than the basics covered in that tutorial, mail is very well documented in its man page.

  On 05/08/2013 at 17:17, xorangekiller said:

There is a standard utility simply called mail that is installed by default on most Linux and UNIX systems. You can find a basic tutorial for it here. If you need more functionality than the basics covered in that tutorial, mail is very well documented in its man page.

 

Hi, I have already done that. But I need a utility which can pass a parameter like "from" and "smtp server ip" and execute it from commandline itself. I have mail, mailx, sendmail installed by default. I have the vbs script for this which uses "from, to, server_IP". But I need to make either a shell script or a simple command for the same.

I might be wrong but I don't think you can pass FROM as parameter to sendmail, postfix or the likes.

 

There's a quirky way to do that, telneting to your local mail server on port 25 and manually forging the email:

HELO yourdomain
MAIL FROM:youraddress@yourdomain
RCPT TO:someone@somewhere
DATA
Subject: this is so awkward Stallman would be proud
blahblah
whateverwhatever
.
QUIT

You could then spawn a non interactive telnet session from your script with all the mail parameters.

 

Again, quirky, but works.

  On 06/08/2013 at 11:10, ichi said:

I might be wrong but I don't think you can pass FROM as parameter to sendmail, postfix or the likes.

 

There's a quirky way to do that, telneting to your local mail server on port 25 and manually forging the email:

HELO yourdomain
MAIL FROM:youraddress@yourdomain
RCPT TO:someone@somewhere
DATA
Subject: this is so awkward Stallman would be proud
blahblah
whateverwhatever
.
QUIT
You could then spawn a non interactive telnet session from your script with all the mail parameters.

 

Again, quirky, but works.

 

In the past I've done something similar. Some distros allow you to open sockets within the shell (Redhat does, Debian doesn't AFAIK), so you can open a socket on port 25 and then redirect output into the "file" that gets created.

 

This is code similar to what I've done in the past. (Untested so it might be bugridden)...

 

 

#! /bin/bash

mail_server="smtp.something.com"
sender="test@test.com"
recipient="someone.else@test.com"
message="Hello, world!"

if ! exec 5<>"/dev/tcp/${mail_server}/25"; then
    echo "Could not open socket on port 25 to send email." >&2
    exit 1
else
    _response_code=""
    _message=""

    # Check socket open return code.
    read -u 5 _response_code _message
    if ! [ "${_response_code}" != "220" ]; then
        echo "Unable to send email to SMTP host. Reason: ${_message}." >&2
        exit 1
    fi

    # Build the email header.
    local _message_header=(
        "HELO"
        "MAIL FROM:<${sender}>"
        "RCPT TO:<${recipient}>"
    )

    # Send the header text.
    for _header in "${_message_header[@]}"; do
        echo -e "${_header}\r" >&5
        read -u 5 _response_code _message
        if [ "220" != "${_response_code}" ]; then
            echo "Unable to send email to SMTP host. Reason: ${_message}." >&2
            exit 1
        fi
    done

    # Signal start of message content.
    echo -e "DATA\r" >&5

    read -u 5 _response_code _message
    if [ "${_response_code}" != "354" ]; then
        echo "Unable to send email to SMTP host. Reason: ${_message}." >&2
        exit 1
    fi

    echo -e "${message}\r" >&5

    # Signal end of message
    echo -e "\r\n.\r" >&5
    read -u 5 _response_code _message

    if [ "220" != "${_response_code}" ]; then
        echo "Unable to send email to SMTP host. Reason: ${_message}." >&2
        exit 1
    fi

    echo "QUIT\r" >&5

    echo "Email sent!"

fi

Python's an easy option too if you want do make your own script, only takes a couple lines of code via smtplib, many distros have it installed by default and super easy to get if not. You mentioned VBScript so you should be able to figure this out rather quickly. An off the cuff example... It might even work, I'm just making this up, haven't tested it, but you can get the gist of it. If anything set it up to handle command line arguments and symlink it into somewhere in your path so you can access it from anywhere if needed.

 

#!/usr/bin/python

import smtplib

sender = 'whoever@whereever.com'
receivers = ['me@here.com','me@there.com']

message = """From: From Me <whoever@whereever.com>
To: To Me <me@here.com>
Subject: Just testing.

This is just a test from Python.
"""

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Mail sent ok."
except SMTPException:
   print "Mail not sent."
You can add authentication, encryption and all that if needed. Some more examples on the Python docs site, pretty easy stuff.

http://docs.python.org/2/library/email-examples.html

http://docs.python.org/2/library/smtplib.html

@Ichi - I can do that manually. But I want to know if anyone knows of a working script otherwise it will take me some time make one.

 

@Majesticmerc - Thanx a lot for that script, it looks good. I will try that. :)

 

@MaxNorris - I don't have any experience with python and I don't know if python is installed on the linux box. But I will try that as well. Thanks a lot. :)

 

Anyways, I have found a brilliant perl script which has a lot of options that can be parsed via commandline => http://caspian.dotconf.net/menu/Software/SendEmail/

 

But I would prefer a shell script over perl script for now. Thanks a lot everyone for your time and help. :)

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • But a human composed and chose the shot and took the picture. That's how the law sees it. Fortunately, this is the copyright office's determination based on judges' rulings, so that's a win for we human beings...for now.
    • Sifu developer's new soccer game Rematch scores one million copies sold on launch weekend by Pulasthi Ariyasinghe The development team behind fighting games like Sifu and Absolver, Sloclap, stepped into the competitive multiplayer arena last week with Rematch, a soccer/football game. The multiplatform sports title immediately boosted to almost 100,000 players on Steam alone. The studio has now revealed that over a million copies of Rematch have already been sold while also sharing some fun stats from the ongoing matches between players. Since its launch on June 19, over 11.78 million matches have been played in the title, resulting in 55.58 million goals, 33.54 million assists, and 69.12 million goalkeeper saves. The one-million sales milestone is also impressive, considering Rematch, a $29.99 premium title, is also available on the Microsoft subscription platform Game Pass. Both Xbox Game Pass Ultimate and PC Game Pass services received the title on the day of release for no extra cost. The studio confirmed today that Rematch has already reached 2.5 million players, including all subscription holders. The launch was not exactly smooth, however. While originally promised for launch, crossplay between platforms was ultimately missing. The studio said that implementing the highly requested feature is now its highest priority among bug fixes and server management. Multiple hotfixes also landed over the weekend to fix numerous matchmaking issues, desyncs, and crashes. Steam user reviews are slowly recovering following the hotfixes, with it currently touting a 78% Mostly Positive rating by players. In future updates, the studio plans to implement AI bots for training, spectating games, social elements for easily making squads, a tournament system with clubs, and major gameplay tweaks with a separate public test server. Rematch is now available across PC, Xbox Series X|S, and PlayStation 5 platforms as well as on Game Pass.
    • This is pretty nice. For one more year at least I don't have to install linux on my moms laptop and configure it so she understands it enough to sometimes read news online.
    • Just the settings need to be synced it seems, really doesn't matter much.
    • PDF24 Creator 11.27.0 by Razvan Serea PDF24 PDF Creator installs a virtual printer driver that allows you to convert any printable document or image into PDF format. You can also import documents from your scanner, combine multiple documents into one and delete selected pages from existing PDF files. The program supports creation of secure, digitally signed documents, PDF quality settings, integrated preview, emailing, and more. You can either drag'n drop documents onto the GUI or convert them from any other program by using the virtual printer driver - simply select the PDF24 printer instead of your regular paper printer. Advantages of PDF24 PDF Creator: Once installed, create PDF files forever Free upgrades included Conversion is simple and possible from all current programs Freeware Create PDF files from almost any application Easy to use Multilingual Several features of PDF24 PDF Creator: Merge and split PDF Extract pages from a PDF Copy pages from one PDF to another PDF Integrated preview for easy PDF editing Secure a PDF (Prevent from unauthorised opening, printing, etc.) Set PDF information such as author and title The following tools are included in the new PDF Toolbox of PDF24 Creator 11: Merge PDF Compress PDF Edit PDF Convert files to pdf Convert PDF files to other formats PDF to Text PDF to HTML PDF to JPG PDF to PNG PDF to PDF, PDF/A-1, PDF/A-2, PDF/A-3 PDF to Word PDF to PowerPoint PDF to Excel Protect PDF Unlock PDF Split PDF Rotate PDF pages Delete PDF pages Extract PDF pages Sort PDF pages Create a PDF from images Convert a PDF to images Extract images from PDFs Create online application as PDF Optimize PDF for the Web Insert watermark into a PDF Insert page numbers into a PDF Overlay PDF files Compare PDF files Sign PDF files Annotate PDF files Blacken PDF files Crop PDF Flatten PDF Download: PDF24 Creator 11.27.0 | MSI Setup | ~400.0 MB (Freeware) View: PDF24 Creator Homepage | Release Notes | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • Week One Done
      DrRonSr earned a badge
      Week One Done
    • Week One Done
      Sharon dixon earned a badge
      Week One Done
    • Dedicated
      Parallax Abstraction earned a badge
      Dedicated
    • First Post
      956400 earned a badge
      First Post
    • Week One Done
      davidfegan earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      602
    2. 2
      ATLien_0
      226
    3. 3
      Michael Scrip
      167
    4. 4
      +FloatingFatMan
      154
    5. 5
      Som
      136
  • Tell a friend

    Love Neowin? Tell a friend!