klenwell
May 3rd, 2008, 08:13 PM
Update: I'm adding additional instructions for installing nail on newer versions of Ubuntu. You can use mailx as others have suggested later in the thread, but I like nail's -A option, which the instructions below depend on and for which I could not find an equivalent in mailx. I've reposted a complete 6-step guide (http://www.klenwell.com/press/2009/03/ubuntu-email-with-nail/) on my blog.
I'm copying this from my blog where the markup may be a little neater. I only wish it could be a little simpler. Link at bottom.
problem
I want to send email using the command line on my laptop Ubuntu system. Mainly for cron jobs and automated backups. I want to be able to do so without having to set up a full-fledged MTA like sendmail or exim. And I want to be able to use either my ISP email account or a Gmail account.
Seemed simple enough and it probably is for people who do this type of thing for a living. Took me all night. So hopefully this will save someone else (perhaps me again) hours of unnecessary frustration in the future.
solution
First, look at this diagram from Wikipedia: http://en.wikipedia.org/wiki/Email#Workings. Without being able to find a simple step-by-step tutorial to guide me, the biggest problem I was having was sorting out what was my MUA, what was my MTA, and what if anything I needed to connect the two. Long story short, they are as follows:
MUA (the client): nail (you can also use mailx or mutt or what you will)
MTA (the mail server): your isp or gmail
MSA (smtp middle man): msmtp (a simple MTA that gets mail from your local MTA to your real MTA or mailhub)
step-by-step
For newer versions of Ubuntu (post-Gutsy), add Breezy archive to your repository
$ sudo gedit /etc/apt/sources.list
Add the following lines at the bottom of the file:
# breezy repositories (added to install nail)
# see http://old-releases.ubuntu.com/releases/ for more info
deb http://old-releases.ubuntu.com/ubuntu/ breezy universe
Update:
$ sudo apt-get update
Install the needed programs
$ sudo apt-get install msmtp
$ sudo apt-get install nail
Install Thawte certificate for Gmail
This is necessary (I think) for Gmail. Probably the most complicated step, though not too bad thanks to instructions here (http://laurentbois.com/2007/10/20/activemailer-using-msmtp-and-gmail/):
$ mkdir -p ~/etc/.certs
$ chmod 0700 ~/etc/.certs
$ cd ~/etc/.certs
$ wget https://www.verisign.com/support/thawte-roots.zip --no-check-certificate
$ unzip thawte-roots.zip
$ cp Thawte\ Server\ Roots/ThawtePremiumServerCA_b64.txt ThawtePremiumServerCA.crt
Configure msmtp
Replace UPPERCASE text with your personal settings
$ gedit ~/.msmtprc
This will open up an msmtp configuration file where you'll want to copy the following lines, with your correct settings, of course:
# config options: http://msmtp.sourceforge.net/doc/msmtp.html#A-user-configuration-file
defaults
logfile /tmp/msmtp.log
# isp account
account isp
auth login
host SMTP.YOURISP.COM
port 25
user YOURNAME@ISP.COM
from YOURNAME@ISP.COM
password *****
# gmail account
account gmail
auth on
host smtp.gmail.com
port 587
user YOURNAME@gmail.com
password *****
from YOURNAME@gmail.com
tls on
tls_trust_file /home/USER/etc/.certs/ThawtePremiumServerCA.crt
# set default account to use (from above)
account default : isp
Change permission on this file or msmtp will complain:
$ chmod 600 ~/.msmtprc
Configure nail
$ gedit ~/.mailrc
# set smtp for nail
# ref: http://ubuntuforums.org/showpost.php?p=4531994&postcount=6
# docs: http://msmtp.sourceforge.net/doc/msmtp.html#Configuration-files
# isp account (default)
# $ nail -s "subject line" -a /path/file recipient@email.com < /path/body.txt
set from="YOURNAME@ISP.COM"
set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a isp"
# gmail account
# $ nail -A gmail -s "subject line" -a /path/file recipient@email.com < /path/body.txt
account gmail {
set from="YOURNAME@gmail.com (YOURNAME)"
set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a gmail"
}
Send test messages for both accounts
$ echo -e "testing email from the command line" > /tmp/test_email
$ nail -s "isp test" YOURNAME@gmail.com < /tmp/test_email
$ nail -A gmail -s "gmail test" YOURNAME@gmail.com < /tmp/test_email
Check your gmail account and you should have two new messages -- one from that account and one from your ISP account. To check your log:
$ gedit /tmp/msmtp.log
Hope this helps someone. I know I could have used it!
Original source: http://phosphorusandlime.blogspot.com/2008/05/ubuntu-command-line-email.html
I'm copying this from my blog where the markup may be a little neater. I only wish it could be a little simpler. Link at bottom.
problem
I want to send email using the command line on my laptop Ubuntu system. Mainly for cron jobs and automated backups. I want to be able to do so without having to set up a full-fledged MTA like sendmail or exim. And I want to be able to use either my ISP email account or a Gmail account.
Seemed simple enough and it probably is for people who do this type of thing for a living. Took me all night. So hopefully this will save someone else (perhaps me again) hours of unnecessary frustration in the future.
solution
First, look at this diagram from Wikipedia: http://en.wikipedia.org/wiki/Email#Workings. Without being able to find a simple step-by-step tutorial to guide me, the biggest problem I was having was sorting out what was my MUA, what was my MTA, and what if anything I needed to connect the two. Long story short, they are as follows:
MUA (the client): nail (you can also use mailx or mutt or what you will)
MTA (the mail server): your isp or gmail
MSA (smtp middle man): msmtp (a simple MTA that gets mail from your local MTA to your real MTA or mailhub)
step-by-step
For newer versions of Ubuntu (post-Gutsy), add Breezy archive to your repository
$ sudo gedit /etc/apt/sources.list
Add the following lines at the bottom of the file:
# breezy repositories (added to install nail)
# see http://old-releases.ubuntu.com/releases/ for more info
deb http://old-releases.ubuntu.com/ubuntu/ breezy universe
Update:
$ sudo apt-get update
Install the needed programs
$ sudo apt-get install msmtp
$ sudo apt-get install nail
Install Thawte certificate for Gmail
This is necessary (I think) for Gmail. Probably the most complicated step, though not too bad thanks to instructions here (http://laurentbois.com/2007/10/20/activemailer-using-msmtp-and-gmail/):
$ mkdir -p ~/etc/.certs
$ chmod 0700 ~/etc/.certs
$ cd ~/etc/.certs
$ wget https://www.verisign.com/support/thawte-roots.zip --no-check-certificate
$ unzip thawte-roots.zip
$ cp Thawte\ Server\ Roots/ThawtePremiumServerCA_b64.txt ThawtePremiumServerCA.crt
Configure msmtp
Replace UPPERCASE text with your personal settings
$ gedit ~/.msmtprc
This will open up an msmtp configuration file where you'll want to copy the following lines, with your correct settings, of course:
# config options: http://msmtp.sourceforge.net/doc/msmtp.html#A-user-configuration-file
defaults
logfile /tmp/msmtp.log
# isp account
account isp
auth login
host SMTP.YOURISP.COM
port 25
user YOURNAME@ISP.COM
from YOURNAME@ISP.COM
password *****
# gmail account
account gmail
auth on
host smtp.gmail.com
port 587
user YOURNAME@gmail.com
password *****
from YOURNAME@gmail.com
tls on
tls_trust_file /home/USER/etc/.certs/ThawtePremiumServerCA.crt
# set default account to use (from above)
account default : isp
Change permission on this file or msmtp will complain:
$ chmod 600 ~/.msmtprc
Configure nail
$ gedit ~/.mailrc
# set smtp for nail
# ref: http://ubuntuforums.org/showpost.php?p=4531994&postcount=6
# docs: http://msmtp.sourceforge.net/doc/msmtp.html#Configuration-files
# isp account (default)
# $ nail -s "subject line" -a /path/file recipient@email.com < /path/body.txt
set from="YOURNAME@ISP.COM"
set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a isp"
# gmail account
# $ nail -A gmail -s "subject line" -a /path/file recipient@email.com < /path/body.txt
account gmail {
set from="YOURNAME@gmail.com (YOURNAME)"
set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a gmail"
}
Send test messages for both accounts
$ echo -e "testing email from the command line" > /tmp/test_email
$ nail -s "isp test" YOURNAME@gmail.com < /tmp/test_email
$ nail -A gmail -s "gmail test" YOURNAME@gmail.com < /tmp/test_email
Check your gmail account and you should have two new messages -- one from that account and one from your ISP account. To check your log:
$ gedit /tmp/msmtp.log
Hope this helps someone. I know I could have used it!
Original source: http://phosphorusandlime.blogspot.com/2008/05/ubuntu-command-line-email.html