Big Problem mit Imap und Pop

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Big Problem mit Imap und Pop

    Imap und Pop3 Problem

    Ich habe ein script das alle imap konten aufruft (mit cron job alle 2 Minuten) und mit Filtern nach spam durchsucht,leider hängt sich imap service jedesmal auf. Wer kann mir damit helfen? Kann ich das auf pop3 ändern?

    hier das script:

    <?
    set_time_limit(0);
    require('include/common.php');
    $server='{'.$host.':143/imap}';
    function getHeaders($mbox, $min, $max){
    $overview = imap_fetch_overview($mbox,"$min:$max",0);
    if(is_array($overview)){
    reset($overview);
    $count = 1;
    while( list($key,$val) = each($overview)){
    $time = strtotime ( $val->date );
    if($TIME_ONLY_OPTION){
    $now = date($DEFAULT_TIME_FORMAT_SHORT, time() );
    $then = date($DEFAULT_TIME_FORMAT_SHORT, $time );
    if($now == $then){
    $time = date($DEFAULT_TIME_FORMAT_TIMEONLY, $time );
    }else{
    $time = date($DEFAULT_TIME_FORMAT, $time );
    }
    }else{
    $time = date($DEFAULT_TIME_FORMAT, $time );
    }
    $header[$count][0] = $time;
    $header[$count][1] = $val->from;
    $header[$count][2] = $val->subject;
    $header[$count][4] = $val->seen;
    $header[$count][5] = $val->size;
    $header[$count++][6] = $val->uid;
    }
    }
    return $header;
    }
    echo "Launching e-mail filter ... Running init<br>";
    echo "Initialising database ...";
    $qr1 = mysql_query('select * from users where 1');
    while($user = mysql_fetch_object($qr1) ){
    $userid = $user->uid;
    echo " Ok , found userid = ".$userid." <br>";
    echo "Connecting to POP3 server ...";
    echo $user->username." , ".$user->password." <br>";
    $mbox = imap_open($server,$user->username."@".$domain,$user->password );
    echo imap_last_error();
    if ($mbox!=false){
    echo "done.<br>";
    echo " Ok , found userid = ".$userid." <br>";
    echo "Counting messages ...";
    $msgnum=imap_num_msg($mbox);
    $header=getHeaders($mbox,0,$msgnum);
    echo "done.<br>";
    echo 'MSGNUM : '.$msgnum."<br>";
    for ($i=1; $i<=$msgnum; $i++){
    $subject=$header[$i][2];
    $seen=$header[$i][4];
    $uid=$i;
    echo $uid."<br>";
    $head= imap_fetchheader($mbox,$uid , 0);
    $h=imap_headerinfo($mbox,$uid, 250, 250);
    $from=$h->from;
    $to=$h->to;
    $subject=$h->fetchsubject;
    echo "Subject : ".$subject."<br>";
    if( sizeof($from) ){
    foreach ($from as $id => $object){
    $fromaddress = $object->mailbox . "@" . $object->host;
    }
    }
    $toaddress=$user->email;//$user->username."@".$domain;
    echo $uid.' : '.$fromaddress."<br>";
    echo $uid.' : '.$toaddress."<br>";
    $body=imap_body($mbox, $uid, FT_INTERNAL);
    $query='select * from emails where ((user='.$userid.')and(email like "%'.strtolower($fromaddress).'"))';
    $q = mysql_query($query); //((strtolower($fromaddress)!=strtolower('MAILER-DAEMON@yoursite.com'))
    $ppp=false;
    $pos = strpos(strtolower($fromaddress),strtolower('@'.$surl.'.com'));
    if ($pos === false) $ppp=true;
    if (strtolower($fromaddress)==strtolower($user.'@'.$surl.'.com')) $ppp=true;
    if (($ppp)){
    if ( mysql_num_rows($q)>0){
    $qa = mysql_fetch_object($q);
    if ($qa->action==2){
    imap_delete ($mbox, $uid, 0);
    imap_expunge($mbox);
    echo "message $uid deleted [blocked mail address] <br> ";
    }
    }else{
    $qa = mysql_query('select * from filters where user='.$userid);
    $action=3;
    while ( $q = mysql_fetch_object($qa) ){
    if ($q->field==1){
    $pos = strpos(strtolower($subject), strtolower($q->value));
    if (!($pos === false)){
    $action=$q->atype;
    break;
    }
    }else if ($q->field==2){
    $pos = strpos(strtolower($fromaddress), strtolower($q->value));
    if (!($pos === false)){
    $action=$q->atype;
    break;
    }
    }else if ($q->field==3){
    $pos = strpos(strtolower($toaddress), strtolower($q->value));
    if (!($pos === false)){
    $action=$q->atype;
    break;
    }
    }else if ($q->field==4){
    $pos = strpos(strtolower($body), strtolower($q->value));
    if (!($pos === false)){
    $action=$q->atype;
    break;
    }
    }
    }
    $confmessage = "Diese Nachricht erhalten sie automatisch!\r\n\r\nDer Empfänger {email} ist Mitglied von www.Spam-Schutz.net, melden Sie sich auch kostenlos bei www.Spam-Schutz.net an und blocken sie 99,9% aller Viren und Spam Mails. \r\n\r\nUm Ihre Nachricht weiter zu leiten, bitten wir Sie den folgenden Link zu bestätigen, sofort nach ihrer Bestätigung wird ihre Nachricht an {email} gesendet. \r\n{code}\r\n\r\n http://www.spam-schutz.net\r\n";
    if ($action==3){
    $vermessage=$confmessage;
    $vermessage=str_replace("{sitename}",$sitename,$vermessage);
    $vermessage=str_replace("{email}",$toaddress,$vermessage);
    $vermessage=str_replace("{fullname}",$fullname,$vermessage);
    $vermessage=str_replace("{subject}",$subject,$vermessage);
    $vercode=$fromaddress;
    $vercode .= chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(9 7,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).ch r(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97, 122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr(rand(97,122)).chr( rand(97,122)).chr(rand(97,122));
    $vercode.=$toaddress;
    $vermessage=str_replace("{code}",$siteurl.'/verify.php?code='.$vercode,$vermessage);
    list($pending) = mysql_fetch_array( mysql_query("select COUNT(*) from pemails where frome='$fromaddress' and user='$userid'") );
    if ( $pending > 0 ){
    // already added
    }else{
    wrapmail($fromaddress,'Die Nachricht muss bestätigt werden '.$toaddress,$vermessage,"From: $fullname <$toaddress>");
    echo "Bestätigungs Nachricht gesendet<br>";
    }
    mysql_query('insert into pemails VALUES (NULL, '.$userid.', \''.addslashes($subject).'\', \''.addslashes($head).'\', \''.addslashes($body).'\', \''.addslashes($vercode).'\' , \''.$fromaddress.'\')');
    imap_delete ($mbox, $uid, 0);
    imap_expunge($mbox);
    echo "message $uid deleted [sent to pending emails ] <br> ";
    }else if ($action==2){
    //cannot send message
    $cantmessage = "----- The following addresses had permanent fatal errors -----\r\n{toemail} (Reason: 550 5.2.1. {toemail}... Mailbox disabled, not accepting messages)\r\n\r\n\r\n550 5.1.1. {toemail} ... User unknown\r\n";
    $cantfrom=$adminemail;
    $cantmessage=str_replace("{toemail}",$toaddress,$cantmessage);
    wrapmail($fromaddress,"Returned mail: see transcript for details",$cantmessage,"From: $adminemail");
    imap_delete ($mbox, $uid, 0);
    imap_expunge($mbox);
    echo "message $uid deleted [filter detected block phrase] <br>";
    echo " To : ".$fromaddress."<br>";
    }else if($action==1){
    //afdasfdsafds
    }
    }//endelse
    }
    }
    imap_close($mbox);
    }
    }
    ?>
Lädt...
X