Atpic wrote: > Hi, > > I did not get a reply to my question on this list, most likely because nobody here had much of a clue as to how to help, I for one got my brain in a twist trying to figure what you were going on about, I didn't succeed :-) > so I raised a bug. The > bug was confirmed and fixed within 24 hours. Thank you the PHP team! that is impressive :-) > FYI the bug number is 40083 > http://bugs.php.net/40083 > You can now start filtering spam using your favorite programming language! care to elaborate? I'm sure there are lots of people that would like to do this - but silly old me can't figure out even where to start learning about this great sounding functionality. apologies if I am asking the blindingly obvious :-/ rgds, Jochem > > Thanks > Alex, Atpic.com Webmaster > http://atpic.com > >> Hi, >> >> I compiled the milter sapi, the example in the distribution works well. >> BUT when I try to get the values of the sendmail macros with the >> smfi_getsymval function, i desperately get a blank string. >> I used strace and I do see the "i" sendmail macro in a red system call but >> I can no red its value in the PHP milter. >> Any ideas? >> Is this worth logging a bug? >> >> Thanks >> >> ------- >> HERE is the code I used. It is just the distribution example with the >> milter_envfrom function modified by including two function calls: >> >> milter_log(smfi_getsymval("i")); >> milter_log(smfi_getsymval("{i}")); >> >> Example was retrieved from CVS: >> >> http://cvs.php.net/viewvc.cgi/php-src/sapi/milter/milter.php?revision=1.2&view=markup >> >> <?php >> /** >> * example milter script >> * >> * run: php-milter -D -p /path/to/sock milter.php >> * >> * for details on how to set up sendmail and configure the milter see >> * http://www.sendmail.com/partner/resources/development/milter_api/ >> * >> * for api details see >> * >> http://www.sendmail.com/partner/resources/development/milter_api/api.html >> * >> * below is a list of all callbacks, that are available through the milter >> sapi, >> * if you leave one or more out they simply won't get called (e.g. if you >> secify an >> * empty php file, the milter would do nothing :) >> */ >> >> /** >> * this function is called once on sapi startup, >> * here you can specify the actions the filter may take >> * >> * see >> http://www.sendmail.com/partner/resources/development/milter_api/smfi_register.html#flags >> */ >> >> function milter_log($msg) >> { >> $GLOBALS['log'] = fopen("/tmp/milter.log", "a"); >> fwrite($GLOBALS['log'], date("[H:i:s d.m.Y]") . "\t{$msg}\n"); >> fclose($GLOBALS['log']); >> } >> >> function milter_init() { >> milter_log("-- startup --"); >> milter_log("milter_init()"); >> smfi_setflags(SMFIF_ADDHDRS); >> } >> >> /** >> * is called once, at the start of each SMTP connection >> */ >> function milter_connect($connect) >> { >> milter_log("milter_connect('$connect')"); >> } >> >> /** >> * is called whenever the client sends a HELO/EHLO command. >> * It may therefore be called between zero and three times. >> */ >> function milter_helo($helo) >> { >> milter_log("milter_helo('$helo')"); >> } >> >> /** >> * is called once at the beginning of each message, >> * before milter_envrcpt. >> */ >> function milter_envfrom($args) >> { >> milter_log("milter_envfrom(args[])"); >> foreach ($args as $ix => $arg) { >> milter_log("\targs[$ix] = $arg"); >> } >> milter_log(smfi_getsymval("i")); >> milter_log(smfi_getsymval("{i}")); >> } >> >> /** >> * is called once per recipient, hence one or more times per message, >> * immediately after milter_envfrom >> */ >> function milter_envrcpt($args) >> { >> milter_log("milter_envrcpt(args[])"); >> foreach ($args as $ix => $arg) { >> milter_log("\targs[$ix] = $arg"); >> } >> } >> >> /** >> * is called zero or more times between milter_envrcpt and milter_eoh, >> * once per message header >> */ >> function milter_header($header, $value) >> { >> milter_log("milter_header('$header', '$value')"); >> } >> >> /** >> * is called once after all headers have been sent and processed. >> */ >> function milter_eoh() >> { >> milter_log("milter_eoh()"); >> } >> >> /** >> * is called zero or more times between milter_eoh and milter_eom. >> */ >> function milter_body($bodypart) >> { >> milter_log("milter_body('$bodypart')"); >> } >> >> /** >> * is called once after all calls to milter_body for a given message. >> * most of the api functions, that alter the message can only be called >> * within this callback. >> */ >> function milter_eom() >> { >> milter_log("milter_eom()"); >> /* add PHP header to the message */ >> smfi_addheader("X-PHP", phpversion()); >> } >> >> /** >> * may be called at any time during message processing >> * (i.e. between some message-oriented routine and milter_eom). >> */ >> function milter_abort() >> { >> milter_log("milter_abort()"); >> } >> >> /** >> * is always called once at the end of each connection. >> */ >> function milter_close() >> { >> milter_log("milter_close()"); >> } >> ?> >> >> Alex Madon http://atpic.com Webmaster >> >> -- >> PHP General Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> >> > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php