Mostrando postagens com marcador tutorial. Mostrar todas as postagens
Mostrando postagens com marcador tutorial. Mostrar todas as postagens

quarta-feira, 16 de novembro de 2011

Reforçando a segurança do MTA Postfix com APOLICY

ACL Policy Daemon é uma ferramenta livre que se comunica com o MTA Postfix usando Protocolo de Delegação de política, implementando sistema de ACL (Access Control List), para criar e melhorar o controle do trafego do email.

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.

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
Leia Mais ►

segunda-feira, 7 de novembro de 2011

Fazendo hierarquia proxy/Squid

Hierarquia é um recurso muito interessante, principalmente para redes grandes, onde o tráfego de informação é muito intenso e apenas um proxy poderia ser muito pouco, então com este recurso você acaba por desatolar o servidor proxy/Squid de ter que fazer todo o trabalho, passando a tarefa para mais de um e tendo assim o melhor desempenho do proxy/Squid.

O proxy/Squid por si já é um servidor muito poderoso, não é à toa que é o mais usado, ele consegue desempenhar sozinho tarefas que seriam muito pesadas para outros servidores e até mesmo funções de outros programas, como a resolução de nomes (que é função do DNS fazer), isso é só para se ter uma idéia do poder do proxy/Squid, então se for escolher um proxy, tem que ser o Squid.

Opções para fazer "hierarquia proxy"

Primeiro habilite a porta ICP em ambos os servidores (o padrão é 3130):

icp_port [número da porta icp]

Agora coloque a opção que colocará nossa hierarquia de pé:

cache_peer

Especifica outros caches na hierarquia. A opção cache_peer é dividida em 5 campos, e sua saída é a seguinte.

cache_peer x.x.x.x parent 3128 3130 no-digest no-netbd-exchange

Onde:
  • x.x.x.x - o IP ou nome da máquina que será pesquisada.
  • parent - o relacionamento com o outro servidor (veja bibliografia).
  • 3128 - a porta HTTP.
  • 3130 - a porta ICP (que é quem faz as requisições).
  • o restante são as opções (que podem conter zero ou uma palavra chave). (veja bibliografia).

Há também uma opção chamada hierarchy_stoplist, comente ela. Se esta opção estiver ativada, o proxy/Squid não conseguirá fazer a hierarquia de cache.

Uma lista de palavras que, encontradas na URL, farão com que o objeto seja manipulado automaticamente por esse cache:

hierarchy_stoplist cgi-bin ?

A ACL aqui é só para colocarmos junto com a opção "no_cache". Depois faça o seguinte, por padrão o Squid cria uma ACL chamada "all". Esta ACL engloba toda sua rede, se ela não existir crie uma:

acl all(pode ser outro nome) src 0.0.0.0/0.0.0.0

Com esta opção você cria uma ACL, onde se encontrado não será feito o cache:

no_cache deny all (tem que ser o mesmo nome de nossa acl "all")

Depois dê permissão para ela com a opção http_access. Esta opção permitirá que nossa ACL seja manipulada pelo Squid:

http_access allow all


Como Tudo Ficaria

Você terá dois servidores proxy/Squid, por exemplo, um com o IP 1.1.1.1 e outro com o IP 1.1.1.2. Suponha que o servidor 1 (1.1.1.1) escutará o 2 (1.1.1.2), então a saída no log do servidor 2 (/var/log/squid/access.log) deve ser mais ou menos assim:

"1086316383.840 3 1.1.1.1 TCP_DENIED/403 1417 GET http://www.nome de alguma pag.com.br/checker.php - NONE/- text/html
1086316407.347 0 1.1.1.1 UDP_MISS/000 71 ICP_QUERY http://www.nome de alguma pag.com.br/index.php?task=logout - NONE/- -
1086316407.353 3 1.1.1.1 TCP_DENIED/403 1415 GET http://www.nome de alguma pag.com.br/index.php? - NONE/- text/html
1086316407.358 5 1.1.1.1 TCP_DENIED/403 1415 GET http://www.nome de alguma pag.com.br/index.php? - NONE/- text/html"

Isso quer dizer que o servidor 1 está escutando o servidor 2. Vejam na linha depois do endereço IP a mensagem "ICP_QUERY".

