Script Notifikasi Password Expire pada Zimbra Mail Server

By default, Zimbra belum memiliki fasilitas notifikasi password apabila password user mendekati expire. Namun, fasilitas tersebut cukup dibutuhkan untuk memudahkan atau sekedar pemberitahuan pada user sebelum passwordnya expire. Untuk mendapatkan fasilitas tersebut, dapat dibuatkan sebuah script untuk melakukan pengecekan expire date password user dan mengirimkan hasilnya via email. Script tersebut sudah ada dan sudah dibuat oleh Wuxmedia dan dapat dilihat pada Github Wuxmedia : https://github.com/wuxmedia/Zimbra_passpoll/blob/master/passpoll.sh

Script tersebut sudah memenuhi informasi notifikasi password yang dibutuhkan. Namun adanya proses lookup user yang cukup lama apabila memiliki jumlah user yang cukup banyak. Misalnya 5000 – 30000 user. Agar proses lookup lebih cepat, script dari Wuxmedia tersebut dilakukan sedikit modifikasi sesuai dengan kebutuhan. Untuk menggunakan script tersebut, silakan lakukan tahapan berikut pada server Zimbra :

Agar otomatis melakukan pengecekan setiap hari jam 9 pagi, lakukan konfigurasi crontab seperti berikut :

1.1       9       *       *       *       bash /srv/cek-expire-password-zimbra.sh

Keterangan : Script tersebut akan memberikan notifikasi apabila password user mendekati 7 hari expire, 3 hari expire dan 1 hari expire.

Berikut adalah contoh notifikasi expire password yang dikirimkan via email

 

Adapun RAW dari script tersebut sebagai berikut

01.#!/bin/bash
02.# TDH 2015-04-27
03.# Messy script for zimbra password expiry email notification.
04.# Meant to be performed as daily cronjob run as zimbra user.
05.# redirect output to a file to get a 'log file' of sorts.
06. 
07.# Time taken of script;
08.echo "$SECONDS Started on: $(date)"
09. 
10.# Set some vars:
11.# First notification in days, then last warning:
12.FIRST="7"
13.LAST="3"
14.# pass expiry in days
15.POLICY="90"
16.# Sent from:
17.FROM="postmaster@imanudin.com"
18.# Domain to check, e.g. 'example.com'; leave blank for all
19.DOMAIN=""
20.# Recipient who should receive an email with all expired accounts
21.ADMIN_RECIPIENT="postmaster@imanudin.com"
22. 
23.# Sendmail executable
24.SENDMAIL=$(ionice -c3 find /opt/zimbra/ -type f -iname sendmail)
25. 
26.# Get all users - it should run once only.
27.USERS=`/opt/zimbra/bin/zmprov -l gaa`;
28. 
29.#Todays date, in seconds:
30.DATE=$(date +%s)
31. 
32.# Iterate through them in for loop:
33.for USER in $USERS
34.do
35.# When was the password set?
36.OBJECT="(&(objectClass=zimbraAccount)(mail=$USER))"
37.ZIMBRA_LDAP_PASSWORD=`su - zimbra -c "zmlocalconfig -s zimbra_ldap_password | cut -d ' ' -f3"`
38.LDAP_MASTER_URL=`su - zimbra -c "zmlocalconfig -s ldap_master_url | cut -d ' ' -f3"`
39.LDAPSEARCH=$(ionice -c3 find /opt/zimbra/ -type f -iname ldapsearch)
40.PASS_SET_DATE=`$LDAPSEARCH -H $LDAP_MASTER_URL -w $ZIMBRA_LDAP_PASSWORD -D uid=zimbra,cn=admins,cn=zimbra -x $OBJECT | grep zimbraPasswordModifiedTime: | cut -d " " -f 2 | cut -c 1-8`
41. 
42.# Make the date for expiry from now.
43.EXPIRES=$(date -d "$PASS_SET_DATE $POLICY days" +%s)
44. 
45.# Now, how many days until that?
46.DEADLINE=$(( (($DATE - $EXPIRES)) / -86400 ))
47. 
48.# Email to send to victims, ahem - users...
49.SUBJECT="$USER - Password email anda akan expire $DEADLINE hari lagi"
50.BODY="
51.Kepada Yth $USER,
52. 
53.Dengan ini diberitahukan bahwa password Email Anda akan expire dalam $DEADLINE hari. Harap mengganti password Email Anda segera melalui Web Mail:
54. 
56. 
57.Cara penggantian password Email :
58. 
59.1. Login pada Web Mail sesuai alamat di atas
60.2. Pilih tab Preferences
61.3. Pada menu General | Sign in. klik tombol Change Password
62.4. Isikan password lama, password baru & konfirmasi password baru Anda
63.5. Klik tombol Change password untuk menggantinya
64. 
65.Password akun Email minimal terdiri dari 8 karakter, dengan kombinasi alphanumerik (huruf besar, huruf kecil, angka) dan simbol (!@#$, dst.).
66. 
67.Jika ada pertanyaan mengenai cara mengganti password Email, silakan menghubungi team Support pada ext. 123321
68. 
69.Terima Kasih,
70.Postmaster
71."
72.# Send it off depending on days, adding verbose statements for the 'log'
73.# First warning
74.if [[ "$DEADLINE" -eq "$FIRST" ]]
75.then
76.echo "Subject: $SUBJECT" "$BODY" | $SENDMAIL -f "$FROM" "$USER"
77.echo "Reminder email sent to: $USER - $DEADLINE days left"
78.# Second
79.elif [[ "$DEADLINE" -eq "$LAST" ]]
80.then
81.echo "Subject: $SUBJECT" "$BODY" | $SENDMAIL -f "$FROM" "$USER"
82.echo "Reminder email sent to: $USER - $DEADLINE days left"
83.# Final
84.elif [[ "$DEADLINE" -eq "1" ]]
85.then
86.echo "Subject: $SUBJECT" "$BODY" | $SENDMAIL -f "$FROM" "$USER"
87.echo "Last chance for: $USER - $DEADLINE days left"
88. 
89.else
90. 
91.echo "Account: $USER reports; $DEADLINE days on Password policy"
92.fi
93. 
94.# Finish for loop
95.done
96. 
97.echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"

Silakan dicoba dan semoga bermanfaat 🙂

source : https://imanudin.com/2017/02/06/script-notifikasi-password-expire-pada-zimbra-mail-server/

Posted on: October 7, 2022, by :  | 12 views