Você está na página 1de 237

Postfix Para trfego intenso de e-mails

www.4linux.com.br

-2

Sumrio
Captulo 1 Introduo ao Correio Eletrnico............................................................................................... 9 1.1. Histrico ....................................................................................................................... 10 1.2. Funcionamento bsico do Correio Eletrnico...............................................................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. Cdigos do SMTP ................................................................................................................ 18 1.4.3. Comandos POP.................................................................................................................... 20 1.4.4. Comandos IMAP.................................................................................................................. 23

1.5. Exerccios...................................................................................................................... 25 Captulo 2 Infraestrutura de Correio Eletrnico....................................................................................... 27 2.1. Consideraes............................................................................................................... 28 2.2. Componentes da infraestrutura de correio eletrnico..................................................28 Captulo 3 Instalando e Configurando o DNS............................................................................................ 31 3.1. Introduo..................................................................................................................... 32 3.2. Pratica Dirigida............................................................................................................. 37
3.2.1. Procedimentos ps-instalao:............................................................................................ 37 3.2.2. Instalando e configurando o DNS........................................................................................ 37

3.3. Laboratrio.................................................................................................................... 43 3.4. Exerccios...................................................................................................................... 44 Captulo 4 Instalando e Configurando o Postfix........................................................................................ 45 4.1. Introduo..................................................................................................................... 46
4.1.1. Histrico.............................................................................................................................. 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 configurao do Postfix....................................................................................57

-3
4.1.7. Tabelas de Pesquisa ............................................................................................................ 59 4.1.8. Comandos de Administrao do Postfix...............................................................................60

4.2. Pratica Dirigida............................................................................................................. 61


4.2.1. Instalando e Configurando o Postfix....................................................................................61 4.2.2. Enviando o primeiro e-mail ................................................................................................. 62 4.2.3. Outros parmetros do main.cf............................................................................................. 63 4.2.4. Utilizando a ferramenta Postal para envio de e-mails ........................................................64 4.2.5. Criando alias para usurios locais ......................................................................................64 4.2.6. Criando mapas de acessos com o postmap .........................................................................64 4.2.7. Utilizando os comandos postcat, postqueue e postsuper ...................................................65

4.3. Exerccios ..................................................................................................................... 66 Captulo 5 Gerenciamento de Filas no Postfix........................................................................................... 69 5.1. Introduo..................................................................................................................... 70 5.2. Pratica dirigida............................................................................................................. 72 5.3. Exerccios ..................................................................................................................... 73 Captulo 6 Entendendo Restries SMTP no Postfix................................................................................. 75 6.1. Introduo..................................................................................................................... 76
6.1.1. Filtragem de contedo depois do enfileiramento ...............................................................76 6.1.2. Filtragem de contedo antes do enfileiramento .................................................................76 6.1.3. Delegao de filtragem para programas externos...............................................................76 6.1.4. Restries com Mapas de Acesso .......................................................................................79 6.1.5. Restries de cabealho e corpo da mensagem .................................................................80 6.1.6. Restries com RBLs .......................................................................................................... 81

6.2. Prtica Dirigida............................................................................................................. 82


6.2.1. Restries por IP e IP Reverso ........................................................................................... 82 6.2.2. Restries HELO/EHLO ...................................................................................................... 83 6.2.3. Restries Remetente (MAIL FROM) .................................................................................84 6.2.4. Restries Destinatrio (RCPT TO).....................................................................................85 6.2.5. Restries aps o comando DATA .......................................................................................85 6.2.6. Restries Cabealhos da Mensagem..................................................................................86 6.2.7. Restries do Corpo da Mensagem.....................................................................................87 6.2.8. Desabilitando comando VRFY ............................................................................................. 87 6.2.9. Restries condicionais ...................................................................................................... 87 6.2.10. Restries por tamanho da mensagem .............................................................................89 6.2.11. Restries Conformidade com RFC ................................................................................89

6.3. Exerccios ..................................................................................................................... 90 6.4. Laboratrio ................................................................................................................... 92

-4
Captulo 7 Troubleshoot Identificando e Resolvendo Problemas no Postfix....................................................................93 7.1. Introduo .................................................................................................................... 94 7.2. Prtica Dirigida............................................................................................................. 97
7.2.1. Aumentando o nvel de log e debugando o Postfix .............................................................97 7.2.2. Debugando o Postfix com a ferramenta sendmail ...............................................................98

7.3. Exerccios...................................................................................................................... 99 Captulo 8 Instalando e Configurando o OpenLDAP............................................................................... 101 8.1. Introduo .................................................................................................................. 102 8.2. Comandos de Administrao 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. Prtica 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 domnio e os usurios atravs do LDIF..........................................................108 8.3.4. Modificando usurios no OpenLDAP.................................................................................111 8.3.5. Realizando troca de senhas dos usurios..........................................................................111 8.3.6. Consultando registros no OpenLDAP ...............................................................................111 8.3.7. Removendo um usurio do OpenLDAP..............................................................................112

8.4. Laboratrio ................................................................................................................. 113 8.5. Exerccios.................................................................................................................... 114 Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL..............................116 9.1. Introduo................................................................................................................... 117
9.1.1. Interface de Autenticao SASL do Dovecot.....................................................................117

9.2. Prtica 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. Exerccios ................................................................................................................... 124 Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP....................................125

-5
10.1. Introduo................................................................................................................ 126 10.2. Pratica Dirigida ........................................................................................................ 126
10.2.1. Testando os mtodos de autenticao ............................................................................127

10.3. Identificando problemas de autenticao.................................................................129 10.4. Criando certificados digitais para o Postfix com OpenSSL ......................................130
10.4.1. Criptografia Assimtrica ................................................................................................. 130 10.4.2. Padro X.509 .................................................................................................................. 130 10.4.3. Instalando o OpenSSL: ................................................................................................... 131 10.4.4. Gerando a requisio do certificado: ..............................................................................131 10.4.5. Descriptografando a chave privada: ...............................................................................131 10.4.6. Gerando um certificado auto-assinado: ..........................................................................131 10.4.7. Verificando o contedo do certificado: ...........................................................................131 10.4.8. Configurando o Postfix com SSL/TLS - Suporte a Certificados Digitais..........................133

10.5. Integrando e Configurando o Postfix com OpenLDAP e Dovecot ...........................133


10.5.1. Editando o arquivo /etc/postfix/master.cf no Postfix: ......................................................135 10.5.2. Editando o arquivo /etc/postfix/main.cf no Postfix: .........................................................135 10.5.3. Criando os arquivos vmd.cf e vms.cf...............................................................................135 10.5.4. Testando as consultas virtuais LDAP com o postmap: ...................................................136

10.6. Exerccios ................................................................................................................. 137 Captulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP............................................138 11.1. Introduo ................................................................................................................ 139
11.1.1. Baixando a verso ESR do Thunderbird..........................................................................139

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP...............................143 12.1. Introduo ................................................................................................................ 144 12.2. Instalando e Configurado o Webmail RoundCube ....................................................144
12.2.1. Finalizando a instalao do Webmail ..............................................................................150 12.2.2. Estendendo o RounCube Plugins .................................................................................151

Captulo 13 Antivrus e AntiSpam............................................................................................................. 153 13.1. ClamAV...................................................................................................................... 154


13.1.1. Introduo....................................................................................................................... 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. Introduo....................................................................................................................... 157 13.2.2. Instalando o SpamAssassin.............................................................................................. 158

-6
13.2.3. Arquivos User_prefs.cf e local.cf ....................................................................................158 13.2.4. Treinando o SpamAssassin ............................................................................................. 160 13.2.5. Testando o SpamAssassin................................................................................................ 161

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix.....................................................................162 14.1. Amavis....................................................................................................................... 163


14.1.1. Introduo....................................................................................................................... 163 14.1.2. Instalando Amavis-New................................................................................................... 165 14.1.3. Configurando Amavis-New.............................................................................................. 165 14.1.4. Configuraes especficas do SpamAssassim .................................................................166 14.1.5. Outras configuraes do Amavis-New.............................................................................167 14.1.6. Integrando Amavis com o Postfix.....................................................................................169 14.1.7. Testando o Amavis-New................................................................................................... 170

14.2. Exerccios.................................................................................................................. 171 Captulo 15 SPF e Greylist......................................................................................................................... 173 15.1. Introduo ................................................................................................................ 174
15.1.1. SPF.................................................................................................................................. 174 15.1.2. Greylist ........................................................................................................................... 174

15.2. Prtica 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. Exerccios ................................................................................................................. 181 Captulo 16 Aumentando a Performance da infraestrutura de Correio.....................................................183 16.1. Introduo ................................................................................................................ 184
16.1.1. Performance no Recebimento de Mensagens..................................................................184 16.1.2. Performance na Entrega de Mensagens..........................................................................185 16.1.3. nmero de Processos do Postfix .....................................................................................187 16.1.4. Nmero de Processos do Sistema Operacional ..............................................................188 16.1.5. Nmero de File Descriptors por Processo ......................................................................188 16.1.6. Consideraes sobre Hardware - Disco Rgido................................................................188 16.1.7. Consideraes sobre Hardware Memria.....................................................................189 16.1.8. Consideraes sobre Hardware Rede...........................................................................190

16.2. Prtica Dirigida......................................................................................................... 191


16.2.1. Melhorando a Recepo de Mensagens ..........................................................................191

-7
16.2.2. Melhorando as Filas de Mensagens ................................................................................192 16.2.3. Melhorando a Entrega de Mensagens ............................................................................192 16.2.4. Melhorando a performance Sistema Operacional ..........................................................194

16.3. Exerccios.................................................................................................................. 195 Captulo 17 Teste de Stress na Infraestrutura de Correio........................................................................196 17.1. Introduo................................................................................................................. 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. Prtica 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. Laboratrio ............................................................................................................... 205 Apndice A - CyrusIMAP....................................................................................................... 207 Introduo.......................................................................................................................... 208 Prtica Dirigida.................................................................................................................. 209
Instalando o SASL....................................................................................................................... 209 Habilitando a autenticao SASL................................................................................................ 209 Integrando e Configurando o SASL com OpenLDAP...................................................................209 Testando a Autenticao SASL ................................................................................................... 210 Instalando o CyrusIMAP.............................................................................................................. 210 CryAdm Administrao do CyrusIMAP.....................................................................................214

Domnios Virtuais no CyrusIMAP....................................................................................... 218


Conceitos..................................................................................................................................... 218 Configurando o domnio virtual................................................................................................... 219 Criando usurio com domnio virtual.......................................................................................... 219 Listando usurios do domnio...................................................................................................... 219 Configurando o Postfix para entrega de mensagens no Cyrus....................................................220 Criando os arquivos vmd.cf, vms.cf e vma.cf : ............................................................................220

Escalabilidade do Cyrus IMAP: Cyrus Aggregator.............................................................222 Apndice B - Entregando mensagens com o Maildrop..........................................................224 Introduo.......................................................................................................................... 225
Configurando Maildrop para entrega de mensagens..................................................................228 Criando os arquivos vmd.cf, vms.cf e vma.cf : ............................................................................232

-8
Testando o Maildrop.................................................................................................................... 233

Exerccios........................................................................................................................... 234 Apndice C - CourierIMAP POP3/IMAP................................................................................ 235 Introduo ......................................................................................................................... 236


Servidor Courier ........................................................................................................................ 236 Instalando Courier-Imap ............................................................................................................. 236 Configurando Courier - Autenticao com OpenLDAP................................................................236 Reiniciando o Servio Courier-IMAP .......................................................................................... 238 Criando a caixa postal do usurio................................................................................................ 238

Captulo 1 Introduo ao Correio Eletrnico - 9

Captulo 1 Introduo ao Correio Eletrnico

Captulo 1 Introduo ao Correio Eletrnico - 10

1.1. Histrico
Foi em 1971 que tudo comeou (na realidade comeou antes, com pesquisas), com um engenheiro de computao da BBN (Bolt Beranek e Newman), chamado Ray Tomlinson. Utilizando um programa chamado SNDMSG, abreviao do ingls 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 comunicao atravs da Internet: o correio eletrnico (do ingls, eletronic mail) ou, simplesmente, como todos conhecem, email. Como no poderia deixar de ser, o primeiro endereo de e-mail foi criado por Tomlinson, tomlinson@bbn-tenexa. Conveno utilizada at hoje, o smbolo @ foi utilizado para separar o nome do computador do nome do usurio e lido no ingls com at, que significa em. Por exemplo, o endereo tomlinson est usurio em questo. Durante um bom tempo, o e-mail foi usado, quase que exclusivamente, por pesquisadores da rea de computao e militares. Foi com o desenvolvimento e o aumento de usurios da Internet, que o e-mail se popularizou e passou a ser a aplicao mais utilizada. Hoje, at mesmo os iniciantes, tm, pelo menos, um endereo de e-mail. O correio eletrnico se parece muito com o correio tradicional. Todo usurio tem um endereo prprio e uma caixa postal, os carteiros so os servidores de mensagens que comunicam-se uns com os outros atravs da Internet. Mas por que o e-mail se popularizou to depressa? Primeiro, pelo custo. Voc no paga nada por uma comunicao via e-mail, a no ser os custos de conexo Internet. Outro fator a rapidez. Enquanto o correio tradicional levaria dias, semanas e at meses para entregar uma mensagem, o seu correspondente eletrnico faz isso quase que instantaneamente, sem utilizar papel. Por ltimo, aps a mensagem ser processada por diferentes servidores, sistemas e protocolos e ser depositada na caixa postal do destinatrio, o usurio pode acess-la a partir de qualquer computador conectado Internet. em bbntenexa, onde bbn-tenexa o nome do computador que contm a conta de e-mail do

Captulo 1 Introduo ao Correio Eletrnico - 11

Bem, o e-mail mesclou a facilidade de uso do correio convencional com a velocidade do telefone, se tornando um dos melhores e mais utilizado meio de comunicao.

1.2. Funcionamento bsico do Correio Eletrnico


importante entender como os componentes apresentados na seo anterior se relacionam para compor um sistema de e-mails. A figura abaixo apresenta um esquema que ilustra esse processo.

Inicialmente, um usurio utilizando o seu programa de e-mails (Thunderbird, MS Outlook), tambm chamando de MUA - Mail User Agent que encaminha a mensagem por meio do protocolo SMTP ao seu servidor de e-mails (Postfix, Qmail, Sendmail ou MS Exchange), tambm chamando de MTA - Mail Tranfer Agent. Com base no domnio do endereo de destino da mensagem, o MTA solicita ao seu servidor de DNS que encontre o nome dos servidores de e-mail responsveis pelo recebimento de mensagens para esse domnio. Em outras palavras, o servidor DNS procura pelos registros MX - Mail Exchange associados ao domnio de destino.

Captulo 1 Introduo ao Correio Eletrnico - 12

Uma vez de posse da relao dos nomes e dos respectivos endereos IP dos MTAs do destinatrio 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 aps o encerramento da sesso SMTP com o MTA do remetente, o MTA do destinatrio repassa a mensagem ao seu MDA Mail Delivery Agent, componente responsvel pela entrega da mensagem na mailbox do destinatrio(Exemplo: procmail, maildrop,courier-maildrop,CyrusIMAP e Dovecot). A mensagem ficar depositada na mailbox do destinatrio at que ele utilize seu MUA para, por meio dos protocolos POP3 ou IMAP, receber, finalmente, a mensagem em seu computador.

1.3. Os Protocolos SMTP, POP e IMAP 1.3.1. SMTP


O protocolo SMTP - Simple Mail Transfer Protocol, que se pode traduzir por Protocolo Simples de Transferncia de Correio, o protocolo padro que permite transferir o correio de um servidor a outro em conexo ponto a ponto, onde as mquinas envolvidas, emissor e receptor, devem estar ligadas permanentemente. O SMTP um protocolo apenas para envio de mensagens, ou seja, ele no permite que um usurio extraia as mensagens do servidor, para isso exitem os protocolos IMAP e POP.

1.3.2. POP
O POP - Post Office Protocol um protocolo utilizado para acesso a uma caixa de correio eletrnico. O POP3 permite que as mensagens no servidor sejam transferidas sequencialmente para um computador pessoal. A partir da, o usurio pode ler, apagar, responder e armazenar as mensagens recebidas. Outra caracterstica do protocolo POP que as mensagens so por padro removidas do servidor e transferida para o cliente.

Captulo 1 Introduo ao Correio Eletrnico - 13

1.3.3. IMAP
IMAP - Internet Message Access Protocol um protocolo de gerenciamento de correio eletrnico similar ao POP3 porm superior em recursos e segurana. O mais interessante, que as mensagens ficam armazenadas no servidor. O protocolo IMAP s apresenta os cabealhos da mensagem. O usurio pode ter acesso a suas pastas e mensagens em qualquer computador, tanto por um WEBMAIL como por cliente de correio eletrnico como o Outlook Express ou Thunderbird.

1.4. Comandos do SMTP, POP e IMAP


Os protocolos SMTP, POP e IMAP utilizam o TCP para transportar suas informaes. Uma vez estabelecida a sesso TCP atravs do processo conhecido como Three-Way-Handshake, o cliente conversa com o servidor por meio do envio de comandos pr-estabelecidos e devidamente documentados nas RFCs correspondentes. Para cada comando, o servidor encaminha uma resposta que orienta o cliente quanto as prximas aes que devem ser executadas. A seguir so apresentados os principais comandos encaminhados pelo cliente ao servidor e seus respectivos significados:

1.4.1. Comandos do SMTP


HELO (Obrigatrio) Primeira mensagem encaminhada por um cliente ao servidor para iniciar uma transao SMTP. Como parmetro, o cliente deve submeter o seu FQDN Fully Qualified Domain Name ou o seu endereo IP. Em outras palavras, o comando HELO consiste na receptor. MAIL FROM (Obrigatrio) A mensagem MAIL FROM identifica o endereo de e-mail do emissor da mensagem ao servidor SMTP. Esse endereo deve ser colocado como parmetro desse comando, entre os sinais de < e >. Por exemplo: MAIL FROM: <joao@4linux.com.br>. identificao do emissor da mensagem para o

Captulo 1 Introduo ao Correio Eletrnico - 14

RCPT TO(Obrigatrio) Este comando identifica o endereo de e-mail do destinatrio da mensagem ao servidor SMTP. A exemplo do comando MAIL FROM, o endereo repassado como argumento entre os sinais de < e >. Exemplo: RCPT TO: maria@dominio.com.br. Esse comando pode ser utilizado mais de uma vez em uma transao SMTP quando a mensagem possui mais de um destinatrio. DATA (Obrigatrio) Inicializa a transmisso do contedo da mensagem que pode conter qualquer um dos 128 caracteres ASCII. Aps a submisso desse comando, o servidor SMTP deve responder com o cdigo 354. Uma vez encaminhado todo o contedo da mensagem, o cliente deve especificar a finalizao do contedo repassado ao servidor SMTP por meio da submisso da sequncia "<CRLF>.<CRLF>", que significa uma linha que contm apenas um caracter . seguido de um <ENTER>. Aps esse sinal, se o servidor SMTP aceitar a transmisso da mensagem, ele retornar o cdigo 250. RSET Este comando determina que a operao atual de mail dever ser abortada. Todos os dados trocados entre cliente e servidor sero, portanto, descartados. SEND Este comando usado para inicializar uma transao de mail na qual uma mensagem enviada para um ou mais terminais onde estejam os destinatrios e no para as suas mailboxes. um comando alternativo ao comando MAIL. SOML Este comando usado para inicializar uma transao de mail na qual uma mensagem enviada para um ou mais terminais onde estejam os destinatrios ou s suas mailboxes. A mensagem direcionada aos terminais dos destinatrios ativos no momento (e aceitando mensagens) caso contrrio direcionada s suas mailboxes. alternativo ao comando MAIL.

Captulo 1 Introduo ao Correio Eletrnico - 15 SAML Este comando usado para inicializar uma transao de mail na qual uma mensagem enviada para um ou mais terminais dos destinatrios e aos seus mailboxes. A mensagem direcionada aos terminais dos destinatrios ativos no momento (e aceitando mensagens) e a todas as mailboxes. VRFY Este comando solicita ao servidor SMTP a confirmao de que o argumento corresponde a um usurio ou a uma mailbox conhecidos. Caso afirmativo, retornado o nome completo do usurio (se este possuir) e seu mailbox completo. Para evitar a exposio desnecessria de usurios, por questes de segurana, muitos servidores SMTP desabilitam a resposta mensagem VRFY enviando uma mensagem de retorno qualquer. EXPN Este comando solicita ao servidor a confirmao de que o argumento identifica uma lista de usurios de mail (mailing list). Se for identificada corretamente, o servidor deve retornar os membros desta lista no mesmo formato utilizado pelo comando VRFY. Entretanto, pelo fato dessas informaes poderem expor o servidor, esse comando, a exemplo do VRFY, desabilitado por muitos servidores SMTP. HELP Uma vez emitido pelo cliente, esse comando faz com que o servidor SMTP encaminhe informaes de ajuda. O comando pode receber como parmetro o nome de algum comando sobre o qual o cliente deseja obter mais informaes. NOOP Esse comando apenas exige que o servidor SMTP retorne o cdigo 250 OK ao cliente. Nenhum comando anterior afetado pelo envio do NOOP. Qualquer parmetro que seja encaminhado pelo cliente junto com o NOOP ser completamente ignorado pelo servidor. QUIT Este comando determina que o servidor SMTP envie um cdigo de retorno de 250 OK e, ento, feche o canal de comunicao com o cliente.

Captulo 1 Introduo ao Correio Eletrnico - 16

TURN Este comando faz com que o receptor e o emissor troquem de papis. Em outras palavras, o receptor fica como emissor e vice-versa. EHLO (Opcional com relao ao HELO) Funciona tal qual o HELO mas, nesse caso, a resposta do servidor contm uma lista de habilidades que incluem os recursos suportados pelo servidor em questo tais como suporte para mecanismos de autenticao suportados, criptografia da sesso SMTP por meio da utilizao do protocolo TLS (Transport Layer Security), tamanho mximo permitido para a mensagem, dentre outros. Caso o servidor no esteja apto a responder a mensagem de EHLO, o cliente deve enviar uma mensagem de HELO em seu lugar uma vez que essa de implementao obrigatria para todo e qualquer comunicao via SMTP. AUTH Essa mensagem utilizada para conduzir o processo de autenticao do cliente junto ao servidor SMTP, desde que esse suporte essa funcionalidade. Como parmetro desse comando, o cliente deve apresentar ao servidor o mtodo de autenticao a ser utilizado (e.g. PLAIN, LOGIN e CRAM-MD5) desde que esse esteja dentre os mtodos suportados pelo servidor SMTP. No resultado do comando EHLO o servidor apresenta quais mecanismos de autenticao so suportados. Vale ressaltar que esses mtodos possuem nveis distintos de segurana. STARTTLS Utilizado para estabelecer uma conexo segura por meio do protocolo TLS Transport Layer Security entre o cliente e o servidor SMTP com o intuito de evitar a transmisso em claro das informaes por meio da Internet, por exemplo. Essa alternativa torna-se ainda mais segura quando combinada com algum mecanismo de autenticao negociado por meio do comando AUTH. Exemplo de sesso SMTP utilizando o comando telnet:

Captulo 1 Introduo ao Correio Eletrnico - 17


1 2 3 4 5 6 7 8 9

# telnet mail.dominio.com.br 25 Trying 1.2.3.4... Connected to mail.dominio.com.br. Escape character is '^]'. 220 mail.dominio.com.br ESMTP Postfix (Debian/GNU) HELO hostname.origem.com.br 250 hostname.origem.com.br MAIL FROM: <remetete@dominio.com.br> 250 2.1.0 Ok RCPT TO: <destino@dominio.com.br> 250 2.1.5 Ok DATA 354 End data with <CR><LF>.<CR><LF> From: Nome do Remetente <remetente@dominio.com.br> To: Nome do Destinatrio <destino@dominio.com.br> Subject: Teste de Comandos SMTP E-mail teste - Comandos SMTP . 250 2.0.0 Ok: queued as 38C932016 QUIT 221 2.0.0 Bye Connection closed by foreign host.

10 11 12 13 14 15 16 17 18 19 20 21 22

1.4.2. Cdigos do SMTP


Para cada comando encaminhado pelo cliente retornado um cdigo pelo servidor. Por exemplo, no exemplo a seguir, em resposta ao comando HELO, o servidor responde com o cdigo 250: HELO hostname.origem.com.br 250 hostname.origem.com.br No prximo exemplo, o cdigo 354 retornado pelo servidor em resposta ao comando DATA: DATA 354 End data with <CR><LF>.<CR><LF>

Captulo 1 Introduo ao Correio Eletrnico - 18 Cada cdigo possui um significado e importante saber o seu significado, principalmente do primeiro dgito que indica a natureza do cdigo. A seguir so apresentados suas descries correspondes:
Dgito
2XX 3XX

Significado
O servidor aceitou o comando com sucesso e est esperando o comando seguinte. O comando foi aceito pelo servidor entretanto, trata-se de um comando que necessita de informaes adicionais a serem encaminhadas pelo cliente por meio de outros comandos. O cdigo 354, por exemplo, normalmente encaminhado em resposta ao comando DATA que exige outras informaes para ser processo corretamente pelo servidor. O comando no foi processado com sucesso pelo servidor por conta de algum erro. Entretanto, trata-se de um erro de carter temporrio e, por conta disso, o cliente deve tentar novamente a submisso do comando aps algum tempo. Da mesma forma que os erros iniciados por 4XX, os cdigos 5XX indicam erros. Porm, os erros so considerados permanentes e o cliente no deve tentar submeter o comando novamente ao servidor.

4XX

5XX

O quadro abaixo apresenta alguns cdigos de retorno em detalhes: Cd 211 Descrio System status, or system help reply comando no padronizado) 220 221 250 251 354 421 <domain> Service ready <domain> Service closing transmission channel Requested mail action okay, completed User not local; will forward to <forward-path> Start mail input; end with <CRLF>.<CRLF> <domain> Service not available, closing transmission channel ( uma resposta que pode ser dada a qualquer comando; indica que a conexo foi desfeita) 450 451 452 500 501 502 503 504 Requested mail action not taken: mailbox unavailable (Ex.: maixbox est em uso) Requested action aborted: local error in processing Requested action not taken: insufficient system storage Syntax error, command unrecognized (Usado tambm para casos tal como linha muito longa) Syntax error in parameters or arguments Command not implemented Bad sequence of commands Command parameter not implemented