Bem, no arquivo squid.conf, a ordem das configurações sairia mais ou menos assim:

icp_port 3130

#hierarchy_stoplist cgi-bin ? #<-- linha comentada.
cache_peer 1.1.1.2 parent 3128 3130 no-digest no-netdb-exchange
acl all src 0.0.0.0/0.0.0.0
no_cache deny all

http_access allow all

Bibliografia: Linuxman, Under-linux 

Esse conteúdo está disponibilizado sobre a licença de uso - Tiu enhavo estas disponebla sur uza permesilo LiPE
Leia Mais ►

segunda-feira, 31 de outubro de 2011

[Lifehacker] Como invadir um PC protegido por senha (e evitar que invadam o seu)

Se você não precisa de acesso ao Windows, e apenas quer alguns arquivos, você não precisa fazer nada de difícil. Basta usar qualquer live CD do Linux e arrastar e soltar os arquivos para um pendrive, assim como em qualquer outro OS.

Como funciona:  Basta baixar o arquivo .iso com o Live CD de qualquer distribuição Linux – como o bastante popular Ubuntu  – e queimá-lo em um CD, ou colocá-lo em um pendrive. Coloque o CD/pendrive no computador que você quer acessar, faça o boot a partir do CD, escolha “Experimente o Ubuntu” (Try Ubuntu) no primeiro menu, e você chega direto na interface desktop. Daqui, você pode acessar a maior parte do disco rígido indo em Locais (Places) na barra de menu e escolhendo o drive com Windows. Ele deve ver todos os drives NTFS sem problemas.

Note que dependendo das permissões de certos arquivos, você pode precisar de acesso à raiz. Se você estiver tendo problemas em ver ou copiar certos arquivos, abra uma janela de terminal (indo em Aplicativos > Acessórios > Terminal) e digite gksudo nautilus, deixando a senha em branco quando requisitada. Você agora deve ter acesso a tudo.

Íntegra em Gizmodo.
Leia Mais ►

terça-feira, 25 de outubro de 2011

ICINGA - Monitorando máquinas remotas com NRPE

Primeiro temos que saber o que é o Icinga, caso não saiba Icinga é uma ferramenta de monitoramento de sistema e rede. Ele foi originalmente criado como um fork do aplicativo de monitoramento de sistema e rede Nagios em 2009, básico e simples assim, seu site oficial é www.icinga.org. 

Este é um mini tutorial que visa explicar a configuração do nrpe para monitorar maquinas remotas usando o icinga. Também levo em consideração que o seu icinga já se encontra instalado e configurado, pois nesse tutorial não vou aborda o mesmo. vamos lá então.

- Na máquina monitor temos que instalar os seguintes pacotes:

yum install nagios-nrpe nagios-plugins nagios-plugins-nrpe

Já com estes pacotes instalados vamos as seguintes configurações:

Queremos monitorar um host remoto de email por exemplo, então criamos o arquivo email.cfg e dentro deste arquivos vamos acrescentar as seguinte linhas.

define host{
use servers
host_name E-mail
alias E-mail Server 64x CENTOS 5.5
address 192.168.0.8
hostgroups Servidores
}

Acima definimos a configuração do host. Lembrando que levo em consideração que os outros arquivos já se encontram configurados, mas farei posteriormente um tutorial abordando sua configuração no icinga.

Agora essa é a parte que interessa. No mesmo arquivo email.cfg logo abaixo de onde você definiu o seu host a ser monitorado vamos acrescentar os serviços vou colocar 3 em específico.

define service{
use generic-service
host_name E-mail
service_description IMAP
check_command check_nrpe!check_imap
}

define service{
use generic-service
host_name E-mail
service_description FTP
check_command check_nrpe!check_ftp
}

define service{
use generic-service
host_name E-mail
service_description MYSQL
check_command check_nrpe!check_mysql
}

Como podemos ver, o segredo se encontra na linha check_command, ela é a responsável em fazer praticamente todo o trabalho, veja abaixo:

Mas antes tenho que explicar algo sobre o arquivo commando.cfg, veja abaixo:

define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c $ARG1$
}

