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 admin@imanudin.net --password Password-Zimbra_Admin --query "is:anywhere from:admin@imanudin.net subject:Invoice2 after:08/02/2020 before:08/04/2020" --exclude user1@imanudin.net --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 admin@imanudin.net, 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 admin@imanudin.net --password Password-Zimbra_Admin --query "is:anywhere from:admin@imanudin.net subject:Invoice2 after:08/02/2020 before:08/04/2020" --exclude user1@imanudin.net --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:admin@imanudin.net 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) ------------------------ admin@imanudin.net 286 287 08/03/20 08:14:57 admin@imanudin.net 2416 admin@imanudin.net 285 287 08/03/20 08:14:56 admin@imanudin.net 1003 admin@imanudin.net 283 284 08/03/20 08:14:44 admin@imanudin.net 2400 admin@imanudin.net 282 284 08/03/20 08:14:43 admin@imanudin.net 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:cmtablada@northpoint.db 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:creator@marloemarloe.com
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