fetchmail이 서버에 메시지를 남기도록 구성할 수 있다는 것을 알고 있습니다(보통 keep uidl
키워드 조합을 사용하여 수행됨). 그러나 서버에 메시지를 남기도록 구성하는 방법이 있습니까?지정된 최소 기간 내에그런 다음 삭제하시겠습니까?
예를 들어, 메시지가 다운로드된 후 48시간 동안 서버에 남아 있다가 서버에 대한 다음 fetchmail 호출 시 삭제되기를 원한다고 가정해 보겠습니다.
제가 가장 관심을 갖고 있는 것은 POP3에 대한 솔루션입니다.
답변1
간단히 말해서, 그렇게 하지 않습니다.
Long: fetchmail은 다음 중 하나만 수행하도록 설계되었습니다.
- 읽다모두이메일, 또는
- 읽다읽히지 않는사서함에서 온 메시지
메시지를 읽으면 (서버에서) "읽음"으로 표시할 수 있습니다. 그러나 이와 관련된 타임스탬프는 없습니다.
이것이 불가능하다는 것은 잘 알려져 있으며, 이에 따르면메일 사용자 가져오기Youyou롭 맥그리거,아마도 FAQ:
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