Depois de sincronizar minhas caixas de entrada maildir locais offlineimap
e realizar a filtragem e classificação de spam usando fdm
+ bogofilter
, eu marquei as mensagens no armazenamento de correio usando notmuch
.
Até recentemente, eu usava o seguinte código shell para marcar e remarcar mensagens dependendo de determinados critérios:
notmuch new
tr -s '\t' ' ' <<'END_BATCH' | notmuch tag --batch
-inbox +sent -- folder:/Sent/
-inbox +archive -- folder:/Archive/
-inbox +junk -- folder:/Junk/
+unsorted -- folder:/INBOX.Unsorted/
-unsorted -- not folder:/INBOX.Unsorted/
-unread -- tag:archive
+unread -- tag:unsorted
END_BATCH
Isso remove a inbox
tag de qualquer mensagem em uma pasta ou , ao mesmo tempo em que marca novamente as mensagens com as tags apropriadas para essas três pastas Sent
. Em seguida, ele marca ou desmarca as mensagens dependendo se elas estão em uma pasta (onde coloquei as mensagens que não puderam ser classificadas). Por último, garanto que as mensagens arquivadas não sejam marcadas como e que as mensagens não classificadas sejam marcadas como .Archive
Junk
INBOX.Unsorted
bogofilter
unread
unread
Isso funcionou bem.
Como recebo e-mails em cinco contas diferentes, também queria adicionar tags como account-somename
etc. account-othername
às mensagens, dependendo do nome da pasta:
notmuch new
tr -s '\t' ' ' <<'END_BATCH' | notmuch tag --batch
-inbox +sent -- folder:/Sent/
-inbox +archive -- folder:/Archive/
-inbox +junk -- folder:/Junk/
+unsorted -- folder:/INBOX.Unsorted/
-unsorted -- not folder:/INBOX.Unsorted/
-unread -- tag:archive
+unread -- tag:unsorted
+account-acc1 -- folder:/acc1/
+account-acc2 -- folder:/acc2/
+account-acc3 -- folder:/acc3/
+account-acc4 -- folder:/acc4/
+account-acc5 -- folder:/acc5/
END_BATCH
A marcação parece ser executada conforme o esperado, mas um efeito colateral é que as novas mensagens são marcadas como antigas (movidas do new
diretório do maildir para o cur
diretório). Isso, por sua vez, significa que mutt
não detectarei as novas mensagens nas caixas de entrada (a menos que eu defina maildir_check_cur
na mutt
configuração, o que não acho que seja uma boa solução).
Não sei por que ou o que poderia fazer para impedir que isso acontecesse.
Minha notmuch
configuração:
[database]
path=/home/myself/Mail/inboxes
[user]
name=myname
[email protected]
[email protected]
[new]
tags=inbox;unread
[search]
[maildir]
syncronize_flags=true
[index]
header.List=List-Id
Isso parece acontecer porque
notmuch
é um pouco pedante sobre quais arquivos de mensagens devem ir em qual subdiretório Maildir e porqueofflineimap
é um pouco relaxado sobre a mesma coisa.O
offlineimap
utilitário entrega mensagens de correio nonew
diretório de destino do Maildir, conforme esperado, mas os nomes dos arquivos têm um:2,
sufixo de nome de arquivo, denotando "esta mensagem de correio não tem sinalizadores". Normalmente, arquivos de mensagens novos, invisíveis e recém-entregues não devem ter esse sufixo de nome de arquivo porque é o MUA (cliente de e-mail) do usuário que o adiciona.Quando
notmuch
é configurado para sincronizar sinalizadores do Maildir (o que você provavelmente deseja que ele faça), ele percebe que os arquivos de mensagens têm o:2,
sufixo do nome do arquivo e, portanto, assume que o usuário deve ter visto as mensagens em seu MUA, mas não as leu. (não háS
depois da vírgula no sufixo). Em seguida, ele move os arquivos de mensagens para ocur
diretório. Conseqüentemente, omutt
cliente de e-mail os exibe como "antigos" (vistos, mas não lidos).A solução seria corrigir o comportamento do
offlineimap
, mas já foi apontado como bug e descartado em 2015 .Minha solução é tirar
offlineimap
da equação. Em vez disso, busco todos os meus e-mails usandofdm
. Posso procurar outra solução de sincronização IMAP mais tarde (mbsync
?) Porque ter mensagens de algumas semanas nos servidores de e-mail é boa para acessá-las fora da minha máquina principal.