Плагин «Отключить всю электронную почту» для WordPress

Задача Сделайте отправку почты невозможной на сайте, адрес сервера которого ни в коем случае не должен фигурировать в отчете о спаме.

Плагин для WordPress, который делает отправку исходящей почты невозможной, а не просто не настроенной. Один файл, нет экрана настроек, ничего не записывается в базу данных. Он распространяется как открытый исходный код под лицензией GPL-3.0.

Источник, выпуски и релизы: github.com/kostyasorokin/wp-disable-all-email

Проблема, которую оно решает

Сайт, который не может доставлять почту, не просто молчит. Боты заполняют его контактные и регистрационные формы, сайт отправляет подтверждение по электронной почте на указанный ботом адрес, и эти адреса принадлежат реальным людям, которые попадают в папку “спам”. За ними накапливаются отказы, и адрес сервера оказывается в черном списке — обычно это замечают, когда хостинг-провайдер пишет, чтобы узнать, что происходит.

Остановка почтового демона не предотвращает этого. На типичном хосте исполняемый файл sendmail по-прежнему присутствует, PHP передает сообщения непосредственно ему, и он открывает собственное исходящее соединение. Демон выключен, и почта все равно отправляется.

Как это проходит

Два слоя, и работает только один из них. Как обязательный к использованию плагин, файл загружается до того, как WordPress объявит свой собственный. wp_mail(), Таким образом, он берет имя первым, и ничто из нижестоящих элементов не может его отправить — нет фильтра, который можно было бы удалить, и нет плагина, который мог бы его обойти.

Если какой-либо другой необходимый плагин сработает первым, этот слой пропускается, и фильтр останавливает основной отправитель. Эти два компонента дополняют друг друга, а не являются взаимозаменяемыми: срабатывает тот, который доступен.

То, что сообщается звонящему впоследствии, — это выбор, определяемый постоянным значением. Сообщение об успешном завершении обеспечивает нормальное завершение заполнения форм и оформления заказов; сообщение о неудаче — это честный ответ, когда нет другого канала связи, ценой того, что каждому посетителю будет показана ошибка.

Чего оно не может сделать

Ни один плагин не сможет перехватить код, который вызывает собственную функцию отправки почты PHP, открывает собственный SMTP-сокет или отправляет POST-запросы в API почты с помощью необработанного cURL. Эти запросы закрываются на сервере путем отключения функции или блокировки исходящих портов — и если целью является репутация одного IP-адреса, то это также необходимо сделать.

Суть в том, чтобы прямо об этом сказать. Это закрывает часть проблемы, связанную с WordPress, и ясно указывает, где находится другая половина.

Как попасть обратно

WordPress отправляет ссылку для восстановления по электронной почте, когда плагин или тема дают сбой, и сохраняет только её хеш — поэтому рабочая ссылка существует только в этом сообщении. Если бы её просто удалили, неработающий сайт можно было бы восстановить только через SSH.

Плагин восстанавливает эту ссылку, записывает её в место, где она всё ещё доступна для чтения, и передаёт её действию, чтобы её можно было отправить в другое место. Он также регистрирует запись в разделе “Состояние сайта”, поскольку о необходимом плагине легко забыть, и проблема «электронная почта перестала работать» исследуется через раздел «Состояние сайта», а не через список плагинов.

Роли

Разработчик
Konstantin Sorokin

Выполнено
  • Разработка плагина, один файл, без записи в базу данных.
  • Двухуровневая защита почты с помощью подключаемых модулей wp_mail и pre_wp_mail
  • Захват канала связи в режиме восстановления позволяет исправить критическую ошибку.
  • Отчет о проверке состояния сайта, объясняющий, почему не приходит почта.
  • Документация и выпуск с открытым исходным кодом.