How do I set up the Unix 'mail' command?

9

4

I've had a look on Google and the man pages for mail, but I can't figure out how to set it up. All I want to do is set up my email address so that I can send email via the terminal. How do I do that?

Eddy

Posted 2011-10-29T13:03:24.150

Reputation: 2 897

Answers

12

Traditionally, Unix mail programs, including mail, rely on a MTA (Mail Transfer Agent) to do the actual transmission.

You can use either a full-size MTA (postfix, exim4, opensmtpd) by configuring it with a 'smarthost' (relayhost), or a lightweight outgoing-only MTA (msmtp, ssmtp, esmtp, nullmailer) which always uses one.


For personal use, msmtp will be easiest to set up – it can only send mail, not receive, and allows user-specific configuration.

Install msmtp, then add your Gmail account into ~/.msmtprc:

defaults
    tls on
    # the path below may need to be adjusted
    tls_trust_file /etc/ssl/certs/ca-certificates.crt

account gmail
    from youraddress@gmail.com
    host smtp.gmail.com
    port 587
    auth plain
    user youraddress@gmail.com

account default : gmail

Now tell mail to use msmtp, by editing ~/.mailrc:

set sendmail="/usr/bin/msmtp"

(If this does not work, run ln -s /usr/bin/msmtp /usr/sbin/sendmail as root.)

Finally, if you want mail/msmtp to remember your Gmail password, it goes to ~/.netrc:

machine smtp.gmail.com
    login youraddress@gmail.com
    password "your password here"

user1686

Posted 2011-10-29T13:03:24.150

Reputation: 283 655

3

Unless your system admin has already set up the mail system, you must configure a Mail Transfer Agent. That is sendmail traditionally, modern systems use postfix or exim4.

ott--

Posted 2011-10-29T13:03:24.150

Reputation: 1 911

2

On many systems you will find a mailx command which can be used to send email. This may be a link to the mail command, but changes the behavior of the command. As other have noted, this assumes you have a MTA (Mail Transfer Agent) configured on your server. It can be used interactively using a command like:

mailx -s "This is a message" user@example.com
This is a message
.

Or with a pipe to send the output of a command:

cat myfile.txt | mailx -s "This is the file" user@example.com

Running it as mailx -h should give you usage instructions.

BillThor

Posted 2011-10-29T13:03:24.150

Reputation: 9 384

1

If you're not bound to the mail command, nail offers a similar interface but can send mail using SMTP.

Jens Erat

Posted 2011-10-29T13:03:24.150

Reputation: 14 141