How To Use Gmail Account To Relay Email From a Shell Prompt

by on April 5, 2009 · 51 comments· LAST UPDATED April 22, 2009

in , ,

Usually, you do not need to setup an email server under Linux desktop operating system. Most GUI email clients (such as Thunderbird) supports Gmail POP3 and IMAP configurations. But, how do you send mail via the standard or /usr/bin/mail user agents or a shell script? Programs such as sendmail / postfix / exim can be configured as a gmail smarthost but they are largely overkill for this use.

You can use gmail as a smart host to send all messages from your Linux / UNIX desktop systems. You need to use a simple program called ssmtp. It accepts a mail stream on standard input with recipients specified on the command line and synchronously forwards the message to the mail transfer agent of a mailhub for the mailhub MTA to process. Failed messages are placed in dead.letter in the sender's home directory.

Install ssmtp

Type the following command under CentOS / RHEL / Red Hat / Fedora Linux:
# yum install ssmtp
Type the following command under Debian / Ubuntu Linux:
# apt-get update && apt-get install ssmtp

Configure gmail as a smarthost

Open /etc/ssmtp/ssmtp.conf, enter:
# vi /etc/ssmtp/ssmtp.conf
Update file with the following settings:

 
AuthUser=vivek@gmail.com
AuthPass=Your-Gmail-Password
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
 

Also, make sure you disable Sendmail:
# service sendmail stop
# chkconfig sendmail off
# mkdir /root/.bakup
# mv /usr/sbin/sendmail /root/.bakup
# ln -s /usr/local/ssmtp/sbin/ssmtp /usr/sbin/sendmail

Now, you can use mail / mailx command to send email messages. You can also write a shell script to backup your files and email to somewhere else (see below). You can test settings using following syntax:
$ echo "This is a test" | mail -s "Test" vivek@nixcraft.co.in

A note about sSMTP

sSMTP works well for desktop systems, but it is not a replacement for Sendmail / Postfix / Exim / Qmail for email server environment. This software is perfect for a single user system.

Further readings:

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 51 comments… read them below or add one }

1 Alexei April 5, 2009 at 8:06 pm

Typo in the header: relay.

Reply

2 nixCraft April 6, 2009 at 3:13 am

Thanks for the heads-up.

Reply

3 Nabin Limbu April 6, 2009 at 10:41 am

Thanks for the info. Today I was searching for a way out for logwatch to send email via using external SMTP without installing sendmail or other MTA in my cache server and then after an hour I got this solution. Thanks

Reply

4 sanzle April 6, 2009 at 1:44 pm

hi, thanks for the wonderful tip..
i went through the conf file…….but i m stuck somewhere in between…

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=mail
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
hostname=sanzle-desktop
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES

should i update this file adding the lines you hav provided..and what abt the disabling Sendmail…I can find those mentioned lines..

Thanks in advance.

Reply

5 nixCraft April 6, 2009 at 2:17 pm

Yes, you should update configuration by adding appropriate values.

Command related to sendmail disabling works on RHEL / Fedora and CentOS.

HTH

Reply

6 Ulver April 6, 2009 at 2:02 pm

another good program like sstmp are email (encrypted email not electronic email !! ) you could see at http://www.cleancode.org/projects/email it have similar features than ssmtp plus the file attachment by command line.

Cheers and happy shell mailing ! xD

Reply

7 nixCraft April 6, 2009 at 2:23 pm

@Ulver,

Thanks for sharing email project.

Reply

8 neeraj April 6, 2009 at 5:51 pm

Hello !
thanks for sharing your knowledge.
I am using Ubuntu 8.04.
when i opened .conf file i got the following script:

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=mail

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=nee-pc

# Are users allowed to set their own From: address?
# YES – Allow the user to specify their own From: address
# NO – Use the system generated From: address
#FromLineOverride=YES
~
~
Now how to update this file with tha changes you provided??
pls tell me!
thanka in advance!

Reply

9 Ulver April 6, 2009 at 6:21 pm

thanks, no worries

Reply

10 nixCraft April 6, 2009 at 6:42 pm

Yes, you have to add changes provided by me. If there is already config line update it; otherwise just append new config line.

Reply

11 Balaviswanathan.V April 7, 2009 at 2:26 am

Thanks a lot Vivek for the tip that you have given us and please continue the good work
:)

Reply

12 Rabindra Karki April 7, 2009 at 6:13 am

Thanks for the tips

Reply

13 kgas April 7, 2009 at 2:08 pm

I am using this already. I read this earlier here http://tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/. I have also seen some articles in tombuntu referring to Vivek. Thanks to read this once again to refresh :D.

Reply

14 Chris April 7, 2009 at 2:59 pm

This is perfect us on consumer Internet lines where SMTP ports are blocked by ISP. Brilliant! Thanks, Vivek.

Reply

