Email

如何使用 mailx 將所有電子郵件從 POP3 伺服器下載到單個文本文件?

  • March 5, 2017

我想下載舊電子郵件伺服器中的所有電子郵件。它使用 POP3,我對“收件箱”和“已發送”文件夾中的電子郵件感興趣。下載完所有郵件後,我想製作一個腳本,將我的電子郵件地址和某個電子郵件地址之間的所有電子郵件按時間順序列出到單個文本文件中。

但是,起初,我認為我需要將所有消息下載到一個包含日期的標題的單個文件中,然後創建一個排序腳本。如何解決這個問題?

我在腳本中使用了 mailx 來發送郵件,但是是否可以使用 mailx 將所有郵件從 POP3 伺服器下載到一個文件中?

傳統的 mailx 不支持 IMAP 或 POP,但 Linux 自帶的支持。

對於您的特定問題,我建議fetchmail改用。您可以使用該--mda選項fetchmail為每條下載的消息執行您選擇的腳本。如果您在命令行中使用%F和作為佔位符,它甚至可以將 From 和 To 地址作為參數傳遞給您的腳本。%T

首先,創建一個mailsorter腳本:

#!/bin/sh

dest_mbox="$1"
from="$2"
to="$3"

case "$from-$to" in
 someone@example.net-myname)
    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標誌以確保您不會意外刪除郵件。

引用自:https://unix.stackexchange.com/questions/92548