Alguns antecedentes: suas caixas de correio estão no formato Maildir. As caixas de correio do Maildir têm três subdiretórios, tmp
, new
e cur
. Destes, tmp
é usado somente para entrega, new
contém novas mensagens e cur
leem mensagens. Uma vez entregues, as mensagens consistem em arquivos imutáveis em new
e cur
. Uma mensagem mudando de estado de "novo" para "leitura" significa essencialmente mover o arquivo correspondente de new
para cur
. Vários outros sinalizadores por mensagem ( O
, F
, etc.) são registrados com caracteres especiais anexados a nomes de arquivos. As pastas IMAP são apenas subpastas do Maildir .Sent
, .Draft
, etc. dentro da caixa de entrada Maildir.
Supondo que suas mensagens estejam no Maildirs /var/mail/<user>/
, isso leva à seguinte heurística:
for mb in /var/mail/*; do
find "$mb" -type d -name -cur -mtime -365 \
-exec printf 'user %s is still active\n' $(basename "$mb") \; -quit
done
Isso funciona principalmente, mas pode produzir falsos positivos e falsos negativos. Falsos positivos porque o servidor IMAP pode trollar você e atualizar as pastas mtime
of cur
ao indexar caixas de correio ou ao executar qualquer outra tarefa periódica. Falso negativos porque um usuário pode simplesmente excluir a pasta com as mensagens mais recentes.
Uma abordagem muito mais segura seria analisar os logs para ver quando foi a última vez que os usuários efetuaram login no SquirrelMail (desde que esse esquilo esteja configurado para manter esses registros em primeiro lugar).