Назад | Перейти на главную страницу

Как ограничить PHP5 / Apache для отправки почты только локальным пользователям

Мне нужна помощь. Я использую последнюю стабильную версию Ubuntu, на которой размещен Apache / PHP5, а также доставляется электронная почта. Я размещаю некоторые сайты WordPress для других пользователей и уже несколько месяцев веду войну, сражаясь с злоумышленниками, которые находят плохие разрешения для каталогов и используют их для загрузки скриптов php для рассылки спама через сервер.

Я, конечно, предпринимаю шаги по автоматизации безопасности WordPress, но также хотел бы лишить PHP5 / Apache возможности отправлять почту на любой адрес, который не может быть доставлен локально.

Я настраиваю для этого новый сервер. Я буду использовать последнюю версию MailScanner с выбором Sendmail или Postfix. В частности, это будет направлено на то, чтобы заблокировать пользователя wwwdata, чтобы он мог отправлять только локально.

Я уже настроил ведение журнала почты PHP5, но мне нужно сделать еще один шаг, потому что мой хостинг-провайдер становится драконовским, когда начинает распространяться спам. Пока мне не удалось найти ответы через Google. Единственное, что я обнаружил до сих пор, включает в себя либо отключение функции почты PHP, либо регистрацию, просмотр, брандмауэр IP-адресов и удаление вредоносных сценариев. Любая помощь приветствуется.

Этот ответ предполагает postfix mta.

В php.ini добавьте:

mail.add_x_header = 1

В /etc/main.cf добавьте:

header_checks = pcre:/etc/postfix/header_checks.pcre

Содержимое /etc/postfix/header_checks.pcre

if /X-PHP-Originating-Script.*/
!/To:[a-zA-Z0-9._%+-]+(@(localdomain1.com|localdomain2.com))?$/ REJECT PHP Mail is only allowed to submit mail for local delivery.
endif

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