Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mail() doesn't work on new server

May be it's a dumb question, but I can't find the reason why php mail function doesn't work I have a nginx server on debian squeeze, I moved to it recently. I tried simple mail execution but it return false.

if(mail('[email protected]', 'test-subject', 'test-text-blablabla'))
   echo 'ok';
else
   echo 'bad';

What can i do with it?

Thanks.

my mail section of php.ini:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = [email protected] 

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On

; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers.
;mail.log =
like image 532
Dima Deplov Avatar asked Feb 14 '13 01:02

Dima Deplov


1 Answers

Okay, I made it. How I made it for debian squeeze with nginx server: (all commands I execute from root user)

First of all you need to install sendmail

apt-get install sendmail

next, you must configure this file that was easier than I thought

sendmailconfig 

okay, next step that I make was a php.ini configuration (I'm not a great admin, I'm a beginner, so I don't know is it necessary or not.)

I set

sendmail_path= /usr/sbin/sendmail -t -i

Okay, from this moment, theoretically, you can send email, but for my case it led to 504 http error gateway time-out. But as I found much later the email already came to email box. So, my test php file is:

<?php 
   mail('[email protected]', 'test', 'you done that');
   echo 'ok'; // I use this to check that script is end the execution 
?>

That's pretty clear.

Next problem is 504 error. I go to the log files

nano /var/log/mail.log

and here i find this error (that not the only one error, but that one is responsible for 504 error):

sm-msp-queue[***]: My unqualified host name (myhostname) unknown; sleeping for retry

Then, to find how I can solve this trouble: http://forums.fedoraforum.org/archive/index.php/t-85365.html last comment on that page.

Or another words I made this:

nano /etc/hosts

and in that file I change the order of the hosts

127.0.0.1 my_ip localhost myhostname 

save, done. open your test php file, there is no any 504 error and emails is income to email you mention in mail function. As I say, I'm a novice, and that may not work for you, but it work for me anyhow. This is not the end configuration, of course. Hope you find it helpful.

like image 179
Dima Deplov Avatar answered Sep 27 '22 19:09

Dima Deplov