Setup ubuntu server to send mail()

I also agree there is a lack of tutorials for people who just need a script to send, e.g. error emails, and don’t need a full-blown mail server.

First, if postfix not already installed do:

sudo apt-get install postfix

It prompts with a couple of questions. For the first I chose “Internet site”; for a machine behind a firewall I might choose smarthost instead.
For the second question it defaults to the machine name; I appended a domain name that I control (so I can set DNS for it later, should I need to).

At this point you should be able to use “mail” from the commandline to send a test. (I usually follow instructions on http://ubuntuforums.org/showthread.php?t=38429 first, otherwise I have to use the -f flag to /usr/bin/sendmail. I also like to create /etc/aliases with entries for root and my normal user, and then run newaliases)

Then under /etc/php5/conf.d create a file (e.g. mailconfig.ini) with these contents:

sendmail_from = "me@example.com"
sendmail_path = "/usr/sbin/sendmail -t -i -f me@example.com"

Change me@example.com to your email address. They mean all email will look like it is sent by you, which can help prevent it being rejected. This is sufficient for just sending error emails to a developer.

(The above instructions tested on Ubuntu 10.04, 11.04, 11.10, 12.04)

P.S. As pointed out by razzed in the comments, mail is not always there (e.g. on Ubuntu 11.10 it is missing). This does not actually affect the above instructions, you only need mail for the test, and you can use sendmail just as well for that. But mail is also useful for reading email, so it is usually worth installing it, with: apt-get install mailutils (as root).

Leave a Comment