Postfix, отправляющий письмо на php, ошибка прав доступа - PullRequest
3 голосов
/ 17 марта 2012

Я пытаюсь передать письмо в PHP с моим почтовым сервером Postfix, используя технику , упомянутую здесь , и обнаружила следующую ошибку ...

Mar 16 22:52:52 s15438530 postfix/pipe[9259]: AD1632E84C63: to=<php@[myserver].com>, relay=plesk_virtual, delay=0.61, delays=0.59/0/0/0.02, dsn=4.3.0, status=deferred (temporary failure. Command output: /bin/sh: /var/www/vhosts/[myserver].com/httpdocs/clients/emailpipe/email2php.php: Permission denied 4.2.1 Message can not be delivered at this time )

Буду очень признателен, если кто-нибудь сможет пролить свет на этот вопрос для меня. Я пробовал 777'ing каталог электронной почты, но безрезультатно. Куда я иду не так?

Большое спасибо.

Ответы [ 4 ]

9 голосов
/ 28 марта 2012

Из документов postfix ...

По соображениям безопасности доставка в адресаты команд и файлов осуществляется с правами владельца базы данных псевдонимов.ИД пользователя по умолчанию, default_privs, используется для доставки команд / файлов в псевдонимах, принадлежащих пользователю root.

Таким образом, у вас есть два варианта, либо установите default_privs в main.cf, чтобы соответствовать владельцу файла email2php.способ создать базу данных псевдонимов, которая принадлежит пользователю вместо postfix / nobody.Я не пробовал этого раньше, хотя и не могу посоветовать.

3 голосов
/ 13 февраля 2014

Я исправил эту проблему, отключив SELINUX .

2 голосов
/ 28 марта 2012

Убедитесь, что у вас есть

#!/usr/bin/php
<?php

(или каков ваш путь к php - делайте "what php" на сервере) в верхней части каждого из ваших php-скриптов и что каждый из phpИсполняемые файлы сценариев

chmod +x /var/.../email2php.php

Также убедитесь, что вы можете протестировать сценарий из командной строки:

cat some_rfc822_email.txt | /var/.../email2php.php

и получить желаемый результат

0 голосов
/ 27 марта 2012

Чтобы решить эту проблему, вы захотите выполнить команду chown или chmod /var/www/vhosts/[myserver].com/httpdocs/clients/emailpipe/email2php.php для выполнения пользователем postfix. Также вы можете переопределить этого пользователя для успешного выполнения файла.

Простого изменения разрешений вашей директории (если вы не использовали -R) будет недостаточно.

Чтобы проиллюстрировать, почему это работает, рассмотрим следующий пример с игрушкой:

<me>@harley:~$ touch test
<me>@harley:~$ ls -al test
-rw-r--r-- 1 <me> <me> 0 2012-03-26 23:44 test
<me>@harley:~$ sh test
<me>@harley:~$
<me>@harley:~$ ./test
bash: ./test: Permission denied
<me>@harley:~$ chmod 755 test
<me>@harley:~$ ./test
<me>@harley:~$ 

Чтобы выполнить файл напрямую через запущенную оболочку, его необходимо установить как исполняемый. Другие вызовы (например, sh email2php.php или php email2php.php) требуют только доступа для чтения, поскольку они полностью связывают выполнение другого файла.

Что может быть причиной проблемы, см. здесь .

...