Tips menghapus pesan pada Zimbra pernah saya tulis pada artikel disini: Tips Menghapus Pesan Secara Massal pada Zimbra. Tips tersebut biasa digunakan apabila adanya email spam yang dikirim kebanyak user dan hendak dihapus datanya sebelum user mendownloadnya.
Tips pada artikel ini juga hampir sama. Namun script yang digunakan berbeda. Secara performance, script ini jauh lebih cepat dibandingkan dengan script sebelumnya.
Script ini saya temukan melalui percakapan mailing list Zeta Alliance pada tahun 2018. Sepertinya, script tersebut merupakan new features. Namun hingga saat ini, script tersebut tidak dimasukkan pada installer Zimbra terbaru. Karena kemampuannya yang memudahkan untuk menghapus pesan secara cepat (via CLI), saya download dan upload script tersebut pada Github dengan ditambahkan sedikit modifikasi agar tidak adanya verifikasi SSL (mengizinkan self sign certificate).
Download dan simpan sript pada folder libexec
curl -k https://raw.githubusercontent.com/imanudin11/script/master/zmsearchndelete > /opt/zimbra/libexec/zmsearchndelete chmod +x /opt/zimbra/libexec/zmsearchndelete
Testing hapus pesan
Warning: Hati-hati ketika menggunakan script berikut (do at your own risk). Adanya kesalahan dalam melakukan query, dapat menghapus email-email yang mirip-mirip dengan hasil query
/opt/zimbra/libexec/zmsearchndelete --go --url https://localhost:7071/service/admin/soap/ --authuser [email protected] --password Password-Zimbra_Admin --query "is:anywhere from:[email protected] subject:Invoice2 after:08/02/2020 before:08/04/2020" --exclude [email protected] --searchdirectory 'mail=*'
Beberapa options pada perintah diatas adalah :
- –go artinya adalah hasil pencarian pesan tersebut dihapus. Jika tanpa –go, maka hasil pencarian pesannya tidak dihapus. Melainkan hanya proses dry run saja
- –url merupakan URL akses pada SOAP Zimbra Admin
- –authuser adalah user admin yang digunakan untuk melakukan pencarian pesan
- –password adalah password dari user admin pada options –authuser
- –query adalah filter terhadap pesan yang hendak dihapus. Pada contoh perintah diatas, melakukan pencarian pada folder manapun (anywhere) dengan from-nya [email protected], subject-nya Invoice2 dan pada rentang tanggal setelah 2 Agustus 2020 dan sebelum 4 Agustus 2020. Jika ada kemiripan hasil query bukan pada rentang tanggal tersebut, maka email tidak dihapus.
- –exclude untuk melakukan pengecualian terhadap account. Jika accountnya ada banyak, bisa gunakan options –exclude-file dan arahkan pada list file yang berisi email-email pengecualian
- –searchdirectory digunakan untuk melakukan pencarian semua data pada atribut mail. Jika memiliki multi domain dan hanya ingin menghapus pada account domain tertentu saja, atributnya bisa disesuaikan seperti berikut ‘mail=*@domain.com’
Berikut adalah contohnya
[zimbra@mail ~]$ /opt/zimbra/libexec/zmsearchndelete --go --url https://localhost:7071/service/admin/soap/ --authuser [email protected] --password Password-Zimbra_Admin --query "is:anywhere from:[email protected] subject:Invoice2 after:08/02/2020 before:08/04/2020" --exclude [email protected] --searchdirectory 'mail=*' zmsearchndelete: info: started 03 Aug 2020 08:15:01 +0000 (UTC) zmsearchndelete: note: 1 account(s) excluded via exclude list(s) zmsearchndelete: info: total accounts: 5 zmsearchndelete: info: query: is:anywhere from:[email protected] subject:Invoice2 zmsearchndelete: info: searching messages now: 03 Aug 2020 08:15:01 +0000 (UTC) zmsearchndelete: info: processing searched messages now: 03 Aug 2020 08:15:02 +0000 (UTC) ------------------------ 1:Account 2:MSG_ID 3:CONV_ID 4:DATE(mm/dd/yy) 5:FROM 6:SIZE(Bytes) ------------------------ [email protected] 286 287 08/03/20 08:14:57 [email protected] 2416 [email protected] 285 287 08/03/20 08:14:56 [email protected] 1003 [email protected] 283 284 08/03/20 08:14:44 [email protected] 2400 [email protected] 282 284 08/03/20 08:14:43 [email protected] 987 ------------------------ zmsearchndelete: info: Total messages found and deleted for given query: 4 zmsearchndelete: info: finished 03 Aug 2020 08:15:02 +0000 (UTC) zmsearchndelete: info: took 1 wallclock secs ( 0.39 usr + 0.03 sys = 0.42 CPU)
Silakan dicoba dan semoga bermanfaat 🙂
Dear Pak Ahmad,
Salam kenal…
Untuk script diatas apakah bisa digunakan untuk zimbra 7.2.7?
terima kasih
Hi mas Yoga,
Sangat bisa mas
Can’t locate Date/Manip.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /opt/zimbra/libexec/zmsearchndelete line 196.
BEGIN failed–compilation aborted at /opt/zimbra/libexec/zmsearchndelete line 196.
Saya ada error sepert ini kang, kenapa y?
Coba jalankan perintah tersebut sebagai user Zimbra
zmsearchndelete: ERROR: SearchRequest (try #1): Couldn’t parse query: is:anywhere from:[email protected] subject:List after:09/13/2021 before:09/15/2021
the date range is the problem, i tried to remove it and it works, thanks!
Untuk error “bash: !5: event not found” itu kenapa ya Mas?
Hi mas,
Kemungkinan sudah tidak support lagi mas
kalau error ini kenapa ya suhu
zmsearchndelete: info: use ‘–go’ option to actually DELETE matched messages
zmsearchndelete: info: started 15 Jun 2022 10:51:03 +0700 (WIB)
zmsearchndelete: info: total accounts: 50
zmsearchndelete: info: query: is:anywhere from:[email protected]
zmsearchndelete: info: searching messages now: 15 Jun 2022 10:51:03 +0700 (WIB)
zmsearchndelete: ERROR: GetInfoRequest (try #1): auth credentials have expired
Jika dilihat dari errornya, credentials expired