Escolar Documentos
Profissional Documentos
Cultura Documentos
www.4linux.com.br
-2
Sumário
Capítulo 1
Introdução ao Correio Eletrônico............................................................................................... 9
1.1. Histórico ....................................................................................................................... 10
1.2. Funcionamento básico do Correio Eletrônico...............................................................11
1.3. Os Protocolos SMTP, POP e IMAP................................................................................. 13
1.3.1. SMTP................................................................................................................................... 13
1.3.2. POP...................................................................................................................................... 13
1.3.3. IMAP.................................................................................................................................... 13
1.4. Comandos do SMTP, POP e IMAP................................................................................. 14
1.4.1. Comandos do SMTP............................................................................................................. 14
1.4.2. Códigos do SMTP ................................................................................................................ 18
1.4.3. Comandos POP.................................................................................................................... 20
1.4.4. Comandos IMAP.................................................................................................................. 23
1.5. Exercícios...................................................................................................................... 25
Capítulo 2
Infraestrutura de Correio Eletrônico....................................................................................... 27
2.1. Considerações............................................................................................................... 28
2.2. Componentes da infraestrutura de correio eletrônico..................................................28
Capítulo 3
Instalando e Configurando o DNS............................................................................................ 31
3.1. Introdução..................................................................................................................... 32
3.2. Pratica Dirigida............................................................................................................. 37
3.2.1. Procedimentos pós-instalação:............................................................................................ 37
3.2.2. Instalando e configurando o DNS........................................................................................ 37
3.3. Laboratório.................................................................................................................... 43
3.4. Exercícios...................................................................................................................... 44
Capítulo 4
Instalando e Configurando o Postfix........................................................................................ 45
4.1. Introdução..................................................................................................................... 46
4.1.1. Histórico.............................................................................................................................. 46
4.1.2. Funcionamento do Postfix................................................................................................... 48
4.1.3. Daemons do Postfix............................................................................................................. 51
4.1.4. Filas de mensagens do Postfix............................................................................................. 56
4.1.5. Status da entrega................................................................................................................ 57
4.1.6. Arquivos de configuração do Postfix....................................................................................57
-3
Capítulo 5
Gerenciamento de Filas no Postfix........................................................................................... 69
5.1. Introdução..................................................................................................................... 70
5.2. Pratica dirigida............................................................................................................. 72
5.3. Exercícios ..................................................................................................................... 73
Capítulo 6
Entendendo Restrições SMTP no Postfix................................................................................. 75
6.1. Introdução..................................................................................................................... 76
6.1.1. Filtragem de conteúdo depois do enfileiramento ...............................................................76
6.1.2. Filtragem de conteúdo antes do enfileiramento .................................................................76
6.1.3. Delegação de filtragem para programas externos...............................................................76
6.1.4. Restrições com Mapas de Acesso .......................................................................................79
6.1.5. Restrições de cabeçalho e corpo da mensagem .................................................................80
6.1.6. Restrições com RBLs .......................................................................................................... 81
6.2. Prática Dirigida............................................................................................................. 82
6.2.1. Restrições por IP e IP Reverso ........................................................................................... 82
6.2.2. Restrições HELO/EHLO ...................................................................................................... 83
6.2.3. Restrições Remetente (MAIL FROM) .................................................................................84
6.2.4. Restrições Destinatário (RCPT TO).....................................................................................85
6.2.5. Restrições após o comando DATA .......................................................................................85
6.2.6. Restrições Cabeçalhos da Mensagem..................................................................................86
6.2.7. Restrições do Corpo da Mensagem.....................................................................................87
6.2.8. Desabilitando comando VRFY ............................................................................................. 87
6.2.9. Restrições condicionais ...................................................................................................... 87
6.2.10. Restrições por tamanho da mensagem .............................................................................89
6.2.11. Restrições – Conformidade com RFC ................................................................................89
6.3. Exercícios ..................................................................................................................... 90
6.4. Laboratório ................................................................................................................... 92
-4
Capítulo 7
Troubleshoot
Identificando e Resolvendo Problemas no Postfix....................................................................93
7.1. Introdução .................................................................................................................... 94
7.2. Prática Dirigida............................................................................................................. 97
7.2.1. Aumentando o nível de log e debugando o Postfix .............................................................97
7.2.2. Debugando o Postfix com a ferramenta sendmail ...............................................................98
7.3. Exercícios...................................................................................................................... 99
Capítulo 8
Instalando e Configurando o OpenLDAP............................................................................... 101
8.1. Introdução .................................................................................................................. 102
8.2. Comandos de Administração do OpenLDAP...............................................................103
8.2.1. Comandos do Servidor....................................................................................................... 104
8.2.2. Comandos do Cliente......................................................................................................... 104
8.2.3. O formato LDIF.................................................................................................................. 104
8.3. Prática Dirigida........................................................................................................... 106
8.3.1. Editando o arquivo /etc/ldap/slapd.conf............................................................................107
8.3.2. Iniciando o slapd................................................................................................................ 108
8.3.3. Inserindo o domínio e os usuários através do LDIF..........................................................108
8.3.4. Modificando usuários no OpenLDAP.................................................................................111
8.3.5. Realizando troca de senhas dos usuários..........................................................................111
8.3.6. Consultando registros no OpenLDAP ...............................................................................111
8.3.7. Removendo um usuário do OpenLDAP..............................................................................112
8.4. Laboratório ................................................................................................................. 113
8.5. Exercícios.................................................................................................................... 114
Capítulo 9
Servidor POP/IMAP com Dovecot e Integração com o OpenLDAP e SSL..............................116
9.1. Introdução................................................................................................................... 117
9.1.1. Interface de Autenticação SASL do Dovecot.....................................................................117
9.2. Prática Dirigida........................................................................................................... 117
9.2.1. Preparando o ambiente para armazenamento das caixas postais.....................................117
9.2.2. Instalando o Dovecot......................................................................................................... 118
9.2.3. Integrando e Configurando o Dovecot com OpenLDAP.....................................................118
9.2.4. Configurando o Dovecot.................................................................................................... 118
9.2.5. Configurado o script de aviso de quota.............................................................................121
9.3. Exercícios ................................................................................................................... 124
Capítulo 10
Postfix – Integração com OpenLDAP, Dovecot e Autenticação SMTP....................................125
-5
Capítulo 11
Instalando e Configurando o Cliente Thunderbird POP/IMAP............................................138
11.1. Introdução ................................................................................................................ 139
11.1.1. Baixando a versão ESR do Thunderbird..........................................................................139
Capítulo 12
Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP...............................143
12.1. Introdução ................................................................................................................ 144
12.2. Instalando e Configurado o Webmail RoundCube ....................................................144
12.2.1. Finalizando a instalação do Webmail ..............................................................................150
12.2.2. Estendendo o RounCube – Plugins .................................................................................151
Capítulo 13
Antivírus e AntiSpam............................................................................................................. 153
13.1. ClamAV...................................................................................................................... 154
13.1.1. Introdução....................................................................................................................... 154
13.1.2. Instalando o ClamAV........................................................................................................ 154
13.1.3. Entendendo o Clamd.conf ............................................................................................... 155
13.1.4. Testando o ClamAV.......................................................................................................... 156
13.2. SpamAssasin............................................................................................................. 157
13.2.1. Introdução....................................................................................................................... 157
13.2.2. Instalando o SpamAssassin.............................................................................................. 158
-6
Capítulo 14
Integrando AntiSpam e Antivírus com o Postfix.....................................................................162
14.1. Amavis....................................................................................................................... 163
14.1.1. Introdução....................................................................................................................... 163
14.1.2. Instalando Amavis-New................................................................................................... 165
14.1.3. Configurando Amavis-New.............................................................................................. 165
14.1.4. Configurações específicas do SpamAssassim .................................................................166
14.1.5. Outras configurações do Amavis-New.............................................................................167
14.1.6. Integrando Amavis com o Postfix.....................................................................................169
14.1.7. Testando o Amavis-New................................................................................................... 170
14.2. Exercícios.................................................................................................................. 171
Capítulo 15
SPF e Greylist......................................................................................................................... 173
15.1. Introdução ................................................................................................................ 174
15.1.1. SPF.................................................................................................................................. 174
15.1.2. Greylist ........................................................................................................................... 174
15.2. Prática Dirigida......................................................................................................... 176
15.2.1. Configurando o seu DNS com registros TXT para SPF:...................................................176
15.2.2. Ativando o Plugin SPF do SpamAssassim........................................................................176
15.2.3. Realizando teste de SPF com a ferramenta spftool.........................................................177
15.2.4. Instalando e Configurando o Postgrey – Greylist............................................................178
15.2.5. Testando o Postgrey......................................................................................................... 180
15.3. Exercícios ................................................................................................................. 181
Capítulo 16
Aumentando a Performance da infraestrutura de Correio.....................................................183
16.1. Introdução ................................................................................................................ 184
16.1.1. Performance no Recebimento de Mensagens..................................................................184
16.1.2. Performance na Entrega de Mensagens..........................................................................185
16.1.3. número de Processos do Postfix .....................................................................................187
16.1.4. Número de Processos do Sistema Operacional ..............................................................188
16.1.5. Número de File Descriptors por Processo ......................................................................188
16.1.6. Considerações sobre Hardware - Disco Rígido................................................................188
16.1.7. Considerações sobre Hardware – Memória.....................................................................189
16.1.8. Considerações sobre Hardware – Rede...........................................................................190
16.2. Prática Dirigida......................................................................................................... 191
16.2.1. Melhorando a Recepção de Mensagens ..........................................................................191
-7
Capítulo 17
Teste de Stress na Infraestrutura de Correio........................................................................196
17.1. Introdução................................................................................................................. 197
17.1.1. smtp-source e smtp-sink ................................................................................................. 197
17.1.2. qmqp-source e qmqp-sink .............................................................................................. 197
17.1.3. Postal .............................................................................................................................. 197
17.2. Prática Dirigida......................................................................................................... 198
17.2.1. Entendendo do e usando o smtp-source .........................................................................198
17.2.2. Entendendo e usando o smtp-sink ..................................................................................198
17.2.3. Usando o smtp-sink em conjuto com smtp-source ..........................................................199
17.2.4. Usando o Postal .............................................................................................................. 200
17.2.5. Ferramentas de monitoramento .....................................................................................200
17.2.6. Realizando os testes ....................................................................................................... 201
17.3. Laboratório ............................................................................................................... 205
Capítulo 1
1.1. Histórico
Foi em 1971 que tudo começou (na realidade começou antes, com pesquisas),
com um engenheiro de computação da BBN (Bolt Beranek e Newman), chamado Ray
Tomlinson. Utilizando um programa chamado SNDMSG, abreviação do inglês para
“Send Message”, e o ReadMail, Ray conseguiu enviar mensagens de um computador
para outro. Depois de alguns testes mandando mensagens para ele mesmo, Ray tinha
criado o maior e mais utilizado meio de comunicação através da Internet: o correio
eletrônico (do inglês, “eletronic mail”) ou, simplesmente, como todos conhecem, e-
mail.
Como não poderia deixar de ser, o primeiro endereço de e-mail foi criado por
Tomlinson, tomlinson@bbn-tenexa. Convenção utilizada até hoje, o símbolo “@” foi
utilizado para separar o nome do computador do nome do usuário e é lido no inglês
com “at”, que significa “em”. Por exemplo, o endereço tomlinson está “em” bbn-
tenexa, onde “bbn-tenexa é o nome do computador que contém a conta de e-mail do
usuário em questão.
Durante um bom tempo, o e-mail foi usado, quase que exclusivamente, por
pesquisadores da área de computação e militares. Foi com o desenvolvimento e o
aumento de usuários da Internet, que o e-mail se popularizou e passou a ser a
aplicação mais utilizada. Hoje, até mesmo os iniciantes, têm, pelo menos, um
endereço de e-mail.
Mas por que o e-mail se popularizou tão depressa? Primeiro, pelo custo. Você
não paga nada por uma comunicação via e-mail, a não ser os custos de conexão à
Internet. Outro fator é a rapidez. Enquanto o correio tradicional levaria dias,
semanas e até meses para entregar uma mensagem, o seu correspondente eletrônico
faz isso quase que instantaneamente, sem utilizar papel. Por último, após a
mensagem ser processada por diferentes servidores, sistemas e protocolos e ser
depositada na caixa postal do destinatário, o usuário pode acessá-la a partir de
qualquer computador conectado à Internet.
Capítulo 1 Introdução ao Correio Eletrônico - 11
Uma vez de posse da relação dos nomes e dos respectivos endereços IP dos
MTAs do destinatário da mensagem, o MTA do remetente repassa a mensagem
àquele MTA indicado como sendo de maior prioridade utilizando, novamente, o
protocolo SMTP. Ao receber a mensagem após o encerramento da sessão SMTP com
o MTA do remetente, o MTA do destinatário repassa a mensagem ao seu MDA -
Mail Delivery Agent, componente responsável pela entrega da mensagem na
mailbox do destinatário(Exemplo: procmail, maildrop,courier-maildrop,CyrusIMAP e
Dovecot).
1.3.1. SMTP
O protocolo SMTP - Simple Mail Transfer Protocol, que se pode traduzir
por Protocolo Simples de Transferência de Correio, é o protocolo padrão que
permite transferir o correio de um servidor a outro em conexão ponto a ponto, onde
as máquinas envolvidas, emissor e receptor, devem estar ligadas permanentemente.
1.3.2. POP
O POP - Post Office Protocol é um protocolo utilizado para acesso a uma
caixa de correio eletrônico. O POP3 permite que as mensagens no servidor sejam
transferidas sequencialmente para um computador pessoal. A partir daí, o usuário
pode ler, apagar, responder e armazenar as mensagens recebidas. Outra
característica do protocolo POP é que as mensagens são por padrão removidas do
servidor e transferida para o cliente.
Capítulo 1 Introdução ao Correio Eletrônico - 13
1.3.3. IMAP
IMAP - Internet Message Access Protocol é um protocolo de gerenciamento
de correio eletrônico similar ao POP3 porém superior em recursos e segurança. O
mais interessante, é que as mensagens ficam armazenadas no servidor. O protocolo
IMAP só apresenta os cabeçalhos da mensagem. O usuário pode ter acesso a suas
pastas e mensagens em qualquer computador, tanto por um WEBMAIL como por
cliente de correio eletrônico como o Outlook Express ou Thunderbird.
• RCPT TO(Obrigatório)
• DATA (Obrigatório)
• RSET
Este comando determina que a operação atual de mail deverá ser abortada.
Todos os dados trocados entre cliente e servidor serão, portanto, descartados.
• SEND
Este comando é usado para inicializar uma transação de mail na qual uma
mensagem é enviada para um ou mais terminais onde estejam os destinatários
e não para as suas mailboxes. É um comando alternativo ao comando MAIL.
• SOML
Este comando é usado para inicializar uma transação de mail na qual uma
mensagem é enviada para um ou mais terminais onde estejam os destinatários
ou às suas mailboxes. A mensagem é direcionada aos terminais dos
destinatários ativos no momento (e aceitando mensagens) caso contrário é
direcionada às suas mailboxes. É alternativo ao comando MAIL.
Capítulo 1 Introdução ao Correio Eletrônico - 15
• SAML
Este comando é usado para inicializar uma transação de mail na qual uma
mensagem é enviada para um ou mais terminais dos destinatários e aos seus
mailboxes. A mensagem é direcionada aos terminais dos destinatários ativos
no momento (e aceitando mensagens) e a todas as mailboxes.
• VRFY
• EXPN
• HELP
Uma vez emitido pelo cliente, esse comando faz com que o servidor SMTP
encaminhe informações de ajuda. O comando pode receber como parâmetro o
nome de algum comando sobre o qual o cliente deseja obter mais informações.
• NOOP
Esse comando apenas exige que o servidor SMTP retorne o código “250 OK” ao
cliente. Nenhum comando anterior é afetado pelo envio do NOOP. Qualquer
parâmetro que seja encaminhado pelo cliente junto com o NOOP será
completamente ignorado pelo servidor.
• QUIT
• TURN
Funciona tal qual o HELO mas, nesse caso, a resposta do servidor contém uma
lista de “habilidades” que incluem os recursos suportados pelo servidor em
questão tais como suporte para mecanismos de autenticação suportados,
criptografia da sessão SMTP por meio da utilização do protocolo TLS
(Transport Layer Security), tamanho máximo permitido para a mensagem,
dentre outros. Caso o servidor não esteja apto a responder a mensagem de
EHLO, o cliente deve enviar uma mensagem de HELO em seu lugar uma vez
que essa é de implementação obrigatória para todo e qualquer comunicação via
SMTP.
• AUTH
• STARTTLS
Utilizado para estabelecer uma conexão segura por meio do protocolo TLS -
Transport Layer Security entre o cliente e o servidor SMTP com o intuito de
evitar a transmissão “em claro” das informações por meio da Internet, por
exemplo. Essa alternativa torna-se ainda mais segura quando combinada com
algum mecanismo de autenticação negociado por meio do comando AUTH.
1 # telnet mail.dominio.com.br 25
2 Trying 1.2.3.4...
3 Connected to mail.dominio.com.br.
4 Escape character is '^]'.
5 220 mail.dominio.com.br ESMTP Postfix (Debian/GNU)
6 HELO hostname.origem.com.br
7 250 hostname.origem.com.br
8 MAIL FROM: <remetete@dominio.com.br>
9 250 2.1.0 Ok
10 RCPT TO: <destino@dominio.com.br>
11 250 2.1.5 Ok
12 DATA
13 354 End data with <CR><LF>.<CR><LF>
14 From: Nome do Remetente <remetente@dominio.com.br>
15 To: Nome do Destinatário <destino@dominio.com.br>
16 Subject: Teste de Comandos SMTP
17 E-mail teste - Comandos SMTP
18 .
19 250 2.0.0 Ok: queued as 38C932016
20 QUIT
21 221 2.0.0 Bye
22 Connection closed by foreign host.
HELO hostname.origem.com.br
250 hostname.origem.com.br
DATA
354 End data with <CR><LF>.<CR><LF>
Capítulo 1 Introdução ao Correio Eletrônico - 18
Dígito Significado
2XX O servidor aceitou o comando com sucesso e está esperando o comando seguinte.
3XX O comando foi aceito pelo servidor entretanto, trata-se de um comando que necessita de
informações adicionais a serem encaminhadas pelo cliente por meio de outros comandos. O
código “354”, por exemplo, é normalmente encaminhado em resposta ao comando DATA que
exige outras informações para ser processo corretamente pelo servidor.
4XX O comando não foi processado com sucesso pelo servidor por conta de algum erro.
Entretanto, trata-se de um erro de caráter temporário e, por conta disso, o cliente deve
tentar novamente a submissão do comando após algum tempo.
5XX Da mesma forma que os erros iniciados por 4XX, os códigos 5XX indicam erros. Porém, os
erros são considerados permanentes e o cliente não deve tentar submeter o comando
novamente ao servidor.
Cód - Descrição
211 - System status, or system help reply
214 - Help message (Informação de como usar o Receptor-SMTP ou algum
comando não padronizado)
220 - <domain> Service ready
221 - <domain> Service closing transmission channel
250 - Requested mail action okay, completed
251 - User not local; will forward to <forward-path>
354 - Start mail input; end with <CRLF>.<CRLF>
421 - <domain> Service not available, closing transmission channel (É
uma resposta que pode ser dada a qualquer comando; indica que
a conexão foi desfeita)
450 - Requested mail action not taken: mailbox unavailable (Ex.:
maixbox está em uso)
451 - Requested action aborted: local error in processing
452 - Requested action not taken: insufficient system storage
500 - Syntax error, command unrecognized (Usado também para casos tal
como linha muito longa)
501 - Syntax error in parameters or arguments
502 - Command not implemented
503 - Bad sequence of commands
504 - Command parameter not implemented
Capítulo 1 Introdução ao Correio Eletrônico - 19
+ 3 OK 345.910
• LIST [msg]
Lista cada mensagem em uma linha com seu número e tamanho em “bytes”.
Exemplo:
OK + 3 messages
1 1205
2 305
3 344400
• RETR msg
Capítulo 1 Introdução ao Correio Eletrônico - 20
1.5. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 1 Introdução ao Correio Eletrônico - 25
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 2 Infraestrutura de Correio Eletrônico - 26
Capítulo 2
2.1. Considerações
Capítulo 3
3.1. Introdução
• “CNAME” (Canonical Name): por meio desse tipo de registro, é possível criar
um “alias” de um nome para o outro. Por exemplo, pode-se dizer, por meio de
um registro “CNAME” que o nome web.4linux.com aponta para o nome
www.4linux.com. O nome www.4linux.com pode ainda apontar para outro
nome e assim sucessivamente. O mais importante, contudo, é que o último
nome referenciado aponte para um endereço de fato através de um registro
do tipo “A”. Cometer esse erro é bastante comum, portanto, fique atento;
Existem outros tipos de registros DNS que fogem do escopo desse treinamento.
Maiores informações podem ser consultadas na documentação do próprio
BIND.
4. Com essa informação, uma nova consulta do tipo “A” é realizada para
determinar o endereço IP correspondente.
Todo esse processo pode ser realizado manualmente para fins didáticos e de
depuração do seu ambiente por meio do comando “host”, conforme apresentado no
quadro abaixo:
# host -t NS 4linux.com.br
4linux.com.br name server ns2.4linux.com.br.
4linux.com.br name server ns1.4linux.com.br.
# host -t A ns1.4linux.com.br
ns1.4linux.com.br has address 200.212.122.137
Capítulo 3 Instalando e Configurando o DNS - 34
# host -t A boca.4linux.com.br
1 $TTL 604800
2 @ IN SOA ns1.dominio.com.br. root.ns1.dominio.com.br. (
3 1 ; Serial
4 604800 ; Refresh
5 86400 ; Retry
6 2419200 ; Expire
7 604800 ) ; Negative Cache TTL
8 ;
9 @ IN NS ns1.dominio.com.br.
10 @ IN MX 10 mail1.dominio.com.br.
11 @ IN MX 10 mail2.dominio.com.br.
12 @ IN MX 20 mail3.dominio.com.br.
13 ns1 IN A 192.168.1.1
14 mail1 IN A 192.168.1.2
15 mail2 IN A 192.168.1.3
16 mail3 IN A 192.168.1.4
17 www IN A 192.168.1.5
18 ftp IN A 192.168.1.6
10 @ IN MX 10 mail1.dominio.com.br.
11 @ IN MX 10 mail2.dominio.com.br.
12 @ IN MX 20 mail3.dominio.com.br.
Como já mostrado anteriormente, para verificar registros "MX” pode-se utilizar o comando
“host”, presente na grande maioria das distribuições GNU/Linux. O quandro abaixo apresenta sua
a utilização para determinar os MTAs responsáveis pela entrega de e-mails para o domínio
gmail.com, por exemplo:
1 host -t mx gmail.com
2 gmail.com mail is handled by 50 gsmtp183.google.com.
3 gmail.com mail is handled by 5 gmail-smtp-in.l.google.com.
4 gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com.
5 gmail.com mail is handled by 10 alt2.gmail-smtp-in.l.google.com.
6 gmail.com mail is handled by 50 gsmtp147.google.com.
1 aptitude update
2 aptitude install vim
3 aptitude install rpl
4 echo “syntax on” >> /etc/vim/vimrc
Agora será configurado o DNS para atender às requisições do Postfix. Para tal
Capítulo 3 Instalando e Configurando o DNS - 37
# vim /etc/bind/named.conf.local
1 zone "matrizx.com.br" {
2 type master;
3 file "/etc/bind/db_matrizX.conf";
4 };
5 zone "filialx.com.br" {
6 type master;
7 file "/etc/bind/db_filialX.conf";
8 };
9 zone "200.168.192.in-addr.arpa" {
10 type master;
11 file "/etc/bind/db_reverso.conf";
12 };
# vim /etc/bind/db_matrizX.conf
Capítulo 3 Instalando e Configurando o DNS - 38
1 $TTL 1D
2 @ IN SOA mailx.matrizx.com.br. postmaster.matrizx.com.br. (
3 2011070101 ; Serial
4 3H ; Refresh
5 1H ; Retry
6 24H ; Expire
7 24H ) ; Negative Cache TTL
8 ;
9 @ IN NS mailx.matrizx.com.br.
10 @ IN MX 5 mailx.matrizx.com.br.
11 mail IN A 192.168.200.X
12 smtp IN CNAME mailx.matrizx.com.br.
13 imap IN CNAME mailx.matrizx.com.br.
# vim /etc/bind/db_reverso.conf
Capítulo 3 Instalando e Configurando o DNS - 39
1 $TTL 1D
2 @ IN SOA mailx.matrizx.com.br. postmaster.mailx.matrizx.com.br.
(
3 2011070101 ; Serial
4 3H ; Refresh
5 1H ; Retry
6 24H ; Expire
7 24H ) ; Negative Cache TTL
8 ;
9 @ IN NS mailx.matrizx.com.br.
10 X IN PTR mailx.matrizx.com.br.
Editando o resolv.conf
# vim /etc/resolv.conf
1 search matrizX.com.br
2 nameserver 127.0.0.1
3 nameserver 8.8.8.8
# vim /etc/hosts
1 192.168.200.X mail.matrizX.com.br mailX
#Verificando o named.conf
named-checkconf
# Verificando os arquivos de zona(domínios)
named-checkzone matrizX.com.br /etc/bind/db_matrizX.conf
zone matrizX.com.br/IN: loaded serial 1
OK
Reinicie o Bind
/etc/init.d/bind9 restart
ou
invoke-rc.d bind9 restart
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Aug 27 14:24:53 2010
;; MSG SIZE rcvd: 130
Verificando o reverso
# host 192.168.200.X
X.200.168.192.in-addr.arpa domain name pointer
mail.matrizx.com.br.200.168.192.in-addr.arpa.
Capítulo 3 Instalando e Configurando o DNS - 42
3.3. Laboratório
3.4. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 4 Instalando e Configurando o Postfix - 44
Capítulo 4
4.1. Introdução
4.1.1. Histórico
A ideia inicial do Postfix era a de produzir um substituto para o Sendmail que
fosse “rápido, fácil de administrar e seguro”. Trata-se de um projeto OpenSource
patrocinado pela IBM, criado e , Ph.D. em Física pela Groningen University na
Holanda. Segundo seu criador, o projeto e o desenvolvimento do Postfix foram
norteados pelas seguintes diretrizes:
Filas do Postfix
O modo pelo qual o "master" gerencia isso, implica que esse tempo é
praticamente nulo, uma vez que o processo já esta no ar; ao mesmo tempo, o
"master" mantém o sistema sob controle, não deixando que processos inúteis ocupem
recursos da máquina.
bounce e defer
error
trivial-rewrite
showq
flush
qmgr
Ao receber uma nova mensagem por qualquer um dos seus componentes que
possuem essa finalidade, o “daemon” cleanup, após realizar algumas das verificações
de sua competência, coloca a mensagem na fila incoming e notifica o “daemon” qmgr.
Caso um determinado e-mail, por alguma razão, não puder ser entregue, ele
será depositado na fila deferred.
proxymap
spawn
local
O “daemon” local pode escrever para caixas de e-mails nos formatos “mbox” e
“maildir”. No caso do primeiro, todas as mensagens de um usuário são acumuladas
em um único arquivo enquanto que no formato “maildir” as mensagens são salvas em
arquivos separados dispostos em um conjunto de diretórios. Ambos possuem
Capítulo 4 Instalando e Configurando o Postfix - 53
virtual
smtp
lmtp
pipe
entrada.
pickup
smtpd
cleanup
sendmail
QMQP
anvil
Corrupt - As mensagens das filas que não conseguem ser lidas ou que
estão danificadas, são movidas para esta fila para uma
inspeção;
O arquivo que você editará com mais frequência é o main.cf. Esse arquivo
define os parâmetros que controlam o comportamento dos “daemons” do Postfix. Sua
sintaxe é bem simples obedecendo as seguintes formatação geral:
parâmetro = valor
======================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
#
======================================================================
# smtp inet n - - - 300 smtpd
# 628 inet n - - - - qmqpd
# pickup fifo n - - 60 1 pickup
# cleanup unix n - - - 0 cleanup
# qmgr fifo n - n 300 1 qmgr
# qmgr fifo n - - 300 1 oqmgr
exemplo:
Para o Postfix, uma tabela de pesquisa é uma entidade abstrata que mapeia
uma “string”, a chave da pesquisa, para uma outra “string”, o resultado da pesquisa.
É como uma lista telefônica onde você pesquisa o nome e obtém o número
correspondente. Esse processo é realizado pelo comando postmap que constrói um
arquivo indexado. Para cada atualização realizada na tabela/arquivo é necessário
executar o postmap para que seja recriado o arquivo indexado. Não e necessário
recarregar o Postfix quando haver uma mudança na tabela.
Essas tabelas podem ser usada para diversos tipo de ações como:
Comando Função
postcat Permite leitura de uma mensagem enquanto estiver na fila de
mensagens.
Ex: postcat /var/spool/postfix/active/A/A44BD17D18
postalias Cria o arquivo base de apelidos.
Ex: postalias /etc/postfix/aliases
postlog Escreve textos personalizados no log do Postfix
Ex: postlog -p info -t TITULO “TEXTO”
postmap Cria a base hash de arquivos de mapas
Ex: posmap /etc/postfix/check_access
postqueue Usado para controlar as filas de e-mail do Postfix
Ex: postqueue -i F2AF0111029
postsuper Tem as mesmas funções do posqueue, porém é utilizado por usuários
privilégiados. Tem a capacidade de mover e excluir mensagens da fila.
Ex: postsuper -d ALL
postconf Utilizado para manipulação e leitura de parâmetros no main.cf
Ex: postconf -d
Capítulo 4 Instalando e Configurando o Postfix - 60
Reiniciando o Postfix
/etc/init.d/postfix restart
1 #adduser fulano
2 → Coloque a senha 123
3
4 telnet localhost 25
5 HELO mail.matrizX.com.br
6 MAIL FROM: <root@matrizX.com.br>
7 RCPT TO: <fulano@matrizX.com.br>
8 DATA
9 From: Nome do Remetente <root@matrizX.com.br>
Capítulo 4 Instalando e Configurando o Postfix - 62
10
cat /var/mail/fulano
4.3. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 4 Instalando e Configurando o Postfix - 66
4. A empresa Domínio S/A tem uma filial em Anápolis-GO. Essa filial está
conectada à matriz em São Paulo-SP. O servidor já possui todas a contas de e-
mails de cada usuário da filial, porém, os usuários estão reclamando que não
conseguem enviar e-mails e estão relatando a seguinte mensagem de erro:
“554 – Relay Access Denied “. O que pode estar ocorrendo?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 4 Instalando e Configurando o Postfix - 67
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 5 Gerenciamento de Filas no Postfix - 68
Capítulo 5
5.1. Introdução
Fila Função
Active Esta é a fila de e-mails que foram abertos pelo gerenciador da fila para
entregas. Essa fila tem um número limite para entrada de mensagens.
qmgr_message_active_limit (default 20000)
Corrupt Os arquivos das filas que não conseguem ser lidos ou que estão danificados
são movidos para esta fila para uma inspeção.
Deferred Esta é a fila de mensagens que não conseguiram ser entregues na primeira
tentativa. O gerenciador da fila vai seguir as configurações do main.cf para
novas tentativas de entregas. Por padrão ele vai dobrando o tempo de
entrega a cada tentativa.
Incoming Esta é a fila de e-mails que estão entrando a partir da rede, repassados pelo
maildrop.
Hold Mensagens que são colocadas em espera pelo administrador vão para esta
fila até que alguém especifique que ela deva ser liberada.
Status da Entrega Função
Bounce Informação sobre os motivos da mensagem ter recebido um bounce
(mensagem de erro).
Defer Informação sobre os motivos da mensagem estar com o envio atrasado.
Trace Informação sobre requisições com o comando sendmail -v ou sendmail -bv do
MTA postfix.
Parâmetro Descrição
qmgr_clog_warn_time (300) Intervalo minimo de advertências
qmgr_message_active_limit (20000) Número máximo de mensagens na fila
qmgr_message_recipient_limit (20000) Número máximo de destinatários realizada em memória
qmgr_message_recipient_minimum (10) Número mínimo de destinatários em memória
maximal_queue_lifetime O tempo máximo de uma mensagem na fila antes que
seja devolvida como “undeliverable”
queue_directory Diretório onde estão as filas do Posfix
Capítulo 5 Gerenciamento de Filas no Postfix - 70
Comando/Parâmetro Função
postqueue -p Verificar como está a fila
postqueue -f Para dar um “flush” na fila e enviar mensagens que estão
aguardando (deferred)
postqueue -i id_da_mensagem Para iniciar a entrega imediata de uma mensagem na fila
deferred
postqueue -s dominio.com Para iniciar a entrega imediata de mensagens na fila para um
domínio especifico
postsuper -h id_fila Colocando mensagem em HOLD (espera).
postsuper -H id_fila Libera mensagem colocada em HOLD
postsuper -d ALL Remove mensagem das filas
postsuper -p Faz um “purge” na nos arquivos temporários da fila
postsuper -s Verifica a estrutura das filas e repara a fila caso exista algum
problema.
postsuper -r id_fila Recoloca a mensagem na fila
qshape nome_fila Ferramenta de análise estatística do Postfix
Postcat -d id_mensagem Realiza leitura da mensagem enquanto na fila
Capítulo 5 Gerenciamento de Filas no Postfix - 71
# postqueue -p
Reprocessando as mensagens
# postsuper -r ALL
Removendo mensagens
# postsuper -d 45ADF5
# postcat -q 45ADF5
# qshape
T 5 10 20 40 80 160 320 640 1280 1280+
TOTAL 655 60 111 0 43 0 7 6 120 150 158
matriz.com.br 151 40 111 0 0 0 0 0 0 0 0
dominioY.com.br 109 0 0 0 0 0 0 0 0 50 59
dominioZ.com.br 55 0 0 0 0 0 0 0 55 0 0
dominioW.com.br 35 0 0 0 0 0 0 0 0 14 21
dominioK.com.br 31 0 0 0 4 0 0 0 27 0 0
# qshape active
Capítulo 5 Gerenciamento de Filas no Postfix - 72
5.3. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 5 Gerenciamento de Filas no Postfix - 73
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 6 Entendendo Restrições SMTP no Postfix - 74
Capítulo 6
Postfix
Capítulo 6 Entendendo Restrições SMTP no Postfix - 75
6.1. Introdução
O Postfix fornece alguns métodos que podem ser utilizados para ajudá-lo no
combate a SPAM.
• Restrições SMTP
O Postfix tem uma notação simples, porém, bem expressiva para definição das
regras que serão aplicadas às mensagens que chegam via SMTP. O Postfix define
alguns parâmetros que contêm listas de restrições. Cada lista de restrição pode
conter zero ou mais restrições e cada restrição pode ou não retornar algo quando
avaliada. Como em alguns outros locais no Postfix, o principio “primeira
correspondência vence” também prevalece aqui. Isso significa que as restrições são
avaliadas na ordem que elas são especificadas, e a primeira restrição que retornar
algo termina a avaliação da lista de restrição atual. As listas são avaliadas durante a
Capítulo 6 Entendendo Restrições SMTP no Postfix - 76
sessão SMTP. A tabela abaixo mostra as listas de restrições que o Postfix utiliza e
mostra a fase dentro de uma sessão SMTP.
Cada restrição tem um contexto isolado onde os testes são feitos na ordem
especificada, e cada teste pode retornar 3 status: OK, REJECT e DUNNO. OK e
REJECT são ações finais dentro de uma restrição. O status OK faz com que os
próximos testes desta restrição não sejam processados. O REJECT faz o bloqueio da
conexão, informando a restrição que não foi atendida. O DUNNO apenas faz com que
não seja bloqueado neste teste, e passe para o próximo teste.
Exemplo:
smtpd_client_restrictions = permit_mynetworks,
permit_sasl_authenticated,
check_client_access hash:/etc/postfix/client_access,
reject_unknown_client_hostname
O parâmetro “smtpd_delay_reject” tem seu valor default YES, isso significa que
todas as rejeições serão adiadas até ocorrer um RCPT TO. A razão disso é que alguns
clientes de e-mail não gostam de ser rejeitados antes do RCPT TO, assim eles se
desconectarão e tentarão novamente.
Restrições Descrição
permit_mynetworks Permitir se o cliente conectado estive listado em mynetworks
permit_sasl_autenticated Permitir se o cliente que está se conectado autenticou-se
reject Rejeitar incondicionalmente
reject_invalid_hostname Rejeitar se o hostname for inválido.
reject_non_fqdn_hostname Rejeitar se o hostname HELO/EHLO dado pelo cliente não for
um nome de domínio completamente qualificado
reject_non_fqdn_recipient Rejeitar se a parte do domínio do endereço do destinatário não
for um nome de domínio completamente qualificado
reject_non_fqdn_sender Rejeitar se a parte do domínio do endereço do remetente não
for um nome de domínio completamente qualificado
reject_unauth_destination Rejeitar a solicitação a menos que o domínio do destinatário
seja um dos domínios que o servidor Postfix hospeda
reject_unknown_recipient_domain Rejeitar se a parte domínio do endereço do destinatário não
tiver nenhum registros A, MX no DNS
reject_unknown_sender_domain Rejeitar se a parte domínio do endereço do remetente não tiver
nenhum registros A, MX no DNS
reject_unknown_cliente_hostname Rejeitar se o não tiver nenhum registros A, MX no DNS –
Verifica reverso
reject_unlisted_recipient Rejeitar se o destinatário não for um endereço de e-mail válido
pertencente ao Postfix. Por padrão essa restrição é avaliada
implicitamente ao final de smtpd_recipient_restrictions.
reject_unlisted_sender Rejeitar se a origem não for um endereço de e-mail válido, ou
seja, endereços de remetente não pertence ao Postfix.
permit Permitir incondicionalmente
warn_if_reject Gera apenas em caso de rejeição mas não rejeita a mensagem.
Útil quando queremos testar um regra.
Capítulo 6 Entendendo Restrições SMTP no Postfix - 78
smtpd_client_restrictions =
check_client_access hash:/etc/postfix/client_access
Resultado Descrição
OK Permitir a solicitação
REJECT[texto opcional] Rejeitar a solicitação com um código de erro e
com uma mensagem de erro
DISCARD[texto opcional] Se a mensagem for aceita, ela será descartada e
não será entregue
HOLD[texto opcional] Coloca a mensagem na fila de espera
WARN [texto opcional] Coloca mensagem de alerta no arquivo de log
Parâmetro do main.cf:
header_checks = regexp:/etc/postfix/header_checks
Parâmetro do main.cf:
body_checks = regexp:/etc/postfix/body_checks
Capítulo 6 Entendendo Restrições SMTP no Postfix - 80
Exemplo de uso:
smtpd_recipient_restrictions=
permit_mynetworks,reject_unauth_destination, reject_rbl_client
relay.ordb.org, reject_rhsbl_sender dns.rfc-ignorant.org
smtpd_client_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unknown_client_hostname,
check_client_access hash:/etc/postfix/black_list,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net
192.168.1.10 REJECT
192.168.1.11 REJECT
# postmap /etc/postfix/black_list
Capítulo 6 Entendendo Restrições SMTP no Postfix - 82
Vamos entendê-la:
smtpd_helo_required = yes
smtpd_helo_restrictions =
check_helo_access hash:/etc/postfix/helo_blacklist,
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_helo_hostname,
reject_invalid_helo_hostname,
reject_unknown_helo_hostname
Capítulo 6 Entendendo Restrições SMTP no Postfix - 83
Entendendo as Regras:
192.168.1.10 REJECT
192.168.1.11 REJECT
# postmap /etc/postfix/helo_blacklist
smtpd_sender_restrictions =
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_authenticated_sender_login_mismatch,
permit_sasl_authenticated,
reject_unlisted_sender
OBS: para que estas duas regras citadas acima funcionem é necessário o
uso da autenticação que será abordada mais adiante nessa apostila
smtpd_recipient_restrictions =
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unlisted_recipient,
permit_sasl_authenticated,
reject_unauth_destination
smtpd_data_restrictions =
reject_unauth_pipelining,
reject_multi_recipient_bounce
header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks
/(http|https|ftp):\/\/.*\/.*\.(bat|pif|scr|[eE][xX][eE]).*(\s|\")/
REJECT PHISHING
disable_vrfy_command = yes
# useradd teste1
# useradd teste2
# useradd teste3
Capítulo 6 Entendendo Restrições SMTP no Postfix - 87
Execute o postalias
postalias /etc/aliases
lista@matrizX.com.br protege_lista
fulano@matrizX.com.br OK
Execute o postmap
postmap /etc/postfix/minha_lista
postmap /etc/postfix/users_liberados
Edite o main.cf
smtpd_restriction_classes = protege_lista
protege_lista = check_sender_access hash:/etc/postfix/users_liberados,
reject
strict_rfc821_envelopes = yes
Capítulo 6 Entendendo Restrições SMTP no Postfix - 89
6.3. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 6 Entendendo Restrições SMTP no Postfix - 90
smtpd_client_restrictions =
reject_rbl_client bl.spamcop.net ,
reject_rbl_client dnsbl.njabl.org ,
permit_mynetworks,
permit_sasl_authenticated,
check_client_access hash:/etc/postfix/client_whitelist,
check_client_access hash:/etc/postfix/client_blacklist,
reject_unknown_client_hostname
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 6 Entendendo Restrições SMTP no Postfix - 91
6.4. Laboratório
Capítulo 7
Troubleshoot
no Postfix
Capítulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 93
7.1. Introdução
postfix/master[3158]: warning:
process /usr/libexec/postfix/smtpd pid 3163
exit status 1
postfix/master[3158]: warning:
/usr/libexec/postfix/smtpd:
bad command startup -- throttling
Além desses erros, é importante ressaltar a análise dos recursos que o Postfix
utiliza para determinar possíveis erros de entrega e recepção de mensagens ou de
problemas com o próprio Postfix, como por exemplo:
Mais informações a respeito do pflogsumm podem ser obtidas nas próprias man
pages inclusas no pacote.
debug_peer_list = matrizX.com.br
debug_peer_level = 2
Você também pode obter logs mais detalhados adicionando o parâmetro “-v”
nos daemons do Postfix editando o arquivo /etc/postfix/master.cf, conforme
apresentado no exemplo a seguir:
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin;
(strace -p $process_id 2>&1 | logger -p mail.info) & sleep 5
Por fim, é necessário instalar o strace e reiniciar o Postfix por meio do script
/etc/init.d/postfix:
What-if: relata o que iria acontecer, mas, na verdade, não entrega, de fato, o e-
mail.
# sendmail -v fulano@matrizX.com.br
7.3. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 99
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 8 Instalando e Configurando o OpenLDAP - 100
Capítulo 8
Instalando e Configurando o
OpenLDAP
Capítulo 8 Instalando e Configurando o OpenLDAP - 101
8.1. Introdução
Neste caso, ao invés dos seus usuários possuírem contas válidas no sistema
operacional do servidor de e-mails, toda a base de usuários ficará em um diretório
estruturado que pode ser mantido e gerenciado com muito mais facilidade e
segurança. Outras informações como as tabelas de pesquisa (lookup tables) para os
aliases (Falaremos sobre trabelas de pesquisas e aliases no capítulo 10) também
podem ser, perfeitamente, consolidadas, armazenadas e mantidas em servidores
LDAP.
dn: dc=dominios,dc=empresa
dc: dominios
o: dominios
objectClass: top
objectClass: dcObject
objectClass: organization
dn: ou=matrizX.com.br,dc=dominios,dc=empresa
ou: matriz.com.br
objectClass: top
objectClass: organizationalUnit
dn: ou=filialX.com.br,dc=dominios,dc=empresa
ou: filial.com.br
objectClass: top
objectClass: organizationalUnit
dn: cn=Joao Cunha,ou=matrizX.com.br,dc=dominios,dc=empresa
telephoneNumber: (11)3333-9999
displayName: Joao Cunha
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
Capítulo 8 Instalando e Configurando o OpenLDAP - 105
Instalando o OpenLDAP
Pare o OpenLDAP
# /etc/init.d/slapd stop
#vim /etc/default/slapd
SLAPD_CONF=/etc/ldap/slapd.conf
# rm /var/lib/ldap/*
# cp /usr/share/doc/slapd/examples/slapd.conf /etc/ldap/
# vi /etc/ldap/slapd.conf
include /etc/ldap/schema/qmail.schema
suffix "dc=empresa"
rootdn "cn=admin,dc=empresa"
rootpw "123"
Você pode usar o slappasswd para gerar em rootpw senha hash ex:
# slappasswd -s 123
access to *
by dn="cn=admin,dc=empresa" write
by * read
# /etc/init.d/slapd start
# vi /opt/estrutura_correio.ldif
dn: dc=empresa
dc: empresa
o: empresa
objectClass: top
objectClass: dcObject
objectClass: organization
Capítulo 8 Instalando e Configurando o OpenLDAP - 108
dn: ou=matrizx.com.br,dc=empresa
ou: matrizx.com.br
objectClass: top
objectClass: organizationalUnit
dn: ou=filialx.com.br,dc=empresa
ou: filialx.com.br
objectClass: top
objectClass: organizationalUnit
dn: uid=12345678900,ou=matrizx.com.br,dc=empresa
telephoneNumber: (11)3333-9999
displayName: Joao Cunha
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: qmailUser
o: Empresa Matriz
mobile: (11)3333-9999
sn: Cunha
mail: joao@matrizx.com.br
homePhone: (11)3333-9999
givenName: Joao
cn: Joao Cunha
uid: 12345678900
mailHost: localhost
mailQuota: 1024
mailMessageStore:
maildir:/home/vmail/domains/matrizx.com.br/joao/Maildir/
homeDirectory: /home/vmail/domains/matrizx.com.br/joao/
accountStatus: A
mailAlternateAddress: joao.cunha@matriz.com.br
userPassword: 123
dn: uid=98765432100,ou=filialx.com.br,dc=empresa
telephoneNumber: (11)3333-9999
displayName: Maria Neves
Capítulo 8 Instalando e Configurando o OpenLDAP - 109
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: qmailUser
o: Empresa Filial
mobile: (11)3333-9999
sn: neves
mail: maria@filialx.com.br
homePhone: (11)3333-9999
givenName: Maria
cn: Maria Neves
uid: 98765432100
mailHost: localhost
mailQuota: 1024
mailMessageStore:
maildir:/home/vmail/domains/filialx.com.br/maria/Maildir/
homeDirectory: /home/vmail/domains/filialx.com.br/maria/
accountStatus: A
mailAlternateAddress: maria.neves@filialx.com.br
userPassword: 123
Onde:
dn: uid=98765432100,ou=filialx.com.br,dc=empresa
changetype: modify
replace: mailAlternateAddress
mailAlternateAddress: maria.cunha@filialx.com.br
ldappasswd -x -W -D "cn=admin,dc=empresa"
"uid=98765432100,ou=filialx.com.br,dc=empresa" -s senha_nova
Onde:
Onde:
Atente para a parte do comando que está em negrito, neste caso estamos
pesquisando o atributo “mail”.
8.4. Laboratório
8.5. Exercícios
1. O que é o OpenLDAP?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 8 Instalando e Configurando o OpenLDAP - 114
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 9 Servidor POP/IMAP com Dovecot e Integração com o OpenLDAP e SSL - 115
Capítulo 9
9.1. Introdução
hosts = localhost
dn = cn=admin,dc=empresa
dnpass = 123
base = dc=empresa
scope = subtree
user_attrs = homeDirectory=home, uidNumber=uid, gidNumber=gid,
mailMessageStore=mail, mailQuota=userdb_quota=*:bytes=%$K
user_filter = (&(objectClass=qmailUser)(accountStatus=A)(|(mail=%u)
(mailAlternateAddress=%u)))
pass_attrs = uid=mail,userPassword=password
pass_filter = (&(objectClass=qmailUser)(accountStatus=A)(|(mail=%u)
(mailAlternateAddress=%u)))
default_pass_scheme = PLAIN
# Habilitando os Protocolos
protocols = imap imaps managesieve
# Definindos em quais portas os protocolos responderam
protocol imap {
listen = *:143
ssl_listen = *:943
}
protocol managesieve {
Capítulo 9 Servidor POP/IMAP com Dovecot e Integração com o OpenLDAP e SSL - 118
listen = *:2000
}
# Permitindo autenticação em PLAIN text
disable_plaintext_auth = no
shutdown_clients = yes
log_timestamp = "%Y-%m-%d %H:%M:%S "
# Ativando o SSL
ssl = yes
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
# Usuário que tem permissão para manipular as caixas e mensagens no
Dovecot, neste caso o VMAIL
mail_uid = 500
mail_gid = 500
mail_privileged_group = vmail
# Essas opções afeta o desempenho do servidor IMAP
dotlock_use_excl = yes
fsync_disable = yes
# Gerente do protocolo imap, habilitando os plugins que serão
utilizados
protocol imap {
mail_plugins = quota imap_quota autocreate
}
# Gerente do protocolo POP3
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
# Gerente do filtro, permite você a gerir os filtros do Dovecot
protocol managesieve {
}
# Ativando o protocolo de entrega do Dovecot, responsável por receber
do postfix e entregar na caixa postal do usuário
protocol lda {
postmaster_address = postmaster@matrizx.com.br
hostname = mailx.matrizx.com.br
mail_plugins = quota sieve
Capítulo 9 Servidor POP/IMAP com Dovecot e Integração com o OpenLDAP e SSL - 119
mail_plugin_dir = /usr/lib/dovecot/modules/lda
deliver_log_format = msgid=%m: %$
sendmail_path = /usr/sbin/sendmail
rejection_subject = Rejeitado: %s
rejection_reason = Sua mensagem para <%t> foi rejeitada: %n%r
}
# Ativando os debugs de login para ratreio de problemas
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
# Configurando o mecanismo de autenticação do Dovecot que será
utilizando tanto pelo Dovecot quanto para o Postfix para autenticação
SMTP e IMAP e entregas de mensagens via LDA do Dovecot
auth default {
mechanisms = plain login
passdb ldap {
args = /etc/dovecot/dovecot-ldap.conf
}
userdb ldap {
args = /etc/dovecot/dovecot-ldap.conf
}
user = root
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
group = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
Capítulo 9 Servidor POP/IMAP com Dovecot e Integração com o OpenLDAP e SSL - 120
# Configuração de plugins
plugin {
# Definido Quotas Padrão
quota = maildir:User quota
quota_rule = *:storage=521000
quota1_rule = Trash:storage=50000
quota2_rule = Spam:storage=50000
# Aviso de Quota aproximando do limite
quota_warning = storage=80%% /usr/local/sbin/quota-warning.sh 80
# Definindo local onde ficara os arquivos de filtro do usuário
sieve=/home/vmail/domains/%d/%n/%n.sieve
# Pastas que serão criadas no 1º login do usuário
autocreate = Spam
autocreate2 = Trash
autocreate3 = Drafts
autocreate4 = Sent
autosubscribe = Spam
autosubscribe2 = Trash
autosubscribe3 = Drafts
autosubscribe4 = Sent
}
#!/bin/sh
PERCENT=$1
FROM="postmaster@matrizx.com.br"
msg="From: $FROM
To: $USER
Subject: Alerta de quota - $PERCENT% em uso
Content-Type: text/plain; charset=UTF-8
Prezado Usuário,
Esta mensagem e apenas para informar que sua caixa postal esta
atingindo $PERCENT%.
Capítulo 9 Servidor POP/IMAP com Dovecot e Integração com o OpenLDAP e SSL - 121
Reiniciando o Dovecot
# /etc/init.d/dovecot restart
Testando o Dovecot
# ls -la /home/vmail/domains/matrizx.com.br/joao/Maildir/
Capítulo 9 Servidor POP/IMAP com Dovecot e Integração com o OpenLDAP e SSL - 123
9.3. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 10 Postfix – Integração com OpenLDAP, Dovecot e Autenticação SMTP - 124
Capítulo 10
10.1. Introdução
Neste capitulo iremo aprender como realizar essa integração e como o Postfix
se comporta. Também veremos conceitos de usuários e domínios virtuais
possibilitando a hospedagem de múltiplos domínios.
# postconf -m
btree
cidr
environ
hash
internal
ldap
nis
pcre
proxy
regexp
sdbm
static
tcp
unix
Veja que o LDAP aparece na consulta aos módulos disponíveis no Postfix. Caso
não tenha basta instalar o módulo com o comando aptitude. Veja:
Capítulo 10 Postfix – Integração com OpenLDAP, Dovecot e Autenticação SMTP - 126
# postconf -a
cyrus
dovecot
# vi /etc/postfix/main.cf
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
# /etc/init.d/postfix restart
2 telnet localhost 25
3 Trying 127.0.0.1...
4 Connected to localhost.
5 Escape character is '^]'.
6 220 mail.matriz.com.br - Empresa DOMINIO S/A
7 helo mail.matriz.com.br
8 250 mail.matriz.com.br
9 auth plain AGpvYW9AbWF0cml6LmNvbS5icgAxMjM=
10 235 2.0.0 Authentication successful
11 quit
12 221 2.0.0 Bye
13 Connection closed by foreign host.
2 - MÉTODO LOGIN
# vi /etc/ldap/slapd.conf
loglevel 256
Reiniciar o slapd
# /etc/init.d/slapd restart
Verifique o que esta chegando de parâmetros no syslog use o comando tail -f.
Veja o exemplo:
AUTH#0112#011plain#011service=smtp#011nologin#011lip=127.0.0.1#011rip=127
.0.0.1#011resp=UzQ1Njc4OTAwADEyMw==
May 7 16:47:38 tine dovecot: auth(default): plain(?,127.0.0.1): invalid
input
May 7 16:47:40 tine postfix/smtpd[1657]: warning: localhost[127.0.0.1]:
SASL plain authentication failed:
May 7 16:47:40 tine dovecot: auth(default): client out: FAIL#0112
May 7 16:47:42 tine postfix/smtpd[1657]: disconnect from
localhost[127.0.0.1]
Version: 1 (0x0)
Serial Number:
a2:fa:48:48:18:9c:24:d0
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=BR, ST=Goias, L=Anapolis, O=DOMINIO, OU=CPD,
CN=srv/emailAddress=tornis@matriz.com.br
Validity
Not Before: Apr 13 18:25:11 2009 GMT
Not After : Apr 11 18:25:11 2019 GMT
Subject: C=BR, ST=Goias, L=Anapolis, O=DOMINIO, OU=CPD,
CN=srv/emailAddress=tornis@matriz .com.br
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ca:c9:d6:95:d8:5e:d5:bc:86:46:02:f0:cf:eb:
cc:c7:78:2f:48:94:19:66:20:a2:6c:73:77:42:ab:
39:2c:fc:3f:99:3e:b7:d2:7f:eb:98:95:66:65:7c:
0c:91:1b:0d:ff:e2:54:9f:ec:8a:11:06:69:d1:6d:
5a:85:73:58:de:1d:9e:ac:5d:0a:fd:fb:cb:94:fb:
69:08:66:55:1d:65:b9:c7:c6:93:8e:82:e6:c4:bb:
3d:de:50:31:d5:3a:1d:9f:98:06:53:2e:c6:de:32:
50:a4:67:f5:db:84:5b:2d:c1:cf:f1:e9:9e:64:e4:
0e:21:ea:9a:68:b9:c8:40:1b
Exponent: 65537 (0x10001)
Signature Algorithm: sha1WithRSAEncryption
30:9f:92:41:73:8a:2b:52:e8:b2:2f:97:7f:6f:e6:c1:bd:7e:
40:03:16:da:8b:96:38:01:90:63:7a:d7:a1:42:99:4c:05:e0:
96:9c:80:06:78:c5:70:c1:c7:85:3a:b6:19:ac:c7:ec:81:6a:
1d:26:b4:e4:54:99:6b:c4:44:fd:af:dd:93:51:2d:d8:53:33:
ff:01:fe:6f:85:8b:29:2f:e1:f3:0b:e5:55:c8:50:22:96:38:
47:55:e8:f6:6d:55:52:b2:63:f5:54:cf:87:43:24:2a:26:95:
fd:a5:ea:e1:4a:60:d8:b9:1e:c5:12:80:a9:8f:da:24:b2:ef:
89:0d
Capítulo 10 Postfix – Integração com OpenLDAP, Dovecot e Autenticação SMTP - 132
smtpd_tls_cert_file=/etc/postfix/ssl/servidor.cer
smtpd_tls_key_file=/etc/postfix/ssl/servidor.key
smtpd_use_tls=yes
#
======================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
#
======================================================================
smtp inet n - - - - smtpd
#submission inet n - - - - smtpd
# -o smtpd_enforce_tls=yes
# -o smtpd_sasl_auth_enable=yes
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
Para que o Postfix possa receber e enviar essas mensagens se faz necessário a
integração com o LDA(Deliver do Dovecot). Vimos anteriormente no tópico 9.2.4 do
capitulo 9 que o protocolo LDA está configurado para aceitar realizar a autenticação
e entregas das mensagens vindas do Postfix.
Capítulo 10 Postfix – Integração com OpenLDAP, Dovecot e Autenticação SMTP - 133
user = postfix
group = postfix
}
}
}
query_filter = (&(ou=%s))
result_attribute = ou
version = 3
bind = yes
timeout = 30
# vi /etc/postfix/ldap/vms.cf
server_host = localhost
server_port = 389
bind_dn = cn=admin,dc=empresa
bind_pw = 123
search_base = dc=empresa
query_filter = (&(objectClass=qmailUser)(mail=%s))
result_attribute = mail
version = 3
bind = yes
timeout = 30
# /etc/init.d/postfix restart
10.6. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP - 137
Capítulo 11
Thunderbird POP/IMAP
Capítulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP - 138
11.1. Introdução
http://www.mozilla.org/en-US/thunderbird/organizations/all-esr.html
Descompacte o arquivo:
# cd thunderbird
# ./thunderbird
https://addons.mozilla.org/en-US/thunderbird/addon/70
https://addons.mozilla.org/en-US/thunderbird/addon/611
https://addons.mozilla.org/en-US/thunderbird/addon/2313
https://addons.mozilla.org/pt-br/thunderbird/addon/display-quota/?src=search
Capítulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP - 141
Capítulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 142
Capítulo 12
12.1. Introdução
O próximo passo é criar o banco de dados. Para isso siga os passos a seguir:
# su – postgres
$ createuser roundcube -P -s
Digite a senha para a nova role: 123
Digite-a novamente: 123
$ createdb -O roundcube roundcube
http://roundcube.net/download
# mv roundcubemail-0.7.2.tar.gz /var/www
# tar zxfv roundcubemail-0.7.2.tar.gz
# mv roundcubemail-0.7.2 webmail
Capítulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 144
Neste caso o RoundCube esta reclamando de uma parâmetro do PHP que não
esta com o valor certo para a aplicação. Para realizar essa correção siga os passos:
# vi /etc/apache2/sites-enabled/000-default
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Reinicie o Apache
# /etc/init.d/apache2 restart
• General configuration
◦ Driver=PgSQL
◦ Database server=localhost
◦ Database name=roundcube
◦ Database password=123
• IMAP Settings
◦ default_host=localhost
Capítulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 147
◦ default_port=143
◦ auto_create_user=Marque
• SMTP Settings
◦ smtp_server=localhost
◦ smtp_port=25
◦ language=pt_BR
main.inc.php
db.inc.php
http://seu_ip/webmail/
Capítulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 150
Por ser padronizada é possível migar os filtros de uma servidor para outro sem
grande esforço. Abaixo segue um trecho de um filtro:
# Sieve filter
# Declare the extensions used by this script.
#
require ["fileinto", "reject"];
# Messages bigger than 100K will be rejected with an error message
#
if size :over 100K {
reject "I'm sorry, I do not accept mail over 100kb in size.
Please upload larger files to a server and send me a link.
Thanks.";
}
# cd /var/www/webmail/plugins/managesieve/
# mv config.inc.php-dist config.inc.php
# cd /var/www/webmail/config
$rcmail_config['plugins'] = array("managesieve");
Crie o filtro conforme a sua necessidade, para conferir se o filtro foi criado liste
o diretório do usuário joao em;
# ls -l /home/vmail/domains/matrizx.com.br/joao/
o resultado é “joao.sieve”
Capítulo 13 Antivírus e AntiSpam - 152
Capítulo 13
Antivírus e AntiSpam
Capítulo 13 Antivírus e AntiSpam - 153
13.1. ClamAV
13.1.1. Introdução
O ClamAV é um conjunto de ferramentas antivírus de código aberto para Linux.
O principal recurso do projeto foi integrá-lo a servidores de e-mail para realizar
varredura de anexos e ajudar a filtrar vírus conhecidos. O pacote fornece um
“daemon” de múltiplas linhas de execução flexível e escalonável.
• Arquivos executáveis
ScanELF true
IdleTimeout 30
PhishingSignatures true
PhishingScanURLs true
PhishingAlwaysBlockSSLMismatch false
PhishingAlwaysBlockCloak false
DetectPUA false
ScanPartialMessages false
HeuristicScanPrecedence false
StructuredDataDetection false
LogFile /var/log/clamav/clamav.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0
13.2. SpamAssasin
13.2.1. Introdução
SpamAssassin é um consolidado filtro de spam distribuído através da licença
Apache. O filtro SpamAssassin funciona dando uma pontuação a cada mensagem que
entra, baseado em diferentes analises feitas em todo o conteúdo da mensagem. De
acordo com esta análise, ele acrescenta cabeçalhos na mensagem que informam o
seu "nível de spam", e os testes nos quais ela não passou. No final, a mensagem
recebe uma pontuação ("score").
ENABLED=1
Inicie o Spamassassin:
# /etc/init.d/spamassassin start
• /usr/share/spamassassin
• /etc/mail/spamassassin
• ~/.spamassassin/user_perfs
http://spamassassin.apache.org/full/3.1.x/doc/Mail_SpamAssassin_Conf.html
http://spamassassin.apache.org/publiccorpus/20050311_spam_2.tar.bz2
http://spamassassin.apache.org/publiccorpus/20030228_spam_2.tar.bz2
http://spamassassin.apache.org/publiccorpus/20030228_hard_ham.tar.bz2
http://spamassassin.apache.org/publiccorpus/20030228_easy_ham_2.tar.bz2
Você pode criar um script que automatiza esse processo, e claro, contar com a
ajuda de seus usuários mover as mensagens pasta SPAM em seu webmail.
Criar o script:
# vi /usr/bin/autolearn_spam.sh
#!/bin/sh
/usr/bin/find /home/vmail/domains/*/*/Maildir -type d -name .Spam
-exec sa-learn --spam {} \;
Em um terminal execute:
Capítulo 14
o Postfix
Capítulo 14 Integrando AntiSpam e Antivírus com o Postfix - 162
14.1. Amavis
14.1.1. Introdução
O Amavisd-new é um módulo Perl que desempenha a ponte entre MTA e
antivírus ou SpamAssassin. Ele se comunica com com MTA através do protocolo
SMTP ou LMTP, ou usando programas. Possui boa performance na filtragem de e-
mails e boa integração com o Postfix e possuindo as seguintes características:
• Anexos:
Funcionamento do Amavis-New:
01-debian
05-domain_id
05-node_id
15-av_scanners
15-content_filter_mode
20-debian_defaults
25-amavis_helpers
30-template_localization
50-user
Cada aquivo desse representa uma seção do arquivo amavisd.conf, por exemplo
o arquivo 20-debian_defaults é o arquivo responsável pelas configurações de
parâmetros do SpamAssassim e ClamAV e o 15-av_scanners é responsável pela
configuração dos possíveis antivírus que podem ser utilizados.
# vi /etc/amavis/conf.d/20-debian_defaults
$final_spam_destiny = D_PASS;
Reinicie o Amavis
# /etc/init.d/amavis restart
$sa_spam_subject_tag = '[SPAM]';
# Nivel de legitimidade do e-mail acima desse valor é considerado o
cabeçalhos X-Spam-Satus e X-Spam-Level
$sa_tag_level_deflt = 3.0;
Capítulo 14 Integrando AntiSpam e Antivírus com o Postfix - 166
$sa_tag2_level_deflt = 6.31;
# Nivel que é SPAM é rejeitado
$sa_kill_level_deflt = 12;
# Spam com o nível acima de 12 é entregue de qualquer forma.
$final_spam_destiny = D_PASS;
# vi /etc/amavis/conf.d/20-debian_defaults
$virus_admin = “postmaster\@matrizX.com.br”;
$inet_socket_port = 10024
$sa_local_tests_only = 0;
$final_virus_destiny = D_DISCARD; #(data not lost, see virus
quarantine)
$final_banned_destiny = D_BOUNCE; #D_REJECT when front-end MTA
Capítulo 14 Integrando AntiSpam e Antivírus com o Postfix - 167
$final_spam_destiny = D_DISCARD;
$final_bad_header_destiny = D_PASS; #False-positive prone (for
spam)
$banned_filename_re = new_RE(
# qr'^UNDECIPHERABLE$', # is or contains any undecipherable
components
qr'\{[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\}?'i,
# Windows Class ID CLSID, strict
# vi /etc/postfix/master.cf
smtp-amavis unix - - y - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - y - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
Capítulo 14 Integrando AntiSpam e Antivírus com o Postfix - 169
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,
no_unknown_recipient_checks
content_filter=smtp-amavis:127.0.0.1:10024
# vi /etc/mailname
matrizX.com.br
filialX.com.br
# /etc/init.d/postfix restart
# /etc/init.d/amavis restart
# /etc/init.d/spamassassin restart
# /etc/init.d/clamav-daemon restart
14.2. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 14 Integrando AntiSpam e Antivírus com o Postfix - 171
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 15 SPF e Greylist - 172
Capítulo 15
SPF e Greylist
Capítulo 15 SPF e Greylist - 173
15.1. Introdução
15.1.1. SPF
Sender Policy Framework ou SPF é um sistema que evita que outros domínios
(endereço da internet) enviem mensagens forjando seu domínio, ou seja, fazendo-se
passar por um domínio que o servidor de envio não é o MX publicado pelo DNS. O
SPF verifica no cabeçalho de internet se o SMTP6(servidor de emails) utilizado para
enviar a mensagem, está autorizado na relação de IP's que respondem pelo domínio
do remetente. Também informa se o domínio autoriza ou não que outros IP's fora
desta relação enviem e-mails em seu nome. O administrador configura esta relação
na entrada TXT da zona de DNS seguindo as regras da RFC 4408 SPF homepage.
Caso este sistema esteja ativo e o IP solicitado seja diferente dos autorizados, o
e-mail será rejeitado. Para incluir este registro é necessário atualizar a zona DNS que
corresponde pelo respectivo domínio
15.1.2. Greylist
Este termo refere-se a um método de filtragem de spams, implantado
diretamente no servidor de e-mails, que recusa temporariamente um e-mail e o
recebe somente quando ele é reenviado. Servidores de e-mails legítimos, que se
Capítulo 15 SPF e Greylist - 174
Reinicie e bind
# /etc/init.d/bind9 restart
loadplugin Mail::SpamAssassin::Plugin::SPF
Você pode ajustar os scores das regras do SPF com intuito de aumentar e
diminuir a pontuação padrão do SpamAssassim. Isso pode ser feito em
/etc/spamassassim/local.cf. Abaixo segue as pontuação padrão do SFP:
# vi /etc/bind/db_matrizx.conf
@ IN TXT "v=spf1 ip4:10.196.16.86 -all"
# /etc/init.d/bind9 restart
Instale o SPFQTOOL
# vi /etc/bind/db_matrizx.conf
@ IN TXT "v=spf1 ip4:10.196.16.86 ~all"
# /etc/init.d/bind9 restart
Capítulo 15 SPF e Greylist - 177
Instalando o PostGrey
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
.
.
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10023
Reinicie o Postfix
# /etc/init.d/postfix restart
# vi /etc/default/postgrey
POSTGREY_OPTS="--inet=10023 --delay=300 –max-age=30"
POSTGREY_TEXT="Greylist - Favor aguardar"
Onde:
Reinicie o Postgrey
Capítulo 15 SPF e Greylist - 179
# /etc/init.d/postgrey restart
# /etc/init.d/postfix-policyd restart
# /etc/init.d/postgrey restart
# telnet 192.168.1.x 25
# tail -f /var/log/mail.log
# telnet 10.196.16.86 25
Trying 10.196.16.86...
Connected to 10.196.16.86.
Escape character is '^]'.
220 mail ESMTP Postfix (Debian/GNU)
helo smtp.matrizx.com.br
250 mail
mail from:<joao@matrizx.com.br>
250 2.1.0 Ok
rcpt to:<joao@matrizx.com.br>
450 4.2.0 <joao@matrizx.com.br>: Recipient address rejected: Greylist -
Favor aguardar
Resultado do log
15.3. Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 15 SPF e Greylist - 181
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 16 Aumentando a Performance da infraestrutura de Correio - 182
Capítulo 16
Aumentando a Performance da
infraestrutura de Correio
Capítulo 16 Aumentando a Performance da infraestrutura de Correio - 183
16.1. Introdução
Os parâmetros:
Pode-se também adotar medidas para clientes que realizam muitas conexões. O
Postfix pode limitar o número de conexões simultâneas a partir do mesmo cliente
SMTP, assim como a taxa de conexão e da taxa de certos comandos SMTP a partir do
mesmo cliente.
# dig www.matrizX.com.br
; <<>> DiG 9.3.4 <<>> www.matrizX.com.br
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 33990
Capítulo 16 Aumentando a Performance da infraestrutura de Correio - 185
;; QUESTION SECTION:
;www.matrizX.com.br. IN A
;; AUTHORITY SECTION:
matrizX.com.br. 604800 IN SOA mailX.matrizX.com.br.
root.mail.matriz.com.br. 1 604800 86400 2419200 604800
• initial_destination_concurrency;
• default_destination_concurrency_limit.
• local_destination_concurrency_limit;
• smtp_destination_concurrency_limit.
# ============================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ============================================================
. . . . . .
smtp inet n - - - 10 smtpd
Capítulo 16 Aumentando a Performance da infraestrutura de Correio - 187
# iostat -m
Linux 2.6.26-2-686 (mailX) 21-09-2010 _i686_
avg-cpu: %user %nice %system %iowait %steal %idle
Capítulo 16 Aumentando a Performance da infraestrutura de Correio - 188
# free -m
total used free shared buffers cached
Mem: 504 452 51 0 37
Capítulo 16 Aumentando a Performance da infraestrutura de Correio - 189
150
-/+ buffers/cache: 264 239
Swap: 486 1 485
Reinicie o Postfix
/etc/init.d/postfix restart
postconf -e “default_process_limit=500”
postconf -e “smtpd_client_connection_count_limit=100”
• default_destination_concurrency_limit – Similar ao
smtp_destination_concurrency_limit
Editando os valores:
# postconf -e “default_destination_concurrency_limit=50”
# postconf -e “default_destination_recipient_limit=50”
# postconf -e “smtpd_client_connection_count_limit=100”
# postconf -e “smtp_destination_concurrency_limit=100”
# postconf -e “maximal_backoff_time = 1000s”
# postconf -e “minimal_backoff_time = 300s”
Capítulo 16 Aumentando a Performance da infraestrutura de Correio - 193
fs.file-max = 192231
kernel.threads-max = 30681
# ulimit -n 30000
Capítulo 16 Aumentando a Performance da infraestrutura de Correio - 194
16.3. Exercícios
1. Meus clientes estão tendo muita lentidão no envio do e-mail, o que devemos
observar para melhorar essa lentidão?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Capítulo 17 Teste de Stress na Infraestrutura de Correio - 195
Capítulo 17
Correio
Capítulo 17 Teste de Stress na Infraestrutura de Correio - 196
17.1. Introdução
17.1.3. Postal
Escrito por Russell Coker o Postal de destina e realizar testes em servidores
SMTP que trabalharam com alto trafego de e-mail, segundo o autor ele desenvolveu o
postal para testar 1.000.00 de usuários. Dentre as suas características podemos
destacar:
Onde:
• -s 20 – Sessões paralelas
• -c – contator
• -f Remetente
• -t destinatário
• porta
Execute o comando:
Observe que a vazão diminuiu. O motivo é que agora o smtp-source não está
trabalhando com o smtp-sink que descarta as mensagens. Neste caso o smtp-source
esta trabalhando em conjunto com o Postfix, que por sua vez irá tratar a mensagem
até a sua entrega na caixa postal do usuário.
Capítulo 17 Teste de Stress na Infraestrutura de Correio - 199
Onde:
• -t 10 – Numero de threads
O resultado produzido:
time,messages,data(K),errors,connections
17:13,35,194,0,22
17:14,57,314,0,19
O boa notícia é que o Linux possui diversas ferramentas nativa para analise do
Capítulo 17 Teste de Stress na Infraestrutura de Correio - 200
sysstat – É um conjunto de comandos (sar, iostat and mpstat) muito útil para
analise do sistema.
Crie uma lista com e-mail dos usuários internos e alguns usuários válidos
externos(gmail, yahoo e etc).
tail -f /var/log/mail.log
# vmstat -S M
procs -------memory------- -swap- --io-- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 301 1425 97 591 0 0 14 23 68 257 1 1 97 1
# stat -f /dev/sda1
File: "/dev/sda1"
ID: 0 Namelen: 255 Type: tmpfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 367470 Free: 367387 Available: 367387
Inodes: Total: 367470 Free: 366578
Outro ponto a analisar é a interface de rede que também pode ser o nosso
ponto de gargalo. Uma ferramenta bastante útil são “ifstat” e “iftop” que fornecem
estatísticas de uso das interfaces.
17.3. Laboratório
Pessoal, agora que já sabemos como realizar o nosso teste de stress e como
monitorar o ambiente, vamos aumentar a carga de testes em nosso ambiente.
• Filas do Postfix
O nosso objetivo é mostrar o que precisa ser feito para atender uma demanda
de 500 usuários, com a média diária de 100.000,00 mensagens, com o tamanho
médio variando de 10KB a 50KB.
Com esses dados você pode utilizar a ferramenta Postal para simular esse
tráfego e os usuários.
Capítulo 17 Teste de Stress na Infraestrutura de Correio - 205
Apêndice A - CyrusIMAP
Apêndice A - CyrusIMAP - 207
Introdução
Nos repositórios estáveis das distribuições (Red Hat, Suse, Debian,etc...) até o
momento a versão disponibilizada do Cyrus Imap é antiga (2.2.13), que não é mais
atualizada. Portanto, recomenda-se a utilização da versão atual, 2.4 , que possibilita o
uso de replicação nativa e diversas melhorias para o ambiente Aggregator (veremos
sobre esse ambiente logo a frente), além diversas melhorias no código para
estabilidade, performance e segurança.
O Cyrus Imap opera somente com seu formato de armazenamento, não sendo
possível utilizar os formatos Maildir, Mailbox ou qualquer outra configuração. Por
padrão, o Cyrus Imap armazena as mensagens e meta-arquivos na mesma estrutura
de diretório, o armazenamento de mensagens é constituído por diversos arquivos
pequenos que não são acessados tão frequentemente, uma mensagem é acionada
somente quando o usuário abre a mesma, os meta-arquivos são separados em
arquivos por caixa postal (pasta): header, index, cache, expunge e squat, sendo os
três primeiros para indexação e recuperação dos cabeçalhos das mensagens, o
expunge para controle de remoção atrasada se essa opção estiver habilitada, o
arquivo squat contém uma indexação específica para pesquisa de mensagens, com
ganho de 20 a 30% em relação a indexação padrão para operações que envolvam
pesquisa, sendo o maior dos meta-arquivos, se a mensagem não estiver referenciada
neste arquivo será recuperada através da indexação normal, porém com desempenho
inferior.
Apêndice A - CyrusIMAP - 208
Prática Dirigida
Instalando o SASL
# aptitude install sasl2-bin libsasl2-modules-ldap
ldap_port: 389
ldap_version: 3
ldap_search_base: dc=empresa
ldap_auth_method: bind
ldap_filter: (&(objectClass=qmailUser)(mail=%u@%d))
# saslpasswd2 -c admin
Reinicie o saslauth:
# /etc/init.d/saslauth restart
Instalando o CyrusIMAP
# aptitude install cyrus-admin-2.2 cyrus-imapd-2.2
Edite o cyrus.conf:
START {
# do not delete this entry!
recover cmd="/usr/sbin/ctl_cyrusdb -r"
Reinicie o CyrusIMAP
# /etc/init.d/cyrus2.2 restart
createmailbox (create,cm):
cyradm> cm user/joao
No exemplo acima, a caixa principal do usuário joao está sendo criada, para
criação de uma pasta na hierarquia deste usuário a sintaxe é esta:
cyradm> cm user/joao/Drafts
Neste exemplo, estamos criando a pasta Drafts para o usuário joao, destacando
que as pastas Rascunhos, Lixeira e Enviados que são apresentadas nos clientes de E-
mail, no IMAP são criadas como Drafts, Trash e Sent, respectivamente.
listmailbox (lm):
cyradm> lm user/joao
cyradm> lm user/joao*
cyradm> lm user/%
Apêndice A - CyrusIMAP - 215
cyradm> lm user/*
deletemailbox (delete,dm):
cyradm> dm user/joao
setquota (sq):
Define a quota para a caixa posta, o Cyrus Imap permite a definição de uma
quota padrão que é definida na caixa principal e criação de quotas específicas para
outras caixas da hierarquia.
listquota (lq):
cyradm> lq user/joao
Apêndice A - CyrusIMAP - 217
Conceitos
No nosso cenário temos mais de um domínio em uma mesma estrutura, o Cyrus
Imap possui suporte para armazenar caixas postais IMAP/POP para diversos
domínios, sendo assim o usuário joao@matriz.com.br e joao@filial.com.br podem
existir no mesmo servidor.
Para que isso seja possível, é necessário configurar o Cyrus para mapear
corretamente o usuário ao seu domínio quando a caixa postal for acessada, existem
duas formas :
virtdomains: yes
virtdomains: yes
defaultdomain: matriz.com.br
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
virtual_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
local_transport = virtual
virtual_mailbox_domains = ldap:/etc/postfix/ldap/vmd.cf
virtual_alias_maps = ldap:/etc/postfix/ldap/vma.cf
smtpd_sender_login_maps = ldap:/etc/postfix/ldap/vms.cf
# vi /etc/postfix/ldap/vma.cf
server_host = localhost
server_port = 389
bind_dn = cn=admin,dc=dominios,dc=empresa
Apêndice A - CyrusIMAP - 220
bind_pw = 123
search_base = dc=dominios,dc=empresa
query_filter = (&(objectClass=qmailUser)(mailAlternateAddress=%s))
result_attribute = mail
version = 3
bind = yes
timeout = 30
# vi /etc/postfix/ldap/vms.cf
server_host = localhost
server_port = 389
bind_dn = cn=admin,dc=dominios,dc=empresa
bind_pw = 123
search_base = dc=dominios,dc=empresa
query_filter = (&(objectClass=qmailUser)(mail=%s))
result_attribute = mail
version = 3
bind = yes
timeout = 30
Reinicie o Postfix
# /etc/init.d/postfix restart
com o Maildrop
Apêndice B - Entregando mensagens com o Maildrop - 224
Introdução
Estas regras podem ser individuais para cada usuário ou podem ser globais,
sendo aplicada, nesse caso, a todos os usuários. No caso de serem individuais, elas
devem estar em um arquivo de nome .mailfilter no diretório home do usuário que
deve estar montado no servidor de e-mail.
if ( /^Subject: rosebud/ )
{
...
some
really
long
set
of
instructions
...
}
Opções do Maildrop :
• -a
• -A “Header Value”
• -d user
• -f address
Regras úteis
Mensagens grandes (que possuam mais de 1000 linhas ou que tenham mais de
60000 bytes) serão direcionadas para a pasta LARGE:
Uma vez classificada como SPAM, uma mensagem, na maioria dos casos, não é
descartada pelo servidor de e-mails, apenas um cabeçalho chamado “X-DSPAM-
Result” é adicionado ao e-mail de forma que algum componente do sistema possa
interpretá-lo para, se for o caso, tomar alguma medida.
# vi /etc/maildrop.config
hostname 127.0.0.1
basedn dc=dominios,dc=empresa
filter (&(objectclass=qMailUser)(accountStatus=active))
binddn cn=admin,dc=empresa
bindpw 123
timeout 5
search_method mail
default_uidnumber 240
default_gidnumber 240
mail_attr mail
uid_attr uid
uidnumber_attr uidnumber
gidnumber_attr gidnumber
maildir_attr mailMessageStore
homedirectory_attr homeDirectory
quota_attr mailQuota
# vi /etc/courier/maildroprc
# commands and variables for making the mail directories
maildirmake=/usr/bin/maildirmake
mkdir=/bin/mkdir
rmdir=/bin/rmdir
MDIR=Maildir
MAILDIR=$DEFAULT
# Cria o diretorio do usuário caso não exista
`test -d $MAILDIR`
if ($RETURNCODE != 0)
{
`$mkdir -p $MAILDIR`
`$maildirmake $MAILDIR`
Apêndice B - Entregando mensagens com o Maildrop - 229
}
# Cria o diretorio Spam
JUNK_FOLDER=.Spam
_JUNK_DEST=$MAILDIR/$JUNK_FOLDER/
`test -d $_JUNK_DEST`
if ($RETURNCODE != 0 )
{
`$maildirmake $_JUNK_DEST`
`echo INBOX.Spam >> $MAILDIR/courierimapsubscribed`
}
# Cria o diretorio Enviados
SENT_FOLDER=.Sent
_SENT_DEST=$MAILDIR/$SENT_FOLDER/
`test -d $_SENT_DEST`
if ($RETURNCODE != 0 )
{
`$maildirmake $_SENT_DEST`
`echo INBOX.Sent >> $MAILDIR/courierimapsubscribed`
}
# Cria o diretorio Lixeira
TRASH_FOLDER=.Trash
_TRASH_DEST=$MAILDIR/$TRASH_FOLDER/
`test -d $_TRASH_DEST`
if ($RETURNCODE != 0 )
{
`$maildirmake $_TRASH_DEST`
`echo INBOX.Trash >> $MAILDIR/courierimapsubscribed`
}
# Cria o diretório Rascunho
DRAFT_FOLDER=.Drafts
_DRAFT_DEST=$MAILDIR/$DRAFT_FOLDER/
`test -d $_DRAFT_DEST`
if ($RETURNCODE != 0 )
{
`$maildirmake $_DRAFT_DEST`
`echo INBOX.Drafts >> $MAILDIR/courierimapsubscribed`
}
Apêndice B - Entregando mensagens com o Maildrop - 230
# vi /etc/postfix/main.cf
mailbox_command = /usr/bin/maildrop
maildrop_destination_recipient_limit=1
virtual_transport = maildrop
mailbox_transport = maildrop
local_trasport = virtual
virtual_mailbox_domains = ldap:/etc/postfix/ldap/vmd.cf
virtual_alias_maps = ldap:/etc/postfix/ldap/vma.cf
smtpd_sender_login_maps = ldap:/etc/postfix/ldap/vms.cf
# vi /etc/postfix/ldap/vma.cf
server_host = localhost
server_port = 389
bind_dn = cn=admin,dc=dominios,dc=empresa
bind_pw = 123
search_base = dc=dominios,dc=empresa
query_filter = (&(objectClass=qmailUser)(mailAlternateAddress=%s))
result_attribute = mail
version = 3
bind = yes
timeout = 30
Apêndice B - Entregando mensagens com o Maildrop - 232
# vi /etc/postfix/ldap/vms.cf
server_host = localhost
server_port = 389
bind_dn = cn=admin,dc=dominios,dc=empresa
bind_pw = 123
search_base = dc=dominios,dc=empresa
query_filter = (&(objectClass=qmailUser)(mail=%s))
result_attribute = mail
version = 3
bind = yes
timeout = 30
# /etc/init.d/postfix restart
# /etc/init.d/amavis restart
# /etc/init.d/spamassassin restart
# /etc/init.d/clamav-daemon restart
Testando o Maildrop
Utilize o Cliente de E-mail (ICE-Dove ou Evolution) anexando o vírus de testes
EICAR e verifique os logs do Postfix.
Exercícios
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
Apêndice C - CourierIMAP POP3/IMAP - 234
Apêndice C - CourierIMAP
POP3/IMAP
Apêndice C - CourierIMAP POP3/IMAP - 235
Introdução
Servidor Courier
O Courier é um sistema MTA integrado baseado em protocolos abertos , tais
como SMTP/ESMTP, IMAP, POP3, LDAP, SSL, e HTTP. Neste treinamento, serão
utilizados, especificamente, os componentes Courier-IMAP, Courier-IMAPS, Courier-
POP e Courier-POPS.
Instalando Courier-Imap
# aptitude install courier-imap courier-imap-ssl courier-pop courier-
pop-ssl courier-authlib-ldap
authdaemonvar=/var/run/courier/authdaemon
DEBUG_LOGIN=0
DEFAULTOPTIONS=""
LOGGEROPTS=""
# vi /etc/courier/authldaprc
LDAP_URI ldap://localhost
LDAP_PROTOCOL_VERSION 3
LDAP_BASEDN dc=empresa
LDAP_BINDDN cn=admin,dc=empresa
LDAP_BINDPW 123
LDAP_TIMEOUT 5
LDAP_MAIL mail
LDAP_FILTER (objectClass=qmailUser)
LDAP_GLOB_UID vmail
LDAP_GLOB_GID vmail
LDAP_HOMEDIR homeDirectory
LDAP_MAILDIR mailMessageStore
LDAP_MAILDIRQUOTA mailQuotaSize
LDAP_FULLNAME cn
LDAP_CRYPTPW userPassword
LDAP_DEREF never
LDAP_TLS 0
Apêndice C - CourierIMAP POP3/IMAP - 237
ou
# mkdir -p /home/vmail/domains/matrizX.com.br/joao
# maildirmake /home/vmail/domains/matrizX.com.br/joao/Maildir
# chown vmail: /home/vmail -R