我想下载旧电子邮件服务器中的所有电子邮件。它使用 POP3,我对“收件箱”和“已发送”文件夹中的电子邮件感兴趣。下载完所有邮件后,我想制作一个脚本,将我的电子邮件地址和某个特定电子邮件地址之间的所有电子邮件按时间顺序列出到单个文本文件中。
但是,首先,我认为我需要将所有消息下载到一个包含日期的标题的文件中,然后创建一个排序脚本。如何处理这个问题?
我在脚本中使用了 mailx 来发送邮件,但是是否可以使用 mailx 将 POP3 服务器上的所有邮件下载到一个文件中?
答案1
传统的 mailx 不支持 IMAP 或 POP,但 Linux 自带的则支持。
对于您的特定问题,我建议改用fetchmail
。您可以使用--mda
选项fetchmail
为每条下载的消息执行您选择的脚本。如果您在命令行中使用%F
和作为占位符,它甚至可以将“发件人”和“收件人”地址作为参数传递给脚本。%T
首先,创建一个mailsorter
脚本:
#!/bin/sh
dest_mbox="$1"
from="$2"
to="$3"
case "$from-$to" in
[email protected])
echo "From $from `date`" >> "$dest_mbox"
cat >> "$dest_mbox"
;;
*)
cat > /dev/null
;;
esac
然后运行fetchmail -u myname popserver.example.com --mda './mailsorter /tmp/mbox %F %T'
测试此解决方案时,请提供和fetchmail
标记,以确保您不会意外删除邮件。--all
--keep