email — путь возврата почты PHP в скрипте, работающем от имени пользователя root

Я сделал поиск здесь. Я знаю, что этот вопрос задавался несколько раз. Но моя ситуация немного отличается, и я не могу заставить это работать.

Я написал сценарий CLI, который читает из почтовой очереди в базе данных и отправляет письма. База данных содержит данные для $to, $subject, $body, а также $headersтак что их можно просто подключить прямо к mail() функция. Звучит достаточно просто.

КРОМЕ.

База данных также содержит $from, который является именем пользователя в моей системе, который поставил почту в очередь. Он не предназначен для замены заголовка From в $headers, Пользователи могут указать любой адрес, который им нравится, в заголовке От, как это является нормой.

Поскольку скрипт выполняется от имени пользователя root (по причинам, по которым я не буду вдаваться), вызов mail() функция приводит к тому, что заголовок Return-Path устанавливается в [email protected], Это также приводит к появлению «root» в заголовках почты SPF, которые добавляются по пути.

В идеале я хотел бы, чтобы пользователь, который поставил почту в очередь, в $from, чтобы появиться в Return-Path.

Вещи, которые я пробовал:

  • mail( $to, $subject, $body, array_merge( $headers, [ 'Return-Path' => "[email protected]" ] );
  • mail( $to, $subject, $body, $headers, "-f [email protected]" );
  • posix_seteuid( posix_getpwnam( $from )['uid'] ); mail( $to, $subject, $body, $headers );
  • if( pcntl_fork() === 0 ) { posix_setuid( posix_getpwnam( $from )['uid'] ); mail( $to, $subject, $body, $headers ); die; }

Все вышеперечисленное действительно ДЕЙСТВИТЕЛЬНО отправляет почту, но ВСЕ заголовки имеют персиковый «корень». Последнее меня особенно удивляет …

Любые мысли о том, почему это может происходить, или как я могу изменить этот обратный путь?

0

Решение

Итак, проблема была с posix_setuid() не работает. Я добавил posix_getuid() а также posix_geteuid() на тело исходящей почты и заметил, что uid не изменился. После решения этой проблемы (моя собственная ошибка, ничего сумасшедшего), письмо теперь отправляется с соответствующим путем возврата.

Спасибо всем, кто прочитал и задумался над этим!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]