ืืฆื ืืฆืคื ืช ืืืืจ ืืืงืืจืื ื ืืฉืืืืฉ ืืืชืืืืช ืืืืืืืืืช, ืืืช ืืืจืืื ืืืขืืืืช ืืืืกืืื ืืืช ืืืืชืจ ืืืื ืขื ืืืืจ ืืืงืืจืื ื ืืคื ื ืคืจืืฆื ืืื ืืืื ืืืช ืืืืืช ืกืืกืืืืช ืืืื. ืกืืกืืืืช ืืชืืืืช ืขื ื ืืืจ, ืืืืืกื ืืช ืืงืืฆืื ืฆืืืืจืืื, ืื ืคืฉืื ืื ืืกืคืืง ืืืงืืช ืื ืชืืื ืคืจืฆืช ืืืืื ืืืืื ืืืจืืื ืืขืืืืืช ืืืืืื ืืืืจืืขืื ืืืืจืื ืขื ืืฉืืืืช ืขืกืงืืืช ืืืืฉืืืช. ืื ืืกืืื ืฉืืื ืืจืืื ืฆืจืืื ืืืืืช ืืืื ืืืช ืืืืืช ืกืืกืืืืช ืงืคืื ืืช.
ืขื ืืืช, ืื ืงืฆืื ืืืืื ืืืืข ืฉืืืื ืืืช ืกืืกืืืืช ืชืืื ืืชืืฆืืืช ืจืง ืื ืืื ืื ืจืง ืงืืืืช, ืืื ืชืืฉืืจ ืืงืคืื ืืช ืขื ืืื ืืืื, ืื ืืคืืืช ืขื ืืื ืขืืืื ืืคืชื ืืืจืืื. ืืืฉืื ืืืช ืงืฉื ืืืชืจ ืืื ืฉืื ื ืจืื. ืขืืืืื ืืืจ ืขืืืกืื ืืืืืืช ืฉืืืืื ืื ืืืื ืืืฆืืจื ืืฉื ืืช ืืช ืืกืืกืื, ืื ืืืืช ืืืจื ืฉื ืืืชื ืืืืช ืืงืื ื ืืืืชืจ, ืื ืคืขื ืืืคืืื ืืช ืืกืืกืื ืืงืื ืืคืฉืืื ืืืชืจ, ืืืื ืืืื ืืช ืื ืืืคืงื. ืืื ื ืืฉื ืืฆืืืช ืืืืื ืืืช ืืกืืกืืืืช ืืืจืืื ืื ื ืคืชืจ ืืืจื ืืื ืืืืฆืขืื ืืื ืืื ืฉืื ืื.
Zimbra ืืื ื ืืืจืฉืช ืืืฉืืื ืฆื ืฉืืืฉื ืืื ืืืืืฃ ืืช ืืืื ืืืช ืืกืืกืืืืช. ื ืืชื ืืืฉืื ืืืช ืืืืฆืขืืช ืืืื ืืืื ืื.
ืจืืฉืืช, ืืืื ืืืืื ืืืฆื ืคืืขื ื ืืืื ืกืืกืืืืช ื-Zimbra. ืืืฉืจ ืืฉืืื ืืืฉ ื ืืฆืจ, ืืื ืืงืื ืกืืกืื ืืื ืืช ืขื ืืื ืื ืื ืืืขืจืืช. ืืืืจ ืืื, ืืืฉืชืืฉ ืืืื ืืืืื ืก ืืืืคื ืขืฆืืื ืืืฉืืื ืืืฉื ืืช ืืช ืืกืืกืื. ืื ืืกืืกืืืืช ื ืฉืืจืืช ืืฆืืจื ืืืฆืคื ืช ืืฉืจืช ืขื ืืืืืจื ืืืฉื ืื ืื ืืื ื ื ืืืฉืืช ืืคืืื ืืื ืื ืืฉืจืช. ืื ืืกืืื ืฉืื ืืืฉืชืืฉ ืืฉืื ืืช ืืกืืกืื, ืืื ืืฆืืจื ืืืฆืืจ ืกืืกืื ืืืฉื. ื ืืืืจ ืฉืขื ืืืืจืื ื, ืืฆืืจืช ืกืืกืื ืืืฉื ืืจืฉื ืืฉืชืชืคืืช ืฉื ืื ืื ืืขืจืืช, ืื ืืืจืกื ืืขืืื ืืช ืืืืชืจ ืฉื Zimbra Creative Suite 8.8.9 ืืืกืืคื ืืืฉืชืืฉืื ืืคืฉืจืืช ืืืืืืจ ืกืืกืื ืืืฉื ืืขืฆืื.
ื ืืชื ืืืฆืื ืืช ืืืืจืืช ืืืื ืืืช ืืกืืกืื ืืืืืจืืช ืขืืืจ ืืฉืชืืฉืื ืืืืืื ืืงืืืฆืืช ืืฉืชืืฉืื. ืืชื ืืืื ืืืืืืจ:
- ืืืจื ืกืืกืื - ืืืคืฉืจ ืืืืืืจ ืืช ืืืจื ืืกืืกืื ืืืื ืืืื ืืืืงืกืืืื. ืืืจืืจืช ืืืื, ืืืจื ืืกืืกืื ืืืื ืืืื ืืื 6 ืชืืืื ืืืืงืกืืืื ืืื 64.
- ืืืืงื ืืช ืืกืืกืื - ืืืคืฉืจืช ืืืืืืจ ืืช ืืืื ืฉืืืจืื ืืกืืกืื ืื ืชืงืคื. ืืืฉืชืืฉืื ืื ืฆืจืืืื ืืืืืช ืืชืืงืฃ ืืกืืกืื, ื ืืชื ืืฉื ืืช ืืืชื ืืคื ื ืฉืืกืืกืื ืืคืื
- ืืื ืืืื ืืืชืืืช ืจืืฉืืืช - ืืืคืฉืจ ืืืืืืจ ืืช ืืืกืคืจ ืืืื ืืืื ืฉื ืืืชืืืช ืจืืฉืืืช ืืฉืืืืฉ ืืกืืกืื
- ืืื ืืืื ืชืืืื ืงืื ืื - ืืืคืฉืจ ืืืืืืจ ืืช ืืืกืคืจ ืืืื ืืืื ืฉื ืชืืืื ืงืื ืื ืืฉืืืืฉ ืืกืืกืื
- ืืื ืืืื ืชืืืื ืืกืคืจืืื - ืืืคืฉืจ ืื ืืืืืืจ ืืช ืืืกืคืจ ืืืื ืืืื ืฉื ืกืคืจืืช ื-0 ืขื 9 ืืฉืืืืฉ ืืกืืกืื
- ืกืืื ื ืคืืกืืง ืืื ืืืืืื - ืืืคืฉืจ ืื ืืืืืืจ ืืช ืืืกืคืจ ืืืื ืืืื ืฉื ืกืืื ื ืคืืกืืง ืืชืืืื ืืืืืืื ืืืฉืืฉืื ืืกืืกืื
- ืืืืคืช ืืืกืืืจืืืช ืกืืกืืืืช - ืืืคืฉืจ ืื ืืืืืืจ ืืช ืืกืคืจ ืืกืืกืืืืช ืืืืืจ ืื ืฉืืืฉืชืืฉ ืื ืืฉืชืืฉ ืืื ืคืขื ืืกืืกืืืืช ืืืืจืืช
- ืกืืกืื ื ืขืืื - ืืคืฉืจืืช ืื ืืืคืฉืจืช ืืื ืืข ืืืืฉืชืืฉ ืืฉื ืืช ืืช ืืกืืกืื
- ืืคืฉืจ ื ืขืืืช ืื ืืกื ื ืืฉืื - ืืคืฉืจืืช ืื ืืืคืฉืจืช ืื ืืืืืืจ ืืช ืชืืืืช ืืืขืจืืช ืืืื ืช ืกืืกืื ืฉืืืื
ืืคื ืฉื ืืชื ืืจืืืช, ืืืืจืืช ืืกืืกืื ื-Zimbra ืื ืื ืืืืฉืืช ืืืกืืืืืช ืืืชืืื ืืช ืขืฆืื ืืืืื ืืืช ืืกืืกืืืืช ืืืขื ืืื ืืจืืื. ืื ืืกืฃ, ืืืืฆืขืืช ืกืงืจืืคื ืคืฉืื, ืชืืืื ืืฉืืื ืชืืืืจืืช ืืืฉืชืืฉืื ืฉืืกืืกืื ืฉืืื ืขืืืืช ืืคืื. ืืืืืช ืืชืืืืจืช ืืื, ืืขืืื ืืืื ืืืืืืฃ ืืช ืืกืืกืื ืืืืืืจื ื ืื ืืื, ืืขืื ืฉืืืืืจ ืฉืื ื ืคืชื ืืืืงืจ ืืฆื ืืขืืื ืฉืืืืืฅ ืืช ืจืืข ืืืืคืช ืืกืืกืื ืืืื ืืืฉืคืืข ืืจืขื ืขื ืืขืืืืชื.
ืืื ืฉืืกืงืจืืคื ืืื ืืขืืื, ืขืืื ืืืขืชืืง ืืืชื ืืงืืืฅ ืืืืคืื ืืช ืืงืืืฅ ืื ืืชื ืืืคืขืื. ืืืืืฅ ืืืคืื ืืช ืืืฆืืข ืืกืงืจืืคื ืืื ืืืืืืืื ืืืืฆืขืืช Cron ืื ืฉืืืืืข ืืืฉืชืืฉืื ืฉืื ืขืืื ื ืืช ืืกืืกืื ืฉืืื ืืื ืืื ืฉืืื ืืคืกืืง ืืคืขืื ืืงืจืื. ืื ืืกืฃ, ืืกืงืจืืคื, ืืืงืื zimbra.server.com, ืขืืื ืืืืืืฃ ืืช ืฉื ืืืืืืื ืฉืื.
#!/bin/bash
# ะะฐะดะฐะตะผ ััะด ะฟะตัะตะผะตะฝะฝัั
:
# ะกะฟะตัะฒะฐ ะบะพะปะธัะตััะฒะพ ะดะฝะตะน ะดะปั ะฟะตัะฒะพะณะพ ะฝะฐะฟะพะผะธะฝะฐะฝะธั, ะทะฐัะตะผ ะดะปั ะฟะพัะปะตะดะฝะตะณะพ:
FIRST="3"
LAST="1"
# ะะฐะดะฐะตะผ ะฐะดัะตั ะพัะฟัะฐะฒะธัะตะปั:
FROM="[email protected]"
# ะะฐะดะฐะตะผ ะฐะดัะตั ะฟะพะปััะฐัะตะปั, ะบะพัะพััะน ะฑัะดะตั ะฟะพะปััะฐัั ะฟะธััะผะพ ัะพ ัะฟะธัะบะพะผ ะฐะบะบะฐัะฝัะพะฒ ั ะธััะตะบัะธะผะธ ะฟะฐัะพะปัะผะธ
ADMIN_RECIPIENT="[email protected]"
# ะฃะบะฐะทัะฒะฐะตะผ ะฟััั ะบ ะธัะฟะพะปะฝัะตะผะพะผั ัะฐะนะปั Sendmail
SENDMAIL=$(ionice -c3 find /opt/zimbra/common/sbin/sendmail* -type f -iname sendmail)
# ะะพะปััะฐะตะผ ัะฟะธัะพะบ ะฒัะตั
ะฟะพะปัะทะพะฒะฐัะตะปะตะน.
USERS=$(ionice -c3 /opt/zimbra/bin/zmprov -l gaa $DOMAIN)
# ะฃะบะฐะทัะฒะฐะตะผ ะดะฐัั ั ัะพัะฝะพัััั ะดะพ ัะตะบัะฝะดั:
DATE=$(date +%s)
# ะัะพะฒะตััะตะผ ะบะฐะถะดะพะณะพ ะธะท ะฝะธั
:
for USER in $USERS
do
# ะฃะทะฝะฐะตะผ, ะบะพะณะดะฐ ะฑัะป ัััะฐะฝะพะฒะปะตะฝ ะฟะฐัะพะปั
USERINFO=$(ionice -c3 /opt/zimbra/bin/zmprov ga "$USER")
PASS_SET_DATE=$(echo "$USERINFO" | grep zimbraPasswordModifiedTime: | cut -d " " -f 2 | cut -c 1-8)
PASS_MAX_AGE=$(echo "$USERINFO" | grep "zimbraPasswordMaxAge:" | cut -d " " -f 2)
NAME=$(echo "$USERINFO" | grep givenName | cut -d " " -f 2)
# ะัะพะฒะตััะตะผ, ะฝะตั ะปะธ ััะตะดะธ ะฟะพะปัะทะพะฒะฐัะตะปะตะน ัะตั
, ั ะบะพะณะพ ััะพะบ ะดะตะนััะฒะธั ะฟะฐัะพะปั ัะถะต ะธััะตะบ.
if [[ "$PASS_MAX_AGE" -eq "0" ]]
then
continue
fi
# ะัััะธััะฒะฐะตะผ ะดะฐัั ะพะบะพะฝัะฐะฝะธั ะดะตะนััะฒะธั ะฟะฐัะพะปะตะน
EXPIRES=$(date -d "$PASS_SET_DATE $PASS_MAX_AGE days" +%s)
# ะกัะธัะฐะตะผ, ัะบะพะปัะบะพ ะดะฝะตะน ะพััะฐะปะพัั ะดะพ ะพะบะพะฝัะฐะฝะธั ััะพะบะฐ ะดะตะนััะฒะธั ะฟะฐัะพะปั
DEADLINE=$(( (($DATE - $EXPIRES)) / -86400 ))
# ะัะฟัะฐะฒะปัะตะผ ะฟะธััะผะพ ะฟะพะปัะทะพะฒะฐัะตะปัะผ
SUBJECT="$NAME - ะะฐั ะฟะฐัะพะปั ััะฐะฝะตั ะฝะตะดะตะนััะฒะธัะตะปัะฝัะผ ัะตัะตะท $DEADLINE ะดะฝะตะน"
BODY="
ะะดัะฐะฒััะฒัะนัะต, $NAME,
ะะฐัะพะปั ะฒะฐัะตะณะพ ะฐะบะบะฐัะฝัะฐ ััะฐะฝะตั ะฝะตะดะตะนััะฒะธัะตะปัะฝัะผ ัะตัะตะท $DEADLINE ะดะฝะตะน, ะะพะถะฐะปัะนััะฐ, ัะพะทะดะฐะนัะต ะฝะพะฒัะน ะบะฐะบ ะผะพะถะฝะพ ัะบะพัะตะต.
ะั ะผะพะถะตัะต ัะฐะบะถะต ัะพะทะดะฐัั ะฝะฐะฟะพะผะธะฝะฐะฝะธะต ะพ ัะผะตะฝะต ะฟะฐัะพะปั ะฒ ะบะฐะปะตะฝะดะฐัะต Zimbra.
ะะฐัะฐะฝะตะต ัะฟะฐัะธะฑะพ.
ะก ัะฒะฐะถะตะฝะธะตะผ, IT-ะพัะดะตะป
"
# ะะตัะฒะพะต ะฟัะตะดัะฟัะตะถะดะตะฝะธะต
if [[ "$DEADLINE" -eq "$FIRST" ]]
then
echo "Subject: $SUBJECT" "$BODY" | $SENDMAIL -f "$FROM" "$USER"
echo "Reminder email sent to: $USER - $DEADLINE days left"
# ะะพัะปะตะดะฝะตะต ะฟัะตะดัะฟัะตะถะดะตะฝะธะต
elif [[ "$DEADLINE" -eq "$LAST" ]]
then
echo "Subject: $SUBJECT" "$BODY" | $SENDMAIL -f "$FROM" "$USER"
echo "Reminder email sent to: $USER - $DEADLINE days left"
# Final
elif [[ "$DEADLINE" -eq "1" ]]
then
echo "Subject: $SUBJECT" "$BODY" | $SENDMAIL -f "$FROM" "$USER"
echo "Last chance for: $USER - $DEADLINE days left"
fi
done
ืืคืืื, ืื ื ืืืืืื ืืืืจ ืฉ-Zimbra Collaboration Suite ืืชืืืื ืืืื ืื ืืืืชื ืืจืืื ืื ืฉืืืืืขื ืืืื ืืืช ืกืืกืืืืช ืงืคืื ืืช, ืืืืืืช ืืคืื ืงืฆืืืช ืืืืื ืืช, ืืืื ืื ืคืฉืื ืืืฉืื ืืช ืืืืฉืื ืืงืคืื ื ืฉืื ืืืขืืืืื.
ืืื ืืฉืืืืช ืืงืฉืืจืืช ื-Zextras Suite, ื ืืชื ืืืฆืืจ ืงืฉืจ ืขื ื ืฆืืืช ืืืจืช Zextras Katerina Triandafilidi ืืืืฆืขืืช ืืืืจ ืืืงืืจืื ื [ืืืื ืืืื"ื]
ืืงืืจ: www.habr.com