当标题略有不同时,在 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 并将文件符号链接到该 id,而不使用 -f。喜欢:

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

相关内容