Отправка писем с сайта – неожиданная причина проблемы

Ограничения на использование памяти могут стать причиной неотправки писем
На днях столкнулся со странной проблемой у одного из наших клиентов, чей сайт хостится в RU-CENTER – перестали отправляться письма с данными заполненной формы обратной связи на сайте. Сам он сделан на WordPress, для отправки данных использовалась форма, созданная с помощью плагина Contact Form 7 – очень популярная связка, нормально работающая во всех остальных местах. Проблема носила преходящий характер – иногда письма все же отправлялись.

Приступил к исследованию. Запуск простейшего скрипта на PHP с функцией mail() письмо отправил.

Идем дальше. Попробовал запустить чуть более сложный скрипт, использующий для отправки тестового письма родную функцию WordPress – wp_mail().

Уже не сработало, письмо не стало отправляться. Поскольку заподозрить наличие ошибки в родной для WordPress и тщательно вылизанной функции wp_mail() было трудно, отправился на поиски в Интернет. Первые же запросы вывели на многочисленные обсуждения сходных проблем для самых разных CMS, и даже на официальное описание возможности такой проблемы в разделе FAQ хостера: http://hosting.nic.ru/support/php_setup.shtml#p3.5

Оказалось, что установленное ограничение на потребляемую на выбранном тарифе оперативную память (в нашем случае это ограничение составляло 128МБ) может приводить не к замедлению работы, как это обычно бывает на других хостингах, а к частичной или полной неработоспособности сайта или сайтов, если их несколько.

График, отображающий потребление памяти в течение недели сайтом на WordPress, работающим на хостинге от RU-CENTER (nic.ru)

В таких обстоятельствах, если смена хостинга не рассматривается как решение, можно и нужно попытаться уменьшить потребляемую память, отключив не используемые плагины и задействовав одну из систем кэширования, однако полностью полагаться на это как-то уже не очень хочется.

Решением стала установка одного из плагинов, позволяющего использовать для отправки писем с сайта сторонний SMTP-сервер. Наилучший работающий вариант в данном случае – SMTP-сервер от хостинг-провайдера nic.ru. Создал новую почтовую учетную запись, установил плагин WP SMTP (http://wordpress.org/plugins/wp-smtp/), настроил его для работы через 25 порт без защиты (с включенной опцией SMTP Secure, кстати, не работало), и письма сразу же стали уходить, даже до оптимизации потребляемой памяти сайтом.

Настройки плагина WP SMTP для WordPress на хостинге от RU-CENTER (nic.ru)

Если резюмировать, то я, конечно, был сильно удивлен именно таким способом применения ограничений на используемую сайтом память, создающим риск спонтанной потери функциональности.  Сам, к счастью, пользуюсь более безопасным и удобным в этом и других смыслах хостингом, про который даже несколько раз писал. На нем и памяти как минимум в два раза больше, и считается она по-другому: если здесь учитывается вся память, потребляемая веб-сервером, то там учитывается лишь память, потребляемая запущенными на сайте скриптами, а это, как нетрудно догадаться, «две большие разницы».

Понравилась статья? Поделитесь ссылкой в соцсетях:
blog comments powered by Disqus