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

Канал Postfix «почта-скрипт» доставляет только пустые сообщения

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

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

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

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

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

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

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

выдержка из моего postfix 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) через предоставленный "канал-адрес электронной почты", сообщение будет успешно сохранено и завершено. Но, как видите, я не хочу использовать внешние сервисы.

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

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

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

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