214 - Help message (Informao de como usar o Receptor-SMTP ou algum

Captulo 1 Introduo ao Correio Eletrnico - 19 550 551 552 553 554 Requested action not taken: mailbox unavailable (ex.: mailbox no encontrado, sem acesso) User not local; please try <forward-path> Requested mail action aborted: exceeded storage allocation Requested action not taken: mailbox name not allowed (ex.:sintaxe do mailbox errada) Transaction failed

As RFCs 5321 e 5322 abordam mais detalhes a respeito das mensagens de retorno e de outros aspectos do protocolo SMTP.

1.4.3. Comandos POP


USER name Informa o usurio para a autenticao no POP PASS string Informar a senha do usurio para autenticao no POP STAT Significa status da caixa postal, onde: bytes + msgs OK. Onde msgs o nmero de mensagens na caixa de correio e bytes o espao usado por todas as mensagens. Exemplo de resposta: + 3 OK 345.910 LIST [msg] Lista cada mensagem em uma linha com seu nmero e tamanho em bytes.

Exemplo: OK + 3 messages 1 1205 2 305 3 344400 RETR msg

Captulo 1 Introduo ao Correio Eletrnico - 20 Apresenta a mensagem para o usurio (exibe na tela do telnet). Exemplo: RETR 2 DELE msg Marca a mensagem para excluso da caixa postal, que s apagada aps o comando NOOP Similar ao NOOP do SMTP faz com que o servidor responda OK RSET Isso redefine (desmarca) qualquer mensagem previamente marcada para excluso nesta sesso para que o comando QUIT no exclua as mensagens. QUIT Finaliza a sesso POP e exclui as mensagens marcadas para deleo

Exemplo de sesso POP utilizando o comando telnet: telnet localhost 110 Trying 127.0.0.1... Connected to 1217.0.0.1. Escape character is '^]'. +OK Hello there. user fulano@dominio.com.br +OK Password required. pass 123 +OK logged in. STAT +OK 2 320 LIST +OK 2 messages (320 octets) 1 120 2 200 . RETR 1 +OK 120 octets <the POP3 server sends message 1> . DELE 1

Captulo 1 Introduo ao Correio Eletrnico - 21 +OK message 1 deleted RETR 2 +OK 200 octets <the POP3 server sends message 2> . DELE 2 +OK message 2 deleted QUIT +OK dewey POP3 server signing off (maildrop empty) <close connection> <wait for next connection>

Captulo 1 Introduo ao Correio Eletrnico - 22

1.4.4. Comandos IMAP


LOGIN user pass Comando para autenticao SELECT box Seleciona a pasta/caixa a ser lida FETCH msg body[header] Realiza a leitura da mensagem apresentando o cabealho LOGOUT Finaliza a sesso IMAP CAPABILITY Verifica as capacidades do servidor IMAP STARTTLS Inicia a comunicao usando o protocolo TLS(Criptografia) CREATE Cria uma pasta/caixa DELETE Remove uma pasta/caixa RENAME Renomeia uma pasta/caixa Mais comandos do IMAP na RFC 3501 - http://tools.ietf.org/html/rfc3501 Exemplo de sesso IMAP utilizando o comando telnet:

Captulo 1 Introduo ao Correio Eletrnico - 23


1 2 3 4 5 6 7

# telnet mail.dominio.com 143 * OK Courier-IMAP ready. Copyright 1998-2002 Double Precision, Inc. login me@mydomain.com mypassword OK LOGIN Ok. select INBOX * FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent) * OK [PERMANENTFLAGS (\Draft \Answered \Flagged \Deleted \Seen)] * 0 EXISTS * 0 RECENT * OK [UIDVALIDITY 1021381622] Ok OK [READ-WRITE] Ok logout * BYE Courier-IMAP server shutting down OK LOGOUT comple

Limited
8 9

10 11 12 13 14

Captulo 1 Introduo ao Correio Eletrnico - 24

1.5. Exerccios
1. Quem desenvolveu o E-mail? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. Qual a funo do Servidor de E-mail? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. O que o protocolo SMTP, POP, e IMAP? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 1 Introduo ao Correio Eletrnico - 25

4. Qual comando SMTP identifica o hostname e o remetente na sesso SMTP? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

5. Qual a vantagem do protocolo IMAP se comparado com o POP ? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

6. O que so as siglas MTA, MDA e MUA? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 2 Infraestrutura de Correio Eletrnico - 26

Captulo 2 Infraestrutura de Correio Eletrnico

Captulo 2 Infraestrutura de Correio Eletrnico - 27

2.1. Consideraes
Antes de apresentarmos a nossa proposta de infraestrutura de correio eletrnico, gostaramos de alertar que essa proposta pode no ser a ideal para o seu ambiente. necessrio um estudo preliminar para identificar a melhor arquitetura que se adequar a sua necessidade. Um exemplo prtico: Para um cliente com 10 contas de usurios no sero necessrios mltiplos servidores. muito importante saber mensurar recursos para uma arquitetura de e-mail, saber quantas maquinas sero necessrias para suportar a quantidade de usurios, se a capacidade de armazenamento suficiente para o total de usurios, se os servidores so capazes de aguentar a carga de e-mails, etc. Abordaremos esses temas ao logo dessa apostila. A arquitetura proposta nessa apostila para fins didticos, onde sero apresentados os componentes que fazem parte da infraestrutura de correio eletrnico. Presumimos que a instalao do sistema operacional j esteja efetuada e as interfaces de rede configuradas. Ao longo da apostila abordaremos as boas prticas de instalao,

particionamento e configurao do sistema operacional e seus componentes. A apostila esta baseada e Debian GNU/Linux, mas os procedimentos aqui descritos podem ser portados para uma outra distribuio de sua preferncia.

2.2. Componentes da infraestrutura de correio eletrnico


Vide figura abaixo:

Captulo 2 Infraestrutura de Correio Eletrnico - 28

Conforme apresentado na figura acima, iremos executar 7 passos para colocar a nossa infraestrutura de e-mail funcionando. O passo 1 compreende a instalao e configurao do nosso servio de DNS utilizando a ferramenta BIND, para localizao de domnios externos. No passo 2 apresenta a instalao e configurao do servidor SMTP Postfix, que permitir o envio e recebimento de e-mail. O passo 3 iremos instalar e configurar OpenLDAP que ser nossa base de usurios para autenticao dos servios SMTP e IMAP. No passo 4, iremos configurar o servio IMAP utilizando a ferramenta Dovecot, que permitira aos usurios visualizarem seus e-mails. Em sequencia, no passo 5, iremos configurar o MUA, onde utilizaremos o Thunderbird como nosso cliente de e-mail. O passo 6 consiste na configurao de um webmail que permitira usurios externos acessarem suas caixas postais. Para finalizar o passo 7 iremos instalar e configurar o servio de Antispam e Antivrus. Iremos utilizar o conjunto de ferramentas Amavis-New que servir de

Captulo 2 Infraestrutura de Correio Eletrnico - 29 ponte para o SpamAssassim e Clamv Antivrus. Em cada passo apresentado, abordaremos a instalao, configurao, resoluo de problemas e integrao com os demais servios da nossa infraestrutura de e-mail.

Captulo 3 Instalando e Configurando o DNS - 30

Captulo 3 Instalando e Configurando o DNS

Captulo 3 Instalando e Configurando o DNS - 31

3.1. Introduo
O DNS um sistema hierrquico que pode ser representada da seguinte forma:

O DNS foi concebido para realizar a traduo de nomes para nmeros necessrios ao estabelecimento de conexes entre computadores ligados Internet. Conforme apresentado anteriormente no Captulo 1, Funcionamento bsico de um sistema de e-mails, o DNS - Domain Name System desempenha um papel fundamental em qualquer sistema de e-mails. Por conta disso, instalar e configurar um sistema de e-mail corretamente significa, necessariamente, validar ou configurar, se for o caso, os seus servidores DNS. As informaes dispostas em um mapa de configurao DNS so classificadas por tipo, conforme mostrado a seguir: A (Address): tipo de registro utilizado para fazer o mapeamento de um nome para o seu respectivo endereo IP. o tipo de registro mais comum dado que desempenha uma das funes primordiais de qualquer servidor DNS. Portanto, qualquer mquina que tenha um endereo IP associado ao seu nome precisa, necessariamente, ter uma entrada no mapa de configurao do DNS com o registro do tipo A; NS (Name Server): deve ser utilizado para indicar quais so os nomes dos servidores DNS responsveis por prover informaes a respeito do domnio em questo. Esse um tipo de registro obrigatrio no sentido de que cada domnio precisa ter uma ou mais entradas NS para indicar, pelo menos, um servidor DNS responsvel pelas informaes do domnio. Ser(o) esse(s) servidor(es) que os outros servidores iro tentar contatar durante o processo de resoluo de nomes e de outras informaes do domnio;

Captulo 3 Instalando e Configurando o DNS - 32

CNAME (Canonical Name): por meio desse tipo de registro, possvel 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 endereo de fato atravs de um registro do tipo A. Cometer esse erro bastante comum, portanto, fique atento; PTR (Pointer): esse tipo de registro desempenha o papel inverso quele do tipo A. Em outras palavras, ele mapeia um endereo IP para um nome correspondente. utilizado para a configurao dos mapas reversos. Apesar de no aparentar ter qualquer relao direta com um sistema de e-mails, muitos MTAs verificam a resoluo reversa do endereo IP de um cliente remoto que est encaminhando uma mensagem para verificar se o seu nome corresponde ao do domnio do remetente, por exemplo. Essa prtica simples e cada vez mais comum, ajuda a bloquear diversas mensagens contendo SPAM, vrus e outras pragas digitais; MX (Mail Exchanger): o MX corresponde ao principal tipo de registro correlacionado a um sistema de e-mails. Por meio dele possvel identificar quais so os nomes dos servidores de e-mails (ou MTAs, como queira) responsveis por receber as mensagens eletrnicas do domnio para o qual esse servidor DNS est configurado. Um mesmo domnio pode conter vrios registros do tipo MX cada um contendo uma prioridade que deve ser levada em considerao pelos clientes que desejam encaminhar mensagens aos usurios desse domnio. O servidor de maior prioridade contatado primeiro e, caso no seja possvel repassar a mensagem a ele, o prximo na lista de prioridades considerado. Existem outros tipos de registros DNS que fogem do escopo desse treinamento. Maiores informaes podem ser consultadas na documentao do prprio BIND. Como um servidor SMTP descobre, ento, o endereo IP do servidor para o qual uma mensagem para certo domnio deve ser entregue? O domnio do destinatrio , no surpreendentemente, utilizado como a chave em uma ou mais pesquisas DNS. Obviamente que o servidor SMTP conta com a ajuda dos seus servidores de DNS para obter as informaes a respeito do MTA do destinatrio. Por exemplo, para encaminhar um e-mail para o usurio fulano@4linux.com.br, o nome do domnio 4linux.com.br ser utilizado para que o MTA do emissor consiga identificar quais so os servidores de e-mail responsveis por tratar as mensagens

Captulo 3 Instalando e Configurando o DNS - 33 do domnio 4linux.com.br. Esse processo segue, em linhas gerais, os seguintes passos: 1. Encontra-se os endereos dos servidores DNS responsveis pelo domnio. Essa informao ser provida por meio dos registros NS. No exemplo do domnio 4linux.com.br, citado anteriormente, os servidores ns1.4linux.com.br e ns2.4linux.com.br sero retornados. 2. De posse dessa informao, um dos servidores DNS selecionado e uma nova consulta DNS realizada, dessa vez, para saber qual o endereo IP do servidor DNS selecionado atravs de uma informao do tipo A; 3. Tendo o endereo IP do servidor DNS selecionado, o prximo passo consiste em entrar em contato com ele para identificar a lista de MTAs responsveis por esse domnio por meio de uma consulta do tipo MX. No caso do domnio 4linux.com.br, o servidor boca.4linux.com.br o MTA responsvel. 4. Com essa informao, uma nova consulta do tipo A realizada para determinar o endereo IP correspondente. Todo esse processo pode ser realizado manualmente para fins didticos e de depurao do seu ambiente por meio do comando host, conforme apresentado no quadro abaixo: Obs.: Caso voc no possua o comando host instalado execute os seguintes comandos: aptitude install host PASSO 1: encontrando os servidores DNS responsveis por 4linux.com.br

# host -t NS 4linux.com.br 4linux.com.br name server ns2.4linux.com.br. 4linux.com.br name server ns1.4linux.com.br. PASSO 2: buscando pelo endereo IP do servidor DNS selecionado

# host -t A ns1.4linux.com.br ns1.4linux.com.br has address 200.212.122.137

Captulo 3 Instalando e Configurando o DNS - 34 PASSO 3: Perguntando ao servidor ns1.4linux.com.br o MTA responsvel pelo domnio

# host -t MX 4linux.com.br 200.212.122.137 Using domain server: Name: 200.212.122.137 Address: 200.212.122.137#53 Aliases: 4linux.com.br mail is handled by 10 boca.4linux.com.br.

PASSO 4: Determinando o endereo IP do servior boca.4linux.com.br

# host -t A boca.4linux.com.br Os passos anteriores so apresentados de maneira resumida apenas para fins didticos e focando apenas nas informaes relevantes no que diz respeito a relao que existe entre um servidor de e-mails e os servidores DNS. A tabela abaixo apresenta um modelo de configurao do DNS utilizando o software BIND da ISC - Internet Systems Consortium

Captulo 3 Instalando e Configurando o DNS - 35


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

$TTL @

604800 IN SOA ns1.dominio.com.br. root.ns1.dominio.com.br. ( 1 604800 86400 2419200 604800 ) ; Serial ; Refresh ; Retry ; Expire ; Negative Cache TTL

; @ @ @ @ ns1 mail1 mail2 mail3 www ftp IN IN IN IN IN IN IN IN IN IN NS MX MX MX A A A A A A ns1.dominio.com.br. 10 mail1.dominio.com.br. 10 mail2.dominio.com.br. 20 mail3.dominio.com.br. 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6

As linhas em negrito mostram a configurao realizada para tratamento de entrega de e-mail. Observe que as linhas 10,11 e 12 apresentam trs registros do tipo MX. Isso utilizado para aumentar o nvel de disponibilidade do sistema de emails apresentando atravs do DNS mais de um MTA responsvel pelo domnio. O valor ao lado do MX indica a prioridade daquele servidor de e-mails. Sempre o servidor com o valor menor considerado primeiro por parte de um MTA que quer encaminhar uma mensagem ao domnio em questo. Quando o valor da prioridade igual o cliente pode selecionar qualquer um deles para encaminhar a mensagem. Essa pode ser uma boa alternativa para balancear de maneira simples a carga de processamento de e-mails entre dois ou mais servidores. possuem prioridades iguais. Quando todos os servidores de prioridade mais baixa no esto disponveis, o MTA do remetente de uma mensagem tenta encaminh-la a outro MTA com prioridade mais baixa. Observe no quadro abaixo que os servidores mail1.dominio.com.br e mail2.dominio.com.br

Captulo 3 Instalando e Configurando o DNS - 36 10 @ 11 @ 12 @ IN IN IN MX MX MX 10 mail1.dominio.com.br. 10 mail2.dominio.com.br. 20 mail3.dominio.com.br.

Se o servidor mail3.dominio.com.br no estiver apto a receber a mensagem, o MTA do remetente tentar entreg-la posteriormente conforme sua configurao interna para tratar mensagens que tiveram problemas em seu encaminhamento. Como j mostrado anteriormente, para verificar registros " MX pode-se utilizar o comando host, presente na grande maioria das distribuies GNU/Linux. O quandro abaixo apresenta sua a utilizao para determinar os MTAs responsveis pela entrega de e-mails para o domnio gmail.com, por exemplo: host -t mx gmail.com gmail.com mail is handled by 50 gsmtp183.google.com. gmail.com mail is handled by 5 gmail-smtp-in.l.google.com. gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com. gmail.com mail is handled by 10 alt2.gmail-smtp-in.l.google.com. gmail.com mail is handled by 50 gsmtp147.google.com.

1 2 3 4 5 6

3.2. Pratica Dirigida 3.2.1. Procedimentos ps-instalao:


Configurar o VIM para enumerao de linhas e destaque da sintaxe de scripts:
1 2 3 4

aptitude update aptitude install vim aptitude install rpl echo syntax on >> /etc/vim/vimrc

3.2.2. Instalando e configurando o DNS


Par iniciar a instalao do BIND execute, como super usurio, o seguinte comando: # aptitude install bind9 dnsutils Agora ser configurado o DNS para atender s requisies do Postfix. Para tal

Captulo 3 Instalando e Configurando o DNS - 37 edite o arquivo /etc/bind/named.conf.local: # vim /etc/bind/named.conf.local Configure as filialX.com.br
1 2 3 4 5 6 7 8 9

zonas

primria e reversa para o domnio matriz X.com.br e

zone "matrizx.com.br" { type master; file "/etc/bind/db_matrizX.conf"; }; zone "filialx.com.br" { type master; file "/etc/bind/db_filialX.conf"; }; zone "200.168.192.in-addr.arpa" { type master; file "/etc/bind/db_reverso.conf"; }; As linhas de 8 a 19 demonstram as configuraes necessrias para criao de

10 11 12

zonas para os domnios matrizX.com.br e filialX.com.br, bem como para a zona reversa para os endereos 192.168.0. A configurao das demais opes do servidor DNS bem como o detalhamento de seus parmetros vai alm do escopo deste curso. O prximo passo consiste em configurar as zonas criadas, detalhando suas associaes de nomes e endereos IP, referncias aos servidores responsveis pelo processamento de emails para o domnio, dentre outras informaes. Para isso, devem ser criados os arquivos db_matrizX.conf, db_filiaX.conf e db_dominio_reverso.conf, conforme apresentado a seguir: # vim /etc/bind/db_matrizX.conf

Captulo 3 Instalando e Configurando o DNS - 38


1 2 3 4 5 6 7 8 9 10 11 12 13

$TTL @ IN

1D SOA mailx.matrizx.com.br. postmaster.matrizx.com.br. ( 2011070101 3H 1H 24H 24H ) ; Serial ; Refresh ; Retry ; Expire ; Negative Cache TTL

; @ @ mail smtp imap IN IN IN IN IN NS MX A CNAME CNAME mailx.matrizx.com.br. 5 mailx.matrizx.com.br. 192.168.200.X mailx.matrizx.com.br. mailx.matrizx.com.br.

A linha 10 faz

referncia ao registro MX (descrito no incio desse captulo)

para o domnio matrizX.com.br onde a mquina com o nome mailX.matrizX.com.br o servidor de e-mail para recepo de mensagens. Isso ir permitir que outros servidores DNS encontrem seu servidor de e-mail para a entrega de mensagens atravs dos MTAs correspondentes. O ltimo mapa a ser criado para a configurao do servidor DNS o chamado reverso, que mapeia endereos IP para os seus nomes correspondentes. A seguir apresentado o formato desse arquivo para o exemplo considerado no estudo de caso: # vim /etc/bind/db_reverso.conf

Captulo 3 Instalando e Configurando o DNS - 39


1 2

$TTL @ IN

1D SOA mailx.matrizx.com.br. postmaster.mailx.matrizx.com.br. 2011070101 3H 1H 24H 24H ) ; Serial ; Refresh ; Retry ; Expire ; Negative Cache TTL

