По дате Октябрь 15th, 2012

Сложности с доставкой писем на ящики mail.ru stat=Service unavailable

Столкнулся с ситуацией, когда письма, отправленные с VPS сервера, имя которого mail.maindomain.tld не доходят до некоторых почтовых систем. Т.е. тестирую я (на ящики на частном сервере, на @gmail.com, на @yandex.ru) - письма доходят. Тестирует другой человек - письма не доходят… Мол “не работает” :) выяснилось, что письма

В логах sendmail обнаружилась куча ошибок:

mail loops back to me (MX problem?)
relay=mxs.mail.ru. [194.67.23.20], dsn=5.0.0, stat=Service unavailable

Сложность в том, что домен mail.maindomain.tld не был прописан в DNS, а почта должна была отправляться от info@maindomain.tld, но в имя отправителя попадал домен mail.maindomain.tld (несмотря на указание заголовка FROM)

Варианты решения:

- В конфиге sendmail (/etc/mail/…cf) задать верное имя основного домена, от которого должна уходить почта
define('confDOMAIN_NAME', 'maindomain.tld')

- В php.ini задать (раскомментировать и указать нужное значение) параметр (он переопределит дополнительные параметры, полученные из функции - см следующий пункт)
mail.force_extra_parameters = -finfo@maindomain.tld

- В конфиге сайта (виртуального хоста) задать sendmail_path
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@maindomain.tld"

- В php при использовании функции mail задавать последний параметр string $additional_parameters равным “-finfo@maindomain.tld” (т.е. -f и без пробела имя пользователя)

Параметр additional_parameters может быть использован для передачи дополнительных флагов в виде аргументов командной строки для программы сконфигурированной для отправки писем, указанной директивой sendmail_path. Например, можно установить отправителя письма при использовании sendmail с помощью опции -f.

Пользователь, под которым работает веб-сервер должен быть добавлен в список доверенных в конфигурации sendmail для того чтобы избежать добавления заголовка ‘X-Warning’ при указании отправителя с помощью опции (-f). Для пользователей sendmail - это файл /etc/mail/trusted-users.

- настроить sendmail, чтобы он подставлял нужного отправителя (в дебри не полез.. но про саму возможность упомянуть решил.)

Использованы материалы:
- http://www.opennet.ru/openforum/vsluhforumID1/77794.html

На некоторых хостингах требуется настройка параметра from для задания разрешённых имен отправителя при отправке писем из PHP..

Опубликовано Октябрь 15, 2012 | автор: levik  |  Нет комментариев »