Канал Postfix "mail-to-script" доставляет только пустые сообщения

У меня есть проблема здесь.

Я хочу, чтобы входящее электронное письмо передавалось в php-скрипт в системе через postfix.

Моя система работает с ispconfig 3, postfix и dovecot (<пользователи виртуальных почтовых ящиков сохраняются в mysql).

Я уже смотрел на это: Как настроить postfix для передачи всей входящей электронной почты в скрипт?

... сценарий выполнен, но "сообщение" не доставлено в сценарий. Мои настройки пока:

В ISPConfig 3 я настроил следующий почтовый маршрут:

Active      Server          Domain              Transport   Sort by
Yes         example.com     pipe.example.com    piper:      5

выдержка из моего постфикса master.cf:

piper   unix  -       n       n       -       -       pipe
    user=piper:piper directory=/home/piper argv=php -q /home/piper/mail.php

пока все работает отлично (почта отправлена ​​на test@pipe.example.com) (mail.log):

Jun 21 16:07:11 example postfix/pipe[10948]: 235CF7613E2: to=<test@pipe.example.com>, relay=piper, delay=0.04, delays=0.01/0.01/0/0.02, dsn=2.0.0, status=sent (delivered via piper service)

... и нет ошибок в mail.err

mail.php успешно выполнен (его chmod 777 и chown'ed to piper), но создает пустой файл.txt (обычно он должен содержать сообщение электронной почты):

-rw------- 1 piper piper    0 Jun 21 16:07 mailtext_1340287631.txt

использованный мною сценарий mail.php - http://www.email2php.com/HowItWorks

если я использую их (коммерческий) сервис для передачи электронной почты на mail.php (в среде apache2) через предоставленный "pipe-email", сообщение будет успешно сохранено и завершено. Но, как вы видите, я не хочу использовать внешние сервисы.

-rw-r--r--  1 web2 client0  1959 Jun 21 16:19 mailtext_1340288377.txt

Итак, что здесь не так? Я думаю, что это как-то связано с "доставкой конфигурации" в моей системе...

1 ответ

Решение

Это потому, что ваш PHP-скрипт является дерьмом. Это не сохраняет STDIN в файл. Вместо этого он сохраняет неинициализированную (пустую) переменную в файл. Вот почему он пуст.

Вы должны изучить PHP, чтобы решить эту проблему.

Другие вопросы по тегам