(
3 4 5 6 7 8 9

; @ X IN IN NS PTR mailx.matrizx.com.br. mailx.matrizx.com.br.

10

Muitos administradores de sistemas, fundamentalmente os menos experientes, negligenciam a configurao do mapa reverso, responsvel pelo mapeamento dos seus endereos IP para os nomes correspondentes. Essa medida, entretanto, pode provocar problemas uma vez que muitos servidores, por questes de segurana, costumam validar se o endereo IP de um MTA possui um nome associado. Caso negativo, aquela mensagem rejeitada. Outros, que possuem configuraes mais restritivas, verificam se o IP do MTA que est mandando a mensagem corresponde a um nome vlido para o domnio do e-mail do remetente. Ambas as configuraes ajudam a prevenir a ao de spammers que se valem de servidores mal configurados para enviar mensagens com publicidade, vrus, worms, pishing, dentre outro. Em seguida, deve-se configurar o servidor de e-mails para solicitar as requisies de resoluo de nomes para o DNS que acabou de ser instalado, configurado e testado: # echo mailX > /etc/hostname Editando o resolv.conf # vim /etc/resolv.conf
1 2 3

search matrizX.com.br nameserver 127.0.0.1 nameserver 8.8.8.8 Configurando o arquivo hosts

Captulo 3 Instalando e Configurando o DNS - 40 # vim /etc/hosts


1

192.168.200.X

mail.matrizX.com.br

mailX

Checando a syntax dos aquivos de configurao: #Verificando o named.conf named-checkconf # Verificando os arquivos de zona(domnios) 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 Testando a resoluo de nomes usando o comando dig e o comando host:

# dig @localhost any matrizX.com.br ; <<>> DiG 9.6-ESV-R1 <<>> @localhost any matrizX.com.br ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57110 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;matrizX.com.br. ;; ANSWER SECTION: matrizX.com.br. matrizX.com.br. matrizX.com.br. ;; ADDITIONAL SECTION: mailX.matrizX.com.br. ;; Query time: 1 msec 604800 IN A 192.168.200.X 604800 604800 604800 IN IN IN SOA NS MX mailX.matrizX.com.br. mailX.matrizX.com.br. 10 mailX.matrizX.com.br. root.mail.matrizX.com.br. 1 604800 86400 2419200 604800 IN ANY

Captulo 3 Instalando e Configurando o DNS - 41 ;; 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.

Captulo 3 Instalando e Configurando o DNS - 42

3.3. Laboratrio
Configurar o domnio filialX.com.br conforme exemplo descrito na sesso 3.2 prtica dirigida.

Captulo 3 Instalando e Configurando o DNS - 43

3.4. Exerccios
1. Qual a importncia do DNS na infraestrutura de correio eletrnico? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. Qual a importncia do reverso para infraestrutura de correio eletrnico? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. O que o registro MX no DNS e qual a importncia dele para o correio eletrnico? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 4 Instalando e Configurando o Postfix - 44

Captulo 4 Instalando e Configurando o Postfix

Captulo 4 Instalando e Configurando o Postfix - 45

4.1. Introduo 4.1.1. Histrico


A ideia inicial do Postfix era a de produzir um substituto para o Sendmail que fosse rpido, fcil de administrar e seguro. Trata-se de um projeto OpenSource patrocinado pela IBM, criado e , Ph.D. em Fsica pela Groningen University na Holanda. Segundo seu criador, o projeto e o desenvolvimento do Postfix foram norteados pelas seguintes diretrizes: Confiabilidade: o sistema capaz de manter seu funcionamento mesmo diante de condies adversas como falta de memria ou mesmo espao em disco. Nesses casos, o sistema tenta reduzir sua atividade para facilitar a retomada de condies por parte do servidor; Segurana: o Postfix composto por componentes diferentes. Cada

componente executado com o mnimo de privilgios necessrios para o desempenho de suas funes, de forma que um componente com nveis mais elevados de privilgios nunca confie em outros que possuam nveis inferiores. Alm disso, o sistema possui recursos para minimizar a possibilidade de ataques dos tipos buffer overflow e DoS (Denial of Service), dentre outros. Um dos prprios slogans do Postfix Security by Design que ratifica o fato de que aspectos de segurana foram considerados desde sua concepo; Desempenho: o Postfix possui recursos capazes de colaborar com o desempenho geral do sistema operacional no qual est sendo executado por meio da limitao, por exemplo, dos processos criados e dos acessos ao sistema de arquivos necessrios para o processamento de mensagens; Flexibilidade: essa diretriz diz respeito ao fato dos componentes do Postfix serem independentes permitindo customizaes individuais que facilitam a especializao das configuraes e a manuteno de suas funcionalidades.

Captulo 4 Instalando e Configurando o Postfix - 46

Simplicidade de uso: comparado a outros servidores de e-mails, o Postfix um dos que possui uma das configuraes mais simplificadas e organizadas. Os parmetros seguem uma lgica de simples compreenso. Com poucas linhas de configurao j possvel ter um servidor de e-mails funcionando. Entretanto, para um ambiente de produo, mais diretrizes, alm daqueles contidas na instalao padro, so necessrias para tornar o ambiente seguro;

Compatibilidade com Sendmail: o sistema adota configuraes e convenes criadas pelo Sendmail por questes de compatibilidade. Esse um recurso que tem por objetivo facilitar a adoo do Postfix. Mais informaes sobre essa caracterstica sero discutidas a seguir. O Postfix possui suporte para diversos sistemas operacionais dentre os quais

AIX, BSD, HP-UX, IRIX, LINUX, MacOS X, Solaris, Tru64 UNIX e outros sistemas baseados em UNIX. Atualmente, a release estvel encontra-se na verso 2.7. Entretanto, como o desenvolvimento do Postfix constante e dinmico sempre importante consultar o site do projeto para estar atualizado quanto aos novos recursos, corres e outras novidades. Apesar da release experimental estar sempre disponvel para download, considere utilizar a verso estvel, principalmente nos servidores de e-mail de produo. Para o nosso treinamento iremos utilizar a verso estvel disponvel nos repositrios do Debian O Postfix se consolidou como uma alternativa ao Sendmail em razo de suas caractersticas tcnicas tais como maior robustez, melhor desempenho e maior facilidade na manuteno e configurao. Entretanto, conforme citado anteriormente, para facilitar sua adoo em ambientes Unix, onde o Sendmail era (e ainda ) bastante popular, o Postfix manteve diversos comandos e arquivos compatveis com os do Sendmail. Essa alternativa evita, por exemplo, a necessidade de mudana de scripts e softwares j desenvolvidos considerando os recursos do Sendmail.

Captulo 4 Instalando e Configurando o Postfix - 47

4.1.2. Funcionamento do Postfix


Outra caracterstica importante do Postfix a sua construo modular. Ou seja, ao contrrio da estrutura monoltica do Sendmail onde apenas um processo o responsvel por todas as atividades relacionadas com o processamento de mensagens, no caso do Postfix vrios componentes so os responsveis pelo funcionamento do sistema. Essa arquitetura, alm de facilitar a manuteno do cdigo e a implementao de novas funcionalidades, agrega algumas importantes caractersticas de segurana dentre as quais a possibilidade de evitar e/ou minimizar os impactos de eventuais ataques como os de buffer overflow, por exemplo.

Captulo 4 Instalando e Configurando o Postfix - 48

Programas o Postfix Daemons Filas do Postfix Tabelas de Pesquisa Lookup Tables A arquitetura interna do sistema funciona com a ideia de processos cooperativos. As tarefas que o compem o Postfix endereos para todos os outros processos do Postfix. O processo principal o "master", que tem a funo de administrar os outros daemons do Postfix: carregar o "smtpd" quando h necessidade de atender a porta SMTP; manter o "trivial-rewrite" em execuo para fazer a manipulao dos endereos de correio; chamar o "qmgr" para gerenciar a fila de e-mails ainda no entregues; chamar o "pickup", que pega novas mensagens e as joga na fila para entrega; dentre outros. so independentes e provem servios umas s outras. Por exemplo, h uma tarefa que prov reescrita/traduo de

Captulo 4 Instalando e Configurando o Postfix - 49

O "master" tambm se encarrega de manter uma espcie de cache dos daemons que j foram iniciados, reutilizando processos ou removendo-os depois de um tempo especfico de ociosidade. Isso diminui bastante o tempo e o esforo dispendidos na maneira mais tradicional, chamando o processo e removendo-o logo que este acabe sua tarefa. H sempre um tempo que leva para carregar um processo e todas as suas bibliotecas do disco, alocar memria, etc. 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" mantm o sistema sob controle, no deixando que processos inteis ocupem recursos da mquina. Os arquivos de configurao so responsveis por definir o comportamento de cada daemon do Postfix sendo que os principais arquivos so: main.cf e master.cf, contidos, normalmente, dentro do diretrio /etc/postfix. Mais detalhes

Captulo 4 Instalando e Configurando o Postfix - 50 sobre ambos os arquivos sero apresentados a seguir.

4.1.3. Daemons do Postfix


O Postfix constitudo por um nmero pequeno de daemons que interagem com o usurio (sendmail, postqueue, postsuper, e assim por diante) e os demais daemons so executados em segundo plano sendo controlados pelo master, cuja funo principal identificar a o processo e direcion-lo ao daemon apropriado. Este design modular permite um maior nvel de segurana, pois cada daemon executado com os privilgios mnimos necessrios para cumprir suas funes, conforme dito anteriormente. bounce e defer Um MTA deve notificar o remetente sobre a no entrega do e-mail. No Postfix os daemons bounce e defer so os responsveis por essa tarefa, que solicitado pelo daemon gestor da fila de mensagens, (qmgr). Especificamente, os dois tipos de eventos que causam envio de avisos so erros irrecuperveis e um destino que inacessvel por um determinado perodo de tempo. error O error o daemon agente de entrega entre o daemons local ou smtp. um agente de entrega que cria um e-mail para ser devolvido, e-mail de erro. Se um email enviado para o daemon error ele informa o daemon bounce para gravar um destinatrio que foi undeliverable. trivial-rewrite O daemon trivial-rewrite, a pedido do daemon cleanup, reescreve endereos para o padro user@fqdn, onde FQDN - Fully Qualified Domain Name o nome completamente qualificado de um domnio (e.g. 4linux.com.br, gmail.com, dominio.com.br, dentre outros). Este daemon tambm o responsvel pela resoluo de destinos, a pedido do qmgr. Por padro, o trivial-rewrite apenas distingue destinos locais e remotos. showq O daemon showq lista as filas do Postfix e o programa por detrs do comando mailq.

Captulo 4 Instalando e Configurando o Postfix - 51 flush O daemon flush o responsvel por limpar a fila de e-mails pendentes. qmgr O qmgr - queue manager ou ainda gerenciador de filas, em portugus, um dos principais daemons do Postfix, uma vez que o responsvel, como o prprio nome sugere, pelo gerenciamento das filas de mensagens incoming, active, deferred e corrupt Ao receber uma nova mensagem por qualquer um dos seus componentes que possuem essa finalidade, o daemon cleanup, aps realizar algumas das verificaes de sua competncia, coloca a mensagem na fila incoming e notifica o daemon qmgr. A partir desse momento, o qmgr solicita ao trivial-rewrite que determine algumas informaes importantes para o processamento da mensagem tais como o mtodo de transporte a ser utilizado, dados para o roteamento do e-mail, eventuais ajustes no endereo dos destinatrios e ainda o prximo host que deve receber essa mensagem. Em seguida, a mensagem movida para a fila active e o prprio qmgr invoca o daemon correspondente ao agente que ser responsvel pela entrega da mensagem. Vale a pena ressaltar que o qmgr pode atrasar o repasse da mensagem caso os recursos de memria e carga de operaes de I/O do servidor de e-mails estejam escassos, por exemplo. Caso um determinado e-mail, por alguma razo, no puder ser entregue, ele ser depositado na fila deferred. Outra atividade importante desempenhada pelo qmgr consiste em comunicarse com os daemons bounce e defer para gerar mensagens de status referentes ao processamento de e-mails que tiveram problemas em suas entregas. Essas mensagens podem ser encaminhadas ao remetente e/ou ao prprio administrador do sistema de e-mails, conhecido por postmaster, conforme j discutido anteriormente. proxymap Os processos clientes do Postfix podem obter acesso apenas de leitura mapas atravs do daemon proxymap. Ao compartilhar um nico mapa aberto entre muitos

Captulo 4 Instalando e Configurando o Postfix - 52 daemons Postfix, o proxymap contorna restries de chroot e reduz o nmero de lookup tables abertas. spawn O spawn cria um processo no Postfix. filtragem externa de contedo. Exemplo: Greylist. local Como o prprio nome sugere, o daemon local o responsvel pela entrega de e-mails cujos destinatrios so contas de usurios locais em um determinado servidor. Por exemplo, se o destinatrio de uma mensagem joao.silva@4linux.com.br e o servidor de e-mails que est processando essa mensagem o encarregado pelo tratamento das mensagens desse domnio, o daemon local ser o responsvel por depositar essa mensagem na caixa postal (mailbox) do usurio joao.silva. Esse componente tambm tem como funo analisar se o endereo do destinatrio consiste de um alias, por meio de uma tabela de mapeamento que historicamente fica no arquivo /etc/aliases ou no arquivo .forward, localizado dentro do diretrio home do usurio. Caso o destinatrio seja, de fato, um alias, a mensagem precisa ser reencaminhada ao servidor de e-mails como se fosse uma nova mensagem cujo destinatrio consiste do(s) novo(s) endereo(s) obtido(s) a partir de um dos arquivos mencionados anteriormente, por exemplo. Os agentes de entrega, como o prprio daemon local, tambm precisam estar preparados para adversidades. Portanto, caso uma mensagem no possa ser entregue por conta de problemas de natureza temporria, o qmgr (queue manager) notificado e a mensagem posta na fila deferred para que ocorram outras tentativas de entrega. Se o erro for de carter permanente, a mensagem repassada ao qmgr que, por sua vez, comanda o processo de retorn-la ao seu remetente. O daemon local pode escrever para caixas de e-mails nos formatos mbox e maildir. No caso do primeiro, todas as mensagens de um usurio so acumuladas em um nico arquivo enquanto que no formato maildir as mensagens so salvas em arquivos separados dispostos em um conjunto de diretrios. Ambos possuem A sua utilizao somente para

Captulo 4 Instalando e Configurando o Postfix - 53 vantagens e desvantagens. Por conta disso, importante fazer um levantamento mais apurado sobre ambas as alternativas para selecionar aquela que ir atender melhor s suas necessidades. possvel ainda delegar a tarefa de depositar as mensagens nas caixas dos usurios agentes de entrega local (LDA) como o procmail e o maildrop que fornecem recursos mais avanados como a filtragem de contedo e a tomada de decises como descarte de mensagem, encaminhamento a outro servidor e/ou usurio, dentre outros. virtual Desempenha um papel semelhante ao agente de entrega local entretanto, o daemon virtual tem esse nome pelo fato de lidar com domnios virtuais utilizados para que um nico servidor de e-mails consiga hospedar, ao mesmo tempo, mltiplos domnios com usurios independentes em cada um deles. Nesse caso, os usurios, diferentemente daqueles que recebem mensagens por meio do daemon local, no possuem contas de usurios com acesso a shell no servidor de e-mails. Em outras palavras, nesse caso, as contas de e-mails no esto atreladas a usurios de sistema. smtp O daemon smtp transporta as mensagens para destinos remotos, ou seja, para outros servidores MTA. lmtp O daemon lmtp comunica com servidores de e-mail local e remoto usando o protocolo LMTP definido na RFC 2033. frequentemente utilizado com o servidor IMAP Cyrus. A principal vantagem em utilizar o LMTP poder direcionar mensagens para mltiplos servidores de caixas de e-mail. Exemplo o Cyrus IMAP. pipe O daemon pipe a sada para outros mecanismos de transporte de e-mail. Ele invoca programas com os parmetros e os pipes necessrios para seu padro de

Captulo 4 Instalando e Configurando o Postfix - 54 entrada. pickup O daemon pickup pega as mensagens colocadas na fila maildrop pelo programa sendmail. Depois de realizar algumas checagens,pickup passa as mensagens para o daemon cleanup. smtpd O daemon smtpd manipula a comunicao dos clientes que se conectam ao Postfix para entregar as mensagens atravs do protocolo SMTP. a porta de entrada de mensagens vindas de clientes ou de servidores MTAs remotos. O smtpd executa uma srie de checagens, cujo objetivo proteger o resto do sistema Postfix e pode ser configurado para implementar reteno de SPAM utilizando, por exemplo, controles baseados em listas negras (blacklists). cleanup O daemon cleanup a etapa de transformao para novas mensagens. Acrescenta qualquer cabealhos exigidos que estejam faltando, manda para o endereo reescrevendo-o, e (opcionalmente) extrai endereos do destinatrio do cabealho da mensagem . O daemon cleanup insere o resultado na fila incoming e, em seguida, notifica o gerente de fila que chegou um novo e-mail. sendmail O sendmail do Postfix um comando que substitui e emula o seu correspondente do Sendmail original. Seu objetivo fornecer uma interface compatvel com aquela provida pelo Sendmail de forma que aplicaes que a utilizavam continuem a operar normalmente quando o servidor de e-mails for o Postfix. Ele interage com o postdrop para colocar mensagens na fila maildrop para, posteriormente, serem resgatadas pelo daemon pickup. QMQP O daemon QMQP implementa protocolo o Quick Mail Queuing Protocol (QMQP; ver http://cr.yp.to/proto/qmqp.html) para tornar o Postfix compatvel com o qmail, ezmlm.

Captulo 4 Instalando e Configurando o Postfix - 55 anvil O daemon anvil a defesa preliminar contra clientes SMTP e ataques de denial-of-service que inundam o servidor SMTP com inmeras tentativas simultneas ou sucessivas de conexo. Ele vem com uma lista branca com capacidade para desabilitar restries para clientes autorizados.

4.1.4. Filas de mensagens do Postfix


O diretrio das filas de mensagens do Postfix definido pelo parmetro queue_direcory no main.cf. Cada fila tem seu prprio subdiretrio com um nome para identific-la. As filas que o Postfix trabalha so: incoming, maildrop, deferred, active, hold e corrupt.

Incoming

- Esta a fila de e-mails entrantes a partir da rede, repassados pelo maildrop;

Active

- Esta a fila de e-mails que foram abertos pelo gerenciador da fila, para entregas. Essa fila tem um nmero limite para entrada de mensagens;

Deferred

- Esta a fila de mensagens que no conseguiram ser entregues na primeira tentativa. O gerenciador da fila vai seguir as configuraes do main.cf para novas tentativas de entregas. Por padro ele vai dobrando o tempo de entrega a cada tentativa;

Corrupt

- As mensagens das filas que no conseguem ser lidas ou que esto danificadas, so movidas para esta fila para uma inspeo;

Hold

- Mensagens que so colocadas em espera pelo administrador vo para esta fila at que algum especifique que ela deva ser liberada.

Captulo 4 Instalando e Configurando o Postfix - 56

4.1.5. Status da entrega


O daemon QMGR mantm um arquivo com o mesmo nome da fila em outros diretrios com informaes sobre o estado da mensagem. A seguir esto listados os status possveis: Bounce - Informao sobre os motivos da mensagem ter recebido um bounce (mensagem de erro). Estas informaes so gerenciadas pelo daemon bounce; Defer - Informao sobre os motivos da mensagem estar com o envio atrasado. Gerenciadas pelo daemon defer; Trace - Informao sobre requisies com o comando sendmail -v ou sendmail -bv do Postfix. Sent - Sucesso! Mensagem entregue.

4.1.6. Arquivos de configurao do Postfix


O Postfix l suas configuraes a partir dos arquivos de texto localizados no diretrio /etc. Arquivos de configurao do Postfix normalmente so armazenados em /etc/postfix, mas voc pode configurar o Postfix para que utilize um outro diretrio qualquer. O Postfix usa dois arquivos de configurao principais:o master.cf e o main.cf (abordados no Captulo 4) e quaisquer arquivos auxiliares que voc mesmo configurar. Aps alguma alterao nesses arquivos, ser necessrio recarregar o Postfix para que as modificaes entre em vigor. O arquivo que voc editar com mais frequncia o main.cf. Esse arquivo define os parmetros que controlam o comportamento dos daemons do Postfix. Sua sintaxe bem simples obedecendo as seguintes formatao geral: parmetro = valor Um parmetro s pode ser especificado apenas uma vez no main.cf, caso ocorra a duplicao o Postfix assumira a ltima ocorrncia. Outra caracterstica que a ordem dos parmetros no main.cf no relevante. Se um valor no especificado no main.cf o Postfix assume o valor padro que est no cdigo-fonte.

Captulo 4 Instalando e Configurando o Postfix - 57

Abaixo um trecho do main.cf: # mydestination = host.dominio.com.br, localhost.dominio.com.br, localhost O arquivo master.cf configura o daemon master do Postfix, e cada linha no master.cf define um servio que um programa executa. Por exemplo, o daemon que recebe e processa as conexes SMTP, smptd, um servio. Abaixo segue um exemplo do master.cf: ====================================================================== # service type # # ====================================================================== # smtp # 628 # pickup # cleanup # qmgr # qmgr inet inet fifo unix fifo fifo n n n n n n n 60 300 300 300 1 0 1 1 smtpd qmqpd pickup cleanup qmgr oqmgr private unpriv (yes) (yes) chroot (yes) wakeup maxproc command + args (never) (100)

Como no exemplo acima a sintaxe do master.cf composta por: Service Type nome do servio declarado conforme o tipo de servio; especifica a tipo do servio os tipo disponveis so:

inet O servio ira escutar em um soquete tcp/ip e est acessvel a rede; unix O servio ira escutar em um soquete de domnio Unix e acessvel clientes apenas locais; fifo - O servio ira escutar em FIFO(pipe) e acessvel apenas clientes locais; Private Coloca o servio restrito ao Postfix. Servios do type inet no

podem ser privados. O padro sim(y);

Captulo 4 Instalando e Configurando o Postfix - 58

Unpriv

O servio e executado com privilgios de root, ou como proprietrio do Postfix.O padro sim(y);

Chroot WakeUp

Coloca o servio em CHROOT. O padro sim(y); Executa o servio em um determinado perodo de tempo. Um exemplo o daemon flush que executa a cada 1000 segundos;

Maxproc

O nmero mximo de processos que podem executar esse servio

simultneo; Command + args Comando a ser executado mais os seus argumentos, exemplo: maildrop unix n n pipe

flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}

4.1.7. Tabelas de Pesquisa


Algumas informaes no podem ser convenientemente representadas nos arquivos main.cf e marster.cf. O conceito do Postfix para tabelas de pesquisa permite que as informaes sejam armazenadas em arquivos externos, banco de dados relacionais ou ainda em diretrios LDAP. 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 telefnica onde voc pesquisa o nome e obtm o nmero correspondente. Esse processo realizado pelo comando postmap que constri um arquivo indexado. Para cada atualizao realizada na tabela/arquivo necessrio executar o postmap para que seja recriado o arquivo indexado. No e necessrio recarregar o Postfix quando haver uma mudana na tabela. Essas tabelas podem ser usada para diversos tipo de aes como: Restrio de acesso de clientes ao Postfix - Mapas de Acesso; Consulta a nomes e apelidos (alias);

Captulo 4 Instalando e Configurando o Postfix - 59

Contas e domnios virtuais.

Finalizando, o main.cf e master.cf so bem simples de configurar, basta apenas declarar o parmetro e o valor no caso main.cf e no master.cf o servio e seus argumentos. No momento da instalao do Postfix, o pacote j pr configura o main.cf e master.cf com opes padres. So eles quem definem o comportamento dos daemons do Postfix.

4.1.8. Comandos de Administrao do Postfix


O Postfix possui comandos para administrao de filas de mensagens, criao de apelidos, edio do main.cf , manipulao de logs etc. Abaixo a lista desses comando e respectiva sua funo:

Comando postcat

Funo Permite leitura de uma mensagem enquanto estiver na fila de mensagens. Ex: postcat /var/spool/postfix/active/A/A44BD17D18 Cria o arquivo base de apelidos. Ex: postalias /etc/postfix/aliases Escreve textos personalizados no log do Postfix Ex: postlog -p info -t TITULO TEXTO Cria a base hash de arquivos de mapas Ex: posmap /etc/postfix/check_access Usado para controlar as filas de e-mail do Postfix Ex: postqueue -i F2AF0111029 Tem as mesmas funes do posqueue, porm utilizado por usurios privilgiados. Tem a capacidade de mover e excluir mensagens da fila. Ex: postsuper -d ALL Utilizado para manipulao e leitura de parmetros no main.cf Ex: postconf -d

postalias postlog postmap postqueue postsuper

postconf

Captulo 4 Instalando e Configurando o Postfix - 60

4.2. Pratica Dirigida 4.2.1. Instalando e Configurando o Postfix


aptitude install postfix postfix-ldap postfix-pcre Obs.: Quando o instalador do Postfix apresentar a tela de opes selecione Internet site e logo aps coloque o nome do servidor, ou seja, o FQDN, exemplo: mailx.matrizX.com.br

Configurando o main.cf com o comando postconf: postconf -e smtpd_banner = Bem Vindo - \$myhostname # uma saudao do Posfix ao receber uma conexo na porta 25. Voc pode colocar o nome da empresa, por exemplo.

#O mydestination muito importante para o Postfix pois informa os domnios que so considerados locais, isto , quais domnios devem ter suas mensagens entregues para as contas UNIX nessa mquina.

postconf -e mynetworks = 127.0.0.1/32 192.168.1.0/24 #Aqui voc deve informa apenas as redes que podero fazer relay no seu servidor. Se especificar as redes incorretamente, seu servidor poder ser alvo de spammers. postconf -e inet_interfaces = all #Qual interface de rede o Postfix ir escutar para recepo e envio de mensagens. Caso tenha mltiplas placas de rede e seja necessrio que o Postfix atenda em todas, basta apenas comentar esse parmetro. Outra alternativa para que o Postfix atenda em todas as interfaces utilizar a palavra-chave all para o valor do parmetro. Caso seja necessrio que o Postfix atenda por duas interfaces, basta ainda colocar o valor dos endereos IP correspondentes separados por espao. postconf -e mydomain = matrizX.com.br

Captulo 4 Instalando e Configurando o Postfix - 61 #Define domnio de Internet do Postfix.

postconf -e myorigin = matrizX.com.br #Geralmente possui o hostname da mquina, mas utilizado para qualificar endereos de e-mail que no possuem domnio como por exemplo, mensagens enviadas atravs do comando sendmail.

postconf -e myhostname = mailX.matrizX.com.br #Define o nome da mquina, ou seja, o host mais o domnio. importante que seja um domnio que seja resolvido pelo DNS.

Reiniciando o Postfix /etc/init.d/postfix restart

4.2.2. Enviando o primeiro e-mail


O exemplo a seguir utiliza o comando telnet para realizar envio de um e-mail de teste. Entretanto, antes desse teste, devemos criar nosso usurio chamado fulano:
1 2 3 4 5 6 7 8 9

#adduser fulano Coloque a senha 123 telnet localhost 25 HELO mail.matrizX.com.br MAIL FROM: <root@matrizX.com.br> RCPT TO: <fulano@matrizX.com.br> DATA From: Nome do Remetente <root@matrizX.com.br>

Captulo 4 Instalando e Configurando o Postfix - 62


10 11 12 13 14 15

To: Nome do Destinatrio <fulano@matrizX.com.br> Subject: Teste de Comandos SMTP E-mail teste - Comandos SMTP . QUIT Verifique se a mensagem foi entregue em /var/mail/fulano

cat /var/mail/fulano

4.2.3. Outros parmetros do main.cf


O arquivo main.cf possui mais de 500 parmetros configurveis, muitos deles esto por padro pr configurados, porm nem todos so contemplados no main.cf. O core do Postfix j est pr configurado com valores padres. Sero abordados alguns parmetros teis: always_bcc - Envia cpia de todas as mensagens para um destinatrio defer_trasports - Contm nomes dos transportes cujas entregas devem ser temporariamente adiadas. estiver disponveis. delay_warning_time Por padro o Postfix no envia um aviso se a mensagem est demorando para ser entregue, caso deseje isso coloque o tempo desejado nesse parmetro, exemplo 4h. mailbox_size_limit Controla o tamanho mximo de uma caixa de correio local ou o tamanho mximo de uma mensagem ao utilizar caixa em formato maildir. maximal_queue_life_time Especifica quanto tempo o Postfix tentara novamente a entrega das mensagens que falharam antes de serem retornadas ao remetente. Padro e 5 dias. message_size_limit Tamanho mximo de uma mensagem Isso permite suspender entregas locais

de mensagens se o sistema de arquivos para os diretrios iniciais no

Captulo 4 Instalando e Configurando o Postfix - 63

4.2.4. Utilizando a ferramenta Postal para envio de e-mails


Para simularmos um pequeno trfego de e-mail, ser utilizada a ferramenta Postal. Discutiremos sobre a ferramenta Postal mais adiante. # aptitude install postal # echo fulano@matrizX.com.br > /home/lista-email.txt # postal -t 1 -m 5 -c 5 -r 5 -a localhost /home/lista-email.txt # tail -f /var/spool/mail/fulano

4.2.5. Criando alias para usurios locais


O exemplo a seguir cria um apelido (alias) para o usurio fulano: # postconf -n | grep alias # echo geral: fulano >> /etc/aliases # postalias /etc/aliases

4.2.6. Criando mapas de acessos com o postmap


Os mapas de acessos(tabelas de pesquisas) so largamente utilizados em conjunto com parmetros de restrio do Postfix. Se voc deseja bloquear conexo de clientes maliciosos, os mapas de acesso podem contribuir muito com essa tarefa. Por exemplo: # printf 192.168.1.x\tREJECT Bloqueado > /etc/postfix/client_access # postmap /etc/postfix/client_access # ls /etc/postfix # postconf -e smtpd_client_restrictions = check_client_access hash:/etc/postfix/client_access # invoke-rc.d postfix reload

Captulo 4 Instalando e Configurando o Postfix - 64

4.2.7. Utilizando os comandos postcat, postqueue e postsuper


Para que seja possvel realizar a leitura e a manipulao das mensagens na fila, vamos gerar trfego de e-mail com a ferramenta postal: # postal -t 5 -m 10 -c 5 -r 120 -a localhost /home/lista-email.txt Verificando o status da fila # postqueue -p Lendo a mensagem com o postcat # postcat /var/spool/postfix/active/id_da_mensagem removendo mensagens da fila # postsuper -d ALL

Captulo 4 Instalando e Configurando o Postfix - 65

4.3. Exerccios
1. Qual a funo dos arquivos main.cf e master.cf? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. Qual o parmetro responsvel pelos domnios que o postfix ir responder? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. Estou tentando mensagem de 20 MB mas o meu servidor no est permitindo. O que pode estar ocorrendo? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 4 Instalando e Configurando o Postfix - 66

4. A empresa Domnio S/A tem uma filial em Anpolis-GO. Essa filial est conectada matriz em So Paulo-SP. O servidor j possui todas a contas de emails de cada usurio da filial, porm, os usurios esto reclamando que no conseguem enviar e-mails e esto relatando a seguinte mensagem de erro: 554 Relay Access Denied . O que pode estar ocorrendo? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

5. Qual a diferena entre os comandos postmap e o postalias? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

6. Qual a diferena entre os comandos postqueue e o postsuper? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 4 Instalando e Configurando o Postfix - 67

7. Qual a diferena entre os comandos postconf -d e postconf -n? Explique. ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

8. Aps executado o comando postmap, necessrio recarregar o Postfix? Explique. ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 5 Gerenciamento de Filas no Postfix - 68

Captulo 5 Gerenciamento de Filas no Postfix

Captulo 5 Gerenciamento de Filas no Postfix - 69

5.1. Introduo
O Postfix possui diferentes filas para tratamento do sistema de correio. O daemon que controla as filas do Postfix QMGR(Queue Manager), onde, em segundo plano, gerencia as filas active, bounce, corrupt, deferred, e hold. As filas esto localizadas por padro em /var/spool/postfix e cada uma possui seu prprio diretrio. As filas mais ativas nesse processo so: active e incoming.
Fila
Active

Funo
Esta a fila de e-mails que foram abertos pelo gerenciador da fila para entregas. Essa fila tem um nmero limite para entrada de mensagens. qmgr_message_active_limit (default 20000) Os arquivos das filas que no conseguem ser lidos ou que esto danificados so movidos para esta fila para uma inspeo. Esta a fila de mensagens que no conseguiram ser entregues na primeira tentativa. O gerenciador da fila vai seguir as configuraes do main.cf para novas tentativas de entregas. Por padro ele vai dobrando o tempo de entrega a cada tentativa. Esta a fila de e-mails que esto entrando a partir da rede, repassados pelo maildrop. Mensagens que so colocadas em espera pelo administrador vo para esta fila at que algum especifique que ela deva ser liberada.

Corrupt Deferred

Incoming Hold

Status da Entrega
Bounce Defer Trace

Funo
Informao sobre os motivos da mensagem ter recebido um bounce (mensagem de erro). Informao sobre os motivos da mensagem estar com o envio atrasado. Informao sobre requisies com o comando sendmail -v ou sendmail -bv do MTA postfix.

O daemon QMGR possui parmetros configurveis em main.cf, vejamos os mais usuais:


Parmetro
qmgr_clog_warn_time (300) qmgr_message_active_limit (20000) qmgr_message_recipient_limit (20000) qmgr_message_recipient_minimum (10) maximal_queue_lifetime queue_directory

Descrio
Intervalo minimo de advertncias Nmero mximo de mensagens na fila Nmero mximo de destinatrios realizada em memria Nmero mnimo de destinatrios em memria O tempo mximo de uma mensagem na fila antes que seja devolvida como undeliverable Diretrio onde esto as filas do Posfix

Captulo 5 Gerenciamento de Filas no Postfix - 70

O Postfix tambm possui ferramentas para gerenciamento de filas.


Comando/Parmetro
postqueue -p postqueue -f postqueue -i id_da_mensagem postqueue -s dominio.com postsuper -h id_fila postsuper -H id_fila postsuper -d ALL postsuper -p postsuper -s postsuper -r id_fila qshape nome_fila Postcat -d id_mensagem Verificar como est a fila Para dar um flush na fila e enviar mensagens que esto aguardando (deferred) Para iniciar a entrega imediata de uma mensagem na fila deferred Para iniciar a entrega imediata de mensagens na fila para um domnio especifico Colocando mensagem em HOLD (espera). Libera mensagem colocada em HOLD Remove mensagem das filas Faz um purge na nos arquivos temporrios da fila Verifica a estrutura das filas e repara a fila caso exista algum problema. Recoloca a mensagem na fila Ferramenta de anlise estatstica do Postfix Realiza leitura da mensagem enquanto na fila

Funo

Captulo 5 Gerenciamento de Filas no Postfix - 71

5.2. Pratica dirigida


Verificar o estado das filas # postqueue -p Verificando o estado das filas de um domnio especifico # postqueue -p | grep matrizX.com.br Reprocessando as mensagens # postsuper -r ALL Removendo mensagens # postsuper -d 45ADF5 Lendo uma mensagem # postcat -q 45ADF5 Verificando a estatstica de filas com o qshape: # qshape T 5 10 20 40 80 160 320 640 1280 1280+ 0 43 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 6 120 0 0 55 0 27 150 0 50 0 14 0 158 0 59 0 21 0 0 0 0 0 0 TOTAL 655 60 111 matriz.com.br 151 40 111 dominioY.com.br 109 dominioZ.com.br dominioW.com.br dominioK.com.br 55 35 31 0 0 0 0

Estatsticas da fila active com qshape: # qshape active

Captulo 5 Gerenciamento de Filas no Postfix - 72

5.3. Exerccios
1. Qual a diferena entre os comando postqueue e postsuper? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. Quais os motivos levam uma mensagem ir para fila deferred? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. Muitas mensagens no entregues(erro, destinatrio no encontrado, etc) esto ficando na fila, como posso melhorar esse cenrio? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 5 Gerenciamento de Filas no Postfix - 73

4. Cite fatores que contribuem para o crescimento das filas no Postfix. ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 6 Entendendo Restries SMTP no Postfix - 74

Captulo 6 Entendendo Restries SMTP no Postfix

Captulo 6 Entendendo Restries SMTP no Postfix - 75

6.1. Introduo
O Postfix fornece alguns mtodos que podem ser utilizados para ajud-lo no combate a SPAM. Restries SMTP Listas de bloqueio do DNS Correspondncia s expresses regulares

Adicionalmente o Postfix fornece os mtodos a seguir para filtragem de spam:

6.1.1. Filtragem de contedo depois do enfileiramento


O Postfix aceita a mensagem e entrega para filtragem. A desvantagem que o Postfix sempre aceitara a mensagem.

6.1.2. Filtragem de contedo antes do enfileiramento


Filtros de contedo antes do enfileiramento recebem a mensagem durante a sesso SMTP e pode escolher rejeit-las. A desvantagem que a filtragem de contedo sempre exigida a cada sesso SMTP. Esse tipo de contedo no escalonvel e no adequado para sites de alto trfego.

6.1.3. Delegao de filtragem para programas externos


Se as restries no forem suficientemente boas, voc poder gerar seu prprio mecanismo de filtragem. O Postfix tem uma notao simples, porm, bem expressiva para definio das regras que sero aplicadas s mensagens que chegam via SMTP. O Postfix define alguns parmetros que contm listas de restries. Cada lista de restrio pode conter zero ou mais restries e cada restrio pode ou no retornar algo quando avaliada. Como em alguns outros locais no Postfix, o principio primeira correspondncia vence tambm prevalece aqui. Isso significa que as restries so avaliadas na ordem que elas so especificadas, e a primeira restrio que retornar algo termina a avaliao da lista de restrio atual. As listas so avaliadas durante a

Captulo 6 Entendendo Restries SMTP no Postfix - 76 sesso SMTP. A tabela abaixo mostra as listas de restries que o Postfix utiliza e mostra a fase dentro de uma sesso SMTP.
Parmetros
smtpd_client_restrictions smtpd_helo_restrictions smtpd_sender_restrictions smtpd_recipient_restrictions smtpd_data_restrictions smtpd_end_of_data_restrictions

Ponto de avaliao
Diretamente na conexo, ou seja, faz testes no IP do cliente. Depois que o cliente enviou o comando HELO ou o EHLO. Depois que o cliente enviou o endereo do remetente atravs do comando MAIL FROM. Depois que o cliente enviou o endereo do destinatrio em RCPT TO Depois que o cliente enviou o comando DATA para repassar o contedo da mensagem. Depois que o cliente enviou a mensagem completa finalizando com o ..

Cada restrio tem um contexto isolado onde os testes so feitos na ordem especificada, e cada teste pode retornar 3 status: OK, REJECT e DUNNO. OK e REJECT so aes finais dentro de uma restrio. O status OK faz com que os prximos testes desta restrio no sejam processados. O REJECT faz o bloqueio da conexo, informando a restrio que no foi atendida. O DUNNO apenas faz com que no seja bloqueado neste teste, e passe para o prximo teste. Exemplo: smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, check_client_access hash:/etc/postfix/client_access, reject_unknown_client_hostname Digamos que eu conecte no servidor por um provedor internet que no me d IP reverso, e meu IP 192.168.0.1. O Postfix vai agir da seguinte forma: O IP 192.168.0.1 est em permit_mynetworks? No, ento -> DUNNO O IP 192.168.0.1 se autenticou? No, ento = DUNNO O IP 192.168.0.1 est em client_access No, ento = DUNNO O IP 192.168.0.1 possui DNS reverso? No, ento = REJECT

Se meu IP estivesse em client_access, no mynetworks, ou eu tivesse me autenticado, estes testes retornariam OK e eu no seria bloqueado pelo teste de IP reverso.

Captulo 6 Entendendo Restries SMTP no Postfix - 77

O parmetro smtpd_delay_reject tem seu valor default YES, isso significa que todas as rejeies sero adiadas at ocorrer um RCPT TO. A razo disso que alguns clientes de e-mail no gostam de ser rejeitados antes do RCPT TO, assim eles se desconectaro e tentaro novamente. Um mal-entendido comum acreditar que, somente restries no endereo de destinatrio podem ser colocados em smtpd_recipient_restrictions. O Nome da lista de restries s informa em qual fase na sesso SMTP as restries listadas sero aplicadas, mas, em razo do smtpd_delay_restrictions, isso no verdadeiro. Por padro o Postfix no tem restries para o cliente, HELO ou remetente. Os parmetros citados acima tratam momento da sesso SMTP, dentro deles existem as restries que sero aplicadas. O Postfix possui mais de 50 restries SMTP. Vamos analisar as mais usuais:
Restries
permit_mynetworks permit_sasl_autenticated reject reject_invalid_hostname reject_non_fqdn_hostname reject_non_fqdn_recipient reject_non_fqdn_sender reject_unauth_destination reject_unknown_recipient_domain reject_unknown_sender_domain reject_unknown_cliente_hostname reject_unlisted_recipient

Descrio
Permitir se o cliente conectado estive listado em mynetworks Permitir se o cliente que est se conectado autenticou-se Rejeitar incondicionalmente Rejeitar se o hostname for invlido. Rejeitar se o hostname HELO/EHLO dado pelo cliente no for um nome de domnio completamente qualificado Rejeitar se a parte do domnio do endereo do destinatrio no for um nome de domnio completamente qualificado Rejeitar se a parte do domnio do endereo do remetente no for um nome de domnio completamente qualificado Rejeitar a solicitao a menos que o domnio do destinatrio seja um dos domnios que o servidor Postfix hospeda Rejeitar se a parte domnio do endereo do destinatrio no tiver nenhum registros A, MX no DNS Rejeitar se a parte domnio do endereo do remetente no tiver nenhum registros A, MX no DNS Rejeitar se o no tiver nenhum registros A, MX no DNS Verifica reverso Rejeitar se o destinatrio no for um endereo de e-mail vlido pertencente ao Postfix. Por padro essa restrio avaliada implicitamente ao final de smtpd_recipient_restrictions. Rejeitar se a origem no for um endereo de e-mail vlido, ou seja, endereos de remetente no pertence ao Postfix. Permitir incondicionalmente Gera apenas em caso de rejeio mas no rejeita a mensagem. til quando queremos testar um regra.

reject_unlisted_sender permit warn_if_reject

Captulo 6 Entendendo Restries SMTP no Postfix - 78

6.1.4. Restries com Mapas de Acesso


O Postfix define algumas restries pesquisando informaes em mapas de acesso. Por exemplo, a restrio check_client_access pequisa o endereo IP e o hostname do cliente em uma tabela de pesquisa, permitindo, por exemplo, banir clientes que reconhecidamente enviam spam. Junto com o nome dessa restrio voc tambm declara o tipo e o nome da tabela de pesquisa smtpd_client_restrictions = check_client_access hash:/etc/postfix/client_access Segue, abaixo, as restries mais usuais:
Nome da Restrio
check_client_access check_sender_access check_recipient_access check_helo_access

Chave de pesquisa
Endereo IP e hostname do cliente Endereo do remetente da mensagem Endereo do destinatrio da mensagem O hostname HELO/EHLO

Os resultados a seguir so reconhecidos para um determinada chave de pesquisa.


Resultado
OK REJECT[texto opcional] DISCARD[texto opcional] HOLD[texto opcional] WARN [texto opcional]

Descrio
Permitir a solicitao Rejeitar a solicitao com um cdigo de erro e com uma mensagem de erro Se a mensagem for aceita, ela ser descartada e no ser entregue Coloca a mensagem na fila de espera Coloca mensagem de alerta no arquivo de log

Vejamos um exemplo do arquivo client_access: # Bloqueio as redes RFC 1918 10 192.168 smtp.spammer.com REJECT REJECT REJECT RFC 1918 RFC 1918 endereo no permitido endereo no permitido

Voc um spammer

Captulo 6 Entendendo Restries SMTP no Postfix - 79

6.1.5. Restries de cabealho e corpo da mensagem


Algumas mensagens no podem ser examinadas sem a analise de seu contedo. O Postfix, fornece algumas ferramentas no muito sofisticadas, porm muito teis , para esse propsito. As verificaes de cabealho e corpo da mensagem podem ajudar a solucionar os seguintes problemas: Reagindo a mensagem que contm anexos com nomes de aquivos proibidos; Os Detendo rapidamente grandes epidemias de vrus; Registro em log de personalizao de certos campos de cabealhos; Removendo os cabealhos de algumas mensagens. body_checks, header_checks, mime_header_checks e

parmetros

nested_header_checks so responsveis por esse trabalho e esses recursos podem estar associados a tabelas de pequisas aliadas a expresses regulares. Vejamos o exemplo: Parmetro do main.cf: header_checks = regexp:/etc/postfix/header_checks O contedo do arquivo header_checks /.*(file)?name=.*\.(bat|exe|src|scr|pif|chm|hta|vbs)/ REJECT ATTACH TAG: EXEC. /*[vV][iI][aA][gG][rR][aA]? Parmetro do main.cf: body_checks = regexp:/etc/postfix/body_checks REJECT SPAM TAG: Viagra

Captulo 6 Entendendo Restries SMTP no Postfix - 80

O contedo do arquivo body_checks ((https?|ftp):(//)+[\w\d:#@%/;$()~_?\+-=\\\.&]*) permitidas /^(Return-Path|From):.*<.*_.*_.*_.*@.*/ _. /^Subject:.*([Rr][Ee](:)?( )?\[[0-9]{1,2}\](:)?)/ re[]. /^Subject:.*([oO0][eE][mM]).*/ OEM. REJECT SPAM TAG: REJECT SPAM TAG: REJECT SPAM TAG: REJECT Urls no

6.1.6. Restries com RBLs


Desde 1997, DNS utilizado contra spam. O mtodo, DNS-based Blackhole List(DNSBL) ou Real-time Blackhole List(RBL), tambm como lista negra, utiliza o DNS para publicar informaes sobre os domnio de alguns clientes ou remetentes. Quando um servidor de correio como o seu for contatado por um cliente, seu servidor poder combinar o endereo IP desse cliente ou o endereo de remetente dado com o domnio de um ou mais DNSBL e realizar uma pequisa de DNS. Se o endereo for listado pela DNSBL, a pesquisa ser bem sucedida e seu servidor poder rejeitar a mensagem. O Postfix suporta trs tipos de pesquisas DNSBL: endereo do cliente, hostname do cliente e domnio do remetente. Cada tipo de pesquisa tem uma restrio prpria e todos exigem que voc especifique o nome do domnio DNSBL depois do nome da restrio
Tipo de DNSBL
Endereo do cliente host Hostname do Cliente

Sintax
reject_rbl_client_rbl_domain reject_rhsbl_client_rbl_domain

Descrio
O endereo IP do cliente que est se contatando pesquisado. O hostname do cliente que est se conectando pesquisado O domnio de um dado endereo de remetente pequisado

Domnio do endereo do reject_rhsbl_sender_rbl_domain remente

Captulo 6 Entendendo Restries SMTP no Postfix - 81

Exemplo de uso: smtpd_recipient_restrictions= permit_mynetworks,reject_unauth_destination, reject_rbl_client relay.ordb.org, reject_rhsbl_sender dns.rfc-ignorant.org Listas DNSBL teis: relays.ordb.org, list.dnsbl.org, sbl.spamhaus.org, xbl.spamhaus.org, sblxbl.spamhaus.org

6.2. Prtica Dirigida


Vamos agora aplicar as regras apresentadas:

6.2.1. Restries por IP e IP Reverso


A regra de restrio abaixo esta associada na 1 etapa da sesso SMTP, ou seja, no momento da conexo do cliente. Edite o arquivo main.cf: 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 Contedo do arquivo /etc/postfix/black_list 192.168.1.10 192.168.1.11 REJECT REJECT

Executar o postmap para criar os mapas do arquivo # postmap /etc/postfix/black_list

Captulo 6 Entendendo Restries SMTP no Postfix - 82

Vamos entend-la: permit_mynetworks Permitir conexo das redes declaradas no

parmetro $mynetworks permit_sasl_authenticated - Permitir todos cliente autenticados (SMTP autenticado). check_client_access Permitir o conexo dos clientes mapas de acesso conforme regras estabelecidas nos mapas reject_unknown_client_hostname Rejeitar clientes com hostnames desconhecidos reject_rbl_client Rejeitar clientes que estejam cadastrados em RBLS que esto nos

Como exemplo de teste, coloque o IP de qualquer colega no arquivo client_blacklist e gere novamente o mapa com o comando postmap. Depois pea ao colega para tentar conectar em seu servidor com o comando telnet para realizar o teste e veja se ele rejeitado.

6.2.2. Restries HELO/EHLO


Est prxima regra similar a anterior porm acontece no momento aps a conexo do cliente na 2 etapa da sesso SMTP no comando HELO. Edite o arquivo main.cf: 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

Captulo 6 Entendendo Restries SMTP no Postfix - 83

Entendendo as Regras: smtpd_helo_required Obriga o cliente a se apresentar informando o seu FQDN As demais regras so idnticas a do smtpd_client_restrictions exceto reject_invalid_helo_hostname, reject_unknown_helo_hostname. Contedo do arquivo /etc/postfix/helo_blacklist 192.168.1.10 192.168.1.11 REJECT REJECT reject_non_fqdn_helo_hostname e

Executar o postmap para criar os mapas do arquivo # postmap /etc/postfix/helo_blacklist

6.2.3. Restries Remetente (MAIL FROM) .


Est prxima regra trata a 3 etapa da sesso SMTP, no comando MAIL FROM, ou seja, na apresentao do remetente. Edite o arquivo main.cf: smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domain, reject_authenticated_sender_login_mismatch, permit_sasl_authenticated, reject_unlisted_sender Nesta regra temos dois parmetros que merecem destaque:

reject_authenticated_sender_login_mismatch Esse parmetro funciona assim: o usurio se autenticou no servidor SMTP com o login usuario1@dominio.com.br, porm no momento de anunciar o MAIL FROM ele coloca usuario_x@dominio.com.br, ou seja, ele anuncia outro remetente e no o que foi anunciado no login. Ento, essa regra negar o envio do e-mail por no apresentar coerncia entre o usurio autenticado e remetente anunciado.

Captulo 6 Entendendo Restries SMTP no Postfix - 84

OBS: para que estas duas regras citadas acima funcionem necessrio o uso da autenticao que ser abordada mais adiante nessa apostila reject_unlisted_sender Esse parmetro rejeita remetentes que no esto na lista de domnios vlidos em seu servidor, ou seja, presente no parmetro $mydestination ou em outras bases como LDAP, mapas etc. Isso impede ataques de vrus e worms na sua rede interna. S deve ser usado em casos especficos

6.2.4. Restries Destinatrio (RCPT TO)


Esta regra trata a 4 etapa da sesso SMTP que referente ao destinatrio smtpd_recipient_restrictions = reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unlisted_recipient, permit_sasl_authenticated, reject_unauth_destination O smtpd_recipient_restrictions tambm similar ao smtpd_sender_restrictions. Voc tambm pode acrescentar outros parmetros nessa regra como blacklists e RBLs.

6.2.5. Restries aps o comando DATA


Essa regra trata da 5 etapa da sesso SMTP, no comando DATA: smtpd_data_restrictions = reject_unauth_pipelining, reject_multi_recipient_bounce # reject_unauth_pipelining - bloqueia o cliente caso ele tente acelerar o envio de mensagens sem aguardar as respostas do servidor SMTP. #reject_multi_recipient_bounce - Rejeita mltiplos destinatrios e destinatrios nulos isso dentro do envelopamento.

Captulo 6 Entendendo Restries SMTP no Postfix - 85

6.2.6. Restries Cabealhos da Mensagem


Nesta seo as regras de restries se aplicam j nas mensagens envelopadas. Nesta regra iremos bloquear o cabealho e corpo da mensagem veja a figura abaixo:

A regra abaixo utilizada para tratar restries de cabealhos na mensagem. Se voc tem conhecimento em Expresses Regulares pode criar filtros personalizados conforme a sua necessidade. Edite o main.cf header_checks = regexp:/etc/postfix/header_checks Contedo do arquivo header_checks: /.*(file)?name=.*\.(bat|exe|src|scr|pif|chm|hta|vbs)/ REJECT ATTACH TAG: EXEC. /^(Return-Path|From):.*<.*_.*_.*_.*@.*/ _. /^Subject:.*([Rr][Ee](:)?( )?\[[0-9]{1,2}\](:)?)/ re[]. /^Subject:.*([oO0][eE][mM]).*/ OEM. REJECT SPAM TAG: REJECT SPAM TAG: REJECT SPAM TAG:

Captulo 6 Entendendo Restries SMTP no Postfix - 86

6.2.7. Restries do Corpo da Mensagem


A regra abaixo utilizada para tratar restries de corpo na mensagem . Edite o main.cf body_checks = regexp:/etc/postfix/body_checks Contedo do arquivo body_checks: /(http|https|ftp):\/\/.*\/.*\.(bat|pif|scr|[eE][xX][eE]).*(\s|\")/ REJECT PHISHING A expresso regular acima bloqueia ataques de Phishing ou seja, url's apontando para possveis executveis.

6.2.8. Desabilitando comando VRFY


Este comando solicita ao Receptor-SMTP a confirmao de que o argumento identifica um usurio conhecido. Se for identificado retornado o nome completo do usurio (se este possuir) e seu mailbox completo. Essa parmetro importante estar desativado isso impedir que spammers tentem coletar endereos de e-mail em seu servidor. Edite o main.cf disable_vrfy_command = yes

6.2.9. Restries condicionais


As restries condicionais permitem ao administrador criar regras personalizadas e comum o seu uso para tratamento de maillist e bloqueio de spammers. Nesta configurao vamos fazer o necessrio para proteger uma lista, determinando quem pode enviar para a mesma. Quem no estiver permitido ser negado. Criar os usurios teste1, teste2 e teste3 # useradd teste1 # useradd teste2 # useradd teste3

Captulo 6 Entendendo Restries SMTP no Postfix - 87

Criar o alias lista em /etc/aliases com o seguinte contedo: lista: teste1, teste2, teste3, fulano Execute o postalias postalias /etc/aliases Criar o arquivo minha_lista em /etc/postfix com o seguinte contedo: lista@matrizX.com.br protege_lista

Criar o arquivo users_liberados em /etc/postfix com o seguinte contedo: fulano@matrizX.com.br 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 # Este parmetro deve ser adicionado ao smtpd_recipient_restrictions # existente no main.cf smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/minha_lista A regra que fizemos ir bloquear usurios no listados em OK

/etc/postfix/users_liberados que tentarem enviar mensagens para a lista que esta em /etc/postfix/minha_lista

Captulo 6 Entendendo Restries SMTP no Postfix - 88

6.2.10. Restries por tamanho da mensagem


message_size_limit = 20480000

6.2.11. Restries Conformidade com RFC


Esse parmetro fora o cliente de e-mail a envelopar o remetente e os destinatrios conforme a RFC determina. strict_rfc821_envelopes = yes

Captulo 6 Entendendo Restries SMTP no Postfix - 89

6.3. Exerccios
1. Quais as vantagens e desvantagens da filtragem de contedo depois do enfileiramento? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. Explique porque a filtragem de contedo antes do enfileiramento no escalonvel? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. Qual o funo do parmetro smtpd_delay_reject? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 6 Entendendo Restries SMTP no Postfix - 90

4. Observe o seguinte parmetro: 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 Alguns clientes esto reclamando da demora no envio de e-mails. Identifique o motivo. ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

5. Qual os tipos de DNSBLs suportadas pelo Postfix? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 6 Entendendo Restries SMTP no Postfix - 91

6.4. Laboratrio
1. Crie uma regra que bloqueie a palava viagra. 2. Crie uma regra de DNSBL com exceo para o IP 192.168.X.Y. 3. Crie uma regra que bloquei arquivos com extenso ZIP 4. Para realizar os testes utilize as ferramentas telnet e postal

Captulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 92

Captulo 7 Troubleshoot Identificando e Resolvendo Problemas no Postfix

Captulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 93

7.1. Introduo
Um elemento-chave na soluo de problemas do Postfix ser capaz de ler e interpretar as mensagens de log que o Postfix gera. Como essas mensagens so arquivos de texto simples com uma mensagem de log por linha, no necessrio nenhum programa especial para leitura. Postfix registra todas as operaes realizadas, incluindo as bem ou mal sucedidas. Como muitos outros servios dentro de um ambiente Unix/Linux, o Postfix utiliza o sistema syslog para registrar suas mensagens de log. Os aquivos de log do Postfix ficam, por padro, no diretrio /var/log/mail. O formato de cada mensagem de log tem o seguinte formato:

O Postfix fornece uma quantidade razovel de informao valiosa por meio de seus logs. Portanto, tenha o hbito de analis-los com frequncia. Atente-se especialmente aos erros e aos avisos de alerta. Utilitrios Unix como o grep/egrep/fgrep, awk e perl so ferramentas valiosas para manipular, filtrar e extrair informaes precisas de seus arquivos de log. Por exemplo, voc pode executar o seguinte comando regularmente para verificar a existncia de quaisquer entradas de log que possam identificar problemas. egrep '(reject|warning|error|fatal|panic):' /var/log/mail.log Voc pode encontrar mensagens reportadas pelo daemon master indicando uma falha que ocorreu e o respectivo PID do processo correlacionado falha, conforme mostrado no quadro a seguir:

Captulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 94

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 Identificado o PID do processo, localize no arquivo mail.log qual o motivo do problema por meio de uma pesquisa utilizando, nesse exemplo, o grep e usando como chave de busca o PID do processo encontrado na verificao anterior: grep 3136 /var/log/maillog postfix/smtpd[3163]: fatal: open database /etc/postfix/aliases.db: No such file or directory Nesse caso, conforme indica a mensagem apresentada, o problema est relacionado com a ausncia do arquivo /etc/postfix/aliases.db. O prximo passo, portanto, para certificar-se disso verificar a presena (ou ausncia, provavelmente) desse arquivo no servidor de e-mails. Se quiser saber o destino e todo o processamento realizado em uma determinada mensagem, o log tem a resposta. Quando um e-mail recebido pelo Postfix ele imediatamente associado a um ID de fila. Voc, portanto, pode rastrelo completamente ao olhar para todas as entradas de log que possuem esse ID. Por exemplo, quando um cliente se conecta ao seu servidor para entregar uma mensagem, o servidor registra a entrada apresentada no quadro a seguir: postfix/smtpd[1677]: connect from mail.example.com[192.168.100.45] postfix/smtpd[1677]: 9634B16F7F7: client=mail.example.com[192.168.100.45] A primeira linha registra a conexo inicial. A prxima linha mostra o ID da fila que foi atribudo a esta mensagem: no caso, 9634B16F7F7. Quando outros componentes Postfix manipularem a mensagem, eles faro referncia ao mesmo ID, de acordo como mostrado no quadro seguinte:

Captulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 95

postfix/smtpd[1434]: 4F9D116F7F7: client=localhost[127.0.0.1] postfix/cleanup[1436]: 4F9D116F7F7: message-id=<20031228154034.4F9D116F7F7@scallop.example.com> postfix/qmgr[1431]: 4F9D116F7F7: from=<kyle@domainioX.com>, size=344, nrcpt=1 (queue active) postfix/smtp[1438]: 4F9D116F7F7: to=<kdent@example.com>, relay=mail.example.com[216.150.150.131], delay=11, status=sent (250 Ok: queued as 51DCA20DD70) Se a mensagem foi entregue com sucesso, o servidor remoto informa o ID de fila da sua mensagem. Isso til caso seja necessrio contatar o postmaster do servidor remoto. Alm desses erros, importante ressaltar a anlise dos recursos que o Postfix utiliza para determinar possveis erros de entrega e recepo de mensagens ou de problemas com o prprio Postfix, como por exemplo: Problema de inicializao: permisso de arquivos, dependncia ou inexistncia de bibliotecas compartilhadas; Problemas de DNS: configurado; Problemas de rede: gateway, rotas e firewall; Erros de sintaxe nos aquivos main.cf e master.cf; Problema com sistema de arquivos: espao em disco esgotado ou corrompimento do sistema de arquivos. Outra alternativa consiste em utilizar uma ferramenta para anlise de logs como o pacote pflogsumm, presente na maioria das distribuies GNU/Linux. No caso das distribuies como Debian GNU/Linux ou o Ubuntu Linux, possvel installo simplesmente utilizando o comando a seguir: DNS inexistente, cache no atualizado ou mal

Captulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 96

# aptitude -y install pflogsumm # pflogsumm.pl -d today /var/log/mail.log Mais informaes a respeito do pflogsumm podem ser obtidas nas prprias man pages inclusas no pacote.

7.2. Prtica Dirigida 7.2.1. Aumentando o nvel de log e debugando o Postfix


Se voc tiver um problema com um determinado domnio, mas no encontrar erros no seu registro, voc pode aumentar o nvel de log para o problema com parmetro debug_peer_list. Com isso, o Postfix ir gravar informaes adicionais, como toda a transao entre o cliente e o servidor. Esse parmetro definido por uma lista de domnios para os quais o Postfix deve aumentar o nvel de registro. O quadro a seguir apresenta um exemplo da utilizao desses dois recursos. Edite o main.cf: debug_peer_list = matrizX.com.br debug_peer_level = 2 Voc tambm pode obter logs mais detalhados adicionando o parmetro -v nos daemons do Postfix editando o arquivo /etc/postfix/master.cf, conforme apresentado no exemplo a seguir: smtp Outra unix n em habilitar smtp -v -v o modo Debug. Para isso,

alternativa

consiste

primeiramente necessrio editar o arquivo /etc/postfix/master.cf para adicionar o parmetro -D ao daemon smtpd: smtp unix n smtpd -D

Em seguida, necessrio editar o arquivo /etc/postfix/main.cf para habilitar a utilizao da ferramenta strace, de acordo como exibido no quadro abaixo:

Captulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 97

debugger_command = PATH=/bin:/usr/bin:/usr/local/bin; (strace -p $process_id 2>&1 | logger -p mail.info) & sleep 5 Por fim, necessrio instalar o strace e reiniciar o Postfix por meio do script /etc/init.d/postfix: aptitude install strace /etc/init.d/postfix restart

7.2.2. Debugando o Postfix com a ferramenta sendmail


A ferramenta sendmail do Postfix, pode produzir relatrios para fins de depurao. Estes relatrios mostram dados como: emissor/receptor, reescrita de endereos, alias e encaminhamento, alm de apresentar informaes sobre a entrega de mensagens nas caixas postais. O sendmail possui dois mtodos de testes, apresentados a seguir: What-if: relata o que iria acontecer, mas, na verdade, no entrega, de fato, o email. # sendmail -bv fulano@matrizX.com.br What happened: entrega o e-mail e relata o sucesso e/ou falha, incluindo as respostas de servidores SMTP remotos. # sendmail -v fulano@matrizX.com.br Os relatrios de ambos os comandos, iro para a caixa de e-mail do usurio que executou o comando. Para verificar o resultado, acesse a caixa de e-mail do usurio com o comando mail ou cat /var/mail/usuario, tomando o cuidado de trocar o parmetro do comando cat pelo caminho do arquivo que contm a mailbox do usurio.

Captulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 98

7.3. Exerccios
1. Qual o diretrio dos logs do Postfix? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. Para que serve o ID de fila no Postfix? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. Para que serve o ID de mensagem? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 7 TroubleshootIdentificando e Resolvendo Problemas no Postfix - 99

4.Observe o seguinte trecho do log:


Apr 13 11:16:12 srv postfix/pickup[18919]: 324285506B: uid=0 from=<root> Apr 13 11:16:12 srv postfix/cleanup[18962]: 324285506B: messageid=<20090413141612.324285506B@srv.tornis.com.br> Apr 13 11:16:12 srv postfix/qmgr[18921]: 324285506B: from=<root@srv.tornis.com.br>, size=290, nrcpt=1 (queue active) Apr 13 11:16:15 srv postfix/smtp[18964]: 324285506B: host g.mx.mail.yahoo.com[209.191.118.103] refused to talk to me: 421 Message from (200.198.212.34) temporarily deferred - 4.16.50. Please refer to http://help.yahoo.com/help/us/mail/defer/defer-06.html Apr 13 11:16:16 srv postfix/smtp[18964]: 324285506B: lost connection with a.mx.mail.yahoo.com[67.195.168.31] while sending RCPT TO Apr 13 11:16:17 srv postfix/smtp[18964]: 324285506B: to=<rtornis@yahoo.com.br>, relay=b.mx.mail.yahoo.com[66.196.97.250]:25, delay=4.9, delays=0.04/0.01/4.6/0.2, dsn=2.0.0, status=deliverable (250 recipient <rtornis@yahoo.com.br> ok)

Explique o que ocorreu: ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

5. Como posso debugar um domnio especfico? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 8 Instalando e Configurando o OpenLDAP - 100

Captulo 8 Instalando e Configurando o OpenLDAP

Captulo 8 Instalando e Configurando o OpenLDAP - 101

8.1. Introduo
O OpenLDAP um software livre do complexo e oneroso padro X.500. que implementa o protocolo LDAP -

Lightweight Directory Access Protocol que constitui-se como uma simplificao A funo principal do LDAP prover um servio de diretrios onde informaes podem ser dispostas de maneira hierrquica para facilitar operaes de leitura e busca. Atualmente, o LDAP um servio presente em muitos ambientes de TI com o intuito de centralizar informaes e configuraes comuns a diversos clientes e sistemas. No contexto do Postfix, a integrao com o LDAP constitui-se em uma maneira robusta e organizada de centralizar informaes a respeito das contas de e-mails com suas respectivas senhas e demais informaes correlatas, tais como identificaes pessoais, caminho para a sua mailbox, dentre outras. Neste caso, ao invs dos seus usurios possurem contas vlidas no sistema operacional do servidor de e-mails, toda a base de usurios ficar em um diretrio estruturado que pode ser mantido e gerenciado com muito mais facilidade e segurana. Outras informaes como as tabelas de pesquisa ( lookup tables) para os aliases (Falaremos sobre trabelas de pesquisas e aliases no captulo 10) tambm podem ser, perfeitamente, consolidadas, armazenadas e mantidas em servidores LDAP. O OpenLDAP possui a mesma estrutura do DNS, ou seja, armazena as informaes hierarquicamente.

Captulo 8 Instalando e Configurando o OpenLDAP - 102

A figura acima, representa a estrutura organizacional que utilizaremos para armazenar as informaes dos nossos domnios e usurios. O objeto pai ou RAIZ, o topo da estrutura, seguindo a lgica hierrquica, os demais nveis possuem a referencia do objeto pai e seus subnveis. O OpenLDAP possui basicamente 2 arquivos de configurao: splad.conf e ldap.conf. Alm deles, existem os arquivos de schema que so um conjunto de regras que define os atributos e controles indicando onde cada dado pode ser armazenado. Se um objeto no obedecer s regras do schema ento ele no pode ser inserido no servio de diretrio. No nos aprofundaremos na ferramenta OpenLDAP, vamos apenas abordar as configuraes necessrios para a nossa infraestrutura de correio eletrnico. Para mais detalhes sobre o OpenLDAP acesse http://www.openldap.org/ .

8.2. Comandos de Administrao do OpenLDAP


O OpenLDAP possui comandos que auxiliam o administrador a incluir, alterar, excluir e pesquisar informaes dentro do servio de diretrio. Os comandos esto divididos em: cliente e servidor.

Captulo 8 Instalando e Configurando o OpenLDAP - 103

8.2.1. Comandos do Servidor


Os comando do servidor s pode ser executado na mquina em que o OpenLDAP est instalado. slapd slapadd Deamon do OpenLDAP Para adio de informaes atravs de arquivos LDIF

slapindex Utilizado para reindexar a base de dados utilizado pelo OpenLDAP DICA Assim como em banco de dados relacionais, o procedimento de reindexao importante para performance do OpenLDAP, especialmente nas consultas. slaptest Para testar se o arquivo de configurao est correto

slappasswd Usado para gerar a senha (Hash) para o atributo de senhas do OpenLDAP (userPassword)

ATENO Para usar os comandos do servidor necessrio que o daemon slapd esteja parado, ou seja, o OpenLDAP no pode estar ativo.

8.2.2. Comandos do Cliente


ldapsearch ldapadd Permite realizar consultas no servio de diretrio Assim com slapadd, insere informaes no servio de diretrio usando o formato de arquivo LDIF, porm com o OpenLDAP ativo. Altera informaes no servio de diretrio usando formato de arquivo LDIF. Deleta informaes no servio de diretrio usando formato de arquivo LDIF. Troca senha de usurios. Esse comando afeta diretamente o atributo userPasswd que armazena as senhas no OpenLDAP.

ldapmodify ldapdelete ldappasswd

8.2.3. O formato LDIF


As informaes em um diretrio LDAP podem ser inseridas, removidas ou alteradas por meio do LDIF - LDAP Interchange Format, um formato criado e especificado como parte integrante do prprio protocolo LDAP para essa finalidade.

Captulo 8 Instalando e Configurando o OpenLDAP - 104

O quadro abaixo mostra um exemplo de arquivo LDIF para representar uma estrutura composta por um n principal (dc=dominios,dc=empresa) que contm dois containers para armazenar as contas de e-mails dos usurios dos domnios matrizX.com.br e filialX.com.br, representados Em pelas e seguida, entradas existem cujo DN ou=matrizX.com.br,dc=dominios,dc=empresa dc=dominios,dc=empresa, citados. respectivamente. ou=filialX.com.br, mais duas

entradas LDIF que representam uma conta de e-mail em cada um dos domnios

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

Captulo 8 Instalando e Configurando o OpenLDAP - 105

8.3. Prtica Dirigida


Instalando o OpenLDAP # aptitude install slapd ldap-utils Caso, dentre os seus repositrios de pacotes, estejam os DVDs/CDs da distribuio instalada em seu servidor, possvel que o comando aptitude solicite a insero de algum ou alguns desses DVDs/CDs. Para mais informaes a respeito dos mecanismos de instalao e manuteno dos pacotes de seu servidor, consulte a documentao da sua distribuio GNU/Linux. Aps baixar os pacotes, dependendo da configurao de seu sistema operacional, possvel que a execuo do comando anterior j solicite algumas informaes para compor a configurao do LDAP. Responda a todas as questes considerando os valores default j sugeridos. No se preocupe. Todas as configuraes sero refeitas a partir da edio do arquivo /etc/ldap/slapd.conf que ser apresentado adiante. Terminada a instalao dos pacotes, pare o servidor LDAP, siga os procedimentos descritos abaixo com os seguintes comandos: Pare o OpenLDAP # /etc/init.d/slapd stop Edite o /etc/default/slapd e modifique o parmetro: #vim /etc/default/slapd SLAPD_CONF=/etc/ldap/slapd.conf Remova a base de dados criada no momento da instalao # rm /var/lib/ldap/* Copie o exemplo do arquivo slapd.conf # cp /usr/share/doc/slapd/examples/slapd.conf /etc/ldap/ Mude o dono e o grupo do arquivo slapd.conf # chown openldap.openldap slapd.conf

Captulo 8 Instalando e Configurando o OpenLDAP - 106

8.3.1. Editando o arquivo /etc/ldap/slapd.conf


Ser utilizado o schema qmail.schema para organizar os atributos das contas de e-mails, apesar de ser possvel utilizar outros schemas como o authldap.schema provido por um dos pacotes do Courier. Outra possibilidade, apesar de mais trabalhosa, criar um schema prprio. Essa alternativa, entretanto, pode dificultar tambm a integrao dessa base LDAP com outros aplicativos. . O motivo da escolha do qmail.schema que este schema oferece diversas funcionalidades interessantes dentre as quais o suporte cotas de e-mail por tamanho da caixa postal e/ou por nmero de de mensagens. Antes de criar suas contas de e-mails utilizando o qmail.schema,

necessrio incorpor-lo ao seu servidor LDAP. Para tanto, o primeiro passo consiste em obt-lo a partir da Internet. Isso pode ser feito diretamente na Internet em diversos sites. Dica o qmail.schema pode ser obtido em wget "http://trac.expressolivre.org/export/5192/branches/2.2/docexpressolivre/debian/arqs-conf/etc/ldap/schema_utf8/qmailuser.schema" -O qmail.schema Em seguida, salve-o no diretrio /etc/ldap/schema. Por fim, edite o arquivo /etc/ldap/slapd.conf, que controla o funcionamento do daemon do LDAP e adicione a clusula include /etc/ldap/schema/qmail.schema, e demais configuraes apresentadas no quadro a seguir: # vi /etc/ldap/slapd.conf include /etc/ldap/schema/qmail.schema suffix rootdn rootpw "dc=empresa" "cn=admin,dc=empresa" "123"

Voc pode usar o slappasswd para gerar em rootpw senha hash ex: # slappasswd -s 123 ## Indexando os campos para performance nas consultas index objectClass eq

Captulo 8 Instalando e Configurando o OpenLDAP - 107 index index index cn,sn,ou uid,uidNumber,gidNumber mail,mailAlternateAddress eq,sub,approx eq eq,pres,sub

## Ajustando os permissionamentos access to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=empresa" write by anonymous auth by self write by * none access to * by dn="cn=admin,dc=empresa" write by * read possvel ainda incorporar mais funcionalidades ao esquema LDAP que est sendo utilizado para o registro das contas de e-mails atravs do patch qmail-ldap. Mais informaes podem ser obtidas diretamente no site do projeto(www.qmail-ldap.org), onde possvel encontrar as verses mais recentes do patch, documentao e caractersticas.

8.3.2. Iniciando o slapd


Uma vez configurado o servidor LDAP, esse servio deve ser inicializado atravs do script /etc/init.d/slapd, conforme apresentado no comando seguinte: # /etc/init.d/slapd start

8.3.3. Inserindo o domnio e os usurios atravs do LDIF


Crie o seguinte arquivo /opt/estrutura_correio.ldif contendo o seguinte contedo: # vi /opt/estrutura_correio.ldif dn: dc=empresa dc: empresa o: empresa objectClass: top objectClass: dcObject objectClass: organization

Captulo 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

Captulo 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 Agora vamos inseri-lo com o com o seguinte comando: ldapadd -x -D cn=admin,dc=empresa -W -h localhost -f /opt/estrutura_correio.ldif Onde:

-h

host no qual se vai conectar usa a autenticao

-p porta de conexo. Por padro a 389-x simples -x -D -W -f Autenticao sem encriptao

cn=admin,dc=dominios,dc=empresa - usurio que ir autenticar com permisso para incluir registros dentro do OpenLDAP pede o prompt de senha arquivo LDIF que ser interpretado

Captulo 8 Instalando e Configurando o OpenLDAP - 110

8.3.4. Modificando usurios no OpenLDAP


Crie o seguinte arquivo em /opt/modifica.ldif. dn: uid=98765432100,ou=filialx.com.br,dc=empresa changetype: modify replace: mailAlternateAddress mailAlternateAddress: maria.cunha@filialx.com.br O parmetro changetype: modify informa para o interpretador que a operao ser de alterao. O parmetro replace: mailAternateAddress informa para dito. Para realizar a alterao, execute o comando: ldapmodify -x -D cn=admin,dc=empresa -W -h localhost -f /opt/modifica.ldif o interpretador qual atributo sofrer alterao e por ultimo, mailAlternateAddress: maria.cunha@filialx.com.br, que o valor propriamente

8.3.5. Realizando troca de senhas dos usurios


Para realizar a troca de senha de um determinado usurio execute o comando: ldappasswd -x -W -D "cn=admin,dc=empresa" "uid=98765432100,ou=filialx.com.br,dc=empresa" -s senha_nova

Onde: -s Informa a senha nova do usurio

Os demais parmetros so iguais aos dos comandos anteriores.

8.3.6. Consultando registros no OpenLDAP


Para consultar registros no OpenLDAP digite o comando: ldapsearch -x -D "cn=admin,dc=empresa" -b "dc=empresa" -W -h localhost -LLL

Captulo 8 Instalando e Configurando o OpenLDAP - 111 Onde: -LLL imprime o resultado sem os comentrios Para consultar um atributo especfico: ldapsearch -x -D "cn=admin,dc=empresa" -b "dc=empresa" 'mail=maria*' -W -h localhost -LLL Atente para a parte do comando que est em negrito, neste caso estamos pesquisando o atributo mail.

8.3.7. Removendo um usurio do OpenLDAP


Execute o seguinte comando: ldapdelete -x -D "cn=admin,dc=empresa" -W -h localhost "uid=98765432100,ou=filialx.com.br,dc=empresa"

Captulo 8 Instalando e Configurando o OpenLDAP - 112

8.4. Laboratrio
1. Conforme apresentado no item 4.3 Pratica Dirigida, incluir os usurios: 1. Maria Neves em filialx.com.br 2. Fulano de Ciclano em matrizx.com.br 3. Beltrano de Fulano em matrizx.com.br 4. Ciclano de Beltrano em filialx.com.br

2. Mude a senha para todos usurios para 4linux 3. Realize uma consulta de todos usurios apresentado somente o atributo cn e jogue no arquivo usuarios.ldif

Captulo 8 Instalando e Configurando o OpenLDAP - 113

8.5. Exerccios
1. O que o OpenLDAP? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. O que um arquivo em formato LDIF? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. Qual a diferena entre os comandos slapadd e ldapadd? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 8 Instalando e Configurando o OpenLDAP - 114

4. O que so os schemas para o OpenLDAP? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL - 115

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL - 116

9.1. Introduo
Uma das grandes vantagens do Dovecot a sua integrao, e conforme descrito no Captulo 8 Instalao do OpenLDAP, integraremos o Dovecot para fins de autenticao de usurios. Alm disso, essa integrao permitir a consulta de informaes de caixas postais(usurio,apelidos e local de armazenamento) e domnios. Vamos entender tambm os recursos que o Dovecot oferece.

9.1.1. Interface de Autenticao SASL do Dovecot


O SASL um servio que manipula requisies de autenticao, sendo normalmente utilizado em conjunto com servios de correio. Suas funcionalidades so estendveis a qualquer software que necessite validar usurios. O SASL do Dovecot tem suporte a validar usurios atravs de vrios mtodos (AUTHENTICATION MECHANISMS), dentre os mais utilizados esto o PAM, LDAP, MySQL e PostgreSQL. Existe tambm o SASL do Cyrus denominado saslauthd que largamente utilizado. Com vistas a atender o nosso curso o SASL utilizado ser o que vem presente junto ao pacote do Dovecot

9.2. Prtica Dirigida 9.2.1. Preparando o ambiente para armazenamento das caixas postais
Nesse usar nesse modelo o formato Maildir para isso iremos criar o usurio VMAIL e o grupo VMAIL para realizar as gesto das mensagens para o Dovecot e Postfix. Criando o usurio, grupo e diretrio dos e-mails vmail (VAR MAIL): # groupadd -g 240 vmail # useradd -m -g 240 -u 240 -d /home/vmail -s /bin/false vmail # mkdir -p /home/vmail/domains/matrizX.com.br # mkdir -p /home/vmail/domains/filialX.com.br # chown -R vmail.vmail /home/vmail

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL - 117

9.2.2. Instalando o Dovecot


# aptitude install dovecot-common dovecot-imapd

9.2.3. Integrando e Configurando o Dovecot com OpenLDAP


Edite o arquivo /etc/dovecot/dovecot-ldap.conf e configure os parmetros conforme o modelo: 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 Observao: o valor mailQuota=userdb_quota=*:bytes=%$K o formato para a quota no dovecot. Veja mais detalhes em http://wiki.dovecot.org/Quota/Maildir

9.2.4. Configurando o Dovecot


Edite o arquivo /etc/dovecot/dovecot.conf # Habilitando os Protocolos protocols = imap imaps managesieve # Definindos em quais portas os protocolos responderam protocol imap { listen = *:143 ssl_listen = *:943 } protocol managesieve {

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL - 118 listen = *:2000 } # Permitindo autenticao 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 # Usurio que tem permisso para manipular as caixas e mensagens no Dovecot, neste caso o VMAIL mail_uid = 500 mail_gid = 500 mail_privileged_group = vmail # Essas opes afeta o desempenho do servidor IMAP dotlock_use_excl = yes fsync_disable = yes # Gerente do protocolo imap, habilitando os plugins que sero 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, responsvel por receber do postfix e entregar na caixa postal do usurio protocol lda { postmaster_address = postmaster@matrizx.com.br hostname = mailx.matrizx.com.br mail_plugins = quota sieve

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao 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 autenticao do Dovecot que ser utilizando tanto pelo Dovecot quanto para o Postfix para autenticao 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 } } }

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL - 120 # Configurao de plugins plugin { # Definido Quotas Padro 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 usurio sieve=/home/vmail/domains/%d/%n/%n.sieve # Pastas que sero criadas no 1 login do usurio autocreate = Spam autocreate2 = Trash autocreate3 = Drafts autocreate4 = Sent autosubscribe = Spam autosubscribe2 = Trash autosubscribe3 = Drafts autosubscribe4 = Sent }

