Menghapus Antrian Email yang Tidak Valid

Image generated by ChatGPT

Sebagai seorang admin email server khususnya Zimbra, tidak jarang saya melihat adanya antrian email yang tidak pernah terkirim. Bahkan setelah batas maksimal antrian (5 hari defaultnya). Pada akhirnya email tersebut expire dari antrian dan bouncing ke pengirim.

Salah satu penyebabnya adalah domain yang dikirimkan tidak ada di internet atau tidak memiliki MX. Misalnya domain gmail.con (typo). Beberapa pesan yang muncul di antrian seperti Connection timed out, No route to host, Connection refused, Recipient address rejected: Domain not found, dan lain-lain.

Pesan-pesan yang muncul tersebut ditangkap menggunakan perintah grep, disortir dan unik, lalu dihapus menggunakan perintah pfdel.

Berikut sample scriptnya

touch /srv/hapus-invalid-email.sh
chmod +x /srv/hapus-invalid-email.sh
vi /srv/hapus-invalid-email.sh
#!/bin/sh
 
#Hapus Layar
clear

postqueue -p | grep -A 1 "Connection timed out" | grep @ | perl -lap -e 's/\s+|^\n//sg' | cut -d "@" -f2 > /tmp/has-no-mx-records.txt
postqueue -p | grep -A 1 "No route to host" | grep @ | perl -lap -e 's/\s+|^\n//sg' | cut -d "@" -f2 >> /tmp/has-no-mx-records.txt
postqueue -p | grep -A 1 "Connection refused" | grep @ | perl -lap -e 's/\s+|^\n//sg' | cut -d "@" -f2 >> /tmp/has-no-mx-records.txt
postqueue -p | grep -A 1 "Recipient address rejected: Domain not found" | grep @ | perl -lap -e 's/\s+|^\n//sg' | cut -d "@" -f2 | grep -v ">" >> /tmp/has-no-mx-records.txt

USERS=`cat /tmp/has-no-mx-records.txt | sort | uniq`
 
echo "Looping for all users"
for ACCOUNT in $USERS; do

cekmx=`timeout 3 host -t MX $ACCOUNT`;

if [[ $cekmx == "$ACCOUNT has no MX record" ]] ||
   [[ $cekmx == "Host $ACCOUNT not found: 3(NXDOMAIN)" ]]; then


echo "Hapus antrian Domain : $ACCOUNT"
/srv/pfdel *@$ACCOUNT

else
echo "Domain $ACCOUNT status MX tidak diketahui"

fi
done
echo "Proses penghapusan selesai dilakukan" 

Pastikan script pfdel disimpan di folder /srv. Jika perintah postqueue belum ada dan menggunakan Zimbra, symlink postqueue

ln -sf /opt/zimbra/common/sbin/postqueue /usr/sbin/

Test jalankan script untuk menghapus antrian email yang ada. Buat crontab untuk menjalakannya setiap interval waktu tertentu

Silakan dicoba 🙂

Ahmad Imanudin, Tinggal di Bekasi. Bekerja sebagai salah satu staff di PT. Excellent Infotama Kreasindo. Dapat dihubungi pada alamat surel ahmad [at] imanudin.com

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.

You might also like
Cara Install Proxmox Mail Gateway pada Container LXC

Cara Install Proxmox Mail Gateway pada Container LXC

Setup LXC dengan Storage Backend LVM

Setup LXC dengan Storage Backend LVM

Cara Install dan Deploy Container LXC di Rocky Linux

Cara Install dan Deploy Container LXC di Rocky Linux

Stay Connected
Ramadan Challenge : Menghapal Surat Al-Mulk
Membangun Linux Active Directory Dengan Samba4 Pada Redhat/CentOS Part 5 : Konfigurasi Dynamic DNS & Kerberos
Link Download ZeXtras Migration Tools
Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 1,759 other subscribers
Categories