Mam przepis na procmail, który pobiera treść wiadomości i wysyła ją do skryptu php. Jednak procmail narzeka z błędem.
Oto, jak to działa: Użytkownik, który potrzebuje dostępu do parametrów sprzętowych, musi zarejestrować się za pośrednictwem poczty e-mail w następujący sposób:
Temat: Zarejestruj
ciało: ??
Procmail następnie wysyła ciało do skryptu php w celu przetworzenia. Powód, dla którego używam „??” jest ułatwienie mi odfiltrowywania śmieci z ciała przez grep.
Oto błąd w procmail.log:
From fetchmail Fri Nov 25 15:41:36 2016
Subject: Register
Folder: /root/mail/inbox/inbox 3673
procmail: [20601] Fri Nov 25 15:43:44 2016
procmail: Assigning "DEFAULT=/root/mail/inbox/inbox"
procmail: Assigning "PMDIR=/root/.procmail"
procmail: Match on "^Subject.*[R|r]egister$"
procmail: Executing "/usr/bin/php,-f,/root/data/scripts/register.php"
procmail: Executing "??myusername:me@gmail.com:mypass1??"
/bin/sh: 0: Can't open ??myusername:me@gmail.com:mypass1??
Oto mój przepis na procmail:
SHELL=/bin/sh
HOME=$HOME
PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin
SENDMAIL=/usr/sbin/sendmail
MAILDIR=$HOME/mail
LOGFILE=/var/log/procmail.log
LOGABSTRACT="all"
VERBOSE="on"
DEFAULT=$HOME/mail/inbox/inbox
PMDIR=$HOME/.procmail
:0
* ^Subject.*[R|r]egister$
{
:0 bf
| `/usr/bin/php -f /root/data/scripts/register.php`
}
Oto skrócony fragment skryptu register.php:
#!/usr/bin/php
<?php
while ( false !== ( $user_register = fgets ( STDIN ) ) )
{
$user_info = preg_match ( "/\?\?.*\?\?/", @$user_register, $new_registration ) ;
foreach ( $new_registration as $input )
{
print ( $input."\n" ) ;
}
}
Nie sądzę, żeby miało to coś wspólnego z kodem php, ponieważ mam podobnie skonstruowane przepisy i kod php.
Jakieś wskazówki?