Канал 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, чтобы решить эту проблему.