헤더가 약간 다른 경우 maildir에서 "중복" 메시지 찾기

헤더가 약간 다른 경우 maildir에서 "중복" 메시지 찾기

내 문제는 내가 GMail의 pop3 가져오기 기능을 많이 사용하여 다른 GMail 계정에서 메일을 가져오는 데 사용한다는 것입니다. 그러나 그 당시에는 이전에 서버에 저장된 모든 메일이 아닌 새 메일만 가져오고 있었습니다. 이제 선택한 메일 클라이언트로 mutt를 사용하기 시작했으므로 이전 메일 계정을 모두 가져와서 이전 메일을 모두 로컬에 보관하기로 결정했습니다.

나의 초기 희망은 fdupes와 같은 도구를 사용하여 중복된 이메일을 쉽게 지울 수 있다는 것이었지만 GMail이 Pop3를 통해 이메일을 검색할 때 여기에서 볼 수 있듯이 헤더가 약간 변경된다는 점은 예상하지 못했습니다.

@@ -1,7 +1,16 @@
 Return-Path: <[email protected]>
 Delivered-To: unknown
 Received: from pop.gmail.com (74.125.43.109:995) by localhost with POP3-SSL;
-  10 May 2011 13:35:06 -0000
+  10 May 2011 14:29:41 -0000
+Delivered-To: [email protected]
+Received: by 10.204.52.199 with SMTP id j7cs172325bkg;
+        Sun, 2 May 2010 15:33:19 -0700 (PDT)
+Received: by 10.204.136.15 with SMTP id p15mr6011875bkt.172.1272839446530;
+        Sun, 02 May 2010 15:30:46 -0700 (PDT)
+Received-SPF: softfail (google.com: best guess record for domain of transitioning [email protected] does not designate 84.167.28.93 as permitted sender) client-ip=84.167.28.93;
+Received: by 10.188.26.17 with POP3 id 17mf826641bwz.107;
+        Sun, 02 May 2010 15:30:46 -0700 (PDT)
+X-Gmail-Fetch-Info: [email protected] 1 smtp.gmail.com 995 xxxx
 Received: from aequitas ( [84.167.28.93])
         by mx.google.com with ESMTPS id e20sm18902485fga.1.2008.01.04.07.58.46
         (version=TLSv1/SSLv3 cipher=RC4-MD5);

원래 모습은 이렇습니다.http://pastebin.com/U6YzNySP 이러한 "중복 파일"을 쉽게 삭제할 수 있는 방법이 있습니까?

답변1

중복 항목을 식별하려면 mx.google.com의 ESMTPS ID를 사용하세요. 이는 수정되지 않아야 합니다. 위의 예에서 mx.google.com에서 제공하는 ESMTPS ID는 e20sm18902485fga.1.2008.01.04.07.58.46입니다.

매우 간단한 구현은 모든 메일을 디렉토리에 넣고 ID를 추출한 다음 -f를 사용하지 않고 해당 ID에 파일을 심볼릭 링크하는 것입니다. 좋다:

for FILE in *; do
     smtpid=$(do_extract_smtp_id_here)
     if test -f ${smptid}; then
         echo "DUPE: ${FILE}"
     else
         ln -s ${FILE} ${smtpid}
     fi
done

관련 정보