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