* [Comm] Mozilla Thunderbird
@ 2004-12-02 10:11 Сергей Шамрин
2004-12-02 10:16 ` evgen
2004-12-02 12:14 ` [Comm] " Vitaly Ostanin
0 siblings, 2 replies; 6+ messages in thread
From: Сергей Шамрин @ 2004-12-02 10:11 UTC (permalink / raw)
To: community
Кто-нибудь знает плагин для Mozilla Thunderbird который позволяет
удалять копии сообщений?
Просто при переходе с The Bat на Mozilla Thunderbird появилось несколько
тысяч копий сообщений в разных папках и руками их удалять больно
проблематично.
Заранее спасибо.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Mozilla Thunderbird
2004-12-02 10:11 [Comm] Mozilla Thunderbird Сергей Шамрин
@ 2004-12-02 10:16 ` evgen
2004-12-02 12:56 ` Kolotov Alexandr
2004-12-02 12:14 ` [Comm] " Vitaly Ostanin
1 sibling, 1 reply; 6+ messages in thread
From: evgen @ 2004-12-02 10:16 UTC (permalink / raw)
To: community
Сергей Шамрин пишет:
> Кто-нибудь знает плагин для Mozilla Thunderbird который позволяет
> удалять копии сообщений?
> Просто при переходе с The Bat на Mozilla Thunderbird появилось несколько
> тысяч копий сообщений в разных папках и руками их удалять больно
> проблематично.
> Заранее спасибо.
Нету. Сам искал.
Нашёл только прогу для обработки UNIX ящиков.
Но в данный момент она утеряна. И как зовётся - не помню.
Но нашёл я её на сайте мозиллы (на форуме)
Евгений
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Comm] Re: Mozilla Thunderbird
2004-12-02 10:11 [Comm] Mozilla Thunderbird Сергей Шамрин
2004-12-02 10:16 ` evgen
@ 2004-12-02 12:14 ` Vitaly Ostanin
2004-12-02 12:47 ` Сергей Шамрин
1 sibling, 1 reply; 6+ messages in thread
From: Vitaly Ostanin @ 2004-12-02 12:14 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 1053 bytes --]
Сергей Шамрин пишет:
> Кто-нибудь знает плагин для Mozilla Thunderbird который позволяет
> удалять копии сообщений?
> Просто при переходе с The Bat на Mozilla Thunderbird появилось несколько
> тысяч копий сообщений в разных папках
Это очень странно, я несколько раз так переносил почту, и ни разу
такого не было.
> и руками их удалять больно
> проблематично.
> Заранее спасибо.
Если возможности повторить переезд нет, а папки создавались по
автоматическим фильтрам, то можно попробовать так:
- слить все папки в одну большую
- написать procmailrc, где указать правила автоматической фильтрации
- в начало правил вписать убиение дубликатов (рецепт не мой):
:0 Whc: msgid.lock
| formail -D 8192 msgid.cache
:0 a:
duplicates
После чего натравить procmail на эту большую папку. В результате
почта должна быть отсортирована по указанным папкам, а все
дубликаты помещены в duplicates.
man procmail
man formail
в основном, на тему примеров.
Запарно, что и говорить :)
<skipped/>
--
Regards, Vyt
mailto: vyt@vzljot.ru
JID: vyt@vzljot.ru
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Re: Mozilla Thunderbird
2004-12-02 12:14 ` [Comm] " Vitaly Ostanin
@ 2004-12-02 12:47 ` Сергей Шамрин
2004-12-02 14:52 ` Vitaly Ostanin
0 siblings, 1 reply; 6+ messages in thread
From: Сергей Шамрин @ 2004-12-02 12:47 UTC (permalink / raw)
To: community
> Это очень странно, я несколько раз так переносил почту, и ни разу
> такого не было.
>
> Если возможности повторить переезд нет, а папки создавались по
> автоматическим фильтрам, то можно попробовать так:
>
это точно, повторить не получиться
> - слить все папки в одну большую
> - написать procmailrc, где указать правила автоматической фильтрации
> - в начало правил вписать убиение дубликатов (рецепт не мой):
>
> :0 Whc: msgid.lock
> | formail -D 8192 msgid.cache
>
> :0 a:
> duplicates
>
> После чего натравить procmail на эту большую папку. В результате почта
> должна быть отсортирована по указанным папкам, а все дубликаты
> помещены в duplicates.
>
> man procmail
> man formail
> в основном, на тему примеров.
>
> Запарно, что и говорить :)
я так понимаю что это все под linux? а под виндой нет такой возможности?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Mozilla Thunderbird
2004-12-02 10:16 ` evgen
@ 2004-12-02 12:56 ` Kolotov Alexandr
0 siblings, 0 replies; 6+ messages in thread
From: Kolotov Alexandr @ 2004-12-02 12:56 UTC (permalink / raw)
To: community
>> Кто-нибудь знает плагин для Mozilla Thunderbird который позволяет
>> удалять копии сообщений?
>> Просто при переходе с The Bat на Mozilla Thunderbird появилось
>> несколько тысяч копий сообщений в разных папках и руками их удалять
>> больно проблематично.
>> Заранее спасибо.
>
>
> Нету. Сам искал.
> Нашёл только прогу для обработки UNIX ящиков.
> Но в данный момент она утеряна. И как зовётся - не помню.
> Но нашёл я её на сайте мозиллы (на форуме)
где-то когда-то нашел...
----------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
# mergebox [-h] [-d]
#
# Merge mboxen. First argument is taken to be the destination mbox, all
# other arguments are asssumed to be source mboxen. If a message doesn't
# have a Message-ID, construct one using MD5. Can read Maildirs as well.
# Uses Mail::Folder::Mbox, which is nominally obsolete. Will optionally
# delete messages older than date (ISO format YYYYMMDDhh:mm:ss) from
# source mbox(en).
# Performance - When reading the destination mbox, this program will look
# out for duplicate messages and keeps the longer message (under the
# assumption that truncation is the biggest source of duplicates). Not
# the best, but who knows. Once the destination mbox has been parsed,
# the program will read mbox (or maildir) looking out for duplicates.
# If the duplicate is smaller, it is skipped. If it is longer, it is
# appended (and a warning printed). The next time the destination is
# processed, the duplicate should be picked up and dealt with.
#
# The applicable license for distributing this module, is that
# which is common across much of the perl world, that being you get
# to use your choice of either The Artistic License of perl,
# or the GPL. You can find copies of the Artistic License at
# perl.com (and other places), and you can find copies of the GNU
# Public License at Gnu.org (and other places).
#
# Gordon Haverland, Matter Realisations, perl@materialisations.com
# 2003/05/11
use Digest::MD5 qw(md5_base64);
use Mail::Folder::Mbox;
use Mail::Folder::Maildir;
use Mail::Internet;
use Getopt::Std;
use Date::Manip;
use vars qw($opt_h $opt_d);
my( $date, $date_dm, $past );
getopts('hd:'); # Delete messages older than $opt_d in source(s)
&usage() if( $opt_h );
if( $opt_d ) {
die "Strange input (Date::Manip) format\n"
unless( $opt_d =~ /^\d\d\d\d\d\d\d\d\d\d:\d\d:\d\d$/ );
}
#use Data::Dumper; # For debugging
my( %dest, # Cache of Message-ID's
$dest_folder, $dest_mbox, # destination mbox/folder
$email, # Mail::Internet email object
$hdr, # Mail::Header header of $email
$ID, # Message-ID of $email message
$junk, # Flag to show if Message-ID present
$size, # Size of message, as mbox message.
$src_folder, $src_mbox, # (Temporary) source mbox/folder name.
@list, # Array to stick message numbers into
);
if( $#ARGV > 0 ) {
$dest_mbox = shift( @ARGV );
} else {
&usage();
}
# Some email systems, have a placeholder first message, so create
# one here too. The dummy message was sent at the origin of the
# UNIX epoch (Jan 1, 1970).
unless( -e $dest_mbox ) {
# Grrrrr, now I find out that Mail::Folder is no longer supported,
# and that Mail::Box is (sort of) preferred. Okay, create a
# single message mbox by hand.
&write_init_mbox();
}
$dest_folder = new Mail::Folder('mbox', $dest_mbox ) ||
die "Error, $dest_mbox is NOT a mbox\n";
my $dmessages = 0;
my $smessages = 0;
my $amessages = 0;
@list = []; # Empty list.
# All our messages in destination mbox, are tidied, and have
# Message-IDs. Get the first message, then iterate on the
# folder until all messages are processed.
@list = sort { $a <=> $b } $dest_folder->message_list;
foreach (@list) {
$email = $dest_folder->get_message( $_ );
$dmessages++;
($ID, $size, $junk) = &get_id( $email );
die "Bad destination folder:($ID,$size,$junk)\n" if( $junk );
if( exists( $dest{$ID} ) ) { # Message exists already
if( $dest{$_}->{size} && ($dest{$_}->{size} >= $size) ) {
# Truncation is the most common problem, assume newer message
# (which is smaller or same size) can be ignored (with warning).
print STDERR "Repeat message ($ID), keeping earlier one (bigger)\n";
$dest_folder->delete_message( $_ );
} else {
# Later message is bigger, keep it.
print STDERR "Repeat message ($ID), keeping later one (bigger)\n";
$dest_folder->delete_message( $dest{$ID}->{msg} );
$dest{$ID}->{msg} = $_;
$dest{$ID}->{size} = $size;
}
} else {
my $hash = {};
$hash->{msg} = $_;
# $hash->{ID} = $ID;
$hash->{size} = $size;
$dest{$ID} = $hash;
}
}
# Okay, we are initialized. Start to read in source folders and
# process them.
while( $src_mbox = shift( @ARGV ) ) {
my( @del_messages );
if( -e $src_mbox ) {
unless( $src_folder = new Mail::Folder('AUTODETECT', $src_mbox, ) ) {
print "$src_mbox is NOT an mbox or maildir\n";
next;
}
} else {
print "$src_mbox doesn't exist\n";
next;
}
eval {
@list = sort { $a <=> $b } $src_folder->message_list;
};
foreach (@list) {
$email = $src_folder->get_message( $_ );
$hdr = $email->head();
if( $opt_d ) {
$date = $hdr->get('Date');
if( $date_dm = &ParseDate($date) ) {
$past = &Date_Cmp( $date_dm, $opt_d );
if( $past < 0 ) {
push( @del_messages, $_ );
}
}
}
$smessages++;
($ID, $size, $junk) = &get_id( $email );
if( $junk ) { # No Message-ID, so MD5 calculated. Make new email
$email->tidy_body();
my $body = $email->body();
$hdr->add('Message-ID', $ID);
$email = new Mail::Internet( Header => $hdr, Body => $body );
}
unless( exists( $dest{$ID} ) ) {
my $hash = {};
$hash->{msg} = -1; # Don't know message number
$hash->{size} = $size;
$dest{$ID} = $hash;
$dest_folder->append_message( $email );
$amessages++;
} else { # Message already exists
if( $size > $dest{$ID}->{size} ) {
print "Newer duplicate Message-ID ($ID), but bigger. Appending anyway\n";
$dest_folder->append_message( $email );
$amessages++;
} else {
print "Message $ID already exists in dest, skipping\n";
}
}
}
if( $opt_d && ($#del_messages > 0) ) {
$src_folder->delete_message( @del_messages );
$src_folder->sync;
}
$src_folder->close;
}
$dest_folder->sync;
$dest_folder->close;
#undef( $dest_folder );
print STDERR "$dmessages originally in $dest_mbox\n";
print STDERR "$smessages in source folders to process\n";
print STDERR "and $amessages of those were added to $dest_mbox\n";
exit( 0 );
sub get_id {
my $email = shift;
my $hdr = $email->head();
my @tags = $hdr->tags();
my @mids = grep( /Message-ID/i, @tags );
@mids = grep( !/Resent-Message-ID/i, @mids ); # Filter out Resent
if( $#mids > -1 ) { # We have a Message-ID, use it
my $mid;
if( $#mids == 0 ) {
$mid = $hdr->get( $mids[0] );
} else {
print "Strange, more than 1 Message-ID here\n";
foreach (@mids) { print " $_\n"; }
$mid = $hdr->get( $mids[0] );
}
my $size = length( $email->as_mbox_string() );
return( $mid, $size, undef );
} else { # Make one from MD5 hash
$email->tidy_body();
my $size = length( $email->as_mbox_string() );
my $md5 = md5_base64( $email->as_string() );
return( $md5, $size, $md5 );
}
}
sub write_init_mbox {
my $hdr = new Mail::Header(MailFrom => "KEEP");
my @hdr_array = [
'From nobody@nowhere.org',
'From: nobody@nowhere.org',
'To: nobody@nowhere.org',
'Date: Thur, 1 Jan 1970 00:00:01 -0700 (MST)',
'Subject: Dummy Message for Mbox',
];
my @bdy_array = [
"Don't delete this message, I need a stub message.\n",
];
$hdr->extract( @hdr_array );
my $email = new Mail::Internet( Header => $hdr, Body => @bdy_array );
my $email_as_string = $email->as_mbox_string;
# Note, this is a constant. We could save time and just calculate
# it once and then store that value here.
my $ID = md5_base64( $email_as_string );
$hdr->add( 'Message-ID', $ID );
$email = new Mail::Internet( Header => $hdr, Body => @bdy_array );
$email_as_string = $email->as_mbox_string;
open( MBOX, "> $dest_mbox" ) ||
die "Can't open $dest_mbox to write initial message to\n";
print MBOX $email_as_string;
close( MBOX );
}
------------------------------------------------------------------------------
--
С уважением, Kolotov Alexandr aka mr. Эбола
отвечать: akmypost@mail.ru
ICQ: 100349254
---------------------------------------
| Registered Linux user # 236664 |
---------------------------------------
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Comm] Re: Mozilla Thunderbird
2004-12-02 12:47 ` Сергей Шамрин
@ 2004-12-02 14:52 ` Vitaly Ostanin
0 siblings, 0 replies; 6+ messages in thread
From: Vitaly Ostanin @ 2004-12-02 14:52 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 831 bytes --]
Сергей Шамрин пишет:
<skipped/>
>>- слить все папки в одну большую
>>- написать procmailrc, где указать правила автоматической фильтрации
>>- в начало правил вписать убиение дубликатов (рецепт не мой):
>>
>>:0 Whc: msgid.lock
>>| formail -D 8192 msgid.cache
>>
>>:0 a:
>>duplicates
>>
>>После чего натравить procmail на эту большую папку. В результате почта
>>должна быть отсортирована по указанным папкам, а все дубликаты
>>помещены в duplicates.
>>
>>man procmail
>>man formail
>>в основном, на тему примеров.
>>
>>Запарно, что и говорить :)
>
> я так понимаю что это все под linux? а под виндой нет такой возможности?
Можно переехать обратно в бат, убить дубликаты, и переехать в TB :)
Под винду тоже можно завести unix-окружение, cygwin там...
<skipped/>
--
Regards, Vyt
mailto: vyt@vzljot.ru
JID: vyt@vzljot.ru
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2004-12-02 14:52 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-12-02 10:11 [Comm] Mozilla Thunderbird Сергей Шамрин
2004-12-02 10:16 ` evgen
2004-12-02 12:56 ` Kolotov Alexandr
2004-12-02 12:14 ` [Comm] " Vitaly Ostanin
2004-12-02 12:47 ` Сергей Шамрин
2004-12-02 14:52 ` Vitaly Ostanin
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git