Como restringir alguns usuários do Zimbra a enviar e/ou receber emails apenas para domínios específicos [ATUALIZADO]
Posted by Paulo Arruda | Posted in Linux | Posted on 02-02-2011
Tags:envio, postfix, recebimento, restringir, restringir domínios, restringir usuários, zimbra
13
ATUALIZADO: Este tutorial foi atualizado e testado para a versão 6.xx do Zimbra.
Certa vez um cliente me pediu para restringir apenas alguns usuários do Zimbra a enviar e receber emails apenas para o domínio do correio da empresa. Fuçando na internet, não achei uma documentação que explicasse como fazer ambas as restrições, apenas cada uma separadamente.
Infelizmente, as inúmeras soluções existentes no Wiki do Zimbra não coexistem em paz. Fui procurar ajuda na documentação oficial do Postfix. Resolvi meu problema e vou postar aqui como.
Este tutorial é baseado no Zimbra Colaboration Suite 6 Open Source.
Obs.: Tudo é feito com o usuário ROOT.
Edite o arquivo /opt/zimbra/postfix/conf/main.cf e mude a linha que começa com “smtpd_recipient_restrictions” para:
smtpd_recipient_restrictions = check_recipient_access hash:/opt/zimbra/conf/receber, reject_non_fqdn_recipient, permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, reject_unlisted_recipient, reject_invalid_hostname, reject_non_fqdn_sender, permit
Agora, adicione as seguintes linhas ao final do mesmo arquivo:
smtpd_sender_restrictions = check_sender_access hash:/opt/zimbra/conf/enviar
restringe_recebimento = check_sender_access hash:/opt/zimbra/conf/dominios, reject
restringe_envio = check_recipient_access hash:/opt/zimbra/conf/dominios, reject
smtpd_restriction_classes = restringe_envio,restringe_recebimento
Edite o arquivo /opt/zimbra/conf/postfix_recipient_restrictions.cf e adicione a linha abaixo no início do arquivo:
check_recipient_access hash:/opt/zimbra/conf/receber
Crie os arquivos enviar, receber e domínios:
touch /opt/zimbra/conf/{enviar,receber,dominios}
chown zimbra.zimbra /opt/zimbra/conf/{enviar,receber,dominios}
Crie o script /opt/zimbra/conf/atualizar.sh com o seguinte conteúdo:
#!/bin/bash
POSTMAP="/opt/zimbra/postfix/sbin/postmap"
cd /opt/zimbra/conf
echo > enviar
echo > receber
echo > dominios
for i in $(cat emails_enviar.txt| grep -v "^#")
do
echo $i restringe_envio >> enviar
done
for i in $(cat emails_receber.txt| grep -v "^#")
do
echo $i restringe_recebimento >> receber
done
for i in $(cat dominios.txt| grep -v "^#")
do
echo $i OK >> dominios
done
$POSTMAP dominios
$POSTMAP enviar
$POSTMAP receber
chown zimbra. enviar* receber* dominios* emails*
su - zimbra -c "zmmtactl stop"
su - zimbra -c "zmmtactl start"
E torne-o executável:
chmod +x /opt/zimbra/conf/atualizar.sh
Agora vamos criar os arquivos que você irá editar toda vez que quiser incluir ou excluir contas restritas e domínios para os quais estas contas restritas poderão interagir recebendo/enviando emails:
ATENÇÃO: os arquivos abaixo NÃO podem ficar vazios.
Crie o arquivo /opt/zimbra/conf/dominios.txt. Neste arquivo você deve colocar os domínios para os quais as contas restritas podem enviar ou receber emails. Exemplo:
suaempresa1.com.br
suaempresa2.com.br
Crie o arquivo /opt/zimbra/conf/emails_enviar.txt. Neste arquivo você deve colocar a lista das contas que só podem enviar emails para os domínios contidos em /opt/zimbra/conf/dominios.txt. Separe cada usuário por linha, respeitando a sintaxe do arquivo. Exemplo:
rh@suaempresa1.com.br
fulano@suaempresa1.com.br
beltrano@suaempresa2.com.br
Por fim, crie o arquivo /opt/zimbra/conf/emails_receber.txt. Neste arquivo, coloque a lista das contas que só podem receber emails dos domínios contidos em /opt/zimbra/conf/dominios.txt. Separe cada usuário por linha, respeitando a sintaxe do arquivo. Exemplo:
rh@suaempresa1.com.br
fulano@suaempresa1.com.br
beltrano@suaempresa2.com.br
Ao final de tudo pronto, rode como ROOT o script criado anteriormente:
/opt/zimbra/conf/atualizar.sh
Espero ter ajudado


