Automatização de criação de assinatura do Zimbra

De Wiki Hackstore

Desde a versão 6.4 do Zimbra é possível criar assinaturas de email via linha de comando.

Ativar assinatura:

zimbraDomainMandatoryMailSignatureEnabled (TRUE/FALSE) TRUE

Cria assinatura em texto plano:

zimbraDomainMandatoryMailSignatureText

Obtenha o script abaixo:

http://wiki.hackstore.com.br/downloads/wiki-scripts/cria-assinatura-cron-hackstore.com.br.sh
#!/bin/bash

# Cria estrutura necessaria

# remove extra whitespace
crunch() {
        while read FOO ; do
              echo $FOO
        done
        }

ZMPROV="/opt/zimbra/bin/zmprov"
TMPDIR="/tmp/zassinatura/${ACCOUNT}"
INFO_FILE="${TMPDIR}/info.txt"

mkdir -p "${TMPDIR}"
#########################################################

#for ACCOUNT in ${LIST_ACCOUNT}; do
for ACCOUNT in $($ZMPROV -l gaa hackstore.com.br | sort);  do

	echo -ne "Checando assinatura de conta: ${ACCOUNT}\t"
# obtendo infos da conta
${ZMPROV} ga ${ACCOUNT} | egrep "givenName|sn|title|telephoneNumber|uid|zimbraPrefMailSignatureHTML|zimbraSignatureName|mobile|company|description|displayName" |grep -v 'zimbraSharedItem:' > ${INFO_FILE}

# Preenche campos vazios com caracter '-'
NOME_ASSINATURA="SIGN-$(grep 'uid: ' ${INFO_FILE}|cut -d":" -f2|crunch)"
NOME_COMPLETO="$(grep 'displayName: ' ${INFO_FILE}|cut -d":" -f2|crunch)"
CARGO="$(grep 'title: ' ${INFO_FILE}|cut -d":" -f2|crunch)"
TELEFONE="$(grep 'telephoneNumber: ' ${INFO_FILE}|cut -d":" -f2|crunch) / $(grep 'mobile: ' ${INFO_FILE}|cut -d":" -f2|crunch)"
EMPRESA="$(grep 'company: ' ${INFO_FILE}|cut -d":" -f2|crunch)"

	if [ -z "${NOME_COMPLETO}" ] ; then
		NOME_COMPLETO="-"
	fi

	if [ -z "${CARGO}" ] ; then
		CARGO="-"
	fi

	if [ -z "${TELEFONE}" ] ; then
		TELEFONE="-"
	fi



if [ -z "${ACCOUNT}" ] && [ -z "${NOME_ASSINATURA}" ] && [ -z "${NOME_COMPLETO}" ] && [ -z "${CARGO}" ] && [ -z "${TELEFONE}" ]; then
	echo -e "Argumentos ausentes:\n./set_signature.sh <e-mail> <NomeAssinatura> <NomeCompleto> <função> <telefone>\n\nUse /opt/zimbra/bin/zmprov gsig <e-mail> para visualizar a configuração atual"
	exit 1
fi	


