Zimbra MailBox usage Report

Hello, in today’s article I will demonstrate how to create a script that sends reports of mailbox use by domain, this is very useful for SysAdmin.

mkdir -p /etc/zimbra/scripts/
cd /etc/zimbra/scripts/
vi accountusage.sh

#!/bin/bash
output="/tmp/accountusage"
domain=$1
SendTo="dluisi@diegoluisi.eti.br; admin@diegoluisi.eti.br"
rm -f $output
touch $output
echo "Subject: Mailbox Usages for $domain" > $output
server=`/opt/zimbra/bin/zmhostname`
/opt/zimbra/bin/zmprov gqu $server|grep $domain|awk {'print $1" "$3" "$2'}|sort|while read line
do
usage=`echo $line|cut -f2 -d " "`
quota=`echo $line|cut -f3 -d " "`
user=`echo $line|cut -f1 -d " "`
status=`/opt/zimbra/bin/zmprov ga $user | grep  ^zimbraAccountStatus | cut -f2 -d " "`
echo "$user `expr $usage / 1024 / 1024`Mb `expr $quota / 1024 / 1024`Mb ($status account)" >> $output
done
cat $output | /opt/zimbra/postfix/sbin/sendmail $SendTo -s "Mailbox Usages for domain"

./accountusage.sh "diegoluisi.eti.br"

Close Zimbra Relay

Filtrar envio de e-mails Zimbra

Logue na maquina e se torne zimbra
[root@mail~]# su– zimbra
[zimbra@mail ~]$

Altere as permissões do arquivo zmmta.cf para que se possa editar o arquivo.

ls -l /opt/zimbra/conf/zmmta.cf
-rw-r–r– 1 zimbra zimbra 12995 Jun 3 20:10 conf/zmmta.cf
chmod 644 conf/zmmta.cf

Edite o arquivo

vi /opt/zimbra/conf/zmmta.cf

localize a linha:
POSTCONF smtpd_recipient_restrictions FILE postfix_recipient_restrictions.cf

Acima desta linha adicione:
smtpd_sender_login_maps LOCAL postfix_virtual_mailbox_maps
POSTCONF smtpd_sender_restrictions FILE postfix_sender_restricions.cf

Crie o arquivo: postfix_sender_restricions.cf dentro de /opt/zimbra/conf

Adicione o seguinte conteúdo ao mesmo:
reject_authenticated_sender_login_mismatch
reject_unknown_sender_domain
reject_non_fqdn_sender
reject_unlisted_sender
permit_sasl_authenticated
permit_mynetworks
reject_unknown_client
reject_invalid_hostname
reject_unknown_hostname
reject_unauth_pipelining
reject_rbl_client bl.spamcop.net
reject_rbl_client zen.spamhaus.org
reject_rbl_client rhsbl.sorbs.net
reject_rbl_client dnsbl.sorbs.net
reject_rbl_client dns.rfc-ignorant.org
permit

Faça o reload com o zmmtactl
zmmtactl reload

Queria deixar meus agradecimento para meu amigo Elton Ferreira que colaborou com esse artigo.

Zimbra – Alterando tamanho máximo do anexo

Primeiro logue com o usuário Zimbra

# su zimbra

Para saber qual o tamanho máximo do anexo digite

# zmprov gacf | grep zimbraMtaMaxMessageSize
zimbraMtaMaxMessageSize: 20480000
# zmprov gacf | grep zimbraFileUploadMaxSize
zimbraFileUploadMaxSize: 20480000

Nesse exemplo o tamanho do anexo é de 20mb,

Agora vamos alterar para o valor desejado.

10240000 = 10mb
20480000 = 20mb
30720000 = 30mb

Para alterar o tamanho digite:

# zmprov mcf zimbraMtaMaxMessageSize 30720000

# zmprov mcf zimbraFileUploadMaxSize 30720000

Pronto, agora o tamanho máximo do anexo é de 30mb

Zimbra – Blacklist e Whitelist

Olá Galera nesse post irei demonstrar como criar uma Blacklist e uma Whitelist no Zimbra.

Primeiro gostaria de esclarecer que a Whitelist prevalece sobre a Blacklist, então caso tenha bloqueado na Blacklist o domínio gmail.com e liberado na Whitelist um endereço diego.efuture@gmail.com, os e-mails enviado por diego.efuture@gmail.com serão entregues para o usuário.

Para criarmos a blacklist devemos seguir os passos abaixo:

Acesse como root o servidor onde está instalado o zimbra

1) Crie o arquivo blacklist
# vi /etc/zimbra/blacklist

Adicione os domínios ou os e-mails que deseje bloquear, nesse exemplo adicionarei o gmail.com e ofertas@americanas.com.br, um domínio ou email por linha.

Ex:
gmail.com
ofertas@americanas.com.br

Após adicionado digitar o comando

# :wq!