Muito obrigado pela colaboração, google+I’m Luck = parruda.net
Caro, esse procedimento impede atualizações do Zimbra (p.ex: 6.0.5 para 6.0.10)?
Se fizermos atualizações apenas perde essa config que pode ser feita novamente?
Obrigado pela informação disponibilizada…
Vou testar.
Olá Eduardo!
Este procedimento altera manualmente certos arquivos que podem sim ser sobrescritos em uma atualização do Zimbra.
Seria interessantes salvar uma cópia deles, e sempre que você atualizar, verifique-os.
Abração.
Obg!
Vou testar agora em um 6.0.10.
Eduardo
Opa Eduardo! Você deve ter notado que eu estou dando uma reformulada no blog certo?
Estes posts são muito antigos, eu vou reescrever este tutorial do Zimbra adaptando para a versão 6.
Caso não funcione, volte e veja o post atualizado!
Abração!
Está aqui o que faltava para soluções de servidores e ferramentas do gênero. A internet sempre possui muito conteúdo interessante, mas a grande diferença são as pessoas que disponibilizam este conteúdo de forma didática e simples, para que possamos ter um entendimento sobre o assunto. Parabéns pelo trabalho!
opa, primeiramente parabéns pelo artigo.
estou enfrentando um problema aqui, parecido com o seu, porem não sei se cabe esses mesmos recursos.
quero restringir o envio de Email para todos os usuários, porem não para aqueles que estiverem cadastrado na lista global de endereços.
seria possível fazer isso?
Opa Leonardo!
Você pode gravar também emails no arquivo dominios.txt, e as contas restritas poderão enviar/receber destes emails.
Então, para resolver seu problema, você precisa arrumar uma forma de exportar a GAL, jogar pra dentro deste arquivo e rodar o script!
Talvez o zmprov te ajude com essa exportação.
Abração.
Olá.
Obrigado pelo tutorial =)
Estou com uma instalação nova do Zimbra CS 7.1.4.
Segui a risca seu tutorial, porém no final não consigo rodar o script. Recebo mensagem de
“bad interpreter: no such file or directory”
revisei 2x todos os passos e scripts, e pra não ter erro no script maior, copiei daqui, joguei um txt, e daí joguei pro linux – e claro, reconferi
tb conferi cada linha do script pra ver quem ela estava chamando, e está tudo correto
tem idéia doq pode ser?
abraços
Olá Bruno!
Verifique se a primeira linha do arquivo é:
#!/bin/bashCaso esteja certo, pode ser algum problema de codificação de caracteres. Instale o utilitário dos2unix e execute…
dos2unix atualizar.sh… para converter para o conjunto de caracteres correto.
Espero ter ajudado. Abração!
Olá Paulo,
Vlw pela ajuda, era isso mesmo.
Havia copiado e colado teu script num txt, e então importado na VM do Zimbra.
Quando recriei o script rodou certinho =)
Mas infelizmente não funciona no Zimbra 7.
Já fiz vários testes e ele sempre envia, incondicionalmente.
OBS: não recebi email de reply quando vc respondeu. Normal?
OBS2: posso colocar este script atualizar.sh no cron.hourly pra rodar toda vez q o servidor zimbra for reiniciado?
Abraços e vlw pelo tuto =)
Mmmm, esse tutorial foi atualizado pro zimbra 6.
Eu tenho isso funcionando no Zimbra 7 em alguns clientes, mas não me lembro quais alterações que eu fiz.
Façamos o seguinte, eu vou verificar o que precisa ser feito para funcionar no Zimbra 7 e posto aqui.
Sobre receber o email da resposta do comentário, estranho, vou verificar depois o que está acontecendo.
Muito obrigado pelo feedback. Aguarde minha resposta.
Abração!
Como desfaço essa configurçao.