私のサーバーには、一部の人が使用する複数の電子メールがあります。
いくつかは数年前に作られていましたが、もはや使用されていないようです。
FTP経由でフォルダが表示されます。
.Drafts
.Junk
.Sent
.spam
.Trash
cur
new
tmp
とファイル
dovecot-acl-list
dovecot-uidvalidity.53836d02
dovecot-uidvalidity
dovecot-keywords
subscriptions
courierimapsubscribed
courierimapacl
dovecot-quota
maildirsize
courierimapuiddb
dovecot.index.thread
dovecot.mailbox.log
dovecot.list.index
dovecot.index
dovecot-uidlist
dovecot.list.index.log
dovecot.index.log
dovecot.index.cache
Date Modified
これらのファイルの1つは、電子メールが最後に使用された時期を示す良い情報ですか?そして「使用した」という言葉は、少なくとも読んだという意味です。
答え1
まず、背景情報:あなたのEメールはMaildir形式です。 Maildirメールボックスにはtmp
、new
3つのサブディレクトリがありますcur
。そのうち、新しいメッセージ、読み取ったメッセージを含むtmp
転送にのみ使用されます。転送されたメッセージは、にある変更できないファイルで構成されます。メッセージの状態を「新規」から「読み取り」に変更することは、基本的にそのファイルをからに移動することを意味します。さまざまなその他のメッセージ固有のフラグ(など)は、ファイル名に追加された特殊文字で記録されます。 IMAPフォルダは、受信トレイのMaildir内にあるMaildirサブフォルダなどです。new
cur
new
cur
new
cur
O
F
.Sent
.Draft
メッセージがMaildirsにあると仮定すると、/var/mail/<user>/
次の経験的な方法が発生します。
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
これはほとんど効果がありますが、偽の肯定と偽の否定が発生する可能性があります。誤った肯定は、IMAPサーバーがメールボックスをインデックス化したり、他の定期的なタスクを実行している間にフォルダを更新するようにユーザーをだましている可能性があるためですmtime
。cur
ユーザーが最新のメッセージを含むフォルダを単に削除できるため、偽の不正です。
より安全なアプローチは、ログを解析してユーザーがSquirrelMailに最後にログインした時刻を確認することです(リスが最初にそのようなログを保持するように構成されている場合)。