2) Após criada a blacklist vamos criar a whitelist, o processo é idêntico ao da blacklist, única mudança é o nome do arquivo a ser criado.
# vi /etc/zimbra/whitelist

Os demais passos são iguais.

Agora que temos os dois arquivos criados devemos informar ao anti-spam onde ele deve ir buscar as informações de blacklist e whitelist. Para isso deveremos editar o arquivo amavisd.conf seguindo os passos abaixo descritos.

3) Acesse com o usuário zimbra e edite o arquivo amavisd.conf
# su zimbra
$ cd /opt/zimbra/conf/
$ vi amavisd.conf

Localizar a linha #ENVELOPE SENDER SOFT-WHITELISTING / SOFT-BLACKLISTING e abaixo dela adicionar o seguinte:

read_hash(\%whitelist_sender, '/etc/zimbra/whitelist');
read_hash(\%blacklist_sender, '/etc/zimbra/blacklist');

Salvar o arquivo

$ :wq!

4) Para as mudanças terem efeito tem que ser reiniciado o serviço amavisd

# su zimbra
$ zmantispamctl restart

Pronto está ativado a blacklist e whitelist do Zimbra.

Toda vez que for adicionado algo na whitelist ou na blacklist devemos executar o passo 4) novamente.

Usando o Postgrey e acabando com os SPAM

Eae Galera, Nesse artigo vou ensinar como instalar e integrar o Postgrey ao Zimbra, visando diminuir a quantidade de SPAM

“Para quem não conhece, greylisting é uma técnica simples que consiste em recusar-se a receber uma mensagem, indicando uma indisponibilidade momentânea, na primeira vez em que é feita a tentativa de entregá-la, aceitando-a mais tarde caso o servidor volte a tentar entregar. Como grande parte dos spammers não tenta enviar a mensagem novamente, esse método elimina uma boa parte das mensagens indesejadas que lotam as nossas caixas postais.”

Ambiente

Linux CentOS 6 x64
ZiMbra 7.2

yum install postgrey

nano /etc/init.d/postgrey

# Vamos comentar a linha abaixo
# OPTIONS=”–unix=$SOCKET”

# Inserir essa linha logo abaixo da linha comentada
OPTIONS=”–whitelist-clients=/etc/postfix/postgrey_whitelist_clients –whitelist-recipients=/etc/postfix/postgrey_whitelist_recipients –inet=10023 –unix=$SOCKET”

nano /opt/zimbra/conf/postfix_recipient_restrictions.cf
# Adicionar o conteudo abaixo, logo após o ultimo %% (antes da ultima linha +-)
check_policy_service inet:127.0.0.1:10023

# Se quiser adicionar algum cliente na Whitelist
nano /etc/postfix/postgrey_whitelist_recipients

# Reiniciando o serviço
service postgrey restart

# Iniciar automaticamente
chkconfig postgrey on

#Verificar os Logs
tail -f /var/log/maillog | grep greylist

Obs. as contas locais não vão passar pelo postgrey

#Report 😀

cat /var/log/mail.log | postgreyreport \
–nosingle_line –check_sender=mx,a –show_tries \
–separate_by_subnet=”:===============================================================================================\n”

CentOS + Fail2Ban + Zimbra

Eae Galera,

Nesse artigo vou ensinar como configurar o Fail2ban no Centos6 para proteger os principais serviços do Zimbra

O Fail2Ban tem como principal objetivo bloquear os ataques de Brute Force contra o nosso servidor.

rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm

yum -y install iptables gamin fail2ban

nano /etc/fail2ban/jail.conf

# ===============================================================================================================
# Fail2Ban Arquivo de Configuração
# Por Diego Luisi @diegoluisi
# https://diegoluisi.wordpress.com

[DEFAULT]
ignoreip = 127.0.0.1 192.168.X.0/24 192.168.XX.0/24
bantime = 600
findtime = 600
maxretry = 3
backend = auto
# Default action to take: ban only
action = iptables[name=%(__name__)s, port=%(port)s]

[ssh-iptables]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
action = iptables-allports[name=SSH-iptables]
sendmail[name=SSH, dest=diego.efuture@gmail.com; dluisi@secureti.com.br]
maxretry = 3

[zimbra-account]
enabled = true
filter = zimbra
action = iptables-allports[name=Zimbra-account]
sendmail[name=FAIL2Ban, dest=diego.efuture@gmail.com; dluisi@secureti.com.br]
logpath = /opt/zimbra/log/mailbox.log
bantime = 600
maxretry = 5

[zimbra-audit]
enabled = true
filter = zimbra
action = iptables-allports[name=Zimbra-audit]
sendmail[name=Zimbra-audit, dest=diego.efuture@gmail.com; dluisi@secureti.com.br]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 5

