From 1a7b3f9f70e590e9a8d9bc617e7aed6cacf1e026 Mon Sep 17 00:00:00 2001 From: Daniel Winzen Date: Sat, 6 Aug 2022 17:26:22 +0200 Subject: [PATCH] Add script to delete leftover files --- tools/delete_leftover_files.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tools/delete_leftover_files.php diff --git a/tools/delete_leftover_files.php b/tools/delete_leftover_files.php new file mode 100644 index 0000000..fec4722 --- /dev/null +++ b/tools/delete_leftover_files.php @@ -0,0 +1,27 @@ +query( "select local_part, domain from mailbox;" ); +$mailboxes = []; +while ( $mailbox = $stmt->fetch( PDO::FETCH_ASSOC ) ) { + $mailboxes[ $mailbox[ 'domain' ] ][ $mailbox[ 'local_part' ] ] = true; +} +$domains = array_diff( scandir( '/var/mail/vmail/' ), array( '..', '.' ) ); +$dirs = []; +foreach ( $domains as $domain ) { + if ( is_dir( '/var/mail/vmail/' . basename( $domain ) ) ) { + if ( ! isset( $mailboxes[ $domain ] ) ) { + echo "$domain does not seem to have any accounts, but has a directory. Consider deleting it.\n"; + } else { + $accounts = array_diff( scandir( '/var/mail/vmail/' . basename( $domain ) ), array( '..', '.' ) ); + foreach ( $accounts as $account ) { + if ( ! isset( $mailboxes[ $domain ][ $account ] ) && is_dir( '/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account ) ) ) { + exec( 'rm -r ' . escapeshellarg('/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account ))); + echo "Deleted: /var/mail/vmail/" . basename( $domain ) . '/' . basename( $account ) . "\n"; + } elseif( is_file('/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account ))){ + echo 'File found in mail directory location: "/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account ) . "\". Consider deleting it.\n"; + } + } + } + } +}