PHP-функция mail(), sendmail, ISPManager

07.11.2009 0:16 / Артём Волк / 1439 просмотров / ...

Часто для отправки почты из PHP-скриптов используется функция mail. На серверах под управлением ISPManager и использующих sendmail могут возникнуть проблемы, если адрес отправителя не существует. Например, скрипт пытается отправить почту с обратным адресом no-reply@example.com, а ящика такого нет. Создавать подобные почтовые ящики не всегда необходимо.

Вариант 1

Можно отказаться от функции mail(), завести ящик и отправлять почту через SMTP.

Вариант 2

Можно просто завести ящик, адрес которого будет использоваться как обратный :).

Вариант 3

Если для почтового домена в ISPManager поставить действие по умолчанию «Ignore and drop», ошибки подавляются и почта с несуществующих адресов уходит.

Вариант 4: FreeBSD, решения из дисковых шаблонов VDSManager

В дисковых шаблонах, которые идут с VDSManager проблема решена следующим способом (спасибо службе поддержки за объяснения):

rm /etc/mail/submit.cf
rm /etc/mail/submit.mc
chmod 4555 /usr/local/sbin/sendmail (вместо 2555)
echo 'SENDMAIL_SET_USER_ID=yes' >> /etc/make.conf