Essas linhas acima, quando o arquivo email.cfg é lido ele vai consultar o comando referente ao mesmo no arquivo commando.cfg, então observe que check_nrpe é o comando que consulta o script check_nrpe ( $USER1& = /usr/lib64/nagios/plugins/check_nrpe - lembrando que meu centos é 64bits ). Quando essa linha é consultada, ela vai buscar as informações no servidor remoto, ai você pergunta, mas como? vou explicar, observa abaixo.

Então vamos para a máquina email que eu defini o ip como 192.168.0.8, nesta máquina você tem que instalar os seguintes pacotes:

yum install nagios-nrpe nagios-plugins

Editando o arquivo de configuração /etc/nagios/nrpe.cfg e mudar as seguintes linha:

allowed_hosts=xxx.xxx.xxx.xxx

Nesse campo você coloca o host que vai poder consultar o nrpe da máquina remota, também existe outras configurações caso queira olhar, mas vou abordar somente o que interessa nesse tutorial, vamos lá.
Lembra dos serviços definidos no email.cfg, e no commando.cfg, pois é, ele vai buscar as informações nessa configuração do nrpe.cfg, veja baixo um exempl:

command[check_imap]=/usr/lib64/nagios/plugins/check_imap -H 127.0.0.1 -p 993 -S -w 5 -c 10
command[check_ftp]=/usr/lib64/nagios/plugins/check_ftp -H 127.0.0.1 -p 21 -w 5 -c 10
command[check_mysql]=/usr/lib64/nagios/plugins/check_mysql -H 127.0.0.1 -d postfix -u postfix -p 123456 -w 5 -c 10

O check_nrpe!check_mysql diz para buscar o check_mysql que está no arquivo de configuração nrpe.cfg da máquina remota que é no caso essa linha ( command[check_mysql]=/usr/lib64/nagios/plugins/check_mysql -H 127.0.0.1 -d postfix -u postfix -p 123456 -w 5 -c 10 ). lembrando que você tem que dar um start no serviço nrpe depois que ele for instalado ( /etc/init.d/nrpe start ) eu deixei o meu configurado na porta padrão 5666 tcp, caso queira mudar isso fique a vontade.

Abaixo vou mostrar a consulta feita pelo check_mysql:

[root@localhost ]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.0.8 -p 5666 -c check_mysql
Uptime: 2235554 Threads: 17 Questions: 14661155 Slow queries: 0 Opens: 22253 Flush tables: 1 Open tables: 64 Queries per second avg: 6.558

Bem tentei explicar de uma forma fácil, caso ainda tenha dúvida, comente no blog ou mande um email para linuxplue@gmail.com que farei o que for possível para esclarecer as dúvidas, então pessoal até a próxima.

Esse conteúdo está disponibilizado sobre a licença de uso - Tiu enhavo estas disponebla sur uza permesilo LiPE
Leia Mais ►

quinta-feira, 20 de outubro de 2011

Criando delay pools (Proxy/Squid)

Neste tutorial você vai aprender a usar as delay polls, que são opções do proxy/Squid para se poder fazer controle de banda. Eu o fiz porque não achava nada realmente interessante em português. Espero que gostem.

Configurando as delay pools

Neste tutorial vamos ver como se usa as delay pools. Delay pools é uma opção usada no Squid para fazer limite de banda. Neste tutorial vamos nos concentrar apenas em delay pools, delay class, delay access e delay parameters.

Este tutorial já leva em conta que você já tenha algum conhecimento em Squid, sendo porém alusivo também a quem está aprendendo a usá-lo.

Neste tutorial vamos apresentar como exemplo duas delay pools, seguindo assim uma linha muita usada com delay pools, vamos neste tutorial, usar as delay pools em nossa rede interna e para internet.

Leve em conta que temos duas acl's criadas com os nomes de extensões e interno. Essas acl's serão usadas em nosso tutorial.

O que significam as opções?

acl extensoes url_regex -i .*

Esta acl que criamos está pegando tudo que é relacionado a ponto, ou seja, inclusive extensões html, jpeg, jpg, gif, php, png, htm, etc, que são usadas em páginas de internet.

Se você quer bloquear tudo menos estas extensões, faça assim:

