Initial release
commit
4815dae33e
|
@ -0,0 +1,10 @@
|
|||
# Скрипты для работы с zimbra https://www.zimbra.org/
|
||||
|
||||
- delete-closed-accounts.sh - удаление закрытых почтовых аккаунтов.
|
||||
- zabbix_zimbra_domain_status.sh - мониторинг корректности записей в DNS для всех почтовых доменов
|
||||
- zabbix_zimbra_service_check.sh - проверка почтовых сервисов
|
||||
- zimbra_clear_mail_queue.sh - удаление из почтовой очереди сообщений и отправка данных в zabbix
|
||||
- zimbra_create_users_from_csv.sh - создание пользователя в зимбре из файла
|
||||
- zimbra_disable_pop3_acces.sh - отключение доступа по pop3 для пользователей у кого он включен
|
||||
- zimbra_get_list_users.sh - получение участников почтового списка рассылки
|
||||
- zimbra_mta_relay_change.sh - переключение отправки почты с одного сервера на другой и возврат в исходное состояние.
|
|
@ -0,0 +1,69 @@
|
|||
#!/bin/bash
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Удаление закрытых учетных записей почты через определенное время
|
||||
# Удаление происходит через месяц после увольнения (на основе комментария)
|
||||
#
|
||||
# Автор: Сергей Калинин
|
||||
# https://nuk-svk.ru
|
||||
# svk@nuk-svk.ru
|
||||
##############################################################################
|
||||
|
||||
# Список учётных записей со статусом "Закрыта" (closed)
|
||||
zmaccts | grep closed | grep @ | while read ACCOUNT_STRING
|
||||
do
|
||||
#ACCOUNT=`echo ${ACCOUNT_STRING} | grep @ | awk '{ print $1 }'`
|
||||
# Квота
|
||||
#QUOTA_TOTAL=`zmprov ga ${ACCOUNT} | grep "zimbraMailQuota" | cut -d ":" -f2`
|
||||
# Использовано из квоты
|
||||
#QUOTA_USAGE=`zmmailbox -z -m ${ACCOUNT} gms`
|
||||
# Сервер с ящиком
|
||||
#HOSTED_ON=`zmprov ga ${ACCOUNT} | grep zimbraMailHost | awk -F: '{ print $2 }'`
|
||||
#echo "-------"
|
||||
#echo ${ACCOUNT_STRING}
|
||||
ACCOUNT=`echo ${ACCOUNT_STRING} | awk -F' ' '{print $1}'`
|
||||
ACCOUNT_CREATE_DATE=`echo ${ACCOUNT_STRING} | awk -F' ' '{print $3 " " $4}'`
|
||||
ACCOUNT_CREATE_DATE=$(date -d "${ACCOUNT_CLOSE_DATE}" +%s)
|
||||
# Дата и время последнего заходя в ящик
|
||||
#LAST_ON=`echo ${ACCOUNT_STRING} | grep zimbraLastLogonTimestamp: | awk -F: '{ print $2 }' `
|
||||
LAST_LOGON_DATE=`echo ${ACCOUNT_STRING} | awk -F' ' '{print $5 " " $6}'`
|
||||
|
||||
if [ "${LAST_LOGON_DATE}" != "never " ]; then
|
||||
LAST_LOGON_DATE_SEC=`date -d "$LAST_LOGON_DATE" +%s`
|
||||
else
|
||||
LAST_LOGON_DATE_SEC='0'
|
||||
fi
|
||||
|
||||
#echo "${ACCOUNT} ${ACCOUNT_CLOSE_DATE} ${ACCOUNT_CREATE_DATE} ${LAST_LOGON_DATE} ${LAST_LOGON_DATE_SEC}"
|
||||
|
||||
NOW_DATE_SEC=$(date +%s)
|
||||
NOW_DATE=$(date +%d%m%Y)
|
||||
|
||||
# Описание
|
||||
DESCRIPTION=`zmprov ga ${ACCOUNT} | grep description | awk -F: '{ print $2 }' `
|
||||
# Дата увольнения
|
||||
FIRED_DATE=`echo ${DESCRIPTION} | grep -i 'увольнение' | cut -d ' ' -f2 `
|
||||
DAY=`echo ${FIRED_DATE} | cut -c 1,2`
|
||||
MONTH=`echo ${FIRED_DATE} | cut -c 3,4`
|
||||
YEAR=`echo ${FIRED_DATE} | cut -c 5,8`
|
||||
FIRED_DATE_SEC=$(date -d "${YEAR}${MONTH}${DAY} 23:59" +%s)
|
||||
|
||||
#echo "${NOW_DATE} ${NOW_DATE_SEC} ${ACCOUNT}; Close: ${ACCOUNT_CREATE_DATE} ${ACCOUNT_CREATE_DATE}; Last: ${LAST_LOGON_DATE} ${LAST_LOGON_DATE_SEC}; ${DESCRIPTION}; Fired: ${FIRED_DATE} ${FIRED_DATE_SEC}"
|
||||
|
||||
#Дата удаления (дата увольнения + 1 месяц)
|
||||
if [ "${LAST_LOGON_DATE_SEC}" -gt 0 ]; then
|
||||
DELETE_DATE=$(date +%Y%m%d -d "${YEAR}${MONTH}${DAY} + 1 month")
|
||||
else
|
||||
DELETE_DATE=$(date +%Y%m%d -d "${YEAR}${MONTH}${DAY}")
|
||||
fi
|
||||
|
||||
DELETE_DATE_SEC=$(date +%s -d "${DELETE_DATE} 23:59")
|
||||
|
||||
if [ "${DELETE_DATE_SEC}" -le "${NOW_DATE_SEC}" ]; then
|
||||
# Удаление ящика
|
||||
#echo "${NOW_DATE}: Удаление: ${ACCOUNT}; ${QUOTA_USAGE}; ${HOSTED_ON}; ${LAST_ON}; ${DESCRIPTION}; ${FIRED_DATE}; ${DELETE_DATE}"
|
||||
zmprov da ${ACCOUNT}
|
||||
echo "Date: ${NOW_DATE}; Account: ${ACCOUNT}; Create date: ${ACCOUNT_CREATE_DATE}; Last logon: ${LAST_LOGON_DATE}; ${DESCRIPTION}; Fired: ${FIRED_DATE}; Deleted: ${DELETE_DATE}"
|
||||
fi
|
||||
done
|
|
@ -0,0 +1,119 @@
|
|||
#!/bin/bash
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Определение корректности записей в DNS
|
||||
# для доменов заведённых в Zimbra для Zabbix
|
||||
#
|
||||
# Автор: Сергей Калинин
|
||||
# https://nuk-svk.ru
|
||||
# svk@nuk-svk.ru
|
||||
##############################################################################
|
||||
#
|
||||
# Использование:
|
||||
#
|
||||
# Получение списка доменов из zimbra и копирование его в файл:
|
||||
# zabbix_zimbra_domain_status.sh discover
|
||||
#
|
||||
# Создание json-файла со списком доменов для службы обнаружения zabbix
|
||||
# zabbix_zimbra_domain_status.sh discover-json
|
||||
#
|
||||
# Чтение JSON-файла и вывод на экран (в zabbix)
|
||||
# zabbix_zimbra_domain_status.sh read-json-discover
|
||||
#
|
||||
# Получение MX записей из ДНС для всех доменов и копирование их в файл
|
||||
# zabbix_zimbra_domain_status.sh get-domain-records _RECORD_TYPE_
|
||||
# где
|
||||
# _RECORD_TYPE_ - тип записи (MX, TXT (для spf))
|
||||
#
|
||||
# Получение MX записи из файла для домена
|
||||
# zabbix_zimbra_domain_status.sh _ZIMBRA_DOMAIN_NAME_
|
||||
# где
|
||||
# _ZIMBRA_DOMAIN_NAME_ - имя домена возвращаемое командой 'zmprov gad'
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
ZMCOMMAND="sudo -u zimbra /opt/zimbra/bin/zmprov"
|
||||
EXTDNS=8.8.8.8
|
||||
RECORD_TYPE=${2:-"MX"}
|
||||
|
||||
FILE_ZIMBRA_DOMAIN_STATUS='/tmp/zimbra_domain_status'
|
||||
FILE_ZIMBRA_DOMAIN_STATUS_TXT='/tmp/zimbra_domain_status_txt'
|
||||
FILE_ZIMBRA_DOMAIN_LIST='/tmp/zimbra_domain_list'
|
||||
|
||||
case "$1" in
|
||||
discover)
|
||||
$ZMCOMMAND gad > ${FILE_ZIMBRA_DOMAIN_LIST}
|
||||
#;;
|
||||
#discover-json)
|
||||
# Return a list of running services in JSON
|
||||
# And create JSON-file
|
||||
DOMAIN_JSON="{\"data\":["
|
||||
while read LINE; do
|
||||
DOMAIN_JSON="${DOMAIN_JSON} {\"{#ZIMBRADOMAIN}\":\"$LINE\"},"
|
||||
done < "${FILE_ZIMBRA_DOMAIN_LIST}"
|
||||
|
||||
echo $(echo $DOMAIN_JSON | sed 's/,\+$//') > ${FILE_ZIMBRA_DOMAIN_LIST}.json
|
||||
#echo ${DOMAIN_JSON} > ${FILE_ZIMBRA_DOMAIN_LIST}.json
|
||||
echo -e "]}" >> ${FILE_ZIMBRA_DOMAIN_LIST}.json
|
||||
exit 0;
|
||||
;;
|
||||
read-json-discover)
|
||||
# Read a JSON and return
|
||||
if [ ! -f ${FILE_ZIMBRA_DOMAIN_LIST}.json ]; then
|
||||
echo "File ${FILE_ZIMBRA_DOMAIN_LIST}.json not found"
|
||||
exit 1
|
||||
fi
|
||||
while read LINE; do
|
||||
echo ${LINE}
|
||||
done < "${FILE_ZIMBRA_DOMAIN_LIST}.json"
|
||||
;;
|
||||
get-domain-records)
|
||||
# Checking file with domains list
|
||||
if [ ! -f ${FILE_ZIMBRA_DOMAIN_LIST} ]; then
|
||||
echo "File ${FILE_ZIMBRA_DOMAIN_LIST} not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${RECORD_TYPE}" = "TXT" ]; then
|
||||
### Getting TXT records
|
||||
# Delete old file with domain status
|
||||
if [ -f ${FILE_ZIMBRA_DOMAIN_STATUS_TXT} ]; then
|
||||
rm -f ${FILE_ZIMBRA_DOMAIN_STATUS_TXT}
|
||||
fi
|
||||
# checking SPF records
|
||||
while read LINE; do
|
||||
REC=$(dig @${EXTDNS} ${RECORD_TYPE} ${LINE} | grep -i -E -o "spf1 .+")
|
||||
echo "${LINE} ${REC}" >> "${FILE_ZIMBRA_DOMAIN_STATUS_TXT}"
|
||||
done < ${FILE_ZIMBRA_DOMAIN_LIST}
|
||||
else
|
||||
### Geting MX records from DNS
|
||||
# Delete old file with domain status
|
||||
if [ -f ${FILE_ZIMBRA_DOMAIN_STATUS} ]; then
|
||||
rm -f ${FILE_ZIMBRA_DOMAIN_STATUS}
|
||||
fi
|
||||
while read LINE; do
|
||||
dig @${EXTDNS} ${RECORD_TYPE} ${LINE} | grep -i -E "^([a-z.]+?)\s+?([0-9]+?)\s+?IN\s+?MX\s+?([0-9]+?)" | awk '{print $1 " " $5 " " $6}' | sort -f >> "${FILE_ZIMBRA_DOMAIN_STATUS}"
|
||||
done < ${FILE_ZIMBRA_DOMAIN_LIST}
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
CHECK_DOMAIN=$1
|
||||
if [ "$CHECK_DOMAIN" = "" ]; then
|
||||
echo "No Zimbra DOMAIN specified..."
|
||||
exit 1
|
||||
fi
|
||||
case "${RECORD_TYPE}" in
|
||||
MX)
|
||||
cat ${FILE_ZIMBRA_DOMAIN_STATUS} | grep -i -E "^${CHECK_DOMAIN}" | awk '{print $3 " " $2 }'
|
||||
;;
|
||||
TXT)
|
||||
#cat ${FILE_ZIMBRA_DOMAIN_STATUS_TXT} | awk -v domain=^${CHECK_DOMAIN} 'match($0,domain) {print substr($0,length(domain)+1)}'
|
||||
REC=$(dig @${EXTDNS} ${RECORD_TYPE} ${CHECK_DOMAIN} | grep -i -E -o "spf1 .+")
|
||||
echo "${REC}"
|
||||
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
exit 0;
|
|
@ -0,0 +1,121 @@
|
|||
#!/bin/bash
|
||||
|
||||
################################################
|
||||
# Get and checking Zimbra services.
|
||||
#
|
||||
# Author: Sergey Kalinin
|
||||
# https://nuk-svk.ru
|
||||
# svk@nuk-svk.ru
|
||||
################################################
|
||||
#
|
||||
# Discover services and making JSON file for Zabbix
|
||||
# ./zabbix_zimbra_service_check.sh discover
|
||||
#
|
||||
# Get status for all zimbra services and create file for next tasks
|
||||
# ./zabbix_zimbra_service_check.sh get-all-status
|
||||
#
|
||||
# Read JSON for send into zabbix
|
||||
# ./zabbix_zimbra_service_check.sh read-json-discover
|
||||
#
|
||||
# Checking service
|
||||
# ./zabbix_zimbra_service_check.sh _ZIMBRA_SERVICE_NAME_
|
||||
#
|
||||
# Where _ZIMBRA_SERVICE_NAME_ - name of zimbra service returned by command "zmcontrol status"
|
||||
#
|
||||
###################################################
|
||||
# Based on:
|
||||
#
|
||||
# Zabbix script to check Zimbra services and perform service discovery.
|
||||
# Supports Zimbra 8.6 and "two-worded" service names
|
||||
# Author: Lorenzo Milesi <maxxer@yetopen.it>
|
||||
# Copytight: YetOpen S.r.l. 2015
|
||||
# License: GPLv3
|
||||
#
|
||||
###################################################
|
||||
|
||||
# uncomment for debug
|
||||
#set -x
|
||||
|
||||
COMMAND="sudo -u zimbra /opt/zimbra/bin/./zmcontrol"
|
||||
|
||||
FILE_ZIMBRA_SERVICE_STATUS='/tmp/zimbra_service_status'
|
||||
FILE_ZIMBRA_SERVICE_LIST='/tmp/zimbra_service_list'
|
||||
|
||||
# Maximum file age in seconds (20 min)
|
||||
MAXAGE=1200
|
||||
|
||||
case "$1" in
|
||||
version)
|
||||
# Return zimbra version
|
||||
VERS=$($COMMAND -v)
|
||||
if [ $? -eq 0 ] ; then
|
||||
echo $VERS
|
||||
exit 0;
|
||||
fi
|
||||
# error
|
||||
exit 1;
|
||||
;;
|
||||
discover)
|
||||
# Return a list of running services in JSON
|
||||
# And create JSON-file
|
||||
echo "{" > ${FILE_ZIMBRA_SERVICE_LIST}.json
|
||||
echo -e "\t\"data\":[\n" >> ${FILE_ZIMBRA_SERVICE_LIST}.json
|
||||
SRVCS=$($COMMAND status | grep -v Host | awk '{$(NF--)=""; print}' | sed 's/^/\t{ \"{#ZIMBRASERVICE}\":\"/' | sed 's/\ $/\" },/')
|
||||
# Remove last comma from the sting, to make a good JSON
|
||||
echo $(echo $SRVCS | sed 's/,\+$//') >> ${FILE_ZIMBRA_SERVICE_LIST}.json
|
||||
echo -e "\n\t]\n" >> ${FILE_ZIMBRA_SERVICE_LIST}.json
|
||||
echo "}" >> ${FILE_ZIMBRA_SERVICE_LIST}.json
|
||||
exit 0;
|
||||
;;
|
||||
read-json-discover)
|
||||
# Read a JSON and return
|
||||
if [ ! -f ${FILE_ZIMBRA_SERVICE_LIST}.json ]; then
|
||||
echo "File ${FILE_ZIMBRA_SERVICE_LIST}.json not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while read LINE; do
|
||||
echo ${LINE}
|
||||
done < "${FILE_ZIMBRA_SERVICE_LIST}.json"
|
||||
;;
|
||||
get-all-status)
|
||||
$COMMAND status| grep -v Host | /usr/bin/tr -d "\t" > ${FILE_ZIMBRA_SERVICE_STATUS}
|
||||
;;
|
||||
*)
|
||||
# move on...
|
||||
CHECK=$1
|
||||
|
||||
if [ "$CHECK" = "" ]; then
|
||||
echo "No Zimbra service specified..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f $FILE_ZIMBRA_SERVICE_STATUS ]; then
|
||||
echo "File $FILE_ZIMBRA_SERVICE_STATUS not found"
|
||||
exit 1
|
||||
fi
|
||||
#check if cached status file size > 0
|
||||
# and age of file
|
||||
if [ -s ${file} ]; then
|
||||
OLD=`stat -c %Z $FILE_ZIMBRA_SERVICE_STATUS`
|
||||
NOW=`date +%s`
|
||||
#echo $OLD
|
||||
|
||||
# if older then maxage, update file
|
||||
if [ `expr $NOW - $OLD` -gt ${MAXAGE} ]; then
|
||||
echo "File $FILE_ZIMBRA_SERVICE_STATUS is to old"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
STATUS="$(cat $FILE_ZIMBRA_SERVICE_STATUS | grep -w "$CHECK" | awk '{print $NF}')"
|
||||
|
||||
if [ "$STATUS" != "Running" ]; then
|
||||
echo 0
|
||||
else
|
||||
echo 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0;
|
|
@ -0,0 +1,48 @@
|
|||
#!/bin/bash
|
||||
|
||||
############################################################№
|
||||
# Удаление из почтовой очереди сообщений зависших с ошибкой:
|
||||
# "lost connection with 127.0.0.1"
|
||||
#############################################################
|
||||
# Автор: Сергей Калинин
|
||||
# https://nuk-svk.ru
|
||||
# svk@nuk-svk.ru
|
||||
##############################################################################
|
||||
|
||||
# Количество сообщений после которого нужно бить тревогу
|
||||
MESSAGE_COUNT=30
|
||||
ZIMBRA_BIN_PATH="/opt/zimbra/common/sbin/"
|
||||
ZABBIX_SENDER="/usr/bin/zabbix_sender"
|
||||
MAIL_SERVER=${HOSTNAME}
|
||||
|
||||
TODAY=$(date +"%d")
|
||||
|
||||
# получаем список потребных сообщений из очереди
|
||||
MESSAGE_LIST=$(${ZIMBRA_BIN_PATH}/postqueue -p | grep -A 1 -B 1 "lost connection with 127.0.0.1")
|
||||
#MESSAGE_LIST=$(cat /tmp/queue | grep -A 1 -B 1 "lost connection with 127.0.0.1")
|
||||
|
||||
# считаем их количество иесли превышает установленное значение завершаем скрипт с ошибкой
|
||||
MSG_COUNT=$(echo "${MESSAGE_LIST}" | cut -d " " -f 1 | grep -E "[A-Z0-9].+" | wc -l)
|
||||
# отправлям данные в заббикс
|
||||
${ZABBIX_SENDER} -c /etc/zabbix/zabbix_agentd.conf -s "${MAIL_SERVER}" -k queue.error.message.count -o $MSG_COUNT
|
||||
|
||||
if [ "${MSG_COUNT}" -ge "${MESSAGE_COUNT}" ]; then
|
||||
echo "Many error messages"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Удаление сообщений старше 1 дня
|
||||
echo "${MESSAGE_LIST}" | while read LINE; do
|
||||
MSG_DAY=$(echo ${LINE} | grep -E "^[A-Z0-9].+" | awk '{print $3,$4,$5,$6}')
|
||||
if [[ -n ${MSG_DAY} ]]; then
|
||||
# определяем дату (число) сообщения
|
||||
MSG_DAY=$(date -d "$(echo ${LINE} | grep -E "^[A-Z0-9].+" | awk '{print $3,$4,$5,$6}')" +%d)
|
||||
#echo $MSG_DAY
|
||||
if [ ${MSG_DAY} != ${TODAY} ]; then
|
||||
MESSAGE_ID=$(echo "${LINE}" | cut -d " " -f 1 | grep -E "[A-Z0-9].+")
|
||||
# echo "$MSG_DAY $MESSAGE_ID"
|
||||
# Delete messages
|
||||
${ZIMBRA_BIN_PATH}/postsuper -d $MESSAGE_ID
|
||||
fi
|
||||
fi
|
||||
done
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/bash
|
||||
####################################################
|
||||
#
|
||||
# Создание юзеров в почте из csv
|
||||
#
|
||||
# Формат файла:
|
||||
# ----------
|
||||
# Наименование 1;user1@example.com;password1
|
||||
# Наименование 2;user2@example.com;password2
|
||||
# Наменование 3;user2@example.com;password3
|
||||
# ...
|
||||
#####################################################
|
||||
# Автор: Сергей Калинин
|
||||
# https://nuk-svk.ru
|
||||
# svk@nuk-svk.ru
|
||||
#####################################################
|
||||
|
||||
ZMPROV=/opt/zimbra/bin/zmprov
|
||||
|
||||
while read LINE; do
|
||||
#echo $LINE
|
||||
name=$(echo ${LINE} | cut -d ";" -f 1)
|
||||
email=$(echo ${LINE} | cut -d ";" -f 2)
|
||||
pass=$(echo ${LINE} | cut -d ";" -f 3 | tr -d "\r\n")
|
||||
login=$(echo ${email} | cut -d "@" -f 1)
|
||||
${ZMPROV} ca ${email} ${pass} zimbraCOSid "11ababa-22-ccc-2222aaa" sn "${login}" cn "${email}" displayName "${name}" zimbraPasswordMustChange FALSE zimbraFeaturePop3DataSourceEnabled FALSE zimbraPop3Enabled FALSE zimbraMailQuota 5728640000
|
||||
|
||||
done < ${1}
|
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
#########################################################
|
||||
#
|
||||
# Получение списка учёток с включенным доступом по POP3
|
||||
# и выключение доступа
|
||||
#
|
||||
#########################################################
|
||||
# Автор: Сергей Калинин
|
||||
# https://nuk-svk.ru
|
||||
# svk@nuk-svk.ru
|
||||
#########################################################
|
||||
|
||||
|
||||
# Получаем список аккаунтов со статусом "active"
|
||||
/opt/zimbra/bin/zmaccts | /usr/bin/grep -E "active" | grep -E "@(domain1|domain2|domain3)\.ru" | awk '{print $1}' | while read ACCOUNT; do
|
||||
# для каждого аккаунта получаем настройки доступа
|
||||
ACCOUNT_STR=$(/opt/zimbra/bin/zmprov ga ${ACCOUNT} zimbraFeaturePop3DataSourceEnabled zimbraPop3Enabled)
|
||||
#echo ${ACCOUNT_STR}
|
||||
POP3_EXT_ACCESS=$(echo $ACCOUNT_STR | grep -E -i -o "zimbraFeaturePop3DataSourceEnabled:\s+(TRUE)" | awk '{print $2}')
|
||||
|
||||
# и если статус TRUE, генерим команду для изменения
|
||||
if [ ${POP3_EXT_ACCESS} ]; then
|
||||
POP3_EXT_DISABLED_CMD="zimbraFeaturePop3DataSourceEnabled FALSE"
|
||||
fi
|
||||
|
||||
POP3_ACCESS=$(echo $ACCOUNT_STR | grep -E -i -o "zimbraPop3Enabled:\s+(TRUE)" | awk '{print $2}')
|
||||
|
||||
if [ ${POP3_ACCESS} ]; then
|
||||
POP3_DISABLED_CMD="zimbraPop3Enabled FALSE"
|
||||
fi
|
||||
|
||||
# если хоть одна из настроек была включена (статус TRUE) то выполняем команду.
|
||||
echo "$ACCOUNT, POP3=${POP3_ACCESS}, POP3_EXT=${POP3_EXT_ACCESS}"
|
||||
if [[ $POP3_EXT_ACCESS || ${POP3_ACCESS} ]]; then
|
||||
/opt/zimbra/bin/zmprov ma ${ACCOUNT} ${POP3_EXT_DISABLED_CMD} ${POP3_DISABLED_CMD}
|
||||
fi
|
||||
|
||||
done
|
|
@ -0,0 +1,47 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
####################################################################
|
||||
#
|
||||
# Получение списка пользователей участников списка(ов) рассылки
|
||||
#
|
||||
####################################################################
|
||||
# Автор: Сергей Калинин
|
||||
# https://nuk-svk.ru
|
||||
# svk@nuk-svk.ru
|
||||
####################################################################
|
||||
#
|
||||
# Использование:
|
||||
#
|
||||
# get_lists_users.sh mail-lists.txt
|
||||
#
|
||||
# Где mail-lists.txt файл с перечислением списков рассылки
|
||||
#
|
||||
# Формат файла:
|
||||
# ----------
|
||||
# list1@example.com
|
||||
# list2@example.com
|
||||
# ...
|
||||
# -----------
|
||||
#
|
||||
# На выходе будет CSV формата:
|
||||
# ----------
|
||||
# Список - list1@example.com;
|
||||
# user1@example.com
|
||||
# user2@example.com
|
||||
# ...
|
||||
# Список - list2@example.com;
|
||||
# user1@example.com
|
||||
# user3@example.com
|
||||
# ...
|
||||
#
|
||||
####################################################################
|
||||
|
||||
IN_FILE=$1
|
||||
|
||||
while read LIST_NAME; do
|
||||
echo "Список - $LIST_NAME;"
|
||||
/opt/zimbra/bin/zmprov gdl $LIST_NAME | grep zimbraMailForwardingAddress | cut -d":" -f 2 | tr -d " "| while read USER; do
|
||||
NAME=$(/opt/zimbra/bin/zmprov ga $USER | grep displayName | cut -d":" -f 2)
|
||||
echo "$USER;$NAME"
|
||||
done
|
||||
done < $IN_FILE
|
|
@ -0,0 +1,46 @@
|
|||
#!/bin/bash
|
||||
|
||||
################################################
|
||||
#
|
||||
# Включение отправки исходящей почты
|
||||
# через другой сервер
|
||||
#
|
||||
# Автор: Сергей Калинин
|
||||
# https://nuk-svk.ru
|
||||
# svk@nuk-svk.ru
|
||||
################################################
|
||||
#
|
||||
# Использование:
|
||||
# - включение отправки через релей:
|
||||
#
|
||||
# ./zimbra_mta_relay_change TARGET_HOST RELAY_HOST
|
||||
#
|
||||
# - отключение отправки через релей
|
||||
#
|
||||
# ./zimbra_mta_relay_change TARGET_HOST
|
||||
#
|
||||
###############################################
|
||||
|
||||
|
||||
ZIMBRA_BIN=/opt/zimbra/bin
|
||||
TARGET_HOST=${1}
|
||||
RELAY_HOST=${2}
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "usage for enable relay sending:"
|
||||
echo " ./zimbra_mta_relay_change TARGET_HOST RELAY_HOST"
|
||||
echo ""
|
||||
echo "usage for disable relay sending:"
|
||||
echo " ./zimbra_mta_relay_change TARGET_HOST"
|
||||
exit
|
||||
fi
|
||||
if [ -z "$2" ]; then
|
||||
$ZIMBRA_BIN/zmprov ms "${TARGET_HOST}" zimbraMtaRelayHost ""
|
||||
$ZIMBRA_BIN/zmprov ms "${TARGET_HOST}" zimbraMtaMyDestination "localhost"
|
||||
else
|
||||
$ZIMBRA_BIN/zmprov ms "${TARGET_HOST}" zimbraMtaRelayHost "${RELAY_HOST}:25"
|
||||
$ZIMBRA_BIN/zmprov ms "${TARGET_HOST}" zimbraMtaMyDestination "localhost ${RELAY_HOST}"
|
||||
fi
|
||||
|
||||
$ZIMBRA_BIN/zmmtactl stop
|
||||
$ZIMBRA_BIN/zmmtactl start
|
Loading…
Reference in New Issue