需要在 Linux 中删除某个日期范围内的邮件

ksk*_*ath 5 email mail-command

由于 cron 作业,我在 Linux 服务器中生成了 100 万封邮件。我想删除邮件,但不是全部,因为此 cron 邮件可用于排除故障并找出 cron 作业执行的问题。所以我需要保留 1 个月的邮件并删除剩余的邮件。

Gil*_*il' 6

有许多mail具有不同命令集的不同命令。POSIX 将mailx命令标准化。

您的邮箱通常会按照收到的顺序包含电子邮件。因此,要删除旧邮件,您通常会删除编号较低的电子邮件。您可以使用d 1-42(删除前 42 条消息)之类的命令删除一系列消息。

如果你想要更多的控制,我推荐Mutt,一个命令行电子邮件客户端,它比mail命令给你更多的控制。Mutt 有一个文本模式界面,也可以编写脚本。在 Mutt 中,您可以使用该命令 D将消息标记为删除并输入模式 ~d ->1m以选择超过 1 个月的消息。如果您对x要删除的邮件列表感到满意,请键入以删除标记为删除的邮件。


abc*_*234 5

经过大量搜索后,我发现archivemail使用它可以清除旧邮件。

语法是:

archivemail -d 30 --delete <path-to-mailbox>
Run Code Online (Sandbox Code Playgroud)

(一般情况下$MAIL定义本地邮箱位置,尝试echo $MAIL检查)。

-n您还可以使用( --dry-run ) 选项检查它将做什么。


Jan*_*Jan 0

mutt可以使用正则表达式删除,详细信息请参见此处此处