15 Thomas Moersch April 8, 2009 at 5:49 pm

Love this blog! I look after around 100 linux servers. There have been many useful tips and contributions is this blog.
Really useful!
;-)

Thanks!

Reply

16 Mehran Khajavi April 28, 2009 at 12:59 pm

easy to use and interesting

Reply

17 Han Solo April 28, 2009 at 8:18 pm

I use MSMTP for bellsouth where they accept mail from CLIENTS but not from sendmail.
http://msmtp.sourceforge.net/

You just replace sendmail with this and it looks like a mail client to your ISP.

Reply

18 charu May 6, 2009 at 9:34 am

Good man…

I love this blog……

Reply

19 JackBeeNimble May 6, 2009 at 7:57 pm

what about creating a .forward file in your /home/myname instead of all this. And you can add as many emails as you like… homename@gmail.com,myworkname@work.com

Reply

20 Aleksey Zalesov May 22, 2009 at 11:50 am

I have a problem sending mail to the same domain.

For example, I have foo.ru configured in Google Apps. From 1@foo.ru I can send email to 2@bar.ru, but not to 2@foo.ru. Can you help me resolve this problem?

Reply

21 Aleksey Zalesov May 22, 2009 at 11:55 am

Sorry, just big delay in mail delivery. Everything works fine!

Reply

22 pranay June 1, 2009 at 9:34 am

HI , i made the above configurations as stated but when i a m sending mail to test then the following error is being showed:
/usr/sbin/sendmail: No such file or directory
“/root/dead.letter” 9/232
. . . message not sent.
please help

Reply

23 Sergio Montini June 8, 2009 at 9:51 am

Great! I can now email directly from my NSLU2 (Slug).

Ideally, I would like a script to email me my system logs (cron, login, etc)

Any suggestions?

Many thanks!

Reply

24 Andres Rodriguez Guapacha June 23, 2009 at 3:53 pm

Thanks for the Info! I have a Debian Squeeze system and when I tried to install ssmtp I couldn’t because exim4 was already installed. aptitude gave me the option to uninstall it, but I decided to try and use exim4 with gmail, so I ended in http://wiki.debian.org/GmailAndExim4 and followed those steps. It now works perfectly!

Reply

25 Robert McKenzie July 12, 2009 at 2:11 am

Awesome .. exactly what I needed for the machines at home .. I refuse to use my ISP’s unauthenticated mail server, mostly because it’s a bit of a blackhole.. and I’ve been moving away from using mail on my hosted servers … most stuff has been ported to gmail servers.

Thanks for the quick and easy fix to using gmail as my smarthost!

Reply

26 Asaduzzaman July 16, 2009 at 7:25 am

Dear Sir/ Madam,
Recently I have configured sandmail on Linux RH 9, and capable to send and receive mail from outlook express. But problem is domain name show diffenence in outlook express Inbox , that is : but I have configured domain name “bgdnyk.com” on linux send mail server.
Could you please asists, how can I get accurate domain name in outlook express.

Reply

27 anonymous August 19, 2009 at 5:49 pm

OMG you are the best if it weren’t for you i’d still be messing around with nc/sendmail (sendmail.mc,m4)/telnet
I have a single user comp (root+my user) and this is perfect

Reply

28 Tim August 25, 2009 at 4:14 pm

TO: Sergio Montini
[Ideally, I would like a script to email me my system logs (cron, login, etc)]

Here is a line of code that may help. It was pulled from Linux Pro Magazine August2009 issue, page 61. You should be able to add it to your backup script that cron launches. You’ll probably need to tweak it to suit your needs and not copy it verbatim, but this is the basic idea. Rather than sending the list of files in a backup directory, you could also send the contents of a log file.

ls -l /my-backups/’date +%y-%m-%d’ | mail -s “daily backup report” your@email.address

Reply

29 vuser1 December 16, 2009 at 4:02 am

Is anyone know how to config ssmtp to rewrite the RCPT TO header? Thanks.

Reply

30 Lukas March 23, 2010 at 3:45 pm

I Got this error? Any help ? Pleaseeeeee

$ echo “This is a test” | mail -s “Test” sakal@sakal.sk
-su: $: command not found
Null message body; hope that’s ok
mail: /usr/sbin/sendmail: No such file or directory
Can’t send mail: sendmail process failed with error code 1

Thanks

Reply

31 Lukas March 23, 2010 at 3:45 pm

also :

ls -latr /usr/sbin/ | grep mail
-rwxr-sr-x 1 root mail 81304 2008-12-30 21:34 imapd*
lrwxrwxrwx 1 root root 5 2010-03-23 16:36 mailq -> ssmtp*
lrwxrwxrwx 1 root root 27 2010-03-23 16:40 sendmail -> /usr/local/ssmtp/sbin/ssmtp

Reply

32 Me March 25, 2010 at 8:04 pm