#########################################################

	
atualizaassinatura() {

echo "Criando assinatura ${NOME_ASSINATURA} na conta ${ACCOUNT}"
    SIGNATURED=$(/opt/zimbra/bin/zmprov csig "${ACCOUNT}" "${NOME_ASSINATURA}" zimbraPrefMailSignatureHTML "<div>Atenciosamente,</div><table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"font-family: Arial, sans-serif\" class=\"mceItemTable\"><tbody><tr><td rowspan=\"4\" align=\"center\" valign=\"middle\"><img src=\"http://www.hackstore.com.br/assinaturas/ass_email_p1.png\" alt=\"www.hackstore.com.br\" width=\"150\" height=\"60\"></td><td>  <span style=\"color:#E17800; font-weight: bold; font-size: 13px\">${NOME_COMPLETO}</span></td></tr><tr><td>  <span style=\"font-style:italic; font-size: 12px\">${CARGO}</span></td></tr><tr><td>  <span style=\"font-size: 12px\">${TELEFONE}</span></td></tr><tr><td align=\"center\">  <img src=\"http://www.hackstore.com.br/assinaturas/ass_email_p2.png\" alt=\"www.hackstore.com.br\" width=\"150\" height=\"25\"></td></tr></tbody></table><div><br></div><div><br></div><div><br data-mce-bogus=\"1\"></div>")


echo "Setando assinatura default para ${NOME_ASSINATURA}"
/opt/zimbra/bin/zmprov ma ${ACCOUNT} zimbraPrefMailSignatureEnabled TRUE zimbraPrefMailSignatureStyle outlook zimbraPrefDefaultSignatureId $SIGNATURED zimbraPrefForwardReplySignatureId $SIGNATURED
if [ $? -gt 0 ]; then
echo -e "\nError ao criar assinatura. Corrija-o!\nSe a assinatura existir, é necessário deleta-la, pode-se usar o comando /opt/zimbra/bin/zmprov dsig ${ACCOUNT} ${NOME_ASSINATURA}"
exit 2
fi

echo "Setando assinatura default de resposta para ${NOME_ASSINATURA}"
/opt/zimbra/bin/zmprov ma ${ACCOUNT} zimbraPrefForwardReplySignatureId $(/opt/zimbra/bin/zmprov gsig ${ACCOUNT} | grep -B 1 "SIGN" | grep "Id" | cut -d" " -f2|tail -1)
if [ $? -gt 0 ]; then
echo -e "\nError ao criar assinatura. Corrija-o!\nSe a assinatura existir, é necessário deleta-la, pode-se usar o comando /opt/zimbra/bin/zmprov dsig ${ACCOUNT} ${NOME_ASSINATURA}"
exit 2
fi


}
	# obtem assinatura atual para comparacao	
	grep zimbraPrefMailSignatureHTML ${INFO_FILE} |sed s,'zimbraPrefMailSignatureHTML: ',,g > ${TMPDIR}/assinatura-atual.txt
	
	
	# obtem nova assinatura para comparacao	
	echo "<div>Atenciosamente,</div><table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"font-family: Arial, sans-serif\" class=\"mceItemTable\"><tbody><tr><td rowspan=\"4\" align=\"center\" valign=\"middle\"><img src=\"http://www.hackstore.com.br/assinaturas/ass_email_p1.png\" alt=\"www.hackstore.com.br\" width=\"150\" height=\"60\"></td><td>  <span style=\"color:#E17800; font-weight: bold; font-size: 13px\">${NOME_COMPLETO}</span></td></tr><tr><td>  <span style=\"font-style:italic; font-size: 12px\">${CARGO}</span></td></tr><tr><td>  <span style=\"font-size: 12px\">${TELEFONE}</span></td></tr><tr><td align=\"center\">  <img src=\"http://www.hackstore.com.br/assinaturas/ass_email_p2.png\" alt=\"www.hackstore.com.br\" width=\"150\" height=\"25\"></td></tr></tbody></table><div><br></div><div><br></div><div><br data-mce-bogus=\"1\"></div>" > ${TMPDIR}/assinatura-setada.txt


if [ ! -z "${EMPRESA}" ]; then
# Executa a comparacao das assinaturas. Se a assinatura estiver diferente, deleta a atual e depois atualiza pra nova:
NOME_ASSINATURA_ATUAL=$(grep 'zimbraSignatureName' ${INFO_FILE}|wc -l)
if [ "${NOME_ASSINATURA_ATUAL}" -eq 0 ]; then
        echo -e "Conta sem assinatura\n" 
	atualizaassinatura

else
	COMPARA_ASSINATURA=$(diff ${TMPDIR}/assinatura-atual.txt ${TMPDIR}/assinatura-setada.txt|wc -l)
	if [ ${COMPARA_ASSINATURA} -eq 0 ]; then
	        echo -e "\nAssinatura atualizada... ignorando update de assinatura."
else
	        echo -e "\nAssinatura desatualizada... definindo nova assinatura."
# deleta assinatura
 /opt/zimbra/bin/zmprov dsig ${ACCOUNT} ${NOME_ASSINATURA}
	atualizaassinatura
	    fi
	
fi
else
	echo -e "Empresa ausente... ignorando update de assinatura."
fi

done

# Fim

Mais infos:

http://wiki.zimbra.com/index.php?title=Setting_automatic_Default_Signature