acl extensoes url_regex -i .* !.html !.htm !.php !.jpeg !.jpg !.png !.gif

Bloqueamos tudo exceto as seguintes extensões. Mas se o seu interesse é bloquear arquivos como mp3, avi, faça o seguinte:

acl extensoes url_regex -i .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov

Você também pode criá-las em um arquivo:

acl extensoes url_regex -i "caminho do arquivo"

Coloque as extensões dentro deste arquivo (mas apenas uma extensão por linha).

acl interno url_regex -i 192.168.1.0

delay_pools

Esta opção especifica o número de delay pools que você vai possuir, por exemplo, se você possui 2 delay pools, este número deve ser igual a 2, se você tem 3 delay pools, este número deve ser igual a 3 e assim por diante.

# delay_pools (número de delay pools)

delay_pools 2 #isto significa que nós possuímos 2 delay's pools.

# Como dito acima, o número de delay pools que vamos criar.


#delay_class:

# Define a classe de cada delay pool. Deve haver exatamente uma classe de delay para cada delay pool.

# delay_class (número da delay pool) (número da classe da delay pool)

delay_class 1 2 #isto significa que a delay pool 1 é uma delay class 2

delay_class 2 2 #isto significa que a delay pool 2 é uma delay class 2

# Como visto acima, nós temos duas delay pools e duas delay class,

# e também podemos ver que nossas delay class são todas classe 2.

# Não esqueça, o primeiro número é sua delay pool, e o segundo é a sua delay class.

# delay_access:

# Determina em qual delay pool uma requisição será encaixada. A primeira a combinar será utilizada, por isso verifique com #cuidado suas acls.

# delay_access (número da delay poll) allow|deny nome da acl

delay_access 1 allow palavras #estamos direcionando nossa delay pool 1(que é uma classe 2) para a acl palavras.

delay_access 2 allow interno #fazendo o mesmo que acima, porém para a acl interno(que também é uma classe 2).

# delay_parameters:

# Define os parâmetros para uma delay pool. Cada delay pool tem um número de alocação de tráfego associado.

# delay_parameters (número da delay pool) agregado (delay_class 1)

# delay_parameters (número da delay pool) agregado individual (delay_class 2)

# delay_parameters (número da delay pool) agregado network individual (delay_class 3)

# Aqui vou mostrar apenas a saída da delay class 3 pois está engloba todas a opções.

# delay_parameters 1 -1/-1 24000/24000 1000/1000

# vamos ao significado:

# -1/-1:

# Valor AGREGADO: aqui especificamos quanto toda a banda vai utilizar, no caso -1/-1 significa

# valor ilimitado, por isso, se você quer limitar sua banda nunca coloque -1/-1.

# 24000/24000:

# Valor NETWORK(REDE):aqui especificamos quanto cada uma de nossas redes irá poder utilizar, no caso algo em torno de 23Kb/s.

# 1000/1000:

# Valor INDIVIDUAL:aqui especificamos quanto cada um de nossos usuários poderá utilizar, no caso menos de um 1K/s.

# Cada valor tem duas áreas, uma antes da barra e outra depois. Vamos lá.

# RESTORE:O antes da barra.

# Especifica quantos bits poderá ser trafegado por segundo.

# MAX:E lógico, o depois da barra.

# Especifica quantos bits poderá trafegar no total.

# Delay pools sempre trabalham com bits, não se esqueça.

delay_parameters 1 -1/-1 500/1000 #leia acima para entender.

delay_parameters 2 -1/-1 15000/25000 #leia acima para entender.

O resultado

# TUDO FICARIA ASSIM.

acl extensoes url_regex -i .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov
acl interno url_regex -i 192.168.1.0
delay_pools 2
delay_class 1 2
delay_parameters 1 -1/-1 500/1000
delay_access 1 allow palavras
delay_class 2 2
delay_parameters 2 -1/-1 15000/25000
delay_access 2 allow interno

Esse conteúdo está disponibilizado sobre a licença de uso - Tiu enhavo estas disponebla sur uza permesilo LiPE
Leia Mais ►

segunda-feira, 10 de outubro de 2011

