#!/usr/local/php5/bin/php
<?php
/*  @package Sendmail Wrapper
    @version 0.1
    @author MiRacLe <miracle@rpz.name>
    @since 13.03.2006
    @description For php, it means changing sendmail_path to point at this file. 
*/

    // unique message id to use for this message
    
$messageid uniqid('php');

    
// log file to write to (should use $messageid)
    
$logfile '/var/log/sendmail/'.$messageid;
    
// path to sendmail 
    
$sendmail '/usr/sbin/sendmail.real -t -i';

    
// additional headers
    
$add_headers = array();
    
$add_headers['X-MsgID'] = $messageid;

    if (
preg_match('~/home/([a-zA-Z0-9\._-]*)(/.*)?~'$_SERVER['PWD'], $matches)) {
        
$add_headers['X-Generating-Domain'] = $matches[1];
        
$logfile '/var/log/sendmail/'.$matches[1].'_'.$messageid;
    }

/*****************************************************************************
    Workhourse here ;o)
 *****************************************************************************/

    // read STDIN (mail message)
    
while (!feof(STDIN)) {
        
$data .= fread(STDIN1024);
    }
    
// split out headers
    
list ($headers$message) = explode("\n\n"$data2); 
    
// add additional headers
    
if ($add_headers) {
        foreach (
$add_headers as $field=>$contents) {
            
$headers .= "\n".$field.": ".$contents;
        }
    }

    
// reassemble the message
    
$data $headers."\n\n".$message;
    
$processUser posix_getpwuid(posix_geteuid());
    
// write to our log file
    
$_message 'Date:'."\t".date('r')."\n";
    
$_message .= 'PWD:'."\t".$_SERVER['PWD']."\n";
    
$_message .= 'UID:'."\t".$processUser['name']."\n";
    
$_message .= 'Msg ID'."\t".$messageid."\n\nMessage:\n----------\n";
    
$_message .= stripslashes($data);
    
file_put_contents($logfile,$_message);
    
$isSpam false;
/*    
    check spam signatures here
*/    
    // write to the real sendmail
    
if (! $isSpam) {
        
$h popen($sendmail"w");
        
fwrite($h$data);
        
pclose($h);
    }
?>