Я пытаюсь передать сообщение от постфикса к команде. Согласно журналам Postfix, это сработало, но когда я проверял команду, этого не произошло. Это свежая установка постфикса. Это мой файл псевдонима:
# See man 5 aliases for format
postmaster: root
support: "| /usr/bin/php -q /var/www/pipe/pipe.php"
я бегу sendmail support@mydomain.com
затем введите его, а затем на отдельной строке .
и это идет. Проверяю журнал постфикса /var/log/mail.log
и вот что в нем говорится:
Nov 2 15:32:33 server3 postfix/local[13284]: 42C429E0B5: to=<support@mydomain.com>, relay=local, delay=156, delays=156/0.01/0/0.05, dsn=2.0.0, status=sent (delivered to command: /usr/bin/php -q /var/www/pipe/pipe.php)
Таким образом, это сработало, но это не так. Если я сбегу echo 'text' | /usr/bin/php -q /var/www/pipe/pipe.php
он работает нормально.
Есть идеи, что я сделал не так?
Я знаю, что трубопровод работает, я изначально проверил его, выполнив эту команду выше БЕЗ кавычек, поэтому просто support: | /usr/bin/php -q /var/www/pipe/pipe.php
Что он там сделал, так это добавил мой заголовок электронной почты и все в файл pipe.php. Итак, я знаю, что postfix был связан с этим, но когда я помещаю кавычки, он говорит, что идет, но это не по моему сценарию.
Мне не хватало только одной строчки в моем /etc/postfix/main.cf
файл.
default_privs = www-data
Что странно, так как я пробовал запустить файл как 777, так что теоретически это должно было работать. Хорошо, теперь это работает. Итак, вкратце установите привилегии владельца файла, поскольку Postfix по умолчанию использует nobody
.