Классическая проблема. Изначально письма сформированые mail() в скрипте PHP вообще не отправлялись, функция mail() возвращала false. Проблему я решил. Попутно разобрался с настройкой exim4 на Debian. Об этом и расскажу.
Проблема в php.ini
Первым делом полез в php.ini. Там нашел строки
1 2 3 |
For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path sendmail_path = /usr/sbin/sendmail |
Сделал очевидное дописал как в комменте в default
1 |
sendmail_path = /usr/sbin/sendmail -t -i |
Перегрузил апач
1 |
apachectl restart |
Функция mail() перестала возвращать false, но письма не приходили. Причем на разные ящики.
Ставим exim4
В процессе гугления обнаружил, что многие решают проблему не уходящей почты установкой exim4. Чтож попробовал.
1 |
apt-get install exim4 |
Но установка не получилась.
Exim4 не устанавливается
При попытке установки получил следующюю ошибку:
1 |
E: Could not perform immediate configuration on 'exim4-daemon-light'. Please see man 5 apt.conf under APT::Immediate-Configure for details. (2) |
Гугление нашло такую проблему и решение:
Сначала
1 |
apt-get install exim4-base exim4-config |
Потом
1 |
apt-get install exim4-daemon-light |
Ну и
1 |
dpkg-reconfigure exim4-config |
Там в первом окошке выбираем верхнюю строчку, чтото типа «internet site …», ну а дальше можно просто жать энтер, ну или поправить по усмотрению.
Теперь настраиваем php.ini на exim4 вместо sendmail
меняем в php.ini
1 |
sendmail_path = /usr/sbin/sendmail -t -i |
на
1 |
sendmail_path = /usr/sbin/exim4 -t |
Перегружаем апач, ну и собственно всё. Почта уходит, адресат получает.
Игрь 2013-12-05