2009-10-12 4 views
1

Я бы хотел «разделить» две папки IMAP (на двух разных серверах) для сравнения спам-фильтров, я хотел бы иметь инструмент командной строки (linux), чтобы получить только заголовки (не весь каталог, например, используя 'ISYNC' или подобное), что-то вроде этого:IMAP папки diff?

$ imapget --subjects -p = пароль пользователя @ сервер

или это:

$ imapget --format «$ DATE - $ FROM - $ SUBJ "-p = пароль user @ server

('imapget' cmd является вымышленным)

Что бы вы посоветовали?

Спасибо

+0

Вероятно, это относится к серверу, или, возможно, к суперпользователю. –

ответ

0

easies путь, вероятно, чтобы получить Perl и Mail :: IMAPClient и использовать что-то вроде:

 use Mail::IMAPClient; 
    my $imap = Mail::IMAPClient->new(
     Server => $imaphost, User => $login, Password => $pass, Uid => 1 
    ); 

    $imap->select("demo_folder"); 

    my $msgs = $imap->search("ALL"); 
    for my $h (

     # get specified headers from every message in folder "demo_folder" the 

     values %{ $imap->parse_headers($msgs , "Date", "From", "Subject") }) 
    { 
     # $h is the value of each element in the hash ref returned 
     # from parse_headers, and $h is also a reference to a hash. 
     # We'll only print the first occurrence of each field because 
     # we don't expect more than one particular header line per 
     # message. 
     print map { "$_:\t$h->{$_}[0]\n"} keys %$h; 
    } 
1

Я бы зеркало две папки IMAP в локальных папках Maildir, используя что-то вроде OfflineIMAP , imapsync, imapcopy, isync или mailsync.

Тогда я бы использовал что-то вроде mailutils для вывода списков сообщений в обоих случаях и их разграничения.