Documente Academic
Documente Profesional
Documente Cultură
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.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.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
-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.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.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.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
-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
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.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
-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.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
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
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
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.
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.
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.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.
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.
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.
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:
# 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
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
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.
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>
# 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
1.5. Exerccios
1. Quem desenvolveu o E-mail? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
3. O que o protocolo SMTP, POP, e IMAP? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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.
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.
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;
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
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.
# 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
$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
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
aptitude update aptitude install vim aptitude install rpl echo syntax on >> /etc/vim/vimrc
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
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
$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
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
$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
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
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
3.3. Laboratrio
Configurar o domnio filialX.com.br conforme exemplo descrito na sesso 3.2 prtica dirigida.
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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.
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.
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
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.
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.
Incoming
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.
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
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
simultneo; Command + args Comando a ser executado mais os seus argumentos, exemplo: maildrop unix n n pipe
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.
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
postconf
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
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.
#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>
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.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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
7. Qual a diferena entre os comandos postconf -d e postconf -n? Explique. ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
8. Aps executado o comando postmap, necessrio recarregar o Postfix? Explique. ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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.
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
Funo
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
4. Cite fatores que contribuem para o crescimento das filas no Postfix. ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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
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.
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.
Chave de pesquisa
Endereo IP e hostname do cliente Endereo do remetente da mensagem Endereo do destinatrio da mensagem O hostname HELO/EHLO
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
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
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
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
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
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.
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
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.
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
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:
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
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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
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:
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:
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
# 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.
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:
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.3. Exerccios
1. Qual o diretrio dos logs do Postfix? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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.
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/ .
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.
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
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.
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
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 - 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.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
8.5. Exerccios
1. O que o OpenLDAP? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
3. Qual a diferena entre os comandos slapadd e ldapadd? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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 - 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.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
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 }
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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.
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
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 '^]'.
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.
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
localhost[127.0.0.1]
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.
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
smtps
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.
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
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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
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
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.
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:
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:
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
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.
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
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.
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
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.
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).
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.
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
# 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
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)
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.
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.
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.
# 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;
# 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
Alguns dos parmeros acima est comentado, voc pode descoment-los conforme a sua necessidade. Perceba que possvel adicionar mais extenses para as regras.
-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.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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
4. Descreva o processo de funcionamento do Amavis-New integrado ao Postfix(Apenas conceitual)? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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.
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.
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
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
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
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
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.
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
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 >
15.3. Exerccios
1. Qual a funo do SPF? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
2. O que necessrio para que o SPF funcione corretamente? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
4. Porque a greylist no funciona com servidor com relay aberto? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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.
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
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)
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
;; 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
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.
# ============================================================
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
Captulo 16 Aumentando a Performance da infraestrutura de Correio - 189 150 -/+ buffers/cache: Swap: 486 264 1 239 485
1 running,
76 sleeping,
0.0%ni, 99.7%id,
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
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
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
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
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
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
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
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.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
O comando Time utilizando em conjunto com o smtp-source para contabilizar o tempo de execuo da tarefa.
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
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
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.
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.
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.
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
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
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
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.
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
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.
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
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
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 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"
# 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
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
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
administradores restritos a cada domnios e administradores globais, que podem administrar todos os domnios implementados.
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
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
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.
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
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 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` }
# 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
# 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
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? ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________
Instalando Courier-Imap
# aptitude install courier-imap courier-imap-ssl courier-pop courierpop-ssl courier-authlib-ldap
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