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).