OMG! UBUNTU - Dual Boot OS X e Ubuntu

Dual-booting em um PC é fácil: você espeta um disco LiveCD, faz uma batucada com os dedos por alguns minutos e então deixa o instalador cuidar de todo a parte difícil.

Mas como fazer dual-boot de Ubuntu para um Mac?

Isso atualmente não é difícil; há vários guias e métodos na internet. Mas para ajudar a clarificar o processo que eu penso eu gostaria de compartilhar este método que eu uso.

Contudo eu não garanto que isso irá funcionar para você (ainda que honestamente isso deveria), certifique-se de fazer cópias de segurança de tudo antes de testar o que está aqui. Sério, faça isso.

O tutorial você pode ler completo no OMG! UBUNTU, em inglês.
Leia Mais ►

quinta-feira, 6 de outubro de 2011

Configurando postfix + mysql + courier + SPF + clamav +spamassassin + greylist + TLS

Este tutorial tem como objetivo apresentar uma forma de configurar o postfix MTA com alguns serviços adicionais, para entrega e recebimento de mail com controle de spam, virus e greylist com suporte SSL. Este tutorial é bem pratico e objetivo.


1 - Entre no console do mysql e digite:

CREATE DATABASE postfix;
CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'choose_a_password';
GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';

Isso vai criar o banco de dados e dar as devidas permissões.

2 - Baixa a ultima versão do postfixadmin, descompacta dentro do diretorio web, configura o arquivo config.inc.php nas seguinte linhas abaixo:

$CONF['configured'] = false;

Para

$CONF['configured'] = true;

E essas linhas deixa como esta abaixo:

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = '123456';
$CONF['database_name'] = 'postfix';

Feito isso é só rodar o postfixadmin que ele já instala automaticamente o banco de dados do postfix no mysql.

3 – PHPMYADMIN

No phpmyadmin edite o seguinte arquivo create-mailbox.php e procure a seguinte linha:

$maildir = $fUsername . "/";

Mudar para

$maildir = $fDomain. "/" . $fName . "/" . maildir . "/";

4 – SASL2, entre no diretorio /etc/sasl2 e crie os segunte arquivo com o conteudo.

Smtpd.conf

Dentro dele:

pwcheck_method: saslauthd
log_level: 3
mech_list: plain login

Crie uma alias para este arquivo na pasta /usr/lib/sasl2/

ln -s /etc/sasl2/smtpd.conf /usr/lib/sasl2/smtpd.conf

Então é só iniciar o sasl2 com o comando abaixo: -a rimap é para ele autenticar via o imap.

/usr/sbin/saslauthd -r -a rimap -O 127.0.0.1

5 – Criando o usuario Vmail:

groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m

6 - Confiigurando o main.cf

Vou colocar somente as principais linhas para essa configuração.

recipient_delimiter = +
home_mailbox = Maildir/
mailbox_transport = virtual:unix:/home/vmail/
header_checks = pcre:/etc/postfix/header_checks
body_checks = pcre:/etc/postfix/body_checks
smtpd_banner = Prefeitura Municipal de Muriae Mail Server

masquerade_domains = /etc/postfix/meus_dominios

smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =

smtpd_client_restrictions = permit_sasl_authenticated,
check_client_access pcre:/etc/postfix/ip_access.bkp,
# permit_mynetworks,
## check_client_access hash:/etc/postfix/helo_ok,
reject_unknown_reverse_client_hostname,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
# reject_unknown_client,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
# reject_unknown_hostname,
reject_non_fqdn_hostname,
reject_unauth_pipelining,
reject_unlisted_sender,
reject_unlisted_recipient,
# reject_unverified_sender,
# reject_unverified_recipient,
reject_rbl_client rbl.brasilrbl.com.br,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rhsbl_client rhsbl.brasilrbl.com.br,
reject_rhsbl_sender rhsbl.brasilrbl.com.br,
## reject_rhsbl_client blackhole.securitysage.com,
## reject_rhsbl_sender blackhole.securitysage.com,
reject_rhsbl_client rhsbl.sorbs.net,
reject_rhsbl_sender rhsbl.sorbs.net,
permit

