web-dev-qa-db-ja.com

POP3サーバーからすべての電子メールメッセージをmailxで単一のテキストファイルにダウンロードする方法

古い電子メールサーバーにあるすべての電子メールをダウンロードしたいのですが。 POP3を使用しており、「受信トレイ」フォルダと「送信済み」フォルダ内のメールに興味があります。すべてのメッセージをダウンロードしたら、私の電子メールアドレスと1つの特定の電子メールアドレスの間のすべての電子メールを時系列で単一のテキストファイルに一覧表示するスクリプトを作成します。

ただし、最初は、すべてのメッセージを日付を含むヘッダーを含む単一のファイルにダウンロードしてから、並べ替えスクリプトを作成する必要があると思います。これにどのように取り組みますか?

メールを送信するスクリプトでmailxを使用しましたが、mailxを使用してPOP3サーバーからすべてのメールを単一のファイルにダウンロードできますか?

6
Martin

従来のmailxはIMAPまたはPOPをサポートしていませんが、Linuxに付属しているものはサポートしています。

特定の問題については、代わりにfetchmailを使用することをお勧めします。 --mda オプションを使用して、ダウンロードしたメッセージごとに選択したスクリプトをfetchmailで実行できます。コマンドラインで%Fおよび%Tをプレースホルダーとして使用する場合、FromおよびToアドレスをパラメーターとしてスクリプトに渡すこともできます。

まず、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フラグを付けて、誤ってメールを削除しないようにしてください。

3
200_success