9.2.5. Configurado o script de aviso de quota


Crie o arquivo /usr/local/sbin/quota-warning.sh com o seguinte contedo: #!/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 Usurio, Esta mensagem e apenas para informar que sua caixa postal esta atingindo $PERCENT%.

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL - 121 E recomendado que voce exclua mensagens irrelevantes, esvazie a pasta Lixeira e a pasta Spam. Atenciosamente, Postmaster" echo -e "$msg" | /usr/sbin/sendmail -f $FROM "$USER" exit 0 Reiniciando o Dovecot # /etc/init.d/dovecot restart Testando o Dovecot # telnet localhost 143 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready. a login joao@matrizx.com.br 123 a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS QUOTA] Logged in Se o resultado for com apresentado acima o usurio joao@matrizx.com.br esta logado no Dovecot. Caso no tenha dado certo verifique os logs em mail.log Observe se esse erro apresentado: Nov 29 10:22:53 mailx dovecot: IMAP(12345678900): mail_location: Ambiguous mail location setting, don't know what to do with it: /home/vmail/domains/matrizx.com.br/joao/Maildir/ (try prefixing it with mbox: or maildir:) Esse erro devido a falta do valor maildir no atributo mailMessageStore no OpenLDAP

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL - 122 Verifique se o Dovecot criou as pastas do usurio joao em: # ls -la /home/vmail/domains/matrizx.com.br/joao/Maildir/

