fetchmailに特定の期間サーバーにメッセージをアーカイブさせますか?

fetchmailに特定の期間サーバーにメッセージをアーカイブさせますか?

fetchmailがサーバーにメッセージを残すように構成できることを知っています(通常はkeep uidlキーワードの組み合わせを使用して行われます)。しかし、サーバーにメッセージを残すように構成する方法はありますか?指定された最小期間内その後、削除しますか?

たとえば、メッセージがダウンロードされてから48時間サーバーに残り、サーバーへの次のfetchmail呼び出しで削除されることを望むとします。

私が最も興味を持っているのはPOP3のソリューションです。

答え1

簡単に言えば、そうしません。

Long:fetchmailは、次のいずれかを実行するように設計されています。

  • 読むみんな電子メール、または
  • 読む読まないメールボックスからのメッセージ

メッセージを読むと(サーバーから)「読み取り」としてマークできます。ただし、これに関連するタイムスタンプはありません。

これが不可能であることはよく知られており、これによるとメールユーザーのインポートYouyouロブ・マクレガーおそらくよくある質問:

これはFetchmailがその目的のために設計されていないからです。 Fetchmail は、メールボックス全体または少なくとも未読メッセージをダウンロードするように設計されています。ソースを変更せずに表示される電子メールのみをダウンロードする方法はありません。

また、N日後もメールは削除されません(FAQでこの内容を扱うと確信しています。以前はそうでした)。

答え2

getmailはあなたの状況に対する解決策です。https://pyropus.ca/software/getmail Linuxプログラムgetmailは、SSLの有無にかかわらず、INBOXおよび/または他のフォルダ(IMAPプロトコルの場合)をインポートでき、N日後に電子メールを削除できます。

~/.getmail ディレクトリにある getmailrc ファイルの例:

[retriever]
type = SimpleIMAPSSLRetriever
server = IMAP_SERVER_CHANGEME
port = 993
username = USERNAME_CHANGEME
password = PASSWORD_CHANGEME
mailboxes = ("INBOX","Junk",)

[destination]
type = Maildir
path = ~/Maildir/

[options]
message_log_syslog = true
message_log_verbose = true
# retrieve only new emails
read_all = false
# delete on server after x days
delete_after = 6
# do not add a Delivered-To: header field
delivered_to = false
# do not add a Received: header field
received = false

関連情報