adres_defteri isimli bir tablo olusturdum ve oncelikle buraya verileri bastim. Sonra users tablosundaki emaillerle eslestirerek contacts tablosuna eklettim.

*tablo yapisi :*

CREATE TABLE adres_defteri
(
  email_from character varying(100) NOT NULL,
  email_to character varying(100) NOT NULL,
  ad_soyad character varying(100),
  CONSTRAINT birincil PRIMARY KEY (email_from, email_to)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE adres_defteri OWNER TO roundcube;

*kod:*

<?php

$db = pg_connect("host=localhost port=5432 dbname=roundcube user=hebele password=hubele");

function mail_ekle($db, $mail_from, $mail_to, $isim)
{
    if (strstr($mail_from,'@') && strstr($mail_to,'@'))
    {
$sql = "INSERT INTO adres_defteri(email_from, email_to, ad_soyad) VALUES ('$mail_from', '$mail_to', '$isim')";
        pg_query($db, $sql);
    }
}

function mail_oku($db,$path)
{
    if ( !($handle = fopen($path, 'r') ) ) {
        echo "Dosya acilamadi.";
        return ;
    }

    $satir = array();
    $i = 0;

    while (!feof($handle)) {

        $satir[$i] = fgets($handle);

        if (strstr($satir[$i], 'From: ')) {
            $exp = explode('<', $satir[$i]);
            $exp1 = explode('>', $exp[1]);

            $fromMail = $exp1[0];
        }

        if (strstr($satir[$i], 'To: ')) {
            $n = $i;
        }

        if (strstr($satir[$i], 'Subject: ')) {
            $j = $i;
            break;
        }

        if ($i > 500)
        break;

        $i++;
    }

    $mailTo = array();

    for ($k = $n; $k < $j; $k++)
    {
        if (strstr($satir[$k], 'To:')){

        $mailToExp = explode('To: ', $satir[$k]);
        $mailToExp1 = explode(',', $mailToExp[1]);

        for ($m = 0; $m < count($mailToExp1); $m++)
        {
             $exp = explode('<', $mailToExp1[$m]);
             $isim = $exp[0];
            $exp1 = explode('>', $exp[1]);

            if (strstr($exp1[0], '@')){
                //$mailTo[] = "$isim ".$exp1[0]."\n";
                mail_ekle($db, $fromMail, $exp1[0], trim($isim));
            }
        }

        }

if (!strstr($satir[$k], 'To:') && !strstr($satir[$k], 'Cc:' && !strstr($satir[$k], 'Bcc:'))){
            $exp = explode('<', $satir[$k]);
             $isim = $exp[0];
            $exp1 = explode('>', $exp[1]);

            if (strstr($exp1[0], '@')) {
                //$mailTo[] = "$isim ".$exp1[0]."\n";
                mail_ekle($db, $fromMail, $exp1[0], trim($isim));
            }
        }
    }
    unset($satir);
}


*//burada vdominfo uygulamasinin full pathi de verilebilir*

$fp = popen('vdominfo -d', 'r');

while (!feof($fp)){

    $path = str_replace("\n", '', fgets($fp));

    if (strlen($path) > 5)
    {
        echo $path."\n";
        if  (is_dir($path))
                $dir_handle  =  opendir($path);

        if  (!$dir_handle)
               break;

        while($file  =  readdir($dir_handle))
        {
if ($file != "." && $file != ".." && $file != 'postmaster')
                {
                        if  (is_dir($path."/".$file))
                        {

$sent = $path.'/'.$file.'/'.'/Maildir/.Sent/cur';

                            if  (is_dir($sent))
                                    $dir_handle2  =  opendir($sent);

                            if  (!$dir_handle2)
                                   break;

                            while($email  =  readdir($dir_handle2))
                            {
                                if  ($email !=  "." &&  $email !=  "..")
                                {
                                        if  (is_file($sent.'/'.$email))
                                        {
                                            //echo $sent.'/'.$email."\n" ;
                                mail_oku($db,$sent.'/'.$email);
                                        }
                                }
                            }
                        closedir($dir_handle2);
                        }
                }
        }

        closedir($dir_handle);
    }

}


On 02/06/2011 08:31 AM, Ahmet Ates wrote:
Hocam valla bisey diyemedim, Once gecmis olsun ama geri donebildigine sevindim, e haliyle bu degerli scripti gormek isterim tabii :)


2011/2/6 Atif CEYLAN <[email protected] <mailto:[email protected]>>

    Bu gun pgadmin uygulamasinin ve mouse'umun azizligine ugradim. Sag
    tiklayip roundcube user sayisini saydirayim derken mouse takildi
    ve truncate cascade linkine kaydi. evet mi hayirmi promtu yes
    secenegi secili olarak onume geldi. Sonra no basmak yerine carpiya
    bastim aklimca ama carpiya basmayi evet saymasinin ardindan tum
    user tablosu ve foreign key ile bagli contacts tablosu bosaldi.

    Bende oturdum gonderilen emaillerden contact list olusturacak bir
    uygulama yazdim. Eger ihtiyac duyarsaniz bunu gonderebilirim. Imap
    Sent klasorundeki emaillerin icerisindeki to'lari toplayip
    veritabanina yaziyor.

    On 02/05/2011 05:14 PM, Ahmet Ates wrote:
    Selam arkadaslar,

    qmailtoaster la birlikte roundcube kullanacak olursam, her bi
    domain icin global adres defterini, o domain nin contack
    listinden nasil olusturabilirim, squirrel mail icin bu sekilde
    scriptler var ancakroundcube icin bulamadim. bu kounuda
    tecrubelerinizipaylasabilirmisiniz.



_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux-sunucu


--
/**
 * @author Atıf CEYLAN
 * Software Developer&  System Admin
 * http://www.atifceylan.com
 */

_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux-sunucu

Cevap