No Image

Sendmail path usr sbin sendmail

СОДЕРЖАНИЕ
297 просмотров
10 марта 2020

Материал из ISPWiki

Настройка почтового сервера sendmail (решение проблемы с отправкой почты из скриптов)

В некоторых случаях бывает, что почтовый сервер Sendmail не отправляет почту, возвращая ошибку:

Также в логах может быть ошибка вида:

Проблема, как правило, вызвана несуществующим hostname сервера, либо несуществующим почтовым адресом при отправке.

В таких случаях необходимо указать существующий почтовый адрес. В ISPmanager его можно прописать в свойствах WWW домена в поле "E-Mail администратора".

При указании адреса в конфигурации веб-сервера Apache в описании виртуального хоста:

Если используется PHP в режиме как CGI или как FastCGI, запись прописывается в файле

Отключение проверки корректности адреса отправителя при отправке почты

Sendmail по умолчанию запускается с Message Submission Program (MSP). Это отдельный процесс для обработки почтовой очереди.

Рассмотрим его отключение в системе FreeBSD

Появилась на продакшен сервере вот такая ошибка

Severity: Warning
Message: mail(): Could not execute mail delivery program ‘/usr/sbin/sendmail -t -i’
Filename: libraries/Email.php
Line Number: 1545
framework code igniter

Код в этом файле такой:
if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers[‘From’]))) < return FALSE; >else

Чтобы отловить ошибку пробовал ловить exception его нет
try < тут код с майл; >catch (Exception $e) < print $e->getMessage(); > return true;

Вывел echo все переменные на продакшене и на тестовом, вроде тут тоже все одинаковое.

Код одинаковый с тестовым сервером, на тестовом такое же окружение в такой же ос(amazon linux аналог centos) все работает и шлет. Изменений в момент когда все сломалось в окружение я не вносил.

Файл /usr/sbin/sendmail присутствует, имеет нормальные права и нормально запускается.

Функция mail используется в других частях кода и там все в порядке.
В php.ini всего две строчку для настройки mail
sendmail_path = /usr/sbin/sendmail -t -i
mail.add_x_header = On

Читайте также:  Беспроводная мышь не работает не горит лазер

Пробовал убирать -t -i для теста, чтобы проверить используется ли этот php.ini, после этого ошибка изменилась на не могу вызвать sendmail но без параметров -t -i

Скрипт запускаю в консоли, memory_limit 1500MB, памяти свободной куча, проца тоже, файл подкачки пустой.

конфиг php.ini не менялся несколько месяцев, конфиг sendmail также не менялся несколько месяцев.

Обновил для пущей уверенности php до 5.3.25 и sendmail до 8.14.4
Ума не приложу в какую сторону копнуть ещё или как получить больше информации об ошибке.

Иногда бывает, что при отправке письма, через sendmail(почтовый сервер), письмо возвращается с ошибкой:
Apr 15 19:15:31 myhost sendmail[5806]: mATM4O8w58095806: Losing ./qfmATM4O8w58095806: savemail panic

Apr 15 19:15:45 myhost sendmail[5806]: mATM4O8w58095806: SYSERR(www): savemail: cannot save rejected email anywhere
При этом в логах периодически появляется:
stat=Data format error
Данная проблема обычно появляется, из-за несуществующего почтового адреса при отправке, либо несуществующего сервера hostname.

Для решения проблемы необходимо указывать правильный email. Его можно прописать в панели ISPmanager во вкладке свойств WWW в поле Email администратора.

Данный email также необходимо прописать в конфигурациях apache при описании виртуального хоста:

При использовании PHP в режимах FastCGI или CGI данная строка вносится в файл

Как отключить проверку правильности email отправителя, когда отправляет email

Sendmail запускается, по умолчанию, с MSP (Message Submission Program). Данный процесс запускается отдельно, чтобы обрабатывать почтовую очередь.

Рассмотрим пример отключения Sendmail в системе FreeBSD

Комментировать
297 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector