#!/bin/env jaclsh set mailhost mymailserver.lan set username cyrus set password "*******" package require java java::import java.util.Properties java::import javax.mail.Folder set props [java::new Properties] $props put mail.debug true set ses [java::call javax.mail.Session getInstance $props] set store [$ses getStore imap] $store connect $mailhost $username $password set delFlag [java::field {javax.mail.Flags$Flag} DELETED] set cal [java::call java.util.Calendar getInstance] $cal add [java::field java.util.Calendar DAY_OF_MONTH] -1 set yesterday [$cal getTime] unset cal set folderArr [[$store getDefaultFolder] list "user.*.Trash"] for {set fi 0} {$fi < [$folderArr length]} {incr fi} { set f [java::cast com.sun.mail.imap.IMAPFolder [$folderArr get $fi]] set acls [$f getACL] if {[$acls length] < 2} { if {![info exists cyracl]} { set cyracl [java::new com.sun.mail.imap.ACL $username \ [[$acls get 0] getRights] ] } $f addACL $cyracl } $f open [java::field Folder READ_WRITE] puts "Folder: [$f getFullName]: [$f getMessageCount] messages" for {set mi 1} {$mi <= [$f getMessageCount]} {incr mi} { set msg [$f getMessage $mi] if {[$yesterday compareTo [$msg getReceivedDate]] >= 0} { puts "OLD MSG:" puts "- Subject: [$msg getSubject]" puts "- Received: [[$msg getReceivedDate] toString]" $msg setFlag $delFlag true puts "- Now marked as deleted." } } $f close true puts "... Expunged folder [$f getFullName]" unset f }