##smtpd_helo_restrictions = permit_sasl_authenticated,
# check_helo_access hash:/etc/postfix/helo_ok,
# permit_mynetworks,
# reject_invalid_hostname,
# reject_unknown_hostname,
# reject_non_fqdn_sender,
## reject_unauth_pipelining,
## reject_unknown_helo_hostname

smtpd_sender_restrictions = permit_sasl_authenticated,
# permit_mynetworks,
# check_sender_access hash:/etc/postfix/helo_ok,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unlisted_sender,
reject_unverified_sender,
reject_unauth_pipelining
# reject_unknown_client,

smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/sender_proibidos,
permit_sasl_authenticated,
# permit_mynetworks,
# reject_sender_login_mismatch,
# permit_mynetworks,
reject_authenticated_sender_login_mismatch,
reject_unauth_pipelining,
# reject_unknown_client,
reject_unknown_recipient_domain,
reject_unverified_recipient,
reject_unlisted_recipient,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:60000,
# check_policy_service unix:private/greylist,
check_policy_service unix:private/policy,
# check_recipient_access hash:/etc/postfix/whitelist,
permit

smtpd_data_restrictions = reject_unauth_pipelining
smtpd_etrn_restrictions = permit_sasl_authenticated, reject

##smtpd_helo_required = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
invalid_hostname_reject_code = 554
multi_recipient_bounce_reject_code = 554
non_fqdn_reject_code = 554
relay_domains_reject_code = 554
unknown_address_reject_code = 554
unknown_client_reject_code = 554
unknown_hostname_reject_code = 554
unknown_local_recipient_reject_code = 554
unknown_relay_recipient_reject_code = 554
unknown_sender_reject_code = 554
unknown_virtual_alias_reject_code = 554
unknown_virtual_mailbox_reject_code = 554
unverified_recipient_reject_code = 554
unverified_sender_reject_code = 554

smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/postfix/postfix.cert
smtpd_tls_key_file = /etc/postfix/postfix.key
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

### configuracoes dos dominios virtuais #############

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_base = /home/vmail/

### armazenamento de mensagens dos dominios virtuais #####################

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_limit = 51200000
virtual_minimum_uid = 5000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = virtual

### configuraoes de quota ##############################

virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sua caixa de email esta cheia, favor liberar espa..
virtual_overquota_bounce = yes

smtpd_recipient_limit = 21

#Entrega de e-mails para mesmo destino
smtp_destination_concurrency_limit = 50

#Entrega de e-mails para mesmo destino - remoto
default_destination_concurrency_limit = 50

#Entrega de e-mails para mesmo destino - local
default_destination_recipient_limit = 50

#Tempo de reenvio de mensagem em fila
fast_flush_refresh_time = 1h

#Tempo de dele�o de mensagem em fila
fast_flush_purge_time = 1d

#Tempo de mensagem em fila
maximal_queue_lifetime = 240m

bounce_queue_lifetime = 240m

biff = yes
#always_bcc=edsonferreira@dpcnet.com.br
allow_untrusted_routing = no

#content_filter = lmtp-filter:127.0.0.1:10025
#receive_override_options = no_address_mappings

default_process_limit = 500
command_time_limit = 3600

# dk-milter
#smtpd_milters = unix:/var/run/dk-milter/dk.sock
#non_smtpd_milters = unix:/var/run/dk-milter/dk.sock

7 – Configurando o master.cf