Captulo 9 Servidor POP/IMAP com Dovecot e Integrao com o OpenLDAP e SSL - 123

9.3. Exerccios
1. Qual a diferena entre o protocolo POP e IMAP? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. Qual a funo do LDA no Dovecot ? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. Qual a funo do usurio VMAIL? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 124

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 125

10.1.

Introduo

O Postfix possui grande flexibilidade quando o assunto integrao, especialmente com base de dados como mysql, PostgreSQL e LDAP. Neste capitulo iremo aprender como realizar essa integrao e como o Postfix se comporta. Tambm veremos conceitos de usurios e domnios virtuais possibilitando a hospedagem de mltiplos domnios. Alm disso vamos configurar o SMTP Autenticado para garantir que os usurios internos ou externos possam se autenticar antes de enviar uma mensagens atravs do Postfix.

10.2. Pratica Dirigida


Verificando se o mdulo do ldap para o Postfix esta instalado # postconf -m btree cidr environ hash internal ldap nis pcre proxy regexp sdbm static tcp unix Veja que o LDAP aparece na consulta aos mdulos disponveis no Postfix. Caso no tenha basta instalar o mdulo com o comando aptitude. Veja:

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 126 # aptitude install postfix-ldap Como vamos utilizar a interface de autenticao SASL do Dovecot se faz necessrio verificar se o Postfix tem suporte ao SASL do Dovecot, para isso execute o seguinte comando: # postconf -a Se o resultado abaixo aparecer que o Postfix esta em conformidade cyrus dovecot Alm da alterao do arquivo master.cf deve-se alterar tambm o main.cf do Postfix e adicionar as seguintes linhas: # vi /etc/postfix/main.cf smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes Aps essas configuraes, reinicie o Postfix: # /etc/init.d/postfix restart

10.2.1. Testando os mtodos de autenticao


1 - MTODO PLAIN

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 127


1

# perl -MMIME::Base64 -e 'print

encode_base64("\000joao\@matrizX.com.br\000123");'

2 3 4 5 6 7 8 9

telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.matriz.com.br - Empresa DOMINIO S/A helo mail.matriz.com.br 250 mail.matriz.com.br auth plain AGpvYW9AbWF0cml6LmNvbS5icgAxMjM= 235 2.0.0 Authentication successful quit 221 2.0.0 Bye Connection closed by foreign host.

10 11 12 13

2 - MTODO LOGIN # perl -MMIME::Base64 -e 'print encode_base64("joao\@matrizX.com.br");' Y2ljbGFub0Bkb21pbmlveC5jb20uYnI= # perl -MMIME::Base64 -e 'print encode_base64("123");' MTIz # telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 128

220 mail.matriz.com.br - Empresa DOMINIO S/A helo mail.matriz.com.br 250 mail.matriz.com.br auth login 334 VXNlcm5hbWU6 Y2ljbGFub0Bkb21pbmlveC5jb20uYnI= 334 UGFzc3dvcmQ6 MTIz 235 2.0.0 Authentication successful quit 221 2.0.0 Bye Connection closed by foreign host.

10.3. Identificando problemas de autenticao


Como estamos utilizando o OpenLDAP como nossa base de usurios necessrio aumentar a verbosidade de seu log para isso edite o arquivo slapd.conf e coloque o parmetro log level para 256 como no exemplo: # vi /etc/ldap/slapd.conf loglevel 256 Reiniciar o slapd # /etc/init.d/slapd restart Verifique o que esta chegando de parmetros no syslog use o comando tail -f. Veja o exemplo: # tail -f /var/log/syslog | grep slapd Verifique tambm o arquivo mail.log e veja o que o Postfix e o Dovecot esta reclamando. Abaixo um trecho de log: May May 7 16:47:25 tine postfix/smtpd[1657]: connect from 7 16:47:38 tine dovecot: auth(default): client in:

localhost[127.0.0.1]

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 129 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 May May 7 16:47:40 tine postfix/smtpd[1657]: warning: localhost[127.0.0.1]: 7 16:47:40 tine dovecot: auth(default): client out: FAIL#0112 7 16:47:42 tine postfix/smtpd[1657]: disconnect from

SASL plain authentication failed:

localhost[127.0.0.1]

10.4. Criando certificados digitais para o Postfix com OpenSSL


O OpenSSL uma implementao de cdigo aberto dos protocolos SSL e TLS. A biblioteca, escrita na linguagem C, implementa as funes bsicas de criptografia e disponibiliza vrias funes utilitrias.

10.4.1. Criptografia Assimtrica


Este tipo de criptografia usa um par de chaves diferentes em que, no sendo possvel obter uma chave a partir da outra, as duas esto relacionadas matematicamente, conseguindo uma decifrar o que foi cifrado pela outra. Com esta caracterstica possvel que uma das chaves seja publicada, a chave pblica. Esta forma de criptografia tem como vantagens o fato da chave privada se manter protegida e ser s do conhecimento do seu titular. Como desvantagens tem o fato do seu desempenho ser mais lento em consequncia de utilizar um processo algortmico mais complexo.

10.4.2. Padro X.509


Os certificados digitais X.509 incluem no apenas o nome e a chave pblica de um usurio, mas tambm outras informaes sobre o usurio. Esses certificados so mais que um ponto de partida em uma hierarquia digital de confiana. Eles permitem que a autoridade de certificao oferea ao receptor de um certificado um meio de confiar no apenas na chave pblica do indivduo do certificado, mas tambm em

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 130 outras informaes sobre o indivduo do certificado. Essas outras informaes podem incluir, entre outras coisas, um endereo de e-mail, uma autorizao para assinar documentos de um determinado valor ou a autorizao para se tornar uma autoridade de certificao e assinar outros certificados. Os certificados X.509 e muitos outros certificados tm um prazo de validade. Um certificado pode expirar e no ser mais vlido. Uma autoridade de certificao pode revogar um certificado por vrios motivos. Para processar as revogaes, uma autoridade de certificao mantm e distribui uma lista de certificados revogados chamada CRL (lista de certificados revogados). Os usurios da rede acessam a CRL para determinar a validade de um certificado.

10.4.3. Instalando o OpenSSL:


# aptitude install openssl

10.4.4. Gerando a requisio do certificado:


# mkdir /etc/postfix/ssl # cd /etc/postfix/ssl # openssl req -new -out servidor.reg -keyout servidor.privkey

10.4.5. Descriptografando a chave privada:


Esse processo se faz necessrio para que os servios que no solicitem a senha de descriptografia da chave privada. # openssl rsa -in servidor.privkey -out servidor.key

10.4.6. Gerando um certificado auto-assinado:


# openssl x509 -in servidor.reg -out servidor.cer -req -signkey servidor.key -days 365

10.4.7. Verificando o contedo do certificado:

# openssl x509 -noout -text -in servidor.cer Certificate: Data:

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 131 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

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 132

10.4.8. Configurando o Postfix com SSL/TLS - Suporte a Certificados Digitais


Altere os parmetros do arquivo /etc/postfix/main.cf para suporte ao TLS: smtpd_tls_cert_file=/etc/postfix/ssl/servidor.cer smtpd_tls_key_file=/etc/postfix/ssl/servidor.key smtpd_use_tls=yes Altere os parmetros do arquivo /etc/postfix/master.cf para suporte ao SSL: # ====================================================================== # service type # # ====================================================================== smtp # # inet n n smtpd smtpd #submission inet private unpriv (yes) (yes) chroot (yes) wakeup maxproc command + args (never) (100)

-o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes inet n smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

smtps

10.5. Integrando e Configurando o Postfix com OpenLDAP e Dovecot


A integrao com uma base dedados qualquer bastante simples e suportada pelos mapas de pesquisa oferecidos pelas bibliotecas correspondentes. No caso do OpenLDAP. Conforme descrito no capitulo anterior a estrutura que iremos utilizar para armazenar de caixas postais ser o MAILDIR. E o responsvel por entragar as mensagens at o Dovecot ser o Postfix atravs do programa Deliver do Dovecot. Para que o Postfix possa receber e enviar essas mensagens se faz necessrio a integrao com o LDA(Deliver do Dovecot). Vimos anteriormente no tpico 9.2.4 do capitulo 9 que o protocolo LDA est configurado para aceitar realizar a autenticao e entregas das mensagens vindas do Postfix.

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 133 Para relembrar veja a configurao feira no arquivo /etc/dovecot/dovecot.conf # Configurao do Protocolo LDA para entrega de mensagens na caixa postal do usurio e com plugins de quotas e filtros protocol lda { postmaster_address = postmaster@matrizx.com.br hostname = mailx.matrizx.com.br mail_plugins = quota sieve 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 }

# Configurando o mecanismo de autenticao do Dovecot que ser utilizando tanto pelo Dovecot quanto para o Postfix para autenticao 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

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 134 user = postfix group = postfix } } } Observando as linhas em negrito acima, identificamos a configurao necessria para o funcionamento da entrega de mensagens.

10.5.1. Editando o arquivo /etc/postfix/master.cf no Postfix:


## Entrega via LDA Dovecot dovecot unix n n pipe

flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f $ {sender} -d ${recipient}

10.5.2. Editando o arquivo /etc/postfix/main.cf no Postfix:


# Definindo para onde o Postfix ter que transportar a mensagem dovecot_destination_recipient_limit = 1 # Dominios virtuais cadastrado no OpenLDAP virtual_mailbox_domains = ldap:/etc/postfix/ldap/vmd.cf # local para onde o Postfix ir realizar o transporte da mensagem virtual_transport = dovecot # Mapeamento de usurios logados. Necessrio para impedir que um usurio logado envie mensagens em nome de outro remetente smtpd_sender_login_maps = ldap:/etc/postfix/ldap/vms.cf

10.5.3. Criando os arquivos vmd.cf e vms.cf


# mkdir /etc/postfix/ldap # vi /etc/postfix/ldap/vmd.cf server_host = localhost server_port = 389 bind_dn = cn=admin,dc=empresa bind_pw = 123 search_base = dc=empresa

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 135 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

Aps essas configuraes, reinicie o Postfix: # /etc/init.d/postfix restart

10.5.4. Testando as consultas virtuais LDAP com o postmap:


# postmap -q matrizX.com.br ldap:/etc/postfix/ldap/vmd.cf # postmap -q filialX.com.br ldap:/etc/postfix/ldap/vmd.cf # postmap -q joao@matrizX.com.br ldap:/etc/postfix/ldap/vms.cf # postmap -q maria@filialX.com.br ldap:/etc/postfix/ldap/vms.cf

Captulo 10 Postfix Integrao com OpenLDAP, Dovecot e Autenticao SMTP - 136

10.6. Exerccios
1. Qual o objetivo da ativao do SSL/TLS no Postfix? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. Qual o objetivo da ferramenta SASL quando integrada ao Postfix? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. Qual a vantagem de usar o OpenLDAP integrado ao Postfix? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP - 137

Captulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP

Captulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP - 138

11.1. Introduo
Thunderbird um cliente livre de correio eletrnico e notcias criado pela Mozilla. Oferece recursos necessrios a empresas, tais como S/MIME, assinaturas digitais, criptografia de mensagens, suporte a certificados e dispositivos de segurana. Permite ainda adicionar novo recursos a medida que precisar atravs de extenses. As extenses so ferramentas poderosas que auxiliam a criar um cliente de e-mail de acordo com as necessidades. Atualmente o Mozilla concentra esforos para manter um verso enterprise que tem i seu ciclo de vida maior chamada de ESR, nesse momento a verso que esta na ESR e a 10.0

11.1.1. Baixando a verso ESR do Thunderbird


Acesso o seguinte endereo: http://www.mozilla.org/en-US/thunderbird/organizations/all-esr.html Baixe a verso correspondente portugus Brasil Descompacte o arquivo: # tar jxfv thunderbird-10.0.4esr.tar.bz2 Acesse o diretrio criado e execute o thunderbird: # cd thunderbird # ./thunderbird Configure os campos conforme a figura abaixo:

Captulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP - 139

Clique em no boto continuar

e depois em Configurao Manual e

preencha os campos conforme a figura abaixo:

Aps preenchido todos os campos clique no boto Criar Conta

Captulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP - 140 Obs: Caso aparecer a tela de certificados aceite todos tanto o servidor IMAP quando do servidor SMTP

Realize os testes de envio e recebimento para o usurio joao@matrizx.com.br O Thunderbird oferece um gama de extenses e plugins que aumenta a produtividade recomendamos alguns: Contacts Side Bar Barra de contatos https://addons.mozilla.org/en-US/thunderbird/addon/70 Signature Switch - Multiplas assinaturas https://addons.mozilla.org/en-US/thunderbird/addon/611 Lightning - Calendrio e Agenda https://addons.mozilla.org/en-US/thunderbird/addon/2313 Display Quota Visualizar a quota de sua caixa postal https://addons.mozilla.org/pt-br/thunderbird/addon/display-quota/?src=search

Captulo 11 Instalando e Configurando o Cliente Thunderbird POP/IMAP - 141

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 142

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 143

12.1. Introduo
O RoundCube uma soluo de webmail gratuito e de cdigo aberto com uma interface de usurio de desktop fcil de instalar/configurar e que roda em um servidor Apache/PHP padro. O interessante que ele desenvolvido com recentes padres da Web, como XHTML e CSS 2. Roundcube inclui outras sofisticadas bibliotecas open-source como o PEAR, uma biblioteca IMAP derivado IlohaMail o editor de texto rico TinyMCE, Googiespell biblioteca para verificao ortogrfica.

12.2. Instalando e Configurado o Webmail RoundCube


O RoundCube tem uma grande vantagem que trabalhar com os bancos de dados Mysql, PostgreSQL, MSSQL ou Sqlite. Para o nosso ambiente iremos utilizar o banco de dados PostgreSQL. Siga os passos abaixo para a instalao da infraestrutura do RoundCube: # aptitude install postgresql-8.4 apache2 php5 php5-pgsql php5-gd O prximo 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 No passo anterior criamos o usurio roundcube e o banco de dados roundcube Agora vamos baixar a ultima verso Stable do RoundCube em: http://roundcube.net/download Coloque o arquivo no diretrio /var/www # mv roundcubemail-0.7.2.tar.gz /var/www # tar zxfv roundcubemail-0.7.2.tar.gz # mv roundcubemail-0.7.2 webmail

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 144 # chown -R www-data.www-data webmail/temp # chown -R www-data.www-data webmail/logs # chown -R www-data.www-data webmail/config Agora abra o seu navegador e vamos iniciar o processo de instalao e configurao do RoudCube. Para isso acesse http://ip_do_servidor/webmail/installer/ A seguinte tela ira aparecer:

Clique no boto START INSTALATION. A prxima tela ir realizar um teste de dependncias do PHP. Verifique se todas as dependncias esto satisfeitas. Dependncias em laranja so opcionais e as vermelhas so obrigatrias. Veja a tela abaixo:

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 145

Neste caso o RoundCube esta reclamando de uma parmetro do PHP que no esta com o valor certo para a aplicao. Para realizar essa correo siga os passos: Altere o arquivo /etc/apache2/sites-enabled/000-default e procure o seguinte trecho e altere o parmetro AllowOverride para All conforme o Exemplo: # 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 Agora em seu navegado digite as teclas juntas CTRL+F5 para atualizar a pagina do RonudCube. Observe que as dependncias fora satisfeitas:

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 146

Agora clique no boto Next. Essa tela tem o objetivo de configurar o comportamento do RoundCube, abaixo segue a relao dos campos que deve ser alterados: General configuration product_name = Dominio S/A Data Base Setup Driver=PgSQL Database server=localhost Database name=roundcube Database user name = roundcube Database password=123 IMAP Settings default_host=localhost

Captulo 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 Use the current IMAP username and password for SMTP

