Решение проблемы 550 Message was not accepted

Мои поползновения в сторону смены хостера, привели меня к пока замечательному Mojordomo, который в кратчайшие сроки поднял для меня VPS-сервер на FreeBSD и теперь я могу упражняться в его настройке. После первого запуска этого сервера уже прошел месяц и я стал наголову умнее в настройке операционной системы FreeBSD для нужд размещения сайтов.

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

В PHP есть специальная функция – mail();, которая отправляет электронное письмо. Ее работа более подробнее описана в статье – Отправка email посредством PHP.

В моем случае, отправляя электронные письма через встроенную в PHP функцию mail(), на указанные почтовые ящики шли письма с ошибкой. Текст ошибки примерно такой:

This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
  name@inbox.ru
   SMTP error from remote mail server after end of data:
   host mxs.mail.ru [94.100.176.20]: 550 Message was not accepted — it contains invalid headers. More specially, „From:“ header must match user you are sending mail from. See https://help.mail.ru/mail-help/mailer/popsmtp for details.

Эта ошибка была получена при отправке письма на почтовый сервер inbox.ru, но поговаривают, что это происходит только на mail-овсих серверах. Это своеобразная защита от спама, которая применяется только у них.

Для того, чтобы решить эту проблему нам необходимо отредактировать главный конфигурационный файл httpd.conf. Если у Вас операционная система такая же как и у меня – FreeBSD, то он лежить тут: /usr/local/etc/apache22/httpd.conf, а если Linux, то находится он здесь: /etc/apache/httpd.conf.

В этом файле в самом конце должен быть блок, который отвечает за настройки виртуальных хостов. У меня он, примерно, такой:

<VirtualHost 78.111.11.111:80>
 ServerName name_site.ru
 DocumentRoot /home/adminway/data/name_site
 AssignUserID adminway adminway 
 CustomLog /home/httpd-logs/name_site.ru.access.log combined
 ErrorLog /home/httpd-logs/name_site.ru.error.log
 ServerAlias www.name_site.ru
 ServerAdmin admin@name_site.ru
 php_admin_value open_basedir "/home/adminway/data:."
 php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f neotve4at@name_site.ru"
 php_admin_value upload_tmp_dir "/home/adminway/data/mod-tmp"
 php_admin_value session.save_path "/home/adminway/data/mod-tmp"
 AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
 AddType application/x-httpd-php-source .phps
</VirtualHost>

Здесь всего-лишь 2 строчки, в которых указаны mail-адреса:
ServerAdmin admin@name_site.ru
php_admin_value sendmail_path «/usr/sbin/sendmail -t -i -f neotve4at@name_site.ru»

В первой строчке ServerAdmin admin@name_site.ru указывается электронный адрес, на который будут пересылаться всевозможные ошибки. В отправке писем с вашего сервера, посредство команды mail(), этот электронный адрес не играет никакой роли.

Вторая строка php_admin_value sendmail_path «/usr/sbin/sendmail -t -i -f neotve4at@name_site.ru» как раз таки показывает какой e-mail будет указан в поле отправителя. Посему-то ISPManager самостоятельно не изменила его и пришлось редактировать его вручную. Это e-mail должен совпадать с полем в заголовке From: отправляемого письма.

После того как Вы укажите e-mail адрес от которого будет работать PHP, проблема будет решена и все письма, отправляемые вашим сервером, будут доходить в неизменном виде, без ошибок и всякой другой мути.

После всех изменений не забываем перезагрузить Apache командой:

sudo /etc/init.d/apache2 restart

Теги: и

Комментарии

Suntura, 23.05.2012 19:48 #

klass
spasibo

Кадир, 13.12.2012 22:59 #

Очень полезная статья, спасибо автору

Сайтер, 10.05.2013 15:10 #

Мне помогло исправить проблему с Майл.ру, указание в ISP панели – E-Mail администратора – адреса с доменом сайта (если сайт – site.com, то и мыло админа домена указываем с @site.com), в настройках WWW домена. И в конфиги лезть не пришлось.

Soliter, 14.11.2013 13:50 #

Спасибо, помогло, про ISP панель.
Логично, в майле.ру фильтр ставят на перенаправление с другого сервера.

MIKL, 27.02.2014 14:12 #

Чел. добавь в конце статьи, что ещё нужно apache перезапустить. Я не сразу вспомнил. Спасибо за решение)

Зюзгин Иван, 28.02.2014 21:10 #

ОК, добавил

Дмитрий, 13.05.2014 19:02 #

Очень полезная статья , пол дня потратил решая проблему отправки на сервера mail.ru, а тут такое решение! Спасибо автору!

Макс, 03.11.2015 01:57 #

Спасибо, просто спас!

Arsmen, 07.12.2016 07:11 #

Темя все еще актуальна?

Николай, 09.06.2018 11:09 #

Спасибо за статью!






Интересное
Важное событие
Первый дистрибутив Ubuntu<
Первый дистрибутив Ubuntu
Узнать подробнее
Оглавление