Any way to add multiple email accounts to this list? For example user1 and user2?

Reply

33 Ben May 14, 2010 at 11:38 am

So much easier than some of the other overkill guides – thanks!

Reply

34 Mats Karlsson October 10, 2010 at 9:31 am

There is some parts missing for CentOS 5:
ssmtp is available in the epel repository, that needs to be added before “yum install ssmtp”

The softlink is a bit off:
ln -s /usr/sbin/ssmtp /usr/sbin/sendmail

And I love this article, made my day ;-)

Reply

35 faerrleah January 17, 2011 at 1:05 pm

Will get your gmail account blocked for abusing service if you send too much email and too often.

Reply

36 adriyas April 10, 2011 at 4:43 am

As always, Thanks Vivek.

For the sake of others wondering.
# vim /etc/ssmtp/ssmtp.conf
# service sendmail stop
# chkconfig sendmail off
# mkdir /root/.backup
# mv /usr/sbin/sendmail /root/.backup/
# whereis ssmtp
ssmtp: /usr/sbin/ssmtp /etc/ssmtp /usr/share/man/man8/ssmtp.8.gz
# ln -s /usr/sbin/ssmtp /usr/sbin/sendmail
# echo “This is a test email” | mail -s “Test” adriyas@gmail.com

Used it for my nagios email notification for repl

Reply

37 msk June 23, 2011 at 10:31 am

I have tried above mentioned configured on my system. It worked nicely for a day but now it shows me following error.
“SSL_connect: Connection reset by peer. send-mail: Cannot open smtp.gmail.com:587″

Please get me to resolve this issue.

Reply

38 Daniel Kanafany October 12, 2011 at 5:54 pm

for those who has problems like this:

Null message body; hope that’s ok
mail: /usr/sbin/sendmail: No such file or directory
Can’t send mail: sendmail process failed with error code 1

try this:

the manual says that we must create a symlink:

ln -s /usr/local/ssmtp/sbin/ssmtp /usr/sbin/sendmail

but, depends on ur distro or version the correct location of this directories. In my case I use Fedora 12-64 and find that “/usr/local/ssmtp/sbin/ssmtp” is “/usr/sbin/ssmtp”, why:

[root@kanafas ssmtp]# whereis ssmtp
ssmtp: /usr/sbin/ssmtp /etc/ssmtp /usr/share/man/man8/ssmtp.8.gz

so I change the link to ” ln -s /usr/sbin/ssmtp /usr/sbin/sendmail ”

and now is working, any doubts or comments Ill be glad to help you.

Reply

39 Best Brain Teaser November 13, 2011 at 4:54 pm

/usr/sbin/sendmail: No such file or directory
“/home/lavesh/dead.letter” 9/227
. . . message not sent.

Reply

40 Bill Cunningham November 23, 2011 at 3:54 pm

Outstanding information! This worked exactly right the first time. I have been mucking around with mail on a Fedora PC for a long time. This did the trick.

Reply

41 William Notowidagdo February 2, 2012 at 6:50 am

Works like a charm. Thanks for sharing.

Reply

42 saravanan February 5, 2012 at 3:32 pm

I have a problem with sending mail in CentOS 5.6.
I need a script to send mail from gmail to other accounts.
Please help me.

Reply

43 Danny March 15, 2012 at 8:48 am

Kudos for a simple-to-use solution!

Reply

44 robert April 20, 2012 at 11:07 am

Hi,

Thank you very much!
Exactly what I needed.

:))

Reply

45 419 scambaiter June 18, 2012 at 7:02 am

google doesn’t like it when you help others “weaponize gmail”.

I have used gmail to torment 419 scammers… and subsequently had my accounts frozen

beware the do-not-evil (which is NOT “do good”)

Reply

46 Unsatified November 6, 2012 at 4:34 am

You tutorial doesn’t work

Reply

47 John June 1, 2013 at 9:16 pm

The first instructions posted 4 years ago, and still useful. Thanks.

Reply

48 Rajdeep Mukherjee June 8, 2013 at 8:45 am

still works like a charm :)

Reply

49 beatengun July 1, 2013 at 1:18 pm

[root@localhost /]# yum install ssmtp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: centos.excellmedia.net
* base: centos.excellmedia.net
* extras: centos.excellmedia.net
* updates: centos.excellmedia.net
Setting up Install Process
No package ssmtp available.
Nothing to do

WHY THIS KOLAVERI DI?

Reply

50 beatengun July 1, 2013 at 1:23 pm

My OS is CentOS

Reply

51 Yogesh July 24, 2014 at 8:01 am

Is ssmtp not available with “epel” repo of RHEL7? is not, what could be used as an alternative of ssmtp in RHEL7, for sending out emails using gmail?

Reply

Leave a Comment

Tagged as: , , , , , , , , , ,

Previous post:

Next post: