Решение проблем с отправкой почты из скриптов в Sendmail
Материал из ISPWiki
Настройка почтового сервера sendmail (решение проблемы с отправкой почты из скриптов)
В некоторых случаях бывает, что почтовый сервер Sendmail не отправляет почту, возвращая ошибку:
Feb 28 22:04:24 myhost sendmail[5806]: mATM4O8w58065806: Losing ./qfmATM4O8w58065806: savemail panic Feb 28 22:04:24 myhost sendmail[5806]: mATM4O8w58065806: SYSERR(www): savemail: cannot save rejected email anywhere
Также в логах может быть ошибка вида:
stat=Data format error
Проблема, как правило, вызвана несуществующим hostname сервера, либо несуществующим почтовым адресом при отправке.
В таких случаях необходимо указать существующий почтовый адрес. В ISPmanager его можно прописать в свойствах WWW домена в поле "E-Mail администратора".
При указании адреса в конфигурации веб-сервера Apache в описании виртуального хоста:
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@example.com"
Если используется PHP в режиме как CGI или как FastCGI, запись прописывается в файле ~/php-bin/php.ini
sendmail_path = "/usr/sbin/sendmail -t -i -f webmaster@example.com"
Отключение проверки корректности адреса отправителя при отправке почты
Sendmail по умолчанию запускается с Message Submission Program (MSP). Это отдельный процесс для обработки почтовой очереди.
Рассмотрим его отключение в системе FreeBSD
Пропишите в файле /etc/make.conf строку, отключающую автоматическое создание файла submit.cf
SENDMAIL_SET_USER_ID=yes
После чего необходимо удалить файл submit.cf, поменять права на исполнимый файл sendmail (поставить на него SUID bit вместо SGID, то есть установить права 4755 вместо 2755) и перезапустить Sendmail
cd /etc/mail rm submit.cf make stop chmod 4755 /usr/local/sbin/sendmail make start
Отключение на других системах производится аналогично, например, на CentOS Linux необходимо отключить автоматическое создание submit.cf правкой файла /etc/mail/Makefile.