authentication=Maque Display settings & user prefs language=pt_BR Aps configurado os parmetros acima clique no boto CREATE CONFIG Nesse momento o instalado do RoundCube cria 2 arquivos: main.inc.php db.inc.php Voc deve realizar o Donwload desses aquivos e coloca-los em

/var/www/webmail/config. Aps realizado o Download de a permisso para o usurio do Apache realizar a leitura dos aquivos: # chown -R www-data.www-data /var/www/webmail/config -R Volte para o instalador do RoundCube e clique no boto CONTINUE Se tudo estiver correto a seguinte tela ira aparacer

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 148

Nesta mesma pgina podemos realizar um teste de conectividade com os servios SMTP e IMAP para isso basta preencher os campos. Veja o exemplo:

A fim de garantir a segurana do RoundCube vamos desabilitar o instalar configurando o arquivo /var/www/webmail/config/main.inc.php no enable_installer para false.

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 149

12.2.1. Finalizando a instalao do Webmail


Acesse o RoundCube: http://seu_ip/webmail/

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 150

12.2.2. Estendendo o RounCube Plugins


Assim com o Thunderbird o RoundCube possui plugins que ajudam na produtividade do usurio uma deles o plugin de filtros Sieve. O Sieve uma linguagem de filtros para e-mail (http://en.wikipedia.org/wiki/Sieve_ %28mail_filtering_language%29) que tem se tornado comum em servidores IMAP. Por ser padronizada possvel migar os filtros de uma servidor para outro sem grande esforo. 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."; } Para habiliar o plugin de filtros no RoundCube siga os seguintes passos: # cd /var/www/webmail/plugins/managesieve/ # mv config.inc.php-dist config.inc.php # cd /var/www/webmail/config Agora habilite o plugin em /var/www/webmail/config/main.inc.php $rcmail_config['plugins'] = array("managesieve"); Agora no Webmail RoundCube acesse: Configuraes Pessoais Clique na Abra Filtro Veja a figura abaixo:

Captulo 12 Instalando e Configurando o Cliente Webmail RoundCube POP/IMAP - 151

Crie o filtro conforme a sua necessidade, para conferir se o filtro foi criado liste o diretrio do usurio joao em; # ls -l /home/vmail/domains/matrizx.com.br/joao/ o resultado joao.sieve

Captulo 13 Antivrus e AntiSpam - 152

Captulo 13 Antivrus e AntiSpam

Captulo 13 Antivrus e AntiSpam - 153

13.1. ClamAV 13.1.1. Introduo


O ClamAV um conjunto de ferramentas antivrus de cdigo 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 vrus conhecidos. O pacote fornece um daemon de mltiplas linhas de execuo flexvel e escalonvel. O ClamAV oferece proteo a maioria de tipo de documentos: Arquivos executveis Documentos Microsoft: MS OLE,Cabinet, CHM Outros formatos: RAR, ZIP, GZIP, BZIP2, TAR

O ClamAV formado pelo servio clamd que recebe requisies de analise de arquivos pelo pipe /var/run/clamav/clamd.ctl e pelo daemon Freshclam, responsvel pelas atualizaes da base de vrus conhecidos. Enquanto o daemon freshclam estiver atualizando a base de informaes de vrus o arquivo de lock /var/lib/clamav/.dbLock existir, fazendo com que o servio de atualizao no altere a base de definies de vrus /var/lib/clamav e o clamd estar disponvel para uso aps a atualizao.

13.1.2. Instalando o ClamAV

A verso do ClamAV disponvel nos repositrios do Debian Lenny no so funcionais. Portanto instalaremos os pacotes do repositrio oficial do projeto. Para isso, ser necessrio adicion-los ao nosso sources.list, para em seguida, instalar o ClamAV. Seguem os passos: # echo deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free >> /etc/apt/sources.list # aptitude update

Captulo 13 Antivrus e AntiSpam - 154 # aptitude install clamav-daemon clamav-freshclam arj bzip2 cabextract cpio file gzip lha nomarch pax rar unrar unzip zip zoo

13.1.3. Entendendo o Clamd.conf


LocalSocket /var/run/clamav/clamd.ctl FixStaleSocket true User clamav AllowSupplementaryGroups true ScanMail true ScanArchive true ArchiveLimitMemoryUsage false ArchiveBlockEncrypted false MaxDirectoryRecursion 15 FollowDirectorySymlinks false FollowFileSymlinks false ReadTimeout 180 MaxThreads 12 MaxConnectionQueueLength 15 StreamMaxLength 10M LogSyslog true LogFacility LOG_LOCAL6 LogClean false LogVerbose true PidFile /var/run/clamav/clamd.pid DatabaseDirectory /var/lib/clamav SelfCheck 3600 Foreground false Debug false ScanPE true ScanOLE2 true ScanHTML true DetectBrokenExecutables false MailFollowURLs false ExitOnOOM false LeaveTemporaryFiles false AlgorithmicDetection true

Captulo 13 Antivrus e AntiSpam - 155 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 Seguem alguns comentrios a respeito dos parmetros em destaque: User clamav - Usurio que executar o daemon; ScanMail true - Habilita o clamav para scanear e-mails; ScanArchive true - Habilita o clamav para scanear arquivos (usado com o Samba); MaxThreads 12 - Nmero mximo de threads configura-se o MaxThreads ~ 2 * N de cores + 1 como recomendao

MaxConnectionQueueLength 15 - Nmero mximo de conexes em fila de espera; StreamMaxLength 10M - Tamanho mximo do arquivo, utilizado quando trabalha em cluster. Deve ter o mesmo tamanho permitido pelo seu MTA; Debug false - Desabilita o debug.

13.1.4. Testando o ClamAV


Para testar o ClamAV pode-se utilizar um arquivo que um falso vrus. Chamase eicar_com e pode ser baixado da URL abaixo: # wget --no-check-certificate https://secure.eicar.org/eicar_com.zip # clamdscan eicar_com.zip

Captulo 13 Antivrus e AntiSpam - 156

13.2. SpamAssasin 13.2.1. Introduo


SpamAssassin um consolidado filtro de spam distribudo atravs da licena Apache. O filtro SpamAssassin funciona dando uma pontuao a cada mensagem que entra, baseado em diferentes analises feitas em todo o contedo da mensagem. De acordo com esta anlise, ele acrescenta cabealhos na mensagem que informam o seu "nvel de spam", e os testes nos quais ela no passou. No final, a mensagem recebe uma pontuao ("score"). Se o score fica acima de certo limite (5 por default), a mensagem colocada num arquivo chamado "bulk" dentro da pasta "mail" do usurio. Portanto, ser colocada em mail/bulk. Mas, se a mensagem tem um score muito alto , ela caracterizada SPAM. Entretanto, se o score for inferior a 5, a mensagem deixada na pasta usual (Inbox). Uma das grandes vantagens do SpamAssassin que ele "aprende" na medida em que usado. Ele observa, pela pontuao das mensagens, quais so os tipos de SPAM que voc recebe e quais so os tipos de mensagens "limpas" tambm. Desta maneira ele passa a ser mais rigoroso com os SPAMS e menos rigoroso com as mensagens que ele acha que no so SPAM. Outra caracterstica do SpamAssassin a modificao de e-mail, ou seja, caso ele classifique a mensagem como SPAM alm de modificar os cabealhos da mensagem ele tambm modifica o corpo da mensagem, ele convertera a mensagem original em um anexo de e-mail, com um e-mail simples em torno dele.

Captulo 13 Antivrus e AntiSpam - 157

13.2.2. Instalando o SpamAssassin


Seguem os passos: # aptitude install spamassassin pyzor razor Edite /etc/default/spamassassin para ativar o SpamAssassin daemon ENABLED=1 Inicie o Spamassassin: # /etc/init.d/spamassassin start

13.2.3. Arquivos User_prefs.cf e local.cf


Os arquivos user_prefs e local.cf contem parmetros que definem o comportamento do Spamassasin. O user_prefs.cf foi criado para permitir que cada usurio possa configurar o spamassassin, j o local.cf para uso global, ou seja, o comportamento do spamassassin ser aplicado a todos os usurios. Entretantoo user_prefs.cf tem preferncia e suas configuraes prevalecero sobre as configuraes gerais. Porm se o uso do Spamassassin for como um daemon, no Postfix essa configurao se torna global para todos usurios. Geralmente esse lido pelo Spamassassin nos seguintes diretrios: /usr/share/spamassassin /etc/mail/spamassassin ~/.spamassassin/user_perfs

Abaixo temos um exemplo do arquivo user_prefs: use_bayes - utiliza deteo de spam atravs do algoritmo Bayes auto_learn utiliza o sistema de auto-aprendizado do Bayes. ok_languages - mensagens nas linguagens especificadas so consideradas vlidas, a qualquer outra ser atribuido o valor de UNWANTED_LANGUAGE_BODY (padro 2.800).

Captulo 13 Antivrus e AntiSpam - 158

ok_locales - permite apenas determinados cdigos de caracteres.

skip_rbl_checks habilita a execuo de testes RBL, e atribui valores baseados nos resultados.

use_razor2 - utiliza base de dados centralizada do Razor para deteo de spam conhecido.

use_dcc/use_pyzor - dois outros sistemas similares ao Razor dns_available - verifica existncia dos domnios atravs de queries DNS.

use_auto_whitelist - gera listas brancas baseadas no comportamento de longo termo de um determinado remetente (no utilizado no momento). score SYMBOLIC_TEST_NAME n.nn [ n.nn n.nn n.nn ] - aumenta ou diminui os scores padro de determinadas regras, onde SYMBOLIC_TEST_NAME o nome da regra que ser tratada e n.nn a pontuao desejada.

report_safe (0 | 1 | 2) (padro: 1) - Se esta opo estiver definida como 1, se uma mensagem recebida marcada como spam, em vez de modificar a mensagem original, SpamAssassin ir criar uma nova mensagem e anexar a mensagem original. Se esta opo estiver definida como 2, em seguida, a original ser anexado com um tipo de contedo text / plain . Esta configurao pode ser necessria a certos clientes de email que pode corromper anexos. Se esta opo estiver definida como 0, s modificado adicionando alguns X-Spam-cabealhos e nenhuma alterao ser feita no corpo da mensagem. X Alm disso, um cabealho com o nome-Spam-Report ser adicionado ao spam. Voc pode usar a opo remove_header para remover esse cabealho aps o ajuste report_safe a 0.

rewrite_header { subject | from | to } STRING -

Ao definir esta opo,

o cabealho ser marcado com o valor em STRING para indicar que uma mensagem spam.

Captulo 13 Antivrus e AntiSpam - 159 trusted_networks - Que redes ou hosts so "confiveis" em sua configurao. O exemplo acima ilustra a configurao do arquivo user_prefs, apenas alguns parmetros esto citados, para mais detalhes acesse: http://spamassassin.apache.org/full/3.1.x/doc/Mail_SpamAssassin_Conf.html

13.2.4. Treinando o SpamAssassin


O SpamAssassin necessita de treinamento afim de melhorar a sua deteco de spam, a funcionalidade bayesiana s ativada aps 200 registros de SPAM e 200 no SPAM. Apesar de ser uma rdua esse procedimento se faz necessrio para que o SpamAssassim possa atingir de 95% a 100% o acerto de mensagens que so SPAM e que no so SPAM. Para baixar spams de exemplo acesse o site: 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 Para treinar o SpamAssassin digite: # tar jxfv 20050311_spam_2.tar.bz2 # sa-learn --spam --progress spam_2 # rm -rf spam_2 # tar jxfv 20030228_spam_2.tar.bz2 # sa-learn --spam --progress spam_2 # tar jxfv 20030228_hard_ham.tar.bz2

Captulo 13 Antivrus e AntiSpam - 160

# sa-learn --spam --progress hard_ham # tar jxfv 20030228_easy_ham_2.tar.bz2 # sa-learn --ham --progress easy_ham_2 Voc pode criar um script que automatiza esse processo, e claro, contar com a ajuda de seus usurios 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 {} \; Salve em /usr/bin/autolearn_spam.sh e coloque a seguinte entrada /etc/cron.d/ # chmod 755 /usr/bin/autolearn_spam.sh # vi /etc/crond.d/autolearn_spam 0 0 * * * root /usr/bin/autolearn_spam.sh >/dev/null no

13.2.5. Testando o SpamAssassin


Pode-se utilizar o cliente do SpamAssasin para testar o seu daemon e ainda ver o resultado do relatrio de pontuao do mesmo. Em um terminal execute: # spamc -R < /usr/share/doc/spamassassin/examples/sample-spam.txt

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 161

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 162

14.1. Amavis 14.1.1. Introduo


O Amavisd-new um mdulo Perl que desempenha a ponte entre MTA e antivrus ou SpamAssassin. Ele se comunica com com MTA atravs do protocolo SMTP ou LMTP, ou usando programas. Possui boa performance na filtragem de emails e boa integrao com o Postfix e possuindo as seguintes caractersticas: Lista das checagens executadas pelo Amavis (no necessariamente na ordem em que ocorrem): Checagem de vrus usando ClamAV (clamd). Checagem de spam usando SpamAssassin (stand-alone). Anexos: Extenses proibidas exe|vbs|pif|scr|bat|cmd|com|cpl Extenses que no podem ser duplicadas - exe|vbs|pif|scr|bat|cmd| com|cpl|dll (ex.: arquivo.src.exe) Tipos MIME proibidos - application/x-msdownload|application/xmsdos-program|application/hta Cabealhos e textos que aumentam o score de spam - (verificar varivel @score_sender_maps no arquivo amavisd.conf)

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 163

Funcionamento do Amavis-New:

Por padro o amavis-new possui o arquivo amavisd.conf que concentra todos parmetros para sua configurao. Eles esta dividido em 9 sees de configuraes: Seo I Seo II Seo III Seo IV Seo V - Configuraes essenciais do amavis e MTA - Configurao do MTA do amavis-new - Configurao e comportamento do Log do amavis-new - Mensagens de Notificaes do amavis-new - Configurao e tratamento de remetentes e destinatrios,

incluindo excees, notificaes listas brancas e destino final caso uma mensagem esteja marcada como spam ou vrus. Seo VI Seo VII - Configurao dos limites de recursos para o amavis-new Integrao e Configurao de programas externos, anti-

virus e SpamAssassin Seo VIII - Debugging Seo IX - Policy banks (dynamic policy switching)

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 164

No

Debian

amavisd.conf

est

dividido

em

arquivos

localizados

em

/etc/amavis/conf.d: 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 seo do arquivo amavisd.conf, por exemplo o arquivo 20-debian_defaults o arquivo responsvel pelas configuraes de parmetros do SpamAssassim e ClamAV e o 15-av_scanners responsvel pela configurao dos possveis antivrus que podem ser utilizados.

14.1.2. Instalando Amavis-New


# aptitude install amavisd-new

14.1.3. Configurando Amavis-New


# vi /etc/amavis/conf.d/15-content_filter_mode use strict; # You can modify this file to re-enable SPAM checking through spamassassin # and to re-enable antivirus checking. # # Default antivirus checking mode # Uncomment the two lines below to enable it # @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \ $bypass_virus_checks_re); #

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 165 # Default SPAM checking mode # Uncomment the two lines below to enable it # @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \ $bypass_spam_checks_re); 1; # insure a defined return Configurando o Amavis para entregar mensagens marcadas como SPAM # vi /etc/amavis/conf.d/20-debian_defaults $final_spam_destiny = D_PASS;

Adicionar o usurio clamav no grupo amavis e o usurio amavis no grupo clamav adduser clamav amavis adduser amavis clamav Reinicie o Amavis # /etc/init.d/amavis restart O SpamAsssassin detecta automaticamente os componentes opcionais e ir utiliz-los se eles estiverem presentes. Isto significa que no h nenhuma necessidade para configurar o cliente DCC, Pyzor e Razor.

14.1.4. Configuraes especficas do SpamAssassim


Usar o SpamAssassin integrado ao amavis-new tem a vantagem de desempenho e importante verificar as verses de ambos pois pode haver incompatibilidade caso o SpamAssassin tenha uma verso atualizada. Algumas configuraes preciso ser feitas no aquivo /etc/amavis/conf.d/20debian_defaults $sa_spam_subject_tag = '[SPAM]'; # Nivel de legitimidade do e-mail acima desse valor considerado o cabealhos X-Spam-Satus e X-Spam-Level $sa_tag_level_deflt = 3.0;

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 166 $sa_tag2_level_deflt = 6.31; # Nivel que SPAM rejeitado $sa_kill_level_deflt = 12; # Spam com o nvel acima de 12 entregue de qualquer forma. $final_spam_destiny = D_PASS;

Vamos entender as linhas acima: $sa_spam_subject_tag = '[SPAM]' A tag que ser adicionado caso uma mensagem for detectada como spam no, caso [SPAM] $sa_tag_level_deflt = 3.0 - Acima desse Score a mensagem no

considerada SPAM, o amavis ira adicionar no cabealho as tags X-SpamStatus e X-Spam-Level $sa_tag2_level_deflt = 6.31 As mensagens acima desse Score ser considerada SPAM e sera adicionado ao cabealho as tags X-Spam-Flag: YES' e no assunto SPAM $sa_kill_level_deflt = 12 - Mensagens acima deste nvel depender da Tag $final_spam_destiny. $final_spam_destiny = D_PASS Neste caso mensagens de Score igual ou acima definido em $sa_kill_level_deflt sero entregues. Caso deseje que elas sejam descartadas altere para D_DISCARD.

14.1.5. Outras configuraes do Amavis-New

# 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 quarantine) $final_banned_destiny = D_BOUNCE; #D_REJECT when front-end MTA = D_DISCARD; #(data not lost, see virus

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 167 $final_spam_destiny spam) $banned_filename_re = new_RE( # qr'^UNDECIPHERABLE$', components # block certain double extensions anywhere in the base name qr'\.[^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i, qr'\{[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\}?'i, # Windows Class ID CLSID, strict qr'^application/x-msdownload$'i, qr'^application/x-msdos-program$'i, qr'^application/hta$'i, # qr'^application/x-msmetafile$'i, # qr'^\.wmf$', # Windows Metafile MIME type # block these MIME types # is or contains any undecipherable = D_DISCARD; #False-positive prone (for

$final_bad_header_destiny = D_PASS;

# Windows Metafile file(1) type

# qr'^message/partial$'i, qr'^message/external-body$'i, # rfc2046 MIME types # [ qr'^\.(Z|gz|bz2)$' compressed # [ qr'^\.(rpm|cpio|tar)$' archives # [ qr'^\.(zip|rar|arc|arj|zoo)$'=> 0 ], archives # # # mst| # ops|pcd|pif|prg|reg|scr|sct|shb|shs|vb|vbe|vbs| qr'.\.(exe|vbs|pif|scr|bat|cmd|com|cpl)$'i, # banned extension qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|grp|hlp| inf|ins|isp|js|jse|lnk|mda|mdb|mde|mdw|mdt|mdz|msc|msi|msp| # allow any within such => 0 ], # allow any in Unix-type => 0 ], # allow any in Unix-

basic hta|

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 168 # wmf|wsc|wsf|wsh)$'ix, # banned ext - long # banned extension - WinZip

# qr'.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'i, vulnerab. qr'^\.(exe-ms)$', # qr'^\.(exe|lha|tnef|cab|dll)$',

# banned file(1) types # banned file(1) types

Alguns dos parmeros acima est comentado, voc pode descoment-los conforme a sua necessidade. Perceba que possvel adicionar mais extenses para as regras.

14.1.6. Integrando Amavis com o Postfix


Vamos editar o master.cf # 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 -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 y - smtpd

Captulo 14 Integrando AntiSpam e Antivrus 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 Edite o main.cf e adicione a seguinte linha: content_filter=smtp-amavis:127.0.0.1:10024 Edite o arquivo /etc/mailname e tenha certeza de que o seu domnio est contido nele: # vi /etc/mailname matrizX.com.br filialX.com.br Reinicie todos os servios envolvidos: # /etc/init.d/postfix restart # /etc/init.d/amavis restart # /etc/init.d/spamassassin restart # /etc/init.d/clamav-daemon restart

14.1.7. Testando o Amavis-New


Utilize o Cliente de E-mail (ICE-Dove ou Evolution) anexando o vrus de testes EICAR e verifique os logs do Postfix. Faa olho nos logs. o mesmo enviando uma mensagem com o arquivo

/usr/share/doc/spamassassin/examples/sample-spam.txt como anexo. E fique de

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 170

14.2. Exerccios
1. Qual a funo do Amavis-New? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. possvel colocar o Amavis para rodar em um servidor separado ? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. O Amavis pode trabalhar com mais de um anti-vrus simultneo? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 14 Integrando AntiSpam e Antivrus com o Postfix - 171

4. Descreva o processo de funcionamento do Amavis-New integrado ao Postfix(Apenas conceitual)? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 15 SPF e Greylist - 172

Captulo 15 SPF e Greylist

Captulo 15 SPF e Greylist - 173

15.1. Introduo 15.1.1. SPF


Sender Policy Framework ou SPF um sistema que evita que outros domnios (endereo da internet) enviem mensagens forjando seu domnio, ou seja, fazendo-se passar por um domnio que o servidor de envio no o MX publicado pelo DNS. O SPF verifica no cabealho de internet se o SMTP6(servidor de emails) utilizado para enviar a mensagem, est autorizado na relao de IP's que respondem pelo domnio do remetente. Tambm informa se o domnio autoriza ou no que outros IP's fora desta relao enviem e-mails em seu nome. O administrador configura esta relao 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 necessrio atualizar a zona DNS que corresponde pelo respectivo domnio A checagem SPF possui sete mecanismos: PASS(+) O host verificado est autorizado a enviar e-mail do domnio Aceite FAIL(-) O host verificado no est autorizado a enviar e-mail do domnio Rejeite SOFTFAIL(~) O host verificado no esta autorizado, mas esta em processo de liberao Aceite mas maque a mensagem NEUTAL(?) Sem informaes do host verificado Aceite NONE O domnio no possui registro SPF - Aceite PERMERROR Erro permanente No Especificado TEMPERROR- Erro temporrio Aceite ou Rejeite

15.1.2. Greylist
Este termo refere-se a um mtodo 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 legtimos, que se

Captulo 15 SPF e Greylist - 174 comportam de maneira correta e de acordo com as especificaes dos protocolos, sempre reenviam as mensagens. Este mtodo parte do princpio que spammers raramente utilizam servidores legtimos e, portanto, no reenviam suas mensagens. A Greylist se torna ineficaz contra SPAMs provenientes de servidores com Open Relay, visto que so MTAs vlidos.

Captulo 15 SPF e Greylist - 175

15.2. Prtica Dirigida 15.2.1. Configurando o seu DNS com registros TXT para SPF:
# vi /etc/bind/db_matrizX.conf $TTL @ ( 1 604800 86400 2419200 604800 ) ; @ @ @ mail IN IN IN IN NS MX TXT A mail.matrizX.com.br. 10 mail.matrizX.com.br. v=spf1 ip4:192.168.1.X -all 192.168.1.X ; Serial ; Refresh ; Retry ; Expire ; Negative Cache TTL 604800 IN SOA mail.matrizX.com.br. root.mail.matrizX.com.br.

Reinicie e bind # /etc/init.d/bind9 restart

15.2.2. Ativando o Plugin SPF do SpamAssassim


Umas das grandes vantagens do SpamAssassim e sua capacidade de extenso. Por padro o SpamAssassim vem com o Plugin SPF habilitado. No Debian o arquivo que habilita esse plugin esta em /etc/spamassassim/init.pre loadplugin Mail::SpamAssassin::Plugin::SPF Voc pode ajustar os scores das regras do SPF com intuito de aumentar e diminuir a pontuao padro do SpamAssassim. Isso pode ser feito em /etc/spamassassim/local.cf. Abaixo segue as pontuao padro do SFP: score SPF_FAIL 0 1.333 0 1.142 score SPF_HELO_FAIL 0 score SPF_HELO_NEUTRAL 0

Captulo 15 SPF e Greylist - 176 score SPF_HELO_SOFTFAIL 0 2.078 0 2.432 score SPF_NEUTRAL 0 1.379 0 1.069 score SPF_SOFTFAIL 0 1.470 0 1.384

15.2.3. Realizando teste de SPF com a ferramenta spftool


Altere o registro DNS da zona matrizx.com.br conforme o modelo: # vi /etc/bind/db_matrizx.conf @ IN TXT "v=spf1 ip4:10.196.16.86 -all"

Salve e restarte o Bind # /etc/init.d/bind9 restart Instale o SPFQTOOL # aptitude install spfqtool Execute o Teste de SPF # spfqtool -i 192.168.1.2 -s joao@matrizx.com.br -h mail.matrizX.com.br

SPF short result: RFC2822 header:

fail Received-SPF: fail (mail.matrizx.com.br: domain of

SPF verbose result: policy result: [fail] from rule [-all]

joao@matrizx.com.br does not designate 192.168.1.2 as permitted sender) receiver=mail.matrizx.com.br; client_ip=192.168.1.2; envelopefrom=joao@matrizx.com.br; Agora mude novamente o registro /etc/bind/db_matrizx.conf conforme modelo abaixo: # vi /etc/bind/db_matrizx.conf @ IN TXT "v=spf1 ip4:10.196.16.86 ~all" o

Salve e reinicie o Bind # /etc/init.d/bind9 restart

Captulo 15 SPF e Greylist - 177 Faa novamente o teste com o SFPQTOOL e veja o resultado # spfqtool -i 192.168.1.2 -s joao@matrizx.com.br -h mail.matrizX.com.br

SPF short result: RFC2822 header:

softfail Received-SPF: softfail (mail.matrizx.com.br: domain

SPF verbose result: policy result: [softfail] from rule [~all]

of transitioning joao@matrizx.com.br does not designate 192.168.1.2 as permitted sender) receiver=mail.matrizx.com.br; client_ip=192.168.1.2; envelope-from=joao@matrizx.com.br;

15.2.4.

Instalando e Configurando o Postgrey Greylist

Postgrey uma implementao de poltica greylisting para filtrar spam ou ataques spammers em servidores de email Postfix. O princpio simples, o Postgrey temporariamente rejeitar novos e-mails com o erro 450 "tente novamente mais tarde" por um determinado perodo de tempo e registrar o IP, remetente, destinatrio em seu banco de dados. Se o servidor de envio compatvel com RFC, ento ele deve reenviar a mensagem ai o Postgrey ir verificar seu banco de dados se esse cliente j tentou enviar e mensagem e chega com as regras estabelecidas em sua base de configurao que baseada em tempo e tentativa. Veja a figura:

Captulo 15 SPF e Greylist - 178 Instalando o PostGrey # aptitude install postgrey Edite o arquivo /etc/postfix/mail.cf adicione a linha check_policy_service unix:postgrey/socket conforme o modelo abaixo: smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, . . reject_unauth_destination, check_policy_service inet:127.0.0.1:10023

Obs:

regra

da

greylist

deve

vir

aps

parmetro

reject_unauth_destination. Caso voc no coloque nessa ordem o seu servidor pode ficar em OpenRelay

Reinicie o Postfix # /etc/init.d/postfix restart Agora edite o arquivo /etc/default/postgrey conforme o modelo: # vi /etc/default/postgrey POSTGREY_OPTS="--inet=10023 --delay=300 max-age=30" POSTGREY_TEXT="Greylist - Favor aguardar" Onde: --inet a porta que o Postgrey ira responder --delay o tempo em segundos que um cliente deve esperar --max-age o tempo em dias que o cliente ser expirado do banco de dados Reinicie o Postgrey

Captulo 15 SPF e Greylist - 179 # /etc/init.d/postgrey restart

Reinicie o Policyd e o Postgrey # /etc/init.d/postfix-policyd restart # /etc/init.d/postgrey restart

15.2.5. Testando o Postgrey


Para realizar o teste basta usar o comando telnet: # telnet 192.168.1.x 25 Em outro terminal verifique os logs do Postfix # tail -f /var/log/mail.log E veja o resultado. Exemplo: # 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 May 9 13:22:37 tine postfix/smtpd[3598]: NOQUEUE: reject: RCPT from

unknown[10.196.16.86]: 450 4.2.0 <joao@matrizx.com.br>: Recipient address rejected: Greylist - Favor aguardar; from=<joao@matrizx.com.br> to=<joao@matrizx.com.br> proto=SMTP helo=<smtp.matrizx.com.br >

Captulo 15 SPF e Greylist - 180

15.3. Exerccios
1. Qual a funo do SPF? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. O que necessrio para que o SPF funcione corretamente? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. Qual a funo da Greylist? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 15 SPF e Greylist - 181

4. Porque a greylist no funciona com servidor com relay aberto? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 182

Captulo 16 Aumentando a Performance da infraestrutura de Correio

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 183

16.1. Introduo
Iremos apresentar dicas e sugestes que ajudam a melhorar o desempenho Postfix e os demais componentes que compem a infraestrutura de e-mail. O objetivo dessa captulo no criar uma receita de bolo, mas sim apontar os lugares que devem ser analisados para corrigir e melhorar o desempenho da infraestrutura de correio eletrnico. Iremos analisar filtros externos(Anti-Spam e Antivrus), consultas DNS, consultas RBLS, consumo de CPU, memria, I/O de disco, etc.

16.1.1. Performance no Recebimento de Mensagens


Recomenda-se usar o servio de DNS local para agilizar as consultas. Caso esteja usando uma base LDAP elimine consultas desnecessrias. Caso o Postfix demonstre lentido nas conexes SMTP dos clientes, verifique os logs para identificar a origem, verifique os filtros de cabealhos e corpo das mensagens, considere o desligamento do chroot para verificar se o problema persiste. Verifique tambm se o nmero de processos do daemon smtpd atingiu o limite. Alguns clientes ao se conectar, podem gerar erros de sesso. O Postfix possui um contador de erros de sesso, essa contagem zerada quando obtm xito na transferncia da mensagem. Entretanto, quando incrementado, o smtpd comea aumentar o intervalo nas respostas. A ideia controlar e limitar o uso desse recuso. Os parmetros: smtpd_soft_error_limit: Quando a contagem chegar ao valor definido, o daemon smtpd atrasa todos que no esto em erro e as repostas de erro passados com o valor definido pelo parmetro smtpd_error_sleep_time . smtpd_hard_error_limit: Quando a contagem chegar ao valor definido, o daemon smtpd derruba a conexo.

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 184

Pode-se tambm adotar medidas para clientes que realizam muitas conexes. O Postfix pode limitar o nmero de conexes simultneas a partir do mesmo cliente SMTP, assim como a taxa de conexo e da taxa de certos comandos SMTP a partir do mesmo cliente. smtpd_client_connection_count_limit: O nmero mximo de conexes que um cliente SMTP poder fazer simultaneamente. smtpd_client_connection_rate_limit: O nmero mximo de conexes que um cliente SMTP pode fazer no intervalo de tempo especificado por anvil_rate_time_unit. smtpd_client_message_rate_limit: por anvil_rate_time_unit smtpd_client_recipient_rate_limit: O nmero mximo de endereos que um destinatrio um cliente SMTP pode especificar, o intervalo de tempo especificado por anvil_rate_time_unit smtpd_client_new_tls_session_rate_limit: O nmero mximo de novas O nmero mximo de entrega de

mensagem SMTP que um cliente pode fazer no intervalo de tempo especificado

sesses TLS (sem utilizar o TLS sesso cache) que um cliente SMTP podem negociar no intervalo de tempo especificado com anvil_rate_time_unit. smtpd_client_event_limit_exceptions: Clientes SMTP que esto excludos do contexto e taxa limites especificados acima. ($mynetworks)

16.1.2. Performance na Entrega de Mensagens


Problemas de DNS podem impactar na entrega de e-mail, voc pode usar o comando dig para verificar o tempo de a respostas do DNS. # dig www.matrizX.com.br ; <<>> DiG 9.3.4 <<>> www.matrizX.com.br ;; global options: ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 33990 printcmd

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 185 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; 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

;; Query time: 25 msec ;; SERVER: 192.168.15.103#53(192.168.15.103) ;; WHEN: Wed Apr 15 14:53:42 2009 ;; MSG SIZE rcvd: 83

Considere o uso de DNS local . O qshape tima ferramenta para auxilio na identificao de gargalos na entrega de mensagens. Reduza remotos. Aumente o nmero de entregas simultneas para o mesmo destino com os parmetros: initial_destination_concurrency; default_destination_concurrency_limit. os valores dos parmetros smtp_connect_timeout e

smtp_helo_timeout

para no

desperdiar tempo ao conectar a servidores

Para entregas locais e remotas use os parmetros: local_destination_concurrency_limit; smtp_destination_concurrency_limit.

Outros parmetros a considerar so default_destination_recipient_limit, que define o nmero de destinatrios por mensagem e smtpd_recipient_limit, controla a quantidade de beneficirios por entrega.

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 186 Quando o agente de entrega do Postfix no capaz de entregar uma mensagem, o problema pode ser da prpria mensagem ou a parte receptora(usurio local ou servidor remoto). A mensagem fica aguardando o prximo "flush" da fila, isso equivale aproximadamente 15 minutos. Podemos melhorar o desempenho configurando os seguintes parmetros: queue_run_delay: minimal_backoff_time: maximal_backoff_time: Tempo em que o gerente verifica a fila deffered Tempo minimo para uma mensagem ser morta. Tempo mximo para uma mensagem ser morta.

maximal_queue_lifetime: Quanto tempo uma mensagem permanece na fila antes de ser enviada de volta como no entregue. bounce_queue_lifetime: Quanto tempo uma mensagem Mailer-DAEMON permanece na fila antes que ela seja considerada com no entregue. qmgr_message_recipient_limit: O nmero mximo de destinatrios em memria realizada pelo gerente fila Postfix.

16.1.3. nmero de Processos do Postfix


O parmetro global default_process_limit fornece controle direto sobre quantos processos do Postfix ser executado. Mas cuidado isso pode onerar a performance em mquinas com pouca memria. Voc tambm pode especificar o nmero de processos no master.cf, na coluna maxproc. # ============================================================ # service type # . . . . . . smtp inet n 10 smtpd private unpriv (yes) (yes) chroot (yes) wakeup maxproc command + args (never) (100)

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

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 187

16.1.4. Nmero de Processos do Sistema Operacional


Apesar do Kernel j estar configurado com o nmeros de processos adequado para diversas aplicaes, interessante avaliar o ajuste caso necessrio. Pode-se utilizar os comandom sysctl -a e ipcs -la para listar todos os parmetros e seus respectivos valores. Utilize o comando ulimit -a para verificar, tambm, qual o limite da opo open file, que define quantos arquivos podem ser abertos, simultaneamente, no seu sistema.

16.1.5. Nmero de File Descriptors por Processo


Quando o Postfix abre muitos arquivos ou soquetes, pode haver erro de processos abortando com erros fatais, possivelmente o sistema no esta configurado adequadamente para suportar essa quantidade de aquivos abertos. No Kernel os parmetros responsveis por essa configurao, so: fs.file-max e kernel.threads-max. Pode-se especific-los em /etc/sysctl. Aumente conforme a necessidade.

16.1.6. Consideraes sobre Hardware - Disco Rgido


Um sistema como Postfix consome muito disco devido ao gerenciamento das filas de mensagens isso produz altos nveis de I/O em sites com grande quantidade de e-mail, considere a aquisio de discos com altas taxas de transferncias. Voc pode verificar o I/O de disco com o comando vmstat observando as colunas BI(block input) BO(Block Output).
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---r 0 0 0 0 0 b 0 0 0 0 0 swpd 24848 24848 24848 24848 24848 free 19656 19656 19656 19656 19656 buff 8992 8992 8992 8992 8992 cache 86528 86528 86528 86528 86528 si 0 0 0 0 0 so 1 0 0 0 0 bi 18 0 0 0 0 bo 33 0 0 0 0 in 266 253 253 254 254 cs us sy id wa 25 44 18 7 16 9 1 0 0 0 2 54 3 96 2 98 0 100 1 99 1 0 0 0 0

Outra ferramenta bastante amigvel o iostat: # iostat -m Linux 2.6.26-2-686 (mailX) avg-cpu: %user 21-09-2010 _i686_ %steal %idle %nice %system %iowait

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 188 1,25 Device: sda sda1 sda2 sda5 0,00 tps 6,13 6,11 0,00 0,02 0,47 0,03 0,03 0,00 0,00 1,10 0,00 MB_wrtn/s 0,06 0,06 0,00 0,00 97,18 MB_read 357 354 0 2 MB_wrtn 802 798 0 3

MB_read/s

Outro fator importante separar servios como anti-vrus, ant-spam, servidor Courier e Webmail. Algumas medidas interessantes podem ser estudadas: Separar um HD apenas para as filas do Postfix Se voc tem muita memria pode criar um partio em memria e e coloca as filas do Postfix nela. Esta ltima medida extrema e quando o hardware muito confivel Separar os servios de antivrus e anti-spam Discos rgidos de alta performance

16.1.7. Consideraes sobre Hardware Memria


Em uma infraestrutura de correio muitos servios so utilizados e consequentemente o consumo de recursos de hardware. Nesse contexto a memria fundamental para o desempenho do sistema. Isso se torna critico quando um servidor possui muitos usurios e todos os servios esto concentrados no mesmo servidor. Um exemplo o servio de antivrus e anti-spam que consomem muita memria para realizar a filtragem de mensagens. Caso o seu ambiente esteja esgotando a memria, considere a segregao de servios em outras maquinas. Para identificar se o uso da memria esta no limite utilize as ferramentas abaixo: # free -m total Mem: used 504 free 452 shared 51 buffers 0 cached 37

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 189 150 -/+ buffers/cache: Swap: 486 264 1 239 485

As ferramentas top e htop, tambm so bons aliados na identificao de consumo de memria:


top - 14:45:48 up Tasks: Cpu(s): Mem: Swap: 77 total, 0.0%us, 4:08, 0.0%sy, 2 users, load average: 0.00, 0.00, 0.00 0 stopped, 0.0%wa, 0 zombie 0.3%si, 0.0%st 0.0%hi,

1 running,

76 sleeping,

0.0%ni, 99.7%id,

516300k total, 497972k total,

463680k used, 1248k used,

52620k free, 496724k free,

38420k buffers 154552k cached

PID USER 1 root 2 root 3 root 4 root 5 root 6 root

PR 20 15 RT 15 RT 15

NI 0 -5 -5 -5 -5 -5

VIRT 2100 0 0 0 0 0

RES 692 0 0 0 0 0

SHR S %CPU %MEM 588 S 0 S 0 S 0 S 0 S 0 S 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.0

TIME+

COMMAND

0:01.42 init 0:00.00 kthreadd 0:00.00 migration/0 0:00.26 ksoftirqd/0 0:00.00 watchdog/0 0:00.76 events/0

16.1.8. Consideraes sobre Hardware Rede


Outro fator que pode onerar o desempenho da infraestrutura de correio sem dvida a rede. Especialmente se so muitos os clientes utilizando essa infraestrutura e se o volume de mensagens transitando alto. Para identificar se sua rede esta suportando o volume de conexes e de mensagens utilize a ferramente iftop:

12.5Kb 62.5Kb

25.0Kb

37.5Kb

50.0Kb

mailX.matriX.com.br 2.45Kb 3.02Kb 3.02Kb <= 208b 312b 312b => 192.168.15.1 => 192.168.15.101

mailX.matriX.com.br 0b 288b 288b

<= 0b 552b 552b

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 190

16.2. Prtica Dirigida 16.2.1. Melhorando a Recepo de Mensagens


Editar o master.cf colocando o daemon smtpd em modo debug smtp inet n n smtpd -v

Reinicie o Postfix /etc/init.d/postfix restart Filtrar erros no log do Postfix

egrep '(warning|error|fatal|panic):' /var/log/mail.log | more Analisar os filtros do Postfix (smtpd_*_restictions, header_check, body_checks e consultas a RBLs) desativando-os para verificar se a lentido persiste. Verificar se clientes esto se registrando como desconhecidos, isso ocorre com servidores com FQND ruins e Spammers. Verificar se o nmero de processos do Postfix atingiu o limite, o padro do Postfix de 100 e pode-se aumentar esse nmero, conforme a quantidade de clientes. importante lembrar que isso impacta diretamente nos recursos oferecidos pelo seu servidor. Para aumentar o nmero de processos do Postfix digite: postconf -e default_process_limit=500

Aumente o nmero de conexes que o cliente pode realizar no servidor

postconf -e smtpd_client_connection_count_limit=100 Se o seu servidor trabalha com listas de e-mail considere aumentar o nmero de destinatrios no Postfix para dar mais vazo nas entradas do Postfix

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 191 postconf -e smtpd_recipient_limit = 1000

16.2.2. Melhorando as Filas de Mensagens


Verifique o status da fila com os comandos mailq ou qshape, e identifique os possveis problemas, como: aumento demasiado da fila active, deferred e bouce. Um dos motivos que levam ao aumento da fila, so problemas com DNS. Conforme a quantidade de clientes cresce, necessrio melhorar o

processamento dessas mensagens. Os parmetros qmgr_message_active_limit e qmgr_message_recipient_limit aumentam a performance da fila dando mais vazo para o tratamento da fila active, outro parmetro importante e maximal_queue_lifetime e bounce_queue_lifetime, responsveis por definir o tempo de vida de uma mensagem que no pode ser entregue, para isso digite: # postconf -e qmgr_message_active_limit = 40000 # postconf -e qmgr_message_recipient_limit = 40000 # postconf -e maximal_queue_lifetime = 30m # postconf -e bounce_queue_lifetime = 30m Por recomendao do prprio Postfix.org o parmetro disable_dns_lookups deve estar desabilitado. Ele evita consultas em /etc/hosts para entregas remotas. # postconf -e disable_dns_lookups = yes

16.2.3. Melhorando a Entrega de Mensagens


O processo de entrega de mensagem responsvel tambm pelo enfileiramento de mensagens, nesse momento podem acontecer diversos problemas na entrega como: hostnames no resolvidos, servidor indisponvel, servidores com greylist habilitados etc. O daemon responsvel por entregas remotas o smtp. Podemos melhorar a vazo na entrega de mensagens modificando alguns parmetros como:

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 192 smtp_destination_concurrency_limit Aumenta o nmero de entregas paralelas para o mesmo destinatrio, isso permite uma maior vazo na entrega. maximal_backoff_time O tempo mximo entre as tentativas de entregar uma mensagem deferrida. Diminua esse tempo para aumentar as tentativas de entrega. smtp_connect_timeout Tempo limite de conexo para conexes remotas, voc deve diminuir esse tempo caso o daemon smtp fique muito tempo conectado ao um servidor remoto. smtp_helo_timeout - Tempo limite de conexo para resposta do comando HELO queue_run_delay Tempo de varredura da fila defered. Deve-se diminuir o tempo para que as varreduras seja feitas com mais frequncia. default_destination_concurrency_limit smtp_destination_concurrency_limit default_destination_recipient_limit nmero mximo de destinatrios por entrega. Isso afeta os daemos smtp, local, virtual e lmtp. Tenha cuidado em aumentar esse parmetro pois servidores smtp podem recusar o recebimento. Similar ao

Editando os valores: # postconf -e # postconf -e # postconf -e # postconf -e # postconf -e # postconf -e default_destination_concurrency_limit=50 default_destination_recipient_limit=50 smtpd_client_connection_count_limit=100 smtp_destination_concurrency_limit=100 maximal_backoff_time = 1000s minimal_backoff_time = 300s

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 193

16.2.4. Melhorando a performance Sistema Operacional


A medida que voc aumenta processos do Postfix importante verificar se o SO esta preparado para esse aumento. Esteja atento configurao dos files descriptors e processos abertos pelo SO. Voc pode ajust-los em /etc/sysctl.conf adicionando os seguinte parmetros: fs.file-max = 192231 kernel.threads-max = 30681 No se esquea de aumentar a quantidade de arquivos abertos no sistema operacional: # ulimit -n 30000

Captulo 16 Aumentando a Performance da infraestrutura de Correio - 194

16.3. Exerccios
1. Meus clientes esto tendo muita lentido no envio do e-mail, o que devemos observar para melhorar essa lentido? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. O enfileiramento na fila defered est muito grando o que pode estar ocorrendo: ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. O os clientes esto reclamando na demora do envio de mensagens, ou seja, as mensagens esto demorando chegar no destinatrio. O que pode estar causando isso? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Captulo 17 Teste de Stress na Infraestrutura de Correio - 195

Captulo 17 Teste de Stress na Infraestrutura de Correio

Captulo 17 Teste de Stress na Infraestrutura de Correio - 196

17.1. Introduo
Voc pode melhorar a performance da sua infraestrutura de correio realizando testes de stress para medir a carga que ela suporta. O objetivo desse capitulo ensinar como realizar esses testes utilizando ferramentas livres, e aplicar os ajustes apresentados no captulo anterior.

17.1.1. smtp-source e smtp-sink


smtp-source se conecta a um host em uma porta TCP (porta 25 por padro) e envia uma ou mais mensagens, seja sequencialmente ou em paralelo. O programa testa tanto SMTP (padro) ou LMTP e se destina ajuda para medir o desempenho do servidor. smtp-sink simula um servidor de e-mail escutando na porta 25. O seu objetivo receber as mensagens a partir da rede e descarta-as. Voc pode medir medir desempenho da rede com ele.

17.1.2. qmqp-source e qmqp-sink


qmqp-source se conecta a um host em uma porta TCP (porta 25 por padro) e envia uma ou mais mensagens, seja sequencialmente ou em paralelo. O programa testa o protocolo QMQP e se destina ajuda para medir o desempenho do servidor. qmqp-sink realiza o mesmo trabalho do smtp-sink para protocolo QMQP.

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 usurios. Dentre as suas caractersticas podemos destacar: Testes em mltiplos servidores Identificar problemas com DNS Suporte par servidores lentos

Captulo 17 Teste de Stress na Infraestrutura de Correio - 197

17.2. Prtica Dirigida 17.2.1. Entendendo do e usando o smtp-source


# time smtp-source -s 20 -l 5120 -m 100 -c -f joao@matrizX.com.br Onde: -s 20 Sesses paralelas -l 5120 Tamanho da mensagem em KB -m 100 total de mensagens -c contator -f Remetente -t destinatrio endereo do servidor smtp porta -t joao@matrizX.com.br localhost:25

O comando Time utilizando em conjunto com o smtp-source para contabilizar o tempo de execuo da tarefa.

17.2.2. Entendendo e usando o smtp-sink


Com dito anteriormente o smtp-sink simula um servidor SMTP. Ele deve ser utilizado em conjunto com o smtp-source ou qualquer outra ferramenta para testar a vazo da sua rede. # smtp-sink -u root -c localhost:25 1000

Captulo 17 Teste de Stress na Infraestrutura de Correio - 198 -u -c Define o usurio que ser utilizado para abrir o daemon Ativa o contador de sesses finalizadas

1000 Limite mximo de conexes no smtp-sink localhost:25 nome e porta que o smtp-sink ir escutar

17.2.3. Usando o smtp-sink em conjuto com smtp-source


Para medir o desempenho da rede execute os seguintes procedimentos: Abra 2 terminais, em um dos terminais execute: smtp-sink -u root -c localhost:25 1000 No outro terminal execute: time smtp-source -s 20 -l 5120 -m 100000 -c -f joao@matrizX.com.br -t joao@matrizX.com.br localhost:25

Observe que a vazo de entrega dos e-mails. O smtp-sink apenas descarta as mensagens e diz que para o smtp-source que foi entregue. Agora faremos um teste com o smtp-source entregando efetivamente para o Postfix. Obs.: no necessrio o uso do smtp-sink

Execute o comando: time smtp-source -s 20 -l 5120 -m 100000 -c -f joao@matrizX.com.br -t joao@matrizX.com.br 192.168.1.X:25

Observe que a vazo diminuiu. O motivo que agora o smtp-source no 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 usurio.

Captulo 17 Teste de Stress na Infraestrutura de Correio - 199

17.2.4. Usando o Postal


postal -m 10 -t 10 -c 5 -r 60 localhost lista-usarios.txt Onde: -m 10 tamanho(em KB) mximo da mensagem -t 10 Numero de threads -c 5 mensagens por conexo - r 60 Mensagens por minuto localhost servidor smtp lista-usurios.txt Lista contendo os usurios

O resultado produzido: time,messages,data(K),errors,connections 17:13,35,194,0,22 17:14,57,314,0,19 O Postal apresenta informaes a cada minuto, apresentando a hora/minuto, total de mensagens entregue, total mensagens em KB, quantidade de erros e quantidade de conexes por minuto.

17.2.5. Ferramentas de monitoramento


Monitorar preciso! O nosso objetivo neste tpico simular uma carga em nosso ambiente de e-mail, para isso necessitamos de parmetros para iniciarmos e simularmos um cenrio de produo. Geralmente quando vamos montar esses testes necessrio levantar com o cliente a quantidade de usurios que ir utilizar e-mail bem como o tamanho mdio de e-mails que trafegaram nessa estrutura. Munidos de informaes, precisamos montar o nosso teste para simular a carga. Mas como vamos medir o desempenho do nosso ambiente? Apesar do Postal e smtp-source fornecer uma estatstica de entrega de mensagens ele no aponta onde esta o gargalo do ambiente. O boa notcia que o Linux possui diversas ferramentas nativa para analise do

Captulo 17 Teste de Stress na Infraestrutura de Correio - 200 desempenho do ambiente. Vamos destacar algumas: top Mostra em tempo real o uso de memria, processamento, carga no sistema e processos que mais ocupam o sistema. free Mostra em tempo real o status da memoria vmstat - Mostra um variedade de informaes referentes ao uso da CPU, Memria, Processos, Paginao e I/O. uptime Mostra a carga do sistema sysstat um conjunto de comandos (sar, iostat and mpstat) muito til para analise do sistema. ifstat Apresenta estatstica das interfaces de rede tcpstat Apresenta estatstica do protocolo tcp Devemos lembrar que o prprio log do Postfix apresenta informaes teis sobre o ambiente.

17.2.6. Realizando os testes


Para os testes vamos iniciar com 50 usurios simultneos, com mensagens de 10 e 50 KB . Vamos utilizar a ferramenta Postal para essa tarefa. Crie uma lista com e-mail dos usurios internos e alguns usurios vlidos externos(gmail, yahoo e etc). Execute o comando(recomendvel que seja em outra mquina): postal -M 10 -m 50 -t 50 -c 5 -r 60 localhost lista-usarios.txt Verifique se o postal no reportara erros. Abra outro terminal e veja os logs do Postfix: tail -f /var/log/mail.log Verifique se no tem alguma anomalia no log. Vamos analisar a carga do sistema com o comando top. Abra um terminal,

Captulo 17 Teste de Stress na Infraestrutura de Correio - 201 digite o comando top e observe a linha : top - 15:49:00 up 5:27, 3 users, load average: 0.44, 0.44, 0.38

O parmetro load average apresenta a carga do sistema. O load average a mdia da soma dos processos aguardando execuo mais processos executando. Observe que temos 3 resultados, o primeiro a media do ultimo minuto, o segundo a mdia dos ltimos 5 minutos e o terceiro a mdia dos ltimos 15 minutos. Nmeros altos representam grande carga no sistema e consequentemente lentido refletida para o usurio. No existe um nmero mgico e ideal, mas em alguns casos quando o load_average fica superior as 4.30 fica perceptvel a lentido para o usurio. Mas o que provoca o aumento do load average? Alguns processos podem estar esperando por CPU, rede, disco, pouca memria ou fazendo swap, esses so os motivos mais comuns. Vamos agora analisar o ambiente com o comando vmstat: # vmstat -S M procs -------memory------- -swap- --io-r b 0 0 swpd free buff cache 301 1425 97 591 si so bi 0 0 14 bo 23 -system-in 68 cs 257 ----cpu---us sy id wa 1 1 97 1 a coluna

O vmstat nos fornece uma gama de informaes sobre o sistema, proc

representa os processos do sistema, a leta r o nmero de processo

aguardando execuo. As boas prticas recomendam que esse numero no supere o dobro da quantidade de processadores na mquina. A letra b numero de processos na fila, recomenda-se que esse parmetro no seja maior que 0. Na coluna memory temos 4 parmetros; swpd, free, buff e cache. Eles mostram o status da memoria Swap, Livre, em buffer e cache. Devemos analisar a memoria livre e swap que so pontos crticos para o sistema, ou seja, se tenho pouca memoria livre, o sistema pode comear a usar a memoria swap e isso impactara na performance. A Coluna Swap informa que a paginao esta acontecendo em disco. Esses valores devem sempre permanecer em 0, caso contrrio o load average ir amentar. A coluna I/O, representa a quantidade de blocos enviados e recebidos por Para verificar o tamanho do bloco de seu

segundo pelo disco ou placa de rede.

Captulo 17 Teste de Stress na Infraestrutura de Correio - 202 sistema de arquivos basta digitar: # stat -f /dev/sda1 File: "/dev/sda1" ID: 0 Block size: 4096 Blocks: Total: 367470 Inodes: Total: 367470 Namelen: 255 Type: tmpfs Available: 367387 Fundamental block size: 4096 Free: 367387 Free: 366578

Observe o valor Block size: 4096, essa a capacidade de seu sistema de arquivos. A coluna system representa a troca de informaes entre o processador outros dispositivos do sistema(disco, rede e etc). O parmetro in contexto por segundo. Finalmente a coluna CPU! Ela representa o status do processador, onde o parmetro us mostra a porcentagem de uso de processos do usurio includo os processos em nice. O parmetro sy mostra a porcentagem de uso de processos do kernel. O parmetro id mostra a porcentagem da ociosidade do processador e o parmetro wa mostra, em porcentagem, o tempo de espera para I/O. Outro comando que nos ajudara, o iostat. Ele permite monitorar o processamento de disco para identificarmos possveis gargalos. Digite: # aptitude install sysstat # iostat -d 1 1 Linux 2.6.32-24-generic (srv) Device: sda dm-0 sdb tps 5,64 0,01 0,00 01-12-2010 Blk_wrtn/s 162,99 0,00 0,00 _x86_64_ (4 CPU) Blk_wrtn 4592552 56 0 e

representa o

nmero de interrupes por segundo e o parmetro cs representa a troca de

Blk_read/s 91,70 0,05 0,03

Blk_read 2583652 1298 833

Algumas informaes so similares s do vmstat, como os parmetros, Blk_read/s e Blk_wrtn/s que so blocos lidos e escritos por segundo, o parmetro Blk_read e Blk_wrtn representado em bytes e o parmetros tps e quantidade de transaes por segundo de um dispositivo. Um numero alto de I/O de disco pode

Captulo 17 Teste de Stress na Infraestrutura de Correio - 203 significar problema e perda de performance. Geralmente o sistema de e-mail realiza muita operao em disco, no caso do Postfix o I/O esta nas filas de mensagens isso requer discos de alta performance dependendo da carga do sistema de e-mail. Para verificar a capacidade do seu disco consulte o fabricante fornecendo o modelo do disco. Outro ponto a analisar a interface de rede que tambm pode ser o nosso ponto de gargalo. Uma ferramenta bastante til so ifstat e iftop que fornecem estatsticas de uso das interfaces. # aptitude install iftop ifstat # ifstat eth0 KB/s in 0.00 0.00 0.00 0.00 KB/s out 0.00 0.00 0.00 0.00 wlan0 KB/s in 0.00 0.00 0.00 0.00 KB/s out 0.00 0.00 0.00 0.00 ppp0 KB/s in 0.00 0.00 0.00 0.00 KB/s out 0.00 0.00 0.00 0.00

O resultado simples. Ele apresenta os dados de entrada e sada em Kilobytes por segundo.

Captulo 17 Teste de Stress na Infraestrutura de Correio - 204

17.3. Laboratrio
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. Vamos aumentar gradativamente a carga dos testes. Iniciamos com 50 usurios simultneos, vamos para 100, 250, 400 e finalmente, 500. Dentro desse aumento necessrio diagnosticar onde esto os problemas e apontar as solues de melhorias descritos no captulo 13 e 14. No esquea de considerar: Filtros internos e externos Filas do Postfix Conexes SMTP In e Out (Quantidade) Numero de processos (Quantidade) I/O de Disco(iostat e vmstat) Se o hardware suficiente ou no O nosso objetivo mostrar o que precisa ser feito para atender uma demanda de 500 usurios, com a mdia diria de 100.000,00 mensagens, com o tamanho mdio variando de 10KB a 50KB. Vamos considerar que o horrio de trabalho de 8 horas dirias. Fazendo um clculo simples: 100.000,00 / 8 = 8.000,00 por hora Dividindo 8.000,00 / 60 minutos temos aproximadamente 134 e-mail por minuto. Com esses dados voc pode utilizar a ferramenta Postal para simular esse trfego e os usurios.

Captulo 17 Teste de Stress na Infraestrutura de Correio - 205 Aponte os ajustes que foram feitos durante os testes e se necessrio melhorar o hardware desse ambiente. Exemplo: 1 - Teste1 - 100 usurios com mdia de tamanho dos e-mail 10 a 50 Kb 1.1 - Parmetros alterados: - Amavis: MaxThreads: 20 2 Problemas encontrados: - O Postfix no comportou a quantidade de usurios simultneos 3 Concluso e Soluo dos problemas apontados. 3.1 Aumentar o parmetro default_proccess_limit para 100 do Postfix no arquivo main.cf

Apndice A - CyrusIMAP - 206

Apndice A - CyrusIMAP

Apndice A - CyrusIMAP - 207

Introduo
O Cyrus IMAP (http://www.cyrusimap.org) um servidor POP/IMAP de alta performance altamente escalvel, desenvolvido pela Carnegie Mellon University (CMU), ele possibilita acessos simultneos (leitura/escrita) a mesma caixa postal, quota e regras de acesso (ACL) a qualquer caixa da hierarquia. Nos repositrios estveis das distribuies (Red Hat, Suse, Debian,etc...) at o momento a verso disponibilizada do Cyrus Imap antiga (2.2.13), que no mais atualizada. Portanto, recomenda-se a utilizao da verso atual, 2.4 , que possibilita o uso de replicao nativa e diversas melhorias para o ambiente Aggregator (veremos sobre esse ambiente logo a frente), alm diversas melhorias no cdigo para estabilidade, performance e segurana. O Cyrus Imap opera somente com seu formato de armazenamento, no sendo possvel utilizar os formatos Maildir, Mailbox ou qualquer outra configurao. Por padro, o Cyrus Imap armazena as mensagens e meta-arquivos na mesma estrutura de diretrio, o armazenamento de mensagens constitudo por diversos arquivos pequenos que no so acessados to frequentemente, uma mensagem acionada somente quando o usurio abre a mesma, os meta-arquivos so separados em arquivos por caixa postal (pasta): header, index, cache, expunge e squat, sendo os trs primeiros para indexao e recuperao dos cabealhos das mensagens, o expunge para controle de remoo atrasada se essa opo estiver habilitada, o arquivo squat contm uma indexao especfica para pesquisa de mensagens, com ganho de 20 a 30% em relao a indexao padro para operaes que envolvam pesquisa, sendo o maior dos meta-arquivos, se a mensagem no estiver referenciada neste arquivo ser recuperada atravs da indexao normal, porm com desempenho inferior.

Apndice A - CyrusIMAP - 208

Prtica Dirigida
Para esse cenrio iremos utilizar o CyrusSASL que uma interface de autenticao com bases de usurios(SQL e LDAP) . Nesse contexto o SASL realiza uma ponte entre o Cyrus e o OpenLDAP.

Instalando o SASL
# aptitude install sasl2-bin libsasl2-modules-ldap

Habilitando a autenticao SASL


# vi /etc/default/saslauthd START=yes MECHANISMS="ldap sasldb"

Integrando e Configurando o SASL com OpenLDAP


# vi /etc/saslauthd.conf ldap_servers: ldap://127.0.0.1

Apndice A - CyrusIMAP - 209 ldap_port: 389 ldap_version: 3 ldap_search_base: dc=empresa ldap_auth_method: bind ldap_filter: (&(objectClass=qmailUser)(mail=%u@%d)) Criando o usurio de administrao global( coloque a senha 123) # saslpasswd2 -c admin Reinicie o saslauth: # /etc/init.d/saslauth restart

Testando a Autenticao SASL


# testsaslauthd -u joao -r matrizX.com.br -p 123 0: OK "Success."

Instalando o CyrusIMAP
# aptitude install cyrus-admin-2.2 cyrus-imapd-2.2 O CyrusIMAP possui basicamente dois aquivos de configurao o cyrus.conf e imapd.conf, ambos localizados em /etc/. Edite o cyrus.conf: START { # do not delete this entry! recover cmd="/usr/sbin/ctl_cyrusdb -r"

# this is only necessary if idlemethod is set to "idled" in imapd.conf #idled cmd="idled"

# this is useful on backend nodes of a Murder cluster # it causes the backend to syncronize its mailbox list with # the mupdate master upon startup #mupdatepush cmd="/usr/sbin/ctl_mboxlist -m"

Apndice A - CyrusIMAP - 210

# this is recommended if using duplicate delivery suppression delprune tlsprune } SERVICES { # --- Normal cyrus spool, or Murder backends --# add or remove based on preferences imap maxchild=100 #imaps maxchild=100 pop3 maxchild=50 #pop3s maxchild=50 nntp maxchild=100 #nntps maxchild=100 # At least one form of LMTP is required for delivery # (you must keep the Unix socket name in sync with imap.conf) #lmtp maxchild=20 lmtpunix cmd="lmtpd" listen="/var/run/cyrus/socket/lmtp" prefork=0 maxchild=20 # ---------------------------------------------# useful if you need to give users remote access to sieve # by default, we limit this to localhost in Debian sieve prefork=0 maxchild=100 # this one is needed for the notification services notify cmd="notifyd" cmd="timsieved" listen="localhost:sieve" cmd="lmtpd" listen="localhost:lmtp" prefork=0 cmd="nntpd -s -U 30" listen="nntps" prefork=0 cmd="nntpd -U 30" listen="nntp" prefork=0 cmd="pop3d -s -U 30" listen="pop3s" prefork=0 cmd="pop3d -U 30" listen="pop3" prefork=0 cmd="imapd -s -U 30" listen="imaps" prefork=0 cmd="imapd -U 30" listen="imap" prefork=0 cmd="/usr/sbin/cyr_expire -E 3" cmd="/usr/sbin/tls_prune" # this is recommended if caching TLS sessions

Apndice A - CyrusIMAP - 211 listen="/var/run/cyrus/socket/notify" proto="udp" prefork=1 # --- Murder frontends ------------------------# enable these and disable the matching services above, # except for sieve (which deals automatically with Murder) # mupdate database service - must prefork at least 1 # (mupdate slaves) #mupdate #mupdate cmd="mupdate" listen=3905 prefork=1 cmd="mupdate -m" listen=3905 prefork=1

# proxies that will connect to the backends #imap maxchild=100 #imaps maxchild=100 #pop3 maxchild=50 #pop3s maxchild=50 #lmtp maxchild=20 # ---------------------------------------------} EVENTS { # this is required checkpoint cmd="/usr/sbin/ctl_cyrusdb -c" period=30 cmd="lmtpproxyd" listen="lmtp" prefork=1 cmd="pop3proxyd -s" listen="pop3s" prefork=0 cmd="pop3proxyd" listen="pop3" prefork=0 cmd="proxyd -s" listen="imaps" prefork=0 cmd="proxyd" listen="imap" prefork=0

# this is only necessary if using duplicate delivery suppression delprune cmd="/usr/sbin/cyr_expire -E 3" at=0401

# this is only necessary if caching TLS sessions tlsprune cmd="/usr/sbin/tls_prune" at=0401

# indexing of mailboxs for server side fulltext searches

Apndice A - CyrusIMAP - 212 # reindex changed mailboxes (fulltext) approximately every other hour #squatter_1 -s" period=120 # reindex all mailboxes (fulltext) daily #squatter_a } O arquivo cyrus.conf determina o comportamento do daemon do Cyrus e seus servio e composto por trs clausulas: START, SERVICES e EVENTS O START executado quando o Cyrus iniciado ou reiniciado, geralmente esses comandos so de verificao das bases e checagem de expurgo de mensagens. O SERVICE determina o comportamento dos servios IMAP, POP3, SIEVE e LMTP definindo quantos processos sero iniciardos e em qual posta eles iro responder. O EVENTS e similar ao START, porm ele checado diariamente O aquivo imapd.conf como o prprio nome diz, configura o comportamento do servio IMAP do Cyrus e ainda define o comportamento de armazenamento, do servios SIEVE e POP. Vejamos os principais parmetros. Edite conforme o modelo abaixo: # Local onde ser armazenada o banco do Cyrus configdirectory: /var/lib/cyrus # Partio padro de armazenamento de mensagens defaultpartition: default # local onde ser armazenada as mensagens no disco partition-default: /var/spool/cyrus/mail # Se a separao de pasta e subpastas seguira o padro unix / unixhierarchysep: yes # Definio de quota padro autocreatequota: 131072 # 128MB cmd="/usr/sbin/squatter" at=0517 cmd="/usr/bin/nice -n 19 /usr/sbin/squatter

Apndice A - CyrusIMAP - 213 # Usurios que tem permisso de admin no Cyrus admins: admin # Local de armazenamento dos scripts sieve dos usurios sievedir: /var/spool/sieve # Se permite autenticao em PLAIN text allowplaintext: yes # mecanismos de autenticao disponveis sasl_mech_list: PLAIN LOGIN # Habilita o uso de domnios e usurios virtuais virtdomains: yes # Dominio padro caso no seja especificado nenhum defaultdomain: matrizx.com.br # Mtodo de autenticao auxprop saslauthd separados por espao sasl_pwcheck_method: auxprop saslauthd # Local do socket lmtp lmtpsocket: /var/run/cyrus/socket/lmtp # prefixo do log do cyrus syslog_prefix: cyrus

Reinicie o CyrusIMAP # /etc/init.d/cyrus2.2 restart

CryAdm Administrao do CyrusIMAP


Para administrao do Cyrus Imap, utilizado o utilitrio cyradm, que uma linha de comando (shell) desenvolvida em Perl para execuo de operaes administrativas. Na configurao atual do arquivo /etc/imapd.conf, o parmetro unixhierarchsep est definido como YES, portanto o separador ser o caractere / . Se estivesse definido como NO o separador seria o caractere . .

Para conectar ao servidor utilizando o cyradm utilize a sintaxe abaixo: cyradm -u admin localhost

Apndice A - CyrusIMAP - 214 Nesse exemplo, o usurio admin possui privilgio administrativo no servidor que estamos conectando: localhost. Uma vez conectado na shell cyradm com privilgio administrativo, possvel executar as operaes relacionadas abaixo: createmailbox (create,cm): Permite criar caixas postais, seja a caixa principal de um usurio (INBOX) ou pastas na hierarquia. Sintaxe para criao: cyradm> cm user/joao No exemplo acima, a caixa principal do usurio joao est sendo criada, para criao de uma pasta na hierarquia deste usurio a sintaxe esta: cyradm> cm user/joao/Drafts Neste exemplo, estamos criando a pasta Drafts para o usurio joao, destacando que as pastas Rascunhos, Lixeira e Enviados que so apresentadas nos clientes de Email, no IMAP so criadas como Drafts, Trash e Sent, respectivamente. Createmailbox o comando principal e o valores apresentados ente parnteses so apelidos para o mesmo. listmailbox (lm): Lista as caixas postais Consulta de um usurio especfico: cyradm> lm user/joao Consulta de toda a hierarquia de um usurio especfico: cyradm> lm user/joao* Consulta de todas as caixas postais principais (INBOX) do ambiente: cyradm> lm user/%

Apndice A - CyrusIMAP - 215 Consulta de todas as caixas postais, incluindo a hierarquia do ambiente: cyradm> lm user/* deletemailbox (delete,dm): Permite remover caixas postais, seja a caixa principal de um usurio (INBOX) ou pastas na hierarquia. cyradm> dm user/joao listaclmailbox (listacl, lam): Apresenta as permisses para uma determinada caixas postal. Cyradm> lam user/fabio As permisses no Cyrus Imap, tambm conhecidas como ACL (Access Control List) so representadas com os caracteres conforme abaixo, que devem ser combinados: l: Representao da palavra lookup do ingls, define que o usurio pode visualizar a existncia da pasta, isso , a pasta ir aparecer em sua listagem r: Representao da palavra read do ingls, define que o usurio pode visualizar o contedo da pasta. s: Representao da palavra seen do ingls, define que o usurio pode manter a relao de mensagens visualizadas ou no na pasta. w: Representao da palavra write do ingls, define que o usurio escrever na pasta. I: Representao da palavra insert do ingls, define que o usurio pode inserir contedo em uma pasta, como copiar, mover e inserir mensagens. k: Define que o usurio pode criar pastas em sua hierarquia. x: Define que o usurio pode excluir pastas em sua hierarquia. a: Representao da palavra administer do ingls, define que o usurio pode executar tarefas administravas na pasta. pode

Apndice A - CyrusIMAP - 216 t: Define que o usurio pode apagar mensagens na pasta.

Pode ser utilizada a palavra all para definir todas as permisses. setaclmailbox (setacl, sam): Efetua a criao de regras de acesso com os critrios apresentados acima. Sintaxe para definio de ACL: cyradm> sam user/joao admin all Neste exemplo estamos concedendo ao usurio admin todas as permisses na pasta do usurio joao. deleteaclmailbox (deleteacl, dam): Efetua a remoo de regras de acesso. cyradm> dam user/joao admin all setquota (sq): Define a quota para a caixa posta, o Cyrus Imap permite a definio de uma quota padro que definida na caixa principal e criao de quotas especficas para outras caixas da hierarquia. Sintaxe para definio de quota: cyradm> sq user/joao 131072 A quota sempre definida em bytes. listquota (lq): Lista a quota da pastsa informada. Sintaxe para listagem de quota: cyradm> lq user/joao

Apndice A - CyrusIMAP - 217

Domnios Virtuais no CyrusIMAP Conceitos


No nosso cenrio temos mais de um domnio em uma mesma estrutura, o Cyrus Imap possui suporte para armazenar caixas postais IMAP/POP para diversos domnios, sendo assim o usurio joao@matriz.com.br e joao@filial.com.br podem existir no mesmo servidor. Para que isso seja possvel, necessrio configurar o Cyrus para mapear corretamente o usurio ao seu domnio quando a caixa postal for acessada, existem duas formas : O usurio efetua o login informando usurio e o domnio ao qual pertence Controlar atravs do IP ou endereo, o servidor ir resolver o domnio atravs da interface ou endereo que a conexo foi estabelecida. Ambos os mtodos so configurados com a diretiva virtdomain no arquivo de configurao do Cyrus, que deve ser definido como on, yes, 1 ou true. Se a diretiva for definida como userid somente o primeiro mtodo ser possvel. Para utilizar domnios virtuais preciso entender os principais conceitos explicados abaixo: Todo usurio pertence a um domnio Todo usurio pertence a algum domnio,usurios que no estiverem especificados esto cadastrados no domnio default. Cada caixa postal pertence a somente um domnio Usurios de domnios diferentes no podem interagir - Nas operaes do servidor IMAP, usurios de domnios diferentes no podem interagir, por exemplo, no possvel compartilhar a caixa do usurio joao@matriz.com.br com maria.neves@filial.com.br.

Apndice A - CyrusIMAP - 218 Administradores e administradores globais possvel definir

administradores restritos a cada domnios e administradores globais, que podem administrar todos os domnios implementados.

Configurando o domnio virtual


Conforme visto anteriormente, o suporte a domnios virtuais habilito atravs da diretiva virtdomains no arquivo imapd.conf. virtdomains: yes Se estiver migrando de uma soluo com um nico domnios, o nome do domnio existente deve ser especificado na diretiva defaultdomain tambm no arquivo imapd.conf. Em novas instalaes recomendado que o domnio principal da organizao seja definido na diretiva defaultdomain, visando facilitar a administrao. Arquivo imapd.conf com as configuraes para os domnios matriz.com.br e filial.com.br: virtdomains: yes defaultdomain: matriz.com.br Nesta configurao temos o admin um administrador global.

Criando usurio com domnio virtual


Para criar usurios acesso cyradm # cryadm -u admin localhost cm user/joao@matrizx.com.br

Listando usurios do domnio


lm *@matrizx.com.br

Apndice A - CyrusIMAP - 219

Configurando o Postfix para entrega de mensagens no Cyrus


Edite o arquivo /etc/postfix/master.cf desabilitando o CHROOT conforme abaixo lmtp unix n lmtp

Edite o arquivo /etc/postfix/main.cf conforme abaixo: 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 Adicionar o usurio do Postfix no grupo Mail # adduser postfix mail

Criando os arquivos vmd.cf, vms.cf e vma.cf :


# mkdir /etc/postfix/ldap # vi /etc/postfix/ldap/vmd.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 = (&(ou=%s)) result_attribute = ou version = 3 bind = yes timeout = 30

# vi /etc/postfix/ldap/vma.cf server_host = localhost server_port = 389 bind_dn = cn=admin,dc=dominios,dc=empresa

Apndice 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 Para realizar o teste de envio utilize o comando telnet e verifique se o Postfix realiza a entrega na caixa postal do usurio

Apndice A - CyrusIMAP - 221

Escalabilidade do Cyrus IMAP: Cyrus Aggregator


Para escalabilidade do servio IMAP, possvel utilizar o Cyrus Aggregator (soluo tambm conhecida como Cyrus Murder), neste ambiente possvel dividir as caixas postais IMAP e POP entre diversos servidores de forma transparente aos usurios, podendo ser acessado ou no por um ponto nico. A soluo possui trs classes de servidores: Frontend, Backend e Mupdate (Murder). Os clientes IMAP conectam aos servidores Fontends que por sua vez realizam a consulta no servidor Mupdate obtendo a localizao da caixa postal do cliente conectado, o servidor Mupdate informam aos Fontends que estabelecem a comunicao com o Backend trazendo a caixa postal do usurio. Os servidores Backend armazenam as caixas postais e informam ao servidor Mupdate a sua localizao, permisses e mudanas, que por sua vez sincroniza com os Frontends a posio das caixa postais. Segue abaixo a figura explicativa:

Apndice A - CyrusIMAP - 222

Apndice B - Entregando mensagens com o Maildrop - 223

Apndice B - Entregando mensagens com o Maildrop

Apndice B - Entregando mensagens com o Maildrop - 224

Introduo
Maildrop um agente de entrega local tambm conhecido na estrutura de um sistema de emails por MDA (Mail Delivery Agent), encarregado de depositar mensagens localmente, ou seja, grav-las efetivamente na caixa postal dos destinatrios. No uma alternativa ao Sendmail, Exim, Qmail ou Postfix, pois estes servem para enviar mensagens entre mquinas distintas usando o SMTP (Simple Mail Transfer Protocol). O Postfix pode ser configurado para utilizar o Maildrop como o seu MDA. Para verificar essa condio basta procurar pelo parmetro mailbox_command no arquivo /etc/postfix/main.cf por meio do seguinte comando: # grep mailbox_command /etc/postfix/main.cf mailbox_command = /usr/bin/maildrop -d ${USER} Caso o comando retorne o parmetro mailbox_command, verifique se ele est direcionado para o Maildrop, conforme apresentado no quadro anterior. O Maildrop extremamente poderoso para configurar regras, possuindo muitas facilidades e recursos interessantes para reforar as funcionalidades de um servidor de e-mails. Um exemplo a possibilidade de integrao com bases de dados como Mysql e LDAP. Um bom comeo para capacitar-se com o Maildrop ler o que tem no seu manual de exemplos que apresenta desde o simples redirecionamento de mensagens at configuraes mais complexas, como, por exemplo, tratar de forma diferente mensagens maiores que uma quantidade pr-determinada de responder automaticamente mensagens, evitar receber a mesma repetidas vezes, dentre outras coisas. Estas regras podem ser individuais para cada usurio ou podem ser globais, sendo aplicada, nesse caso, a todos os usurios. No caso de serem individuais, elas devem estar em um arquivo de nome .mailfilter no diretrio home do usurio que deve estar montado no servidor de e-mail. A sintaxe das regras do Maildrop assemelha-se quela utilizada em linguagem C. A seguir, exibido um exemplo de uma regra que filtra o contedo a partir do ttulo (Subject) de uma mensagem: Kbytes, mensagem

Apndice B - Entregando mensagens com o Maildrop - 225 if ( /^Subject: rosebud/ ) { ... some really long set of instructions ... } Se o administrador do sistema quiser que uma regra se aplique a todos os usurios, ele deve coloc-las em /etc/maildroprc. O processo de leitura dos arquivos acontece da seguinte forma: Se o arquivo /etc/maildroprc existe, ento o Maildrop ir ler as instrues de entrega de e-mail a partir desse arquivo. Caso contrrio, o Maildrop ir procurar o arquivo $HOME/.mailfilter do usurio e ler as instrues de entrega da mensagens a partir desse outro arquivo. Caso nenhum dos arquivos exista, o Maildrop no descarta a mensagem mas, sim, a salva na caixa padro. Opes do Maildrop : -a Gera um erro temporrio caso os mecanismo de autenticao falharem -A Header Value Adiciona valor no cabealho da mensagem -d user Permite a entrega com o usurio corrente ou seja o usurio postfix, vmail ou remetente da mensagem.

Apndice B - Entregando mensagens com o Maildrop - 226

-f address Define a varivel de remetente da mensagem

Regras teis Mensagens grandes (que possuam mais de 1000 linhas ou que tenham mais de 60000 bytes) sero direcionadas para a pasta LARGE: if ($LINES > 1000 || $SIZE > 60000) { to "mail/IN.large" } Usando comparadores OR e AND No primeiro exemplo, mostrado abaixo, verifica-se se a quantidade de linhas da mensagem superior que 1000 E (AND) se o seu tamanho maior que 60000 bytes. Caso positivo, a mensagem movida para a pasta IN.large. O operador AND, nesse caso, identificado pelos caracteres &&. if ($LINES > 1000 && $SIZE > 60000) { to "mail/IN.large" } De forma anloga, no exemplo a seguir, verificado se a mensagem possui mais que 1000 linhas OU (OR) se ela possui mais que 60000 bytes. O operador OR representado pelos caracteres ||. if ($LINES > 1000 || $SIZE > 60000) { to "mail/IN.large" } Direcionando mensagens para a pasta SPAM

Apndice B - Entregando mensagens com o Maildrop - 227

Se devidamente configurados, muitos servidores de e-mails podem fazer crticas com relao a mensagens que so recebidas no sentido de tentar classificlas ou no como SPAMs. No prprio Postfix existem diversos mecanismos e ferramentas que podem ser integradas para essa finalidade como o prprio SpamAssassin, discutido e apresentado anteriormente. Uma vez classificada como SPAM, uma mensagem, na maioria dos casos, no descartada pelo servidor de e-mails, apenas um cabealho chamado X-DSPAMResult adicionado ao e-mail de forma que algum componente do sistema possa interpret-lo para, se for o caso, tomar alguma medida. Muitos MUAs (Mail User Agents) costumam levar em considerao o valor desse campo para j sinalizar ao usurio que a mensagem est classificada como SPAM. Nesse caso, o usurio pode ainda configurar o prprio MUA para j executar alguma ao em mensagens com essas caractersticas, movendo-as, por exemplo, para uma pasta separada ou ainda colocando-as na lixeira. Essa alternativa, entretanto, fica sob responsabilidade do prprio usurio e pode no ser a soluo mais adequada para servidores de e-mails com muitos usurios com perfis bastante diferenciados. Nesse caso, pode-se utilizar o prprio Maildrop para j criar um nvel de interveno sobre essas mensagens.

Configurando Maildrop para entrega de mensagens


Nesta configurao, a forma de entrega das mensagens na caixa postal do usurio ser pelo Maildrop e no mais pelo Postfix (daemon Virtual) , ou seja, o MDA ser o Maildrop. Antes de mais nada vamos instalar o pacote courier-maildrop: # aptitude install courier-maildrop

Apndice B - Entregando mensagens com o Maildrop - 228

Configurando o Maildrop para consultar o OpenLDAP. # 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 Configurando o maildroprc para colocar as mensagens marcadas com Spam na pasta Spam. # 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 usurio caso no exista `test -d $MAILDIR` if ($RETURNCODE != 0) { `$mkdir -p $MAILDIR` `$maildirmake $MAILDIR`

Apndice 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 diretrio Rascunho DRAFT_FOLDER=.Drafts _DRAFT_DEST=$MAILDIR/$DRAFT_FOLDER/ `test -d $_DRAFT_DEST` if ($RETURNCODE != 0 ) { `$maildirmake $_DRAFT_DEST` `echo INBOX.Drafts >> $MAILDIR/courierimapsubscribed` }

Apndice B - Entregando mensagens com o Maildrop - 230

# Cria o diretorio CUR CUR_FOLDER=cur _CUR_DEST=$MAILDIR/$CUR_FOLDER/ `test -d $_CUR_DEST` if ($RETURNCODE != 0 ) { `$mkdir -p $_CUR_DEST` } # Cria o diretorio NEW NEW_FOLDER=new _NEW_DEST=$MAILDIR/$NEW_FOLDER/ `test -d $_NEW_DEST` if ($RETURNCODE != 0 ) { `$mkdir -p $_NEW_DEST` } # Cria o diretorio TMP TMP_FOLDER=tmp _TMP_DEST=$MAILDIR/$TMP_FOLDER/ `test -d $_TMP_DEST` if ($RETURNCODE != 0 ) { `$mkdir -p $_TMP_DEST` } # Se a mensangem estive marcada como spam envia para a pasta SPAM if (/^X-Spam-Status:.*Yes/) { exception { to $MAILDIR/.Spam/ } } Edite o /etc/postfix/main.cf do Postfix

Apndice B - Entregando mensagens com o Maildrop - 231 # 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

Criando os arquivos vmd.cf, vms.cf e vma.cf :


# mkdir /etc/postfix/ldap # vi /etc/postfix/ldap/vmd.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 = (&(ou=%s)) result_attribute = ou version = 3 bind = yes timeout = 30

# 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

Apndice 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

Reinicie todos os servios envolvidos: # /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 vrus de testes EICAR e verifique os logs do Postfix. Faa olho nos logs. o mesmo enviando uma mensagem com o arquivo

/usr/share/doc/spamassassin/examples/sample-spam.txt como anexo. E fique de

Apndice B - Entregando mensagens com o Maildrop - 233

Exerccios
1. Qual a funo do Maildrop? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

2. Quais as principais vantagens de utilizar um MDA avanado? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

3. Qual o impacto do Maildrop sobre o desempenho de entrega das mensagens? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________

Apndice C - CourierIMAP POP3/IMAP - 234

Apndice C - CourierIMAP POP3/IMAP

Apndice C - CourierIMAP POP3/IMAP - 235

Introduo Servidor Courier


O Courier um sistema MTA integrado baseado em protocolos abertos , tais como SMTP/ESMTP, IMAP, POP3, LDAP, SSL, e HTTP. POP e Courier-POPS. O Courier-IMAP uma implementao bastante robusta do protocolo IMAP, sendo capaz de gerenciar centenas de milhares de contas de e-mails em um mesmo servidor, o que o torna adequado para ambientes de pequenas, mdias e grandes instituies. Abaixo esto relacionadas algumas de suas principais caractersticas: Autenticao utilizando certificados SSL; Distribuio de caixas de correio entre vrios servidores; Segurana como por exemplo a capacidade de restrio do nmero mximo de logins; Compartilhamento de pastas entre grupos de usurios; Integrao com repositrios de dados tais como o LDAP e bancos de dados relacionais como, por exemplo, o MySQL e o PostgreSQL. Neste treinamento, sero utilizados, especificamente, os componentes Courier-IMAP, Courier-IMAPS, Courier-

Instalando Courier-Imap
# aptitude install courier-imap courier-imap-ssl courier-pop courierpop-ssl courier-authlib-ldap

Configurando Courier - Autenticao com OpenLDAP


# vi /etc/courier/authdaemonrc authmodulelist="authldap" authmodulelistorig="authldap" daemons=5

Apndice C - CourierIMAP POP3/IMAP - 236 authdaemonvar=/var/run/courier/authdaemon DEBUG_LOGIN=0 DEFAULTOPTIONS="" LOGGEROPTS="" importante perceber que no arquivo de configurao authldaprc o separador entre a varivel e seu valor, corresponde a dois tabs ou duas tabulaes. Alm disso no pode haver espaos em branco no fim da linha, aps o valor de cada varivel. Esses cuidados so determinantes para o funcionamento, ou no do Courier. # vi /etc/courier/authldaprc LDAP_URI LDAP_PROTOCOL_VERSION LDAP_BASEDN LDAP_BINDDN LDAP_BINDPW LDAP_TIMEOUT LDAP_MAIL LDAP_FILTER LDAP_GLOB_UID LDAP_GLOB_GID LDAP_HOMEDIR LDAP_MAILDIR LDAP_MAILDIRQUOTA LDAP_FULLNAME LDAP_CRYPTPW LDAP_DEREF LDAP_TLS ldap://localhost 3 dc=empresa cn=admin,dc=empresa 123 5 mail (objectClass=qmailUser) vmail vmail homeDirectory mailMessageStore mailQuotaSize cn userPassword never 0

Apndice C - CourierIMAP POP3/IMAP - 237

Reiniciando o Servio Courier-IMAP


# /etc/init.d/courier-authdaemon restart # /etc/init.d/courier-imap restart # /etc/init.d/courier-imap-ssl restart ou # for cada in `ls /etc/init.d/courier-*` ; do $cada restart ; done

Criando a caixa postal do usurio


Para poder acessar a caixa postal do usurio, ela tem que existir. Pode-se configurar o MDA para criar a caixa postal automaticamente quando da chegada da primeira mensagem. Entretanto, aqui, vamos faz-lo manualmente. # mkdir -p /home/vmail/domains/matrizX.com.br/joao # maildirmake /home/vmail/domains/matrizX.com.br/joao/Maildir # chown vmail: /home/vmail -R Utilize o Cliente de E-mail de sua preferncia para acessar a caixa postal Esse cenrio de configurao considera que voc esteja utilizando o Postfix com Maildrop

Você também pode gostar