SMTP (Simple Mail Transfer Protocol) is a protocol for sending email messages between servers. Most email systems that send mail over the Internet use SMTP to send messages from one server to another, and to deliver messages to local mail clients like Microsoft Outlook or Apple Mail.
SSMTP is a simple and lightweight utility that allows users to send emails from the command line or shell scripts. It is especially useful for systems that don’t have a full-blown mail server installed, such as a headless server or a machine running on a cloud platform.
In this article, we will show you how to set up and configure SSMTP on your Linux machine.
Step 1: Install SSMTP
The first thing you need to do is install SSMTP on your Linux machine. Depending on your distribution, you can use the package manager to install it.
- For example, On a Debian or Ubuntu machine, you can use the following command:
sudo apt update && apt install ssmtp
- On a CentOS or Fedora machine, you can use the following command:
sudo yum install ssmtp
Step 2: Configure SSMTP
Once SSMTP is installed, you need to configure it by editing the configuration file located at “/etc/ssmtp/ssmtp.conf”. For this tutorial, I am using the Gmail SMTP server. You can use any of the remote SMTP servers that allowed you to send emails from your system.
Open the file in a text editor, such as nano or vi:
sudo nano /etc/ssmtp/ssmtp.conf
Change/Update the following lines in the configuration file:
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
[email protected]
AuthPass=XXXXXXXXXXXXXXX
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
The above details are as followings,
- mailhub: your smtp server host/ip with port.
- UseSTARTTLS: Set it to Yes if the SMTP server uses TLS or else No.
- AuthUser: Use Gmail ID here
- AuthPass: Use Gmail ID’s password
- TLS_CA_File: This may be required sometimes If you face an issue like “send-mail: Cannot open smtp.gmail.com:587”
Step 3: Send a Test Email
Now test the setup by sending a test email to an email address. First compose the mail in a text file like:
nano msg.txt
Add email content, for example:
msg.txtFrom: [email protected] Subject: This is the Subject Line Email content line 1 Email content line 2
Then send an email to “[email protected]” using the `ssmtp`
command:
ssmtp [email protected] < msg.txt
Check your mailbox for the new email.
Step 4: Set the Default Mail Transfer Agent
Now set SSMTP as your default mail server, So that you can simply use the mail command to send emails through SSMTP.
alternatives --config mta
There are 2 programs that provide 'MTA'.
Selection Command
-----------------------------------------------
1 /usr/sbin/sendmail.ssmtp
*+ 2 /usr/sbin/sendmail.sendmail
Enter to keep the current selection[+], or type selection number: 1
In case of no other mail client is configured, You should see a message like "no alternatives for mta". In that case, SSMTP is the default mail client.
To verify the changes, execute:
sendmail -V
sSMTP 2.64 (Not sendmail at all)
Conclusion
In this article, we showed you how to set up and configure SSMTP on your Linux machine in 5 simple steps. First, we installed SSMTP using the package manager. Then, we configured SSMTP by editing the configuration file and setting the default mail transfer agent. After that, we tested SSMTP by sending an email from the command line. Finally, we showed you how to use SSMTP in shell scripts to send automated emails.
SSMTP is a simple and lightweight utility that allows you to send emails from the command line or shell scripts. It is especially useful for systems that don't have a full-blown mail server installed, such as a headless server or a machine running on a cloud platform. With a few simple configurations, you can easily use SSMTP to send emails from your Linux machine.
16 Comments
Very helpful, but I am having trouble with Step 4, where does the “alternatives” command come from, it’s not installed on my system.
Smtp configure in Linux cell manager
ssmtp: 530 5.7.0 Must issue a STARTTLS command first. a6sm7530382pgb.34 – gsmtp
why does this error kept coming?
Hello,
I tried mailing using SSMTP and mailutils even.But both resulted me an error saying “Cannot open smtp.gmail.com:587″ and ” Process exited with a non-zero status”.
I have been trying for past 3 days to get this right but failed everytime. I tried by adding TLS_CA_FILE… command in config file too but it has also gone in vain.
Please provide me a solution
Thnaks in advance
hello,
i am working on writing a script to send the email.
is there any solution to use, instead of “^d” to make it work in a script.
thanks
Hello,
just configured ssmtp following Rahul’s helpful instructions – immidiate success!
Now I have the same question as you:
Is there any solution to use, instead of ā^dā to make it work in a script?
If you found such a solution it would be nice to read about it.
Thank you in advance
Hi HAYTHEM & RUDOLF,
I have updated the Step 3 in the tutorial. Hope this will help you to send emails via script.
Currently I’m using Nextehost.com SMTP but planning to build own server for Email marketing. hope this will be more cheaper.
suggest me what I need ? I send 10k-15K email on alternate days.
Hi Rohit, You can use Postal SMTP server.
https://tecadmin.net/install-postal-mail-server-on-ubuntu/
Nice tutorial!
plz provide me soln.
I solved this by allowing google to accept connections from untrusted/not safe apps in this module: https://www.google.com/settings/security/lesssecureapps
Of course be careful when activating this!
ssmtp: Authorization failed (534 5.7.14 https://support.google.com/mail/answer/78754 as4sm18579248pbc.48 – gsmtp)
Thanks for the great write-up. Do you know what the syntax looks like to send to multiple recipients from the command line?
I’ve tried adding Cc: in a separate text file and doing ssmtp [email protected] < message.txt
but it looks like this just makes it appear like the other recipients were CC'd, without actually sending the message to them.
Hello,
When i run this command # vim i got this
VIM – Vi IMproved
~
~ version 7.2.411
~ by Bram Moolenaar et al.
~ Modified by
~ Vim is open source and freely distributable
~
~ Help poor children in Uganda!
~ type :help iccf for information
~
~ type :q to exit
~ type :help or for on-line help
~ type :help version7 for version info
which is different from your next Step what is wrong?
Hope to help
You will probably have an easier time if you use nano as your editor instead of vim.