web-dev-qa-db-ja.com

cyrus-imapdメールボックス内のすべてのメールに対して\ Deletedフラグを設定解除するにはどうすればよいですか?

Imapsyncを使用して移動した5GBのメールボックスがあります。しかし、どういうわけか私は--delete/-delete2オプションを台無しにして、\ Deletedフラグが設定されたほとんどすべてのメッセージになってしまいました。 delayed expunge が有効になっていないため、 nexpunge ユーティリティを使用できません。 cyrus-imapdv2.3.7を使用しています。 cyrus-imapdのデバッグ機能を使用して、IMAPコマンドの後に電子メールクライアント(私の場合はRoundcube)が起動して設定が解除されることがわかりました。

UID STORE 179 -FLAGS.SILENT (\Deleted)

どういうわけか、すべてのメールに対してこのコマンドを実行できるかどうかはわかりません。

メールボックス内のすべてのメールの\ Deletedフラグを解除する方法はありますか?

[〜#〜]更新[〜#〜]

上記のコマンドでメッセージIDの範囲を指定する@geekosaurのヒントを使用して、INBOX.folder1のようなINBOXの下の1つのメールボックスに対してそれを解決できます。 INBOXの下の複数のメールボックスに対して再帰的にそれを行う方法はありますか?現在、PerlのIMAP関連モジュールを使用して、スクリプトを使用/作成して問題を解決する作業を行っています。しかし、それでも私はそれをできるだけ早く解決する必要があるので、入力は大歓迎です。

[〜#〜]更新[〜#〜]

Geekosaurのおかげで、PerlのIMAPClientモジュールを使用して問題を解決することに成功しました。

2
Sachin Divekar

メッセージの範囲を指定できますstart:end単一のメッセージ番号の代わりに(179あなたの例では);使用する SEARCH ALL有効なメッセージ番号の範囲を確認します。

これは、生のIMAPを使用できることを前提としていることに注意してください。これは、AUTHENTICATEの代わりにLOGINを使用する場合、(本来あるべきことですが)苦痛から不可能になる可能性があります。ある種のツールキット(Cyrus imapdには、スクリプトログインとさまざまな操作の実行に使用できるPerlライブラリが付属していますが、RFC2060にある程度精通している必要があります。

1
geekosaur