O que pode ser feito com ACL Policy Daemon:
- Greylisting
- SPF validação
- Controle de Mensagens por dia/hora
- Limites de tamanho de mensagem variável por domínio ou e-mail
- Verificar múltiplas RBL
- Rejeitar mensagem somente se IP do cliente está listado em mais de uma RBL, ao mesmo tempo
- Pequena curva de aprendizagem
- Sintaxe inspirado no sistema de ACL do proxy HTTP Squid
- Várias ACLs para usar e combinar
Instalando e configurando o apolicy
Primeiro vamos começar com as dependências, lembrando que eu estou usando a distro CentOS 5.5.
yum install python-twisted-core python-devel
Estes 2 pacotes ( python-pyspf python-pydns) eu tive que instalar "na mão."
Baixe o pacote da última versão do apolicy aqui:
ligação - http://download.gna.org/apolicy/apolicy-0.73.tar.gz
Baixando o pacote do apolicy, siga os passos exatamente como esta abaixo:
wget http://www.apolicy.org/gpg/miguelfilho.gpg -O- -q | gpg --import
wget http://download.gna.org/apolicy/apolicy-0.73.tar.gz
wget http://download.gna.org/apolicy/apolicy-0.73.tar.gz.sig
gpg --verify apolicy-0.73.tar.gz.sig
descompacte o pacote e entre no seu diretório descompactado
tar zxf apolicy-0.73.tar.gz
Execute o comando abaixo para instalar
python setup.py install
Você vai ver as seguintes linhas no momento da instalação:
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/apolicy
copying src/apolicy/parser.py -> build/lib/apolicy
copying src/apolicy/__init__.py -> build/lib/apolicy
copying src/apolicy/base.py -> build/lib/apolicy
copying src/apolicy/config.py -> build/lib/apolicy
copying src/apolicy/server.py -> build/lib/apolicy
running install_lib
creating /usr/lib/python2.4/site-packages/apolicy
copying build/lib/apolicy/parser.py -> /usr/lib/python2.4/site-packages/apolicy
copying build/lib/apolicy/__init__.py -> /usr/lib/python2.4/site-packages/apolicy
copying build/lib/apolicy/base.py -> /usr/lib/python2.4/site-packages/apolicy
copying build/lib/apolicy/config.py -> /usr/lib/python2.4/site-packages/apolicy
copying build/lib/apolicy/server.py -> /usr/lib/python2.4/site-packages/apolicy
byte-compiling /usr/lib/python2.4/site-packages/apolicy/parser.py to parser.pyc
byte-compiling /usr/lib/python2.4/site-packages/apolicy/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.4/site-packages/apolicy/base.py to base.pyc
byte-compiling /usr/lib/python2.4/site-packages/apolicy/config.py to config.pyc
byte-compiling /usr/lib/python2.4/site-packages/apolicy/server.py to server.pyc
running install_data
creating /etc/apolicy
copying main.conf -> /etc/apolicy
copying policy.conf -> /etc/apolicy
Se estiver da forma como acima é porque a instalação executou com sucesso, caso deseje criar o init script, faça o procedimento abaixo:
Copie o arquivo apolicy.init para o diretório /etc/init.d com o seguinte nome apolicy
Execute o comando abaixo:
chkconfig --add apolicy
Feito isso é só adicionar na inicialização do sistema como o comando
chkconfig --level 234 apolicy on
Agora o próximo passo é a configuração no Postfix.
Tenha uma maior atenção nessa parte porque você não pode errar, no arquivo main.cf do Postfix em:
smtpd_recipient_restrictions coloque a linha referente ao apolicy (check_policy_service inet:127.0.0.1:10001) logo abaixo do reject_unauth_destination.
Detalhe, pode ser em qualquer posição abaixo de reject_unauth_destination reforçando que tem que ser abaixo.
Exemplo de como deve ficar:
smtpd_recipient_restrictions ...,
...,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10001,
...
Também pode colocar em smtpd_client_restrictions, nesse caso você pode colocar em qualquer posição.
Configurando o Postfix, agora devemos observar os arquivos de configuração do apolicy, primeiro vamos editar o arquivo de configuração do próprio apolicy.
Entre no diretório /etc/apolicy e dentro dele vai encontrar 2 arquivos: main.conf e policy.conf
Primeiro vamos editar o main.conf, nesse arquivo é muito simples, você pode alterar a porta em que o apolicy escuta que no caso a padrão é a 10001, eu mudei minha configuração para 50001, isso fica sei critério, você também pode definir o usuário que vai rodar com o apolicy e definições de log e outros.
Agora, vamos ao que interessa, no arquivo policy.conf, esse é o cara que vai dar um "up" na segurança do MTA, adicionando ACL's.
Edite este arquivo.
Edite este arquivo.
Vou deixar aqui alguns exemplos da minha configuração:
- Neste exemplo abaixo eu configurei o apolicy para checar greylist com exceção dos ips que estiver no local.txt
acl email client_address /etc/apolicy/local.txt
acl grey_all greylisting time=1,lifetime=14400,backend=disk,root=/var/cache/apolicy/
action to_greyslist DEFER_IF_PERMIT Greylisting, Espere 1 minuto...
access grey_all !email to_greyslist
- Checando rbl - no arquivo rbl.txt tem as listas que serão checadas e no local.txt os ips ignorados na checagem
acl rblmail client_address /etc/apolicy/local.txt
acl rbl1 rbl /etc/apolicy/rbl.txt
action brbl REJECT nao aceitamos spammers!!!!
access rbl1 !rblmail brbl
- Neste exemplo eu configurei que o email fulano@dominio.com.br pode somente enviar para
deltrano@dominio.com.br
acl pdest sender fulano@dominio.com.br
acl penviar recipient deltrano@dominio.com.br
action pemail OK
access pdest penviar pemail
- Você precisa que um determinado email não envie mas que somente receba emails.
acl benvio sender fulano@dominio.com.br
action bemail REJECT nao pode enviar!!!
access benvio bemail
Bem, tentei demostrar um uso básico, essa ferramenta é poderosa e com ela você pode criar muitas regras para reforçar a segurança do seu MTA, boa sorte pessoal.
Esse conteúdo está disponibilizado sobre a licença de uso - Tiu enhavo estas disponebla sur uza permesilo LiPE
Nenhum comentário:
Postar um comentário