Migrando assinaturas entre servidores Zimbra

No outro artigo migramos contas e mensagens dos usuários entre os servidores Zimbra, mas tem outras coisas que nossos usuários criam no servidor que podem ser migradas também: as assinaturas.

Sei que o ideal é que todos usem o padrão da empresa, mas nem sempre isso é possível, ou seja, cada um cria a sua.

O normal é que o logo da empresa seja posto em um servidor HTTP e os usuários usem a URL em suas assinaturas, mas geralmente eles vão fazer upload de cada logo individualmente 🙁 . Se seus usuários forem assim vai dar um problema ao importar a assinatura, vai ficar um quadrado com X no lugar da imagem.

Mas você pode corrigir e fazer com que o logo seja referenciado pela url, assim não terá (muita 🙂 ) dor de cabeça na importação.

Primeiro logue no servidor de Produção e faça o seguinte:

# su – zimbra
$ cd /tmp
$ mkdir sign

Crie o seguinte script no /tmp:

vi obtem-assinaturas.sh
 
#!/bin/bash
# Obtemos uma lista de todas as contas do servidor
ZMPROV="/opt/zimbra/bin/zmprov"
for MAIL in $($ZMPROV -l gaa | sort); 	do
		$ZMPROV gsig $MAIL  > sign/assinatura-$MAIL
done

Isso irá fazer um dump de todas as assinaturas no subdiretório sign com o nome assinatura-emaildousuario no seguite formato:

# name Vagner
zimbraPrefMailSignatureHTML: <p class="MsoNormal"><span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: navy; FONT-SIZE: 10pt">Atenciosamente;</span></p><br><b>Vagner Fonseca</b><br><b>Consultor de TI</b><br><b>LPI Specialist</b><br><span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: navy; FONT-SIZE: 10pt"><br><img src="http://cooperati.com.br/wp-content/uploads/2011/11/banner-cooperati-mini.jpg"><br>&nbsp;</span>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: navy; FONT-SIZE: 10pt">Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO AMBIENTE.</span></p>
<p>&nbsp;</p>
zimbraSignatureId: 3896270b-1dbd-4a72-a48a-c72d6ccf22b2
zimbraSignatureName: Vagner

Mesmo que alguns usuários não tenham criado uma assinatura um arquivo será criado para eles, se o tamanho do arquivo for 0 é porque ele não tem assinatura e pode ser descartado.

É possível também com esses passos criar uma assinatura até para quem não tem, basta adaptar o script para usar um único arquivo para os usuários, mas isso fica para sua criatividade :-).

Copie o diretório sign para o /tmp do servidor de migração, logue como usuário zimbra e faça o seguinte script:

$ cd /tmp

#!/bin/bash
#
ZMPROV="/opt/zimbra/bin/zmprov"
for CONTAS  in $(ls sign) ; do
	MAIL=$(echo $CONTAS | awk -F "assinatura-" '{print $2}')
	ASSINATURA="$(cat sign/$CONTAS  | grep -v ^# | grep -v zimbraSignatureId | grep -v zimbraSignatureName | sed s/zimbraPrefMailSignatureHTML:/""/)"
	zmprov csig $MAIL nova zimbraPrefMailSignatureHTML "$ASSINATURA"
 
done

Esse script irá ler os arquivos no subdiretório sign e criar uma assinatura com nome nova para cada arquivo encontrado.

Pronto. Assinaturas migradas e usuários contentes (se é que isso é possível!)

Não se esqueçam de comentar, votar no TopBLog e curtir nossa página no Facebook… (ufa!)