How can I get PHP mail() to work? Need help configuring a MTA

14,724

Solution 1

did you properly installed postfix ? If yes : service postfix restart

nano /etc/php.ini

Find sendmail_path , change the line to sendmail_path = /usr/sbin/sendmail.postfix -t -i

Here is the complete server / client installation instructions for php client also http://setahost.com/installing-postfix-as-a-default-mail-sending-program-with-php/

follow client installation instructions ...

Solution 2

What isn't working? What do server logs show (both for PHP and mail)? You need to figure out if the problem is with PHP or your MTA.

IMHO, setting up send-only postfix and then using the PEAR Mail library is probably the best bet.

Share:
14,724
Strawberry
Author by

Strawberry

I want to learn industry practices and apply them to my projects to make myself successful

Updated on June 15, 2022

Comments

  • Strawberry
    Strawberry almost 2 years

    Update: I solved it. Documented everything below.

    I tried so many things, but it just would not work.

    I wouldn't mind using, postfix, exim4, or sendmail. I just need a step by step guide and explanation of what am I doing. I am also using Google Apps for e-mail.

    Edit:

    mail.log

    Nov  3 01:14:02 mugbear postfix[16615]: error: to submit mail, use the Postfix sendmail command
    Nov  3 01:14:02 mugbear postfix[16615]: fatal: the postfix command is reserved for the superuser
    

    What does this mean?


    Update to edit: Fixed by correcting sendmail_path in php.ini with sendmail_path = /usr/sbin/sendmail -t -i

    Edit2: PHP - Just grabbed from documentation. FYI, I removed my e-mail.

    <?php
    // The message
    $message = "Line 1\nLine 2\nLine 3";
    
    // In case any of our lines are larger than 70 characters, we should use wordwrap()
    $message = wordwrap($message, 70);
    
    // Send
    mail('[email protected]', 'My Subject', $message);
    
    ?>
    

    Edit3: Another error:

    Nov  3 07:22:29 mugbear postfix/postdrop[17131]: warning: unable to look up public/pickup: No such file or directory
    Nov  3 07:22:29 mugbear postfix/postdrop[17133]: warning: unable to look up public/pickup: No such file or directory
    

    Update to edit3: Fixed this with the following link: http://ubuntuforums.org/showthread.php?t=666018 Run this:

    sudo mkfifo /var/spool/postfix/public/pickup
    sudo /etc/init.d/postfix restart
    

    After that, you'll get this error:

     postfix/master[13902]: fatal: bind 0.0.0.0 port 25: Address already in use
    

    Then you will have to check your processes and kill sendmail processes, for example:

    root@server:/etc/postfix# ps aux | grep mail
    root     23554  0.0  0.0   8232  1900 ?        Ss   10:17   0:00 sendmail: MTA: accepting connections          
    root     27308  0.0  0.0   3004   764 pts/0    S+   10:30   0:00 grep mail
    root@server:/etc/postfix# kill 23554
    

    Edit4: What does this mean?

    Nov  3 07:34:51 mugbear postfix/pickup[17309]: 6602F1C151: uid=33 from=<www-data>
    Nov  3 07:34:51 mugbear postfix/cleanup[17311]: 6602F1C151: message-id=<[email protected]>
    Nov  3 07:34:51 mugbear postfix/qmgr[17310]: 6602F1C151: from=<[email protected]>, size=397, nrcpt=1 (queue active)
    Nov  3 07:34:51 mugbear postfix/error[17321]: 6602F1C151: to=<[email protected]>, relay=none, delay=0.03, delays=0.02/0/0/0.01, dsn=4.3.5, status=deferred (delivery temporarily suspended: Host or domain name not found. Name service error for name=xen.prgmr.com type=A: Host found but no data record of requested type)
    

    Update to edit4: I ran, dpkg-reconfigure postfix and selected Internet Site.

  • Strawberry
    Strawberry over 13 years
    I'll accept any solution as long as it works, could you give me a guide of some sort?
  • mpdonadio
    mpdonadio over 13 years
    I just follow the standard CentOS instructions whenever I forget how to do this. Configuring Postfix for sendonly with is pretty easy, though. There should be a Debian guide for doing this. You really need to look at the httpd error log and the mail log to see what the problem is, though. The two problems that pop into my mind are missing headers when PHP is trying to send (missing From: is usually the culprit), or a MTA configuration problem (many times, you just need to configure the MTA to connect directly to the remote end).
  • mpdonadio
    mpdonadio over 13 years
    Normally (?) postfix installs so that it will look just like sendmail for outgoing mail, and also lives in the normal sendmail location. What does your PHP look like?
  • Charles
    Charles over 13 years
    @Doug, the error suggests that you haven't configured the sendmail command in php.ini correctly, and that it's calling the postfix binary expecting it to behave like a normal sendmail binary.