[zimbra-recipient]
enabled = true
filter = zimbra
action = iptables-allports[name=Zimbra-recipient]
sendmail[name=Zimbra-recipient, dest=diego.efuture@gmail.com; dluisi@secureti.com.br]
logpath = /var/log/maillog
findtime = 604800
bantime = 600
maxretry = 5

[postfix]
enabled = true
filter = postfix
action = iptables-multiport[name=Postfix, port=smtp, protocol=tcp]
sendmail[name=Postfix, dest=diego.efuture@gmail.com; dluisi@secureti.com.br]
logpath = /var/log/maillog
bantime = 600
maxretry = 5

[sasl-iptables]
enabled = true
filter = sasl
action = iptables-allports[name=sasl]
sendmail[name=SASL, dest=diego.efuture@gmail.com; dluisi@secureti.com.br]
logpath = /var/log/maillog
bantime = 600

[zimbra-webmail]
enabled = true
filter = zimbra
action = iptables[name=Zimbra-account, port=https, protocol=tcp]
iptables[name=Zimbra-account, port=http, protocol=tcp]
sendmail[name=Zimbra-webmail, dest=diego.efuture@gmail.com; dluisi@secureti.com.br]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 3

# ===============================================================================================================

nano /etc/fail2ban/filter.d/zimbra.conf

# ===============================================================================================================
# Fail2Ban configuration file
#
# Author:
#
# $Revision: 1 $
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named “host”. The tag “” can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values: TEXT
#
failregex = \[ip=;\] account – authentication failed for .* \(no such account\)$
\[ip=;\] security – cmd=Auth; .* error=authentication failed for .*, invalid password;$
;oip=;.* security – cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$
\[oip=;.* SoapEngine – handler exception: authentication failed for .*, account not found$
WARN .*;ip=;ua=ZimbraWebClient .* security – cmd=AdminAuth; .* error=authentication failed for .*;$
NOQUEUE: reject: RCPT from .*\[\]: 550 5.1.1 .*: Recipient address rejected:
WARN \[.*\] \[name=.*;ip=;ua=.*;\] security – cmd=Auth; account=.*; protocol=.*; error=.*, invalid password;
# .*\[ip=;\] .* – authentication failed for .* \(invalid password\)
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
# ===============================================================================================================

nano /etc/fail2ban/filter.d/zimbra-webmail.conf

# ===============================================================================================================
# Fail2Ban configuration file
#
# Author: Giorgio Salluzzo
#

[Definition]

# Option: failregex
# Notes.: regex to match PASSWORD FAILED for Zimbra webmail/admin authentication
# Values: TEXT
#
# FIRST regex for webmail, SECOND for webadmin
#

failregex = WARN \[.*\] \[name=.*;ip=;ua=.*;\] security – cmd=Auth; account=.*; protocol=.*; error=.*, invalid password;

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
# ===============================================================================================================

# ===============================================================================================================

nano /etc/fail2ban/action.d/sendmail.conf

trocar /usr/bin/sendmail to /opt/zimbra/postfix/sbin/sendmail

chkconfig fail2ban on

service fail2ban restart

#fim!

Unable to determine enabled services from ldap

# su zimbra

$ zmcontrol start
Host mail.test.org
Starting ldap…Done.
Unable to determine enabled services from ldap.
Unable to determine enabled services. Cache is out of date or doesn’t exist.

Solution :

Please check ur resolv.conf and host file . If still problem persist please stop the zimbra service by zmcontrol stop (as zimbra user)
As a root user issue following two commands.
1) chown -R zimbra:zimbra /opt/zimbra
2) /opt/zimbra/libexec/zmfixperms -verbose

# su zimbra

$ zmcontrol stop
Host mail.test.org
Stopping stats…Done
Stopping mta…Done
Stopping spell…Done
Stopping snmp…Done
Stopping archiving…Done
Stopping antivirus…Done
Stopping antispam…Done
Stopping imapproxy…Done
Stopping mailbox…Done
Stopping logger…Done
Stopping ldap…Done
$ zmcontrol start
Host mail.test.org
Starting ldap…Done.
Starting logger…Done.
Starting mailbox…Done.
Starting antispam…Done.
Starting antivirus…Done.
Starting snmp…Done.
Starting spell…Done.
Starting mta…Done.
Starting stats…Done.

Zimbra – Redirecionar HTTP to HTTP

Em um servidor de emails Zimbra temos as opções para fazer login usando HTTP ou HTTPS.
Usando o comando zmtlsctl, podemos definir o modo de servidor Web para as opções de protocolos de comunicação:
»HTTP
»HTTPS
»Misto: utiliza HTTPS para fazer o login e HTTP para o tráfego da sessão normal.
»Redirect: redireciona os usuários que se conectam via HTTP para uma conexão HTTPS.
Mailboxd tem de ser parado e reiniciado para que a alteração tenha efeito.
Aqui estão os passos para utilizar a opção de modo misto:

su – zimbra
zmtlsctl mixed
zmmailboxdctl stop
zmmailboxdctl start