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:, , , , , ,

12

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 :)

Usando o Postfix como Gateway para filtro de mensagens (ClamAV + SpamAssassin) no Debian Etch

Posted by Paulo Arruda | Posted in Linux | Posted on 25-04-2008

Tags:, , , , , , , , , ,

3

Hoje eu precisei ajudar um amigo a configurar um Postfix no firewall para que ele receba as mensagens de correio eletrônico, filtre seu conteúdo e mande-as para o servidor de correio interno (Qmail). Resolvi postar a solução aqui no blog, baseada nas documentações encontradas neste link e neste link.

Vamos lá. Para instalar o Postfix, o Clamav e o Spamassassin:

apt-get install postfix spamassassin spamc clamav

Agora edite o arquivo /etc/defaults/spamassassin e mude ENABLED=0 para ENABLED=1. Edite também o arquivo /etc/spamassassin/local.cf e descomente as linhas:

rewrite_header Subject *****SPAM*****

report_safe 1

required_score 5

use_bayes 1

bayes_auto_learn 1

Inicie o serviço do spamassassin:

/etc/init.d/spamassassin start

Agora crie a pasta /var/spool/filter

mkdir /var/spool/filter

chown clamav /var/spool/filter

Dentro do arquivo /etc/postfix/master.cf procure pela linha que começa com smtp inet e altere para que fique como abaixo:

smtp inet n – n – – smtpd

-o content_filter=clamav:clamav

Dentro do mesmo arquivo, adicione após a última linha:

clamav unix – n n – 15 pipe

flags=Rq user=clamav argv=/usr/lib/postfix/clamav-filter.sh -f ${sender} — ${recipient}

Ainda no master.cf, procure a linha que começa com a palavra local e comente-a.

Agora vamos para o arquivo /etc/postfix/main.cf. Procure as linhas abaixo, altere as que existirem como está abaixo (ou acrescente as linhas que nao existirem):

myorigin = seudominio.com

mydestination =

local_recipient_maps =

local_transport = error:local mail delivery is disabled

mynetworks = 127.0.0.0/8 12.34.56.0/24 # sua rede interna

relay_domains = correio.local # a sua maquina de correio para a qual o gateway vai mandar os emails

parent_domain_matches_subdomains = debug_peer_list smtpd_access_maps

relay_recipient_maps =

transport_maps = hash:/etc/postfix/transport

command_time_limit = 1h

Agora, crie o arquivo /etc/postfix/transport com a linha:

seudominio.com smtp:correio.local

Execute:

postmap /etc/postfix/transport

Baixe o script do Deives Michellis para a pasta /usr/lib/postfix

cd /usr/lib/postfix

wget http://www.parruda.net/downloads/clamav-filter.sh

chmod +x clamav-filter.sh

E pronto! Agora mande um

/etc/init.d/postfix restart

tail -f /var/log/mail.info

e monitore se as mensagens estão sendo repassadas para o seu servidor da rede local, e se estão indo filtradas!