#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# The script postfix-chroot.sh can be used to set up a Postfix chroot
# environment on your Mandrivalinux System.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - 15 smtpd
-o content_filter=clamav:clamav
submission inet n - n - 15 smtpd
-o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps inet n - n - 15 smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
-o content_filter=
-o receive_override_options=
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
tlsmgr unix - - n 300 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - 50 smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - n - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
#maildrop unix - n n - - pipe
# flags=DRhu user=nobody argv=/usr/bin/maildrop -d ${recipient}
#
# Cyrus. Please See the Postfix CYRUS_README file for details
#
# deliver interface (deprecated), to use this also use
# postconf -e cyrus-deliver_destination_recipient_limit=1
#cyrus-deliver unix - n n - - pipe
# user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
#
# for default cyrus socket placement
#cyrus unix - n n - - lmtp
# -o lmtp_cache_connection=yes
#
# if you configure cyrus socket in the chroot jail
#cyrus-chroot unix - - y - - lmtp
# -o lmtp_cache_connection=yes
#
# for lmtp to cyrus via tcp
#cyrus-inet unix - - y - - lmtp
# -o lmtp_cache_connection=yes
# -o lmtp_sasl_auth_enable=yes
# -o lmtp_sasl_password_maps=hash:/etc/postfix/cyrus_lmtp_sasl_pass
# -o lmtp_sasl_security_options=noanonymous
#
# UUCP. Unix to Unix CoPy
#
# See the Postfix UUCP_README file for configuration details.
#
#uucp unix - n n - - pipe
# flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
# These are not distributed with Mandrivalinux
#
#ifmail unix - n n - - pipe
# flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
#bsmtp unix - n n - - pipe
# flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient

##### START OF CONTENT FILTER CUSTOMIZATIONS #####
# Please see the Postfix FILTER_README for details.
# These sample entries expect your content filter to
# listen on port 10025 and to inject mail back into
# postfix on port 10026.
#
# to enable such content filter run the command
# postconf -e content_filter=smtp-filter:127.0.0.1:10025
# postconf -e smtp-filter_destination_concurrency_limit=2
# or
# postconf -e content_filter=lmtp-filter:127.0.0.1:10025
# postconf -e lmtp-filter_destination_concurrency_limit=2
# and the command
# postconf -e receive_override_options=no_address_mappings
#

127.0.0.1:10026 inet n - n - 20 smtpd
-o content_filter=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_delay_reject=no
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

lmtp-filter unix - - n - 20 lmtp
-o lmtp_data_done_timeout=1200
-o lmtp_send_xforward_command=yes
-o lmtp_cache_connection=no
-o max_use=20

smtp-filter unix - - y - - smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o max_use=20

##### END OF CONTENT FILTER CUSTOMIZATIONS #####

policy unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/libexec/postfix/postfix-policyd-spf-perl

clamav unix - n n - 15 pipe
flags=Rq user=clamav argv=/usr/libexec/postfix/clamav-filter.sh -f ${sender} -- ${recipient}

#greylist unix - n n - - spawn
# user=nobody argv=/usr/bin/perl /usr/libexec/postfix/greylist.pl

7.1 - Arquivos para mysql no postfix:

Criar os seguintes arquvos abaixo com seu devido conteúdo:

mysql_virtual_alias_maps.cf:
user = postfix
password = 123456
dbname = postfix
table = alias
select_field = goto
where_field = address
hosts = localhos

mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = 123456
dbname = postfix
table = mailbox
select_field = quota
where_field = username
hosts = localhost

mysql_virtual_domains_maps.cf
user = postfix
password = 123456
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain
#additional_conditions = and backupmx = '0' and active = '1'

mysql_virtual_mailbox_maps.cf
user = postfix
password = 123456
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
hosts = localhost

8 – Configurando o clamav, greylist, SPF e spamassassin:

/etc/clamd:

LogFile /var/log/clamav/clamd.log
LogFileMaxSize 0
LogTime yes
LogSyslog yes
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /var/tmp
DatabaseDirectory /var/clamav
LocalSocket /tmp/clamd.socket
FixStaleSocket yes
TCPSocket 3310
TCPAddr 127.0.0.1
MaxConnectionQueueLength 30
MaxThreads 50
ReadTimeout 300
User clamav
AllowSupplementaryGroups yes
ScanPE yes
ScanELF yes
DetectBrokenExecutables yes
ScanOLE2 yes
ScanMail yes
#ScanHTML yes
ScanArchive yes

Baixe o arquivo http://www.unitednerds.org/projects/mail/clamav-filter.sh.gz e coloque dentro de /usr/libexec/postfix/.

gzip -d clamav-filter.sh.bz2
chmod 0755 clamav-filter.sh
mkdir -p /var/spool/filter
chown clamav:clamav /var/spool/filter

Integrando spamassassin ao clamav-filter

Edite o arquivo com vim /usr/libexec/posffix/clamav-filter.sh e altere a seguinte linha:

