Menghapus Pesan Email pada Zimbra via Command Line

Posted by

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 🙂

10 comments

  1. 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?

  2. 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

  3. 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

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.