42

I tried searching a lot but unable to find how to actually setup a ubuntu server, so that I can send mails through php using mail() function in php.

I have apache2, mysql and php5 installed on my server.

Thank You.

0

4 Answers 4

46

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 = "[email protected]"
sendmail_path = "/usr/sbin/sendmail -t -i -f [email protected]"

Change [email protected] 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).

6
  • 1
    Thanks! This worked perfectly. Tested on Ubuntu 12.04 LTS x64. Sep 9, 2012 at 21:39
  • This resolves find using NGINX too! And PHP5-FPM Nov 2, 2012 at 11:06
  • 1
    Note on my host, the mail command-line utility is not installed on a clean Ubuntu install, and installing PostFix does not install it. Try sudo apt-get install mailutils to get the mail command, or use alternatives such as Mutt, or ssmtp
    – razzed
    Feb 20, 2013 at 15:27
  • I needed weeks to figure out that the stuff behinde sendmail_path has to be in " to work correctly, like sendmail_path = "/usr/sbin/sendmail -t -i -f [email protected]"
    – Sliq
    May 20, 2013 at 20:15
  • 1
    Finally! A straight forward and simple solution. Works on Ubuntu 14.04.
    – Knyri
    Jun 9, 2014 at 17:12
2

You'll need to setup the ubuntu server to be able to send mail ... as an example, you could install and configure postfix.

The Ubuntu documentation has a nice page at https://help.ubuntu.com/community/MailServer

2
  • any tutorial you can link me to?
    – Shishant
    Mar 3, 2010 at 14:02
  • added a tutorial link
    – Dominik
    Mar 3, 2010 at 14:13
1

Either go through the painful process of setting up a mail server directly on your server (postfix, etc) or use a library that will allow you to connect directly to a smtp server.

0

You should first install xmail package, and if it still does not work, have a look over here.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .