mail () не работает на новом сервере

Может быть, это глупый вопрос, но я не могу найти причину, почему функция php mail не работает. У меня есть сервер nginx на debian squeeze, я недавно перешел к нему. Я пробовал простое выполнение почты, но он возвращает false.

if(mail('test@email.com', 'test-subject', 'test-text-blablabla')) echo 'ok'; else echo 'bad'; 

Что я могу с ним сделать?

Благодарю.

мой раздел почты 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 = me@example.com ; 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 = 

Хорошо, я сделал это. Как я сделал это для debian squeeze с сервером nginx: (все команды, которые я выполняю от пользователя root)

Прежде всего вам необходимо установить sendmail

 apt-get install sendmail 

Затем вы должны настроить этот файл, который был проще, чем я думал

 sendmailconfig 

хорошо, следующий шаг, который я делал, это конфигурация php.ini (я не отличный администратор, я новичок, поэтому я не знаю, нужно это или нет).

Я установил

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

Хорошо, с этого момента, теоретически, вы можете отправлять электронную почту, но для моего случая это привело к тайм-ауту шлюза 504 HTTP. Но, как я узнал намного позже, электронная почта уже появилась в почтовом ящике. Итак, мой тестовый php-файл:

 <?php mail('myWorkingEmail@example.com', 'test', 'you done that'); echo 'ok'; // I use this to check that script is end the execution ?> 

Это довольно ясно.

Следующая проблема – ошибка 504. Я иду в файлы журнала

 nano /var/log/mail.log 

и здесь я нахожу эту ошибку (это не единственная ошибка, но она отвечает за ошибку 504):

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

Затем, чтобы найти, как я могу решить эту проблему: http://forums.fedoraforum.org/archive/index.php/t-85365.html последний комментарий к этой странице.

Или другими словами я сделал это:

 nano /etc/hosts 

и в этом файле я меняю порядок хостов

 127.0.0.1 my_ip localhost myhostname 

сохранить, сделать. откройте свой тестовый php-файл, нет никакой ошибки 504, а электронные письма – это доход для отправки по электронной почте в почтовой программе. Как я уже сказал, я новичок, и это может не сработать для вас, но все равно работает для меня. Конечно, это не конечная конфигурация. Надеюсь, вы сочтете это полезным.