SENDMAIL="/usr/sbin/sendmail -i "

Para

SENDMAIL="/usr/bin/spamc -f -e /usr/sbin/sendmail -i "

Configurando o spamassassin:

Entre no diretório /etc/mail/spamassassin e edite o arquivo local.cf e deixe como abaixo, lembrando que está em um nível baixo de segurança podendo aumentar.

Obs: pode entrar nesse site: http://www.yrex.com/spam/spamconfig.php e gerar a própria configuração do spamassassin:

# How many hits before a message is considered spam.
required_score 7.0

# Change the subject of suspected spam
rewrite_header subject *****INFO - POSSÃVEL SPAM*****

# Encapsulate spam in an attachment (0=no, 1=yes, 2=safe)
report_safe 1

# Enable the Bayes system
use_bayes 1

# Enable Bayes auto-learning
bayes_auto_learn 1

# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
#use_dcc 1
use_pyzor 1

# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
# - portuguese
#ok_languages pt

# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all

Configurando o Greylist:

Instale o postgrey, edite o rc.local e acrecente a seguinte linha para iniciar o serviço: a linha abaixo já se encontra com todas as opções necessárias.

Dentro do main.cf acrescente a seguinte linha: sempre colocar a linha depois do reject_unauth_destination.

smtpd_recipient_restrictions = ...
reject_unauth_destination,
....
check_policy_service inet:127.0.0.1:60000,
....

postgrey --inet=127.0.0.1:60000 --delay=60 --retry-window=1 --auto-whitelist-clients=1 --dbdir=/var/spool/postfix/postgre -d

Configurando o SPF:

dentro do master.cf acrecente a seguinte linha:

policy unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/libexec/postfix/postfix-policyd-spf-perl

dentro o main.cf acrecente a seguinte linha: sempre colocar a linha depois do reject_unauth_destination.

smtpd_recipient_restrictions = ...
reject_unauth_destination,
....
check_policy_service unix:private/policy,
....

8.1 - Configurando conexes TLS pelo smtpd

cd /etc/postfix

Criando as chaves: openssl req -new -outform PEM -out postfix.cert -newkey rsa:2048 -nodes -keyout postfix.key -keyform PEM -days 999 -x509

Preencha os campos que vai aparecer:

Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:MS
Locality Name (eg, city) []:CGR
Organization Name (eg, company) [Internet Widgits Pty Ltd]: empresa dominio.com.br
Organizational Unit Name (eg, section) []:nocc, network operation command center
Common Name (eg, YOUR name) []:admin
Email Address []: admin@dominio.com.br
configuração no main.cf:
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/postfix/postfix.cert
smtpd_tls_key_file = /etc/postfix/postfix.key
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

Configuração no master.cf:

tlsmgr unix - - n 300 1 tlsmgr

submission inet n - n - 15 smtpd
-o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps inet n - n - 15 smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,rejects

9 - Configurando o Courier Imap

Pacote instalado desse site:


Entre no diretório /etc/authlib e altere os seguintes arquivos:

authdaemonrc

authmodulelistorig="authuserdb authpam authpgsql authldap authmysql authcustom authpipe"

Para

authmodulelistorig="authmysql"

Neste arquivo é so isso, não precisa de mudar mais nada:

No arquivo authmysqlrc deixe como esta abaixo:

authmysqlrc

MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD 123456
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
#MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD '5000'
MYSQL_GID_FIELD '5000'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD '/home/vmail'
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
MYSQL_WHERE_CLAUSE active="1"
MYSQL_CRYPT_PWFIELD password

No diretório /usr/lib/courier-imap/etc tem os arquivo imapd-ssl e pop3d-ssl, Edite esse arquivo e altere como abaixo, lembrando que só tive problema no courier 64bits.

# TLS_PROTOCOL sets the protocol version. The possible versions are:
#
# SSL2 - SSLv2
# SSL3 - SSLv3
# SSL23 - either SSLv2 or SSLv3
# TLS1 - TLS1

TLS_PROTOCOL=SSL23

Esse conteúdo está disponibilizado sobre a licença de uso - Tiu enhavo estas disponebla sur uza permesilo LiPE
Leia Mais ►

Postagens populares