Наверное многие из пользователей Linux, пользовались Evolution, в свое время я его использовал и под Windows. В некоторых сборках, новых версиях Evolution, в пакете уже идет встроенный плагин позволяющий находить и удалять дубликаты почтовых сообщений, но в моей версии на CentOS этого функционала по умолчанию нет, что огорчает... Ниже расскажу о том, как установить remove-duplicates-plugin и в дальнейшем его использовать.

Итак:

  • доставляем библиотеки для разрабочика yum install evolution-dev
  • загружаем последнюю версию из каталога с плагином
  • распаковываем, компилируем, устанавливаем:
cd ~/Downloads
wget http://www.gnome.org/~carlosg/stuff/evolution/remove-duplicates-plugin-0.0.4.tar.gz
tar -xf remove-duplicates-plugin-0.0.4.tar.gz
cd remove-duplicates-plugin-0.0.4
./configure
make
sudo make install

Примечание: перед установкой плагина, Evolution необходимо закрыть

  • запускаем Evolution
  • выделяем все сообщения в папке с почтой
  • щелкаем правой кнопкой мыши, в контекстном меню выбираем - Remove duplicates

На случай, если плагин не устанавливается или не работает по каким либо причинам, есть скрипт, который справляется с этой задачей:

#!/usr/bin/env python
# author Marilen Corciovei Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., this code is offered AS IS, use at your own risk

import re, sys, email, getopt, marshal

msg_start = 'From'
cleaned = None
mids = {}

def parse_mbox(file_name):
    file = open(file_name, 'r')
    msg = ''
    lastLine = ''
    while 1:
        line = file.readline()
        if not line: break
        if line.startswith(msg_start) and lastLine == '':
            if len(msg) > 0:
                parse_msg(msg)
            msg = ''
        msg = msg + line #+ '\n'
        lastLine = line.strip()

def parse_msg(smsg):
    m = email.message_from_string(smsg)
    if 'message-id' in m:
        mid = m['message-id']
        if mid in mids:
            print 'Duplicate Message-ID:', mid
        else:
            print 'New Message-ID:', mid
            mids[mid]=mid
            cleaned.write(smsg)

if __name__=='__main__':
    in_file = ''
    out_file = ''
    hash_file = ''
    try:
        opts, args = getopt.getopt(sys.argv[1:], "i:o:h:")
    except getopt.GetoptError:
        print 'Usage', sys.argv[0], '-i input -o output [-h hash file]'
        sys.exit(2)
    for o, a in opts:
        if o == "-i":
            in_file = a
        if o == "-o":
            out_file = a
        if o == "-h":
            hash_file = a

    if in_file == '' or out_file == '':
        print 'Usage', sys.argv[0], '-i input -o output [-h hash file]'
        sys.exit(2)

    #global cleaned
    cleaned = open(out_file, 'w')
    if hash_file != '':
        try:
            mids = marshal.load(open(hash_file,'r'))
        except:
            pass

    parse_mbox(in_file)
    if hash_file != '':
        marshal.dump(mids, open(hash_file,'w'))

Используется:

/cleanupmbox.py -i ~/.evolution/mail/local/Inbox  -o ~/.evolution/mail/local/Inbox.ok -h inbox.h

Добавить комментарий


Защитный код
Обновить

Сейчас 430 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз