'Content-length' needs to be 'Content-Length' are you kidding me?
/** * Scan RAW-Message with spamd * * @param string $socket_path spamd-socket * @param string $eml_path sample-file* @param boolean $bayes_only only return bayes-classification ('BAYES_00', 'BAYES_05'...)
* @return string * @access public */function spamc_report($socket_path, $eml_path, $bayes_only=false, $user='sa-milt')
{ $response = ''; $protocol_version = '1.5'; $socket = fsockopen('unix://' . $socket_path); if($socket) { $raw_eml = trim(file_get_contents($eml_path)) . "\r\n"; fwrite($socket, 'REPORT SPAMC/' . $protocol_version . "\r\n"); fwrite($socket, 'Content-length: ' . strlen($raw_eml) . "\r\n"); fwrite($socket, 'User: ' . $user . "\r\n"); fwrite($socket, "\r\n"); fwrite($socket, $raw_eml); fwrite($socket, "\r\n"); while(true) { $buffer = fgets($socket, 128); $response .= $buffer; if(feof($socket)) { break; } }$response = substr($response, strpos($response, 'Content analysis details'));
if($bayes_only) { $result = '';$result_types = array('BAYES_00', 'BAYES_05', 'BAYES_20', 'BAYES_40', 'BAYES_50', 'BAYES_60', 'BAYES_80', 'BAYES_95', 'BAYES_99', 'BAYES_999');
foreach($result_types as $result_type) { if(strpos($response, ' ' . $result_type . ' ') !== false) { $result = $result_type; break; } } return $result; } else { return $response; } } } Am 27.06.2016 um 02:11 schrieb Reindl Harald:
i try to pass samples directly over spamd protocol in therory that looks good but log and scan starts after the client closes the conenction or the script exists, as long it tries ot read the response nothing happens at all without the "fread($socket, 1024);" it terminates immediately, log shows scanning, with the fread() ut take some time, nothing happens on the server side and after a while the script finishes and spamd scans the data well, the whole purpose is to fread(9 or fgets() the response _______________________________________________ un 27 02:05:44 mail-gw spamd[2991]: spamd: checking message <56b9f2a1.6050...@testserver.rhsoft.net> for sa-milt:189 Jun 27 02:05:46 mail-gw spamd[2991]: spamd: identified spam (13.1/5.5) for sa-milt:189 in 12.0 seconds, 1552 bytes. Jun 27 02:05:46 mail-gw spamd[2991]: spamd: result: Y 13 - BAYES_50,CUST_BODY_BEGINS_VL,RAZOR2_CF_RANGE_51_100,RAZOR2_CF_RANGE_E8_51_100,RAZOR2_CHECK,SPF_HELO_FAIL,TVD_SPACE_RATIO,URIBL_DBL_SPAM,URIBL_LOCAL scantime=12.0,size=1552,user=sa-milt,uid=189,required_score=5.5,rhost=localhost,raddr=127.0.0.1,rport=/run/spamassassin/spamassassin.sock,mid=<56b9f2a1.6050...@testserver.rhsoft.net>,bayes=0.498469,autolearn=disabled,shortcircuit=no _______________________________________________ <?php $socket_path = '/run/spamassassin/spamassassin.sock'; echo spamc_headers($socket_path, __DIR__ . '/test1.eml', /**$bayes_only*/0); function spamc_headers($socket_path, $eml_path, $bayes_only=0, $user='sa-milt') { $protocol_version = '1.5'; $socket = fsockopen('unix://' . $socket_path, NULL); if($socket) { $raw_eml = trim(file_get_contents($eml_path)) . "\r\n"; $cmd = 'HEADERS SPAMC/' . $protocol_version . "\r\n"; $cmd .= 'Content-Length: ' . strlen($raw_eml) . "\r\n"; $cmd .= 'User: ' . $user . "\r\n"; $cmd .= "\r\n"; $cmd .= $raw_eml; $cmd .= "\r\n"; fwrite($socket, $cmd); echo fread($socket, 1024); } } ?>
signature.asc
Description: OpenPGP digital signature