Pekan kemarin, salah satu klien saya meminta bantuan untuk menghapus semua email yang periodenya sebelum tahun 2025 (2024 dan kebawahnya) hanya untuk satu akun spesifik, kebetulan mailbox akun tersebut penggunaannya memang sudah mencapai ratusan GB. Sebenarnya kita bisa langsung menggunakan perintah standar zmmailbox lalu kita define periodenya before:01/01/2025, namun secara default API Zimbra (zmsoap) membatasi hasil search hanya 1000 baris per 1x eksekusi perintah zmmailbox. Jika akun tersebut memiliki 50.000 email, maka kita harus menjalankan perintah yang sama sebanyak 50 kali secara manual. Tentu ini akan sangat merepotkan.
Nah kali ini, saya akan share bash script yang sudah disesuaikan dengan kemapuan untuk melakukan looping otomatis hingga seluruh email dengan kriteria before:mm/dd/yyyy terhapus, lengkap dengan file logging untuk audit proses deletion yang dilakukan menggunakan script ini.
Mengapa Script Ini Diperlukan?
- Mengatasi Limitasi Perintah
zmmailbox: Mengotomatisasi proses pencarian yang hanya terbatas pada 1000 baris hasil search - Keamanan Data (Message Mode): Menggunakan flag
-t messageuntuk menghapus email satuan, bukan seluruh conversation, sehingga email baru dalam conversation lama tetap aman - File Logging: Dilengkapi file log dengan informasi timestamp, ID, Sender, dan Subject untuk audit apabila dibutuhkan
- Handling Karakter Unik: Menggunakan bahasa pemograman python untuk parsing JSON agar subjek email yang mengandung spasi, emoji, atau ambiguous character tidak mengganggu proses yang dijalankan oleh script bash
Persiapan
Pastikan rekan-rekan sudah memiliki backup akun sebelum eksekusi karena khawatir ada hal-hal yang tidak diinginkan terjadi, seperti kesalahan delete atau salah memasukan tanggal. Script ini membutuhkan aplikasi python3 (Biasanya sih sudah ada di basic OS-OS terbaru, namun kalau rekan-rekan install OS yang minimal, biasanya belum ter install). Silakan lakukan instalasi python3 dengan referensi instalasi python3 yang beredar di internet.
Download Script untuk Delete
Silakan download script untuk delete email-email lama pada https://colamen.id/zimbra/delete-old-email secara langsung dari server Zimbra dengan perintah berikut:
# cd /srv # wget -c https://colamen.id/zimbra/delete-old-email # chmod u+x delete-old-email
Saya biasanya simpan script email server Zimbra di direktori /srv/, namun jika rekan-rekan mau simpan di direktori lain atau direktori bin Linux, seperti /usr/bin/, /usr/local/sbin, dll juga gapapa, yang penting jangan simpan di /tmp/ karena bisa hilang secara otomatis.
Eksekusi Script
Biasanya proses eksekusi script ini lumayan lama, apalagi jika email yang dihapus sangat banyak. Saran saya, rekan-rekan boleh jalankan aplikasi screen terlebih dahulu, lalu jalankan script di dalam aplikasi screen lalu rekan-rekan cukup monitor file log deletionnya yang ada di /opt/zimbra/log/delete_history_{akun}_{time}.log menggunakan perintah tail -f. Berikut adalah contoh penggunaan script delete email-email lama pada akun tertentu:
# /srv/delete-old-email.sh === Zimbra Email Bulk Delete for Specific Account === Masukkan Email Account: raihan@aktiva.co.id Hapus sebelum tanggal (mm/dd/yyyy): 04/20/2025 ---------------------------------------------------- Logging ke: /opt/zimbra/log/delete_history_raihan@aktiva.co.id_20260310_112522.log ---------------------------------------------------- Lanjutkan? (y/n): y Sedang mengambil data 1000 message... Menghapus batch (222 item)... ..... Sedang mengambil data 1000 message... Selesai! Tidak ada lagi data. PROSES SELESAI. Total: 222 item.
Saya jalankan script untuk melakukan delete semua email sebelum 20 April 2025 pada akun raihan@aktiva.co.id. Dari proses diatas, sebanyak 222 email pada akun raihan@aktiva.co.id berhasil terhapus. Log proses delete tersebut juga bisa dilihat langsung dari file /opt/zimbra/log/delete_history_raihan@aktiva.co.id_20260310_112522.log dengan contoh format sebagai berikut:
..... 2026-03-10 11:26:50,150 DELETE id=7564 From=postmaster@spam.xyz Subject=NetSuite or QuickBooks? See the Pros & Cons Inside 2026-03-10 11:26:50,150 DELETE id=7563 From=postmaster@spam.xyz Subject=How are you? 2026-03-10 11:26:50,150 DELETE id=7562 From=postmaster@spam.xyz Subject=Petroleum Product 2026-03-10 11:26:50,150 DELETE id=7561 From=postmaster@spam.xyz Subject=Curso: Reglamento Interior de Trabajo 2026-03-10 11:26:50,150 DELETE id=7560 From=postmaster@spam.xyz Subject=Curso: Reglamento Interior de Trabajo --- SUMMARY --- Selesai: Tue Mar 10 11:27:08 AM WIB 2026 Total Terhapus: 222
Referensi
Ide awal script pembersihan ini saya temukan di diskusi Zimbra Forum, tepatnya pada thread https://forums.zimbra.org/viewtopic.php?t=24484. Namun, karena script asli di forum tersebut belum menangani limitasi 1000 hits secara otomatis, maka saya perlu melakukan penyesuaian.
Apabila rekan-rekan mengalami kesulitan atau ada kebutuhan format data audit yang diperlukan, Excellent menyediakan layanan maintenance email server Zimbra dan sudah mencakup konfigurasi script diatas. Bagi rekan-rekan yang berminat untuk jasa layanan tersebut bisa langsung kontak & tanya-tanya ke email sales@excellent.co.id.