aula06 - postfix

16
CENTRO UNIVERSITÁRIO DE CAMPO GRANDE TECNOLOGIA EM REDES DE COMPUTADORES APLICAÇÕES EM REDES 5º SEMESTRE PROFESSOR CARLOS RICARDO BERNAL VEIGA Servidor MTA postfix O Postfix foi escrito por Wietse Venema, que é amplamente conhecida por suas ferramentas de segurança. Foi disponibilizado como software de livre em dezembro de 1998. A IBM patrocinou o lançamento inicial e continua a apoiar o seu desenvolvimento. São características do Postfix: Confiabilidade: O Postfix mostra seu real valor quando estiver operando sob condições estressantes. Mesmo dentro de ambientes simples, o software pode encontrar condições inesperadas, por exemplo, muitos sistemas de software se comportam de forma imprevisível, o Postfix detecta essas condições, e ao invés de descartar as mensagens existentes na fila ele dá ao sistema uma chance de se recuperar. Segurança: O Postfix assume que está sendo executado em um ambiente hostil. Ele emprega o conceito de privilégios mínimos de segurança que pode ser executado dentro de um contexto isolado, é executado com o menor conjunto de privilégios que precisa. Velocidade: O postfix foi escrito com o pensamento no desempenho e, de fato, toma tais medidas para garantir que a sua velocidade não sobrecarregue outros sistemas. Ele usa técnicas para limitar o número de novos processos a serem criados. Flexibilidade: O Postfix é na verdade composto de vários programas diferentes. Esta abordagem permite uma grande flexibilidade. Todas as peças são facilmente ajustáveis através de arquivos de configuração simples. 1

Upload: carlos-veiga

Post on 07-Aug-2015

459 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Servidor MTA postfix

O Postfix foi escrito por Wietse Venema, que é amplamente conhecida por suas

ferramentas de segurança. Foi disponibilizado como software de livre em dezembro de

1998. A IBM patrocinou o lançamento inicial e continua a apoiar o seu desenvolvimento.

São características do Postfix:

Confiabilidade: O Postfix mostra seu real valor quando estiver operando sob condições

estressantes. Mesmo dentro de ambientes simples, o software pode encontrar condições

inesperadas, por exemplo, muitos sistemas de software se comportam de forma

imprevisível, o Postfix detecta essas condições, e ao invés de descartar as mensagens

existentes na fila ele dá ao sistema uma chance de se recuperar.

Segurança: O Postfix assume que está sendo executado em um ambiente hostil. Ele

emprega o conceito de privilégios mínimos de segurança que pode ser

executado dentro de um contexto isolado, é executado com o menor conjunto de

privilégios que precisa.

Velocidade: O postfix foi escrito com o pensamento no desempenho e, de fato, toma tais

medidas para garantir que a sua velocidade não sobrecarregue outros sistemas. Ele usa

técnicas para limitar o número de novos processos a serem criados.

Flexibilidade: O Postfix é na verdade composto de vários programas diferentes. Esta

abordagem permite uma grande flexibilidade. Todas as peças são facilmente ajustáveis

através de arquivos de configuração simples.

1

Page 2: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Funcionamento do Postfix

A figura abaixo mostra o funcionamento do Postfix:

O Postfix é um mail transport agent, ele se comunica com outros MTAs e com um MDA

local, ele tem uma grande dependência com os serviços de DNS.

Configuração básica do postfix

Os arquivo de configuração do postfix ficam armazenados no diretório /etc/postfix, são

eles:

main.cf: Arquivo principal de configuração do postfix, é neste arquivo que definimos a

forma de como o MTA irá funcionar.

master.cf: arquivo de configurações responsável em iniciar e gerenciar os mais diversos

daemon que se integrarão ao postfix.

2

Page 3: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Estrutura de diretórios do Postfix:

Onde:

/etc/init.d/postfix: Script de inicialização do Postfix;

/etc/postfix: Arquivos de configuração do Postfix;

/var/spool/postfix: Diretório contendo as filas do postfix

Principais processos do Postfix:

O postfix é modular, existem vários processos que controlam seu funcionamento, eles são

gerenciados pelo arquivo de configuração master.cf.

Os principais daemons são: smtpd, pickup, qmgr, local e postdrop.

3

Page 4: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Processo do SMTP

O servidor SMTP aceita pedidos de conexão da rede e executa zero ou mais transações

SMTP por conexão. Cada mensagem recebida é canalizado através Daemon cleanup, e é

colocado na fila incoming. Para este modo de operação, o processo espera ser executado

a partir do gerenciador de processo Master.

Processo CLEANUP

O Daemon cleanup realiza checagens sobre o conteúdo de cada mensagem. Quando ele

encontra um problema, por padrão, ele retorna um diagnóstico de estado para o cliente, e

o deixa até o cliente lidar com a problema.

Processo QMGR

O Daemon qmgr aguarda a chegada de e-mails recebidos e organiza para sua entrega

via processos de entrega do Postfix. O qmgr mantém as seguintes filas: Incoming, active,

deferred, corrupt e hold.

Processo Pickup

O Daemon pickup aguarda sugestões que novos e-mails foram descartada no diretório

maildrop, e encaminha para o cleanup. Arquivos mal formatadas são excluídos sem

notificar o autor. Este programa espera ser executado a partir do gerenciador Master de

processos.

Processo Postdrop

O postdrop cria um arquivo no diretório maildrop.

4

Page 5: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Processo Local

O Daemon local (é um agente de entrega de mensagens) processa pedidos de entrega

da fila do Postfix para entregar o e-mail para destinatários locais. Cada solicitação de

entrega especifica um arquivo da fila, um endereço de remetente, um domínio ou host

para entregar a um ou mais destinatários. Este programa espera ser executado a partir do

gerenciador de processos Master.

5

Page 6: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Filas do Postfix:

As filas do postfix são diretórios onde são os e-mails que chegam à aplicação são são

tratados antes de chegaream ao seu destino final, elas ficam armazenadas no diretório

/var/spool/postfix.

São elas:

Fila incoming- Esta file contém todos os emails novos que entram na fila do postfix. Eles

são armazenados pelo processo cleanup.

Fila active- Esta file contém todos os e-mails que foram abertos pelo gerenciador da fila

para entrega.

Fila deferred- Esta fila armazena todos os emails que por algum motivo não puderam ser

entregues aos seus receptores.

Fila corrupt- As mensagens que não podem ser lidas ou danificadas são colocadas nesta

fila.

Fila Hold - Esta fila é usada pelos administradores para colocar mensagens em espera

até que alguém especifique que ela deva ser liberada.

6

Page 7: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Determinando o caminho de cada mensagem:

Mensagem sendo originadas do domínio local do MTA:

Mensagens sendo originadas de outra rede para o MTA local

7

Page 8: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

O arquivo main.cf contém as principais diretivas de configuração do postfix, são elas:

Diretiva Descrição

myhostname Nome do host onde o postfix é executado

mydomain Nome do domínio utilizado para envio de mensagens

mydestination Lista de domínios atendidos pelo Postfix(para mensagensrecebidas). Geralmente inclui o nome do host (para recebermensagens locais). O caracter $ indica uma variável.

relay_domains lista os domínios, ou mapas contendo domínios, para os quais oPostfix fará relay.

biff Esquema de notificação que utiliza o cliente comsat

mynetworks Redes que o postfix consideram como confiáveis

smtpd_banner Mensagem de boas vindas do postfix

Mapas

O postfix utiliza muito o conceito de mapas que são basicamente tabelas contendo duas

colunas: a 1ª é a chave e a segunda são os valores desta chave.

No arquivo main.cf, podemos especificar os mapas a serem utilizados no Postfix:

Exemplo:

transport_maps = hash:/etc/postfix/transportheader_checks = regexp:/etc/postfix/header_checks

Exemplo de conteúdo de arquivos referenciados por mapas:

Seunome.com.br lmtp:unix:/var/run/cyrus/socket/lmtp .seunome.com.br lmtp:unix:/var/run/cyrus/socket/lmtp

8

Page 9: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

O mapas mais utilizados pelo postfix são:

Tipo de Mapa Significado

Hash Base indexada baseada em hash (usa Berkeley DB)

Regexp Tabela baseada em expressões regulares

pcre Tabela baseada em expressões regulares do Perl

unix Tabela de consulta em base de autenticação Unix

ldap Tabela de consulta em bases LDAP

Mapas Remotos

São mapas de conexões a sistemas externos, o mapa remoto mais utilizado é o LDAP.

Mapas do tipo ldap são especificados como: ldap:fonte

As opções mais importantes do mapa LDAP que podemos utilização as:

• Server_host: (padrão: localhost)

◦ Nome ou endereço IP do servidor a ser conectado.

• Server_port: (padrão: 389)

◦ Porta de acesso ao serviço LDAP.

• Search_base

◦ Base de procura LDAP. Ex: dc=empresa,dc=com,dc=br

• time_out: (padrão: 10)

◦ Tempo máximo de espera por uma resposta à consulta em segundos.

• Query_filter:

◦ Expressão do filtro LDAP a ser utilizado como consulta, segundo a RFC 2254.

Por exemplo, (mail=%s) onde %s será substituído pelo e-mail que o Postfix

está tentando consultar, outras substituições úteis são “%u” (que recebe o

9

Page 10: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

nome do usuários) e “%d” que recebe o hostname ou domínio.

Exemplo de consulta: ((&(mail=%s)(objectClass=posixAccount)) )

• Result_attribute

◦ Lista de atributos que devem ser lidos do resultado da pesquisa e que

resultarão em um endereço de e-mail.

Exemplo completo de uma mapa remoto LDAP

# Mapa utilizado para definir o destinatário final das mensagens virtual_alias_maps = ldap:mailboxes

ldaphost = 127.0.0.1 ldapbase = dc=nome,dc=com,dc=br

mailboxes_server_host = $ldaphost mailboxes_version = 3 mailboxes_timeout = 10 mailboxes_search_base = $ldapbase mailboxes_query_filter = (&(mail=%s)(objectClass=posixAccount)) mailboxes_bind = no mailboxes_domain = hash:/etc/postfix/expresso-dominios mailboxes_result_attribute = uid

Protocolo LMTP

LMTP é concebido como uma alternativa para SMTP normal para situações onde o lado

de recebimento não tem uma fila de correio, como um servidor de armazenamento de

correio agindo como um Mail Delivery Agent.

10

Page 11: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Instalação e configuração do Postfix para o laboratório

Os pacotes a serem instalados são:

• Postfix: Aplicação de envio e recebimento de e-mails;

• postfix-ldap: módulo de integração entre o postfix e ldap;

• postfix-pcre: módulo que permite criação de expressões regulares em perl

Para a instalação do Postfix digite o seguinte comando:

apt-get install postfix postfix-ldap postfix-pcre

A tela a seguir informa as opções de instalação do Postfix:

O usuário deverá selecionar “Sem configuração”:

11

Page 12: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Editar o arquivo /etc/postfix/main.cf e substituir o conteúdo existe pelo conteúdo abaixo:

# Configuracoes do SMTP Interno

#nome do domínio utilizado para envio de mensagens mydomain = seunome.com.br

#Lista de domínios atendidos pelo Postfix(para mensagens recebidas). myorigin = $mydomain

#nome do host onde o postfix é executado: myhostname = expressov3.seunome.com.br

# Esquema de notificacao que utiliza o cliente comsat biff = no

# Mensagem de boas vindas do postfix smtpd_banner = $myhostname ESMTP Expresso Livre - (GNU/Linux)

# Postfix pode tratar alguns cabeçalhos de e-mails mal formatados append_at_myorigin = no append_dot_mydomain = no

# A lista de dominios que esta maquina considera seu destino final. mydestination = $mydomain, $myhostname, $myorigin

# Redes que o postfix consideram como confiaveis mynetworks = 127.0.0.1/32

#Interfaces de rede nas quais o Postfix pode fazer bind inet_interfaces = all inet_protocols = ipv4

# Desabilita buscas de domínios no DNS disable_dns_lookups = no

#Faz com que o postfix aceite caixas de emails com caracteres especiais ex: #[email protected] recipient_delimiter = +

# Faz a entrega dos e-mails para o cyrus transport_maps = hash:/etc/postfix/transport

# Utilização do SASL para o gerenciamento de autenticações no servidor # Habilita autenticação pelo SASL smtpd_sasl_auth_enable = yes #Não habilita autenticação anônima smtpd_sasl_security_options = noanonymous

12

Page 13: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

broken_sasl_auth_clients = yes smtpd_sasl_local_domain = $mydomain

#Mapas de Rewrite de domínios #smtp_generic_maps = hash:/etc/postfix/generic

# log do subject - http://askubuntu.com/questions/245299/postfix-logging #header_checks = pcre:/etc/postfix/header_checks

# Mapas de Apelidos alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases

# Faz uma consulta pelo from do email pega o resultado uid(username) e compara com o username da #autenticacao SASL smtpd_sender_login_maps = ldap:/etc/postfix/users_from.cf

# Numero maximo de recipientes na mesma mensagem smtpd_recipient_limit = 2000 smtpd_recipient_overshoot_limit = 2000

#Restrições de acesso smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject

smtpd_recipient_restrictions = permit_mynetworks, # reject_sender_login_mismatch, permit_sasl_authenticated, reject_unauth_destination, reject_unverified_recipient, reject # Mapa utilizado para definir o destinatário final das mensagens virtual_alias_maps = ldap:mailboxes

ldaphost = 127.0.0.1 ldapbase = dc=seunome,dc=com,dc=br

mailboxes_server_host = $ldaphost mailboxes_version = 3 mailboxes_timeout = 10 mailboxes_search_base = $ldapbase mailboxes_query_filter = (&(mail=%s)(objectClass=posixAccount)) mailboxes_bind = no

13

Page 14: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

mailboxes_domain = hash:/etc/postfix/expresso-dominios mailboxes_result_attribute = uid

Criar o arquivo /etc/postfix/users_from.cf

server_host = 127.0.0.1 search_base = dc=seunome,dc=com,dc=br query_filter = (&(mail=%s)(objectClass=posixAccount)) result_attribute = uid version = 3 bind = no timeout = 30

Editar o arquivo /etc/postfix/master.cf

1ª Parte: Tirar o processo smtpd de chroot

smtp inet n - n - - smtpd

2ª Parte: Habilitar o acesso via MUAs pela porta 587 de forma autenticadasubmission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING

3ª Parte: Tirar o processo LMTP de chroot

lmtp unix - - n - - lmtp

14

Page 15: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Criar o arquivo /etc/postfix/transport com o conteúdo abaixo.

Este arquivo será responsável pela integração do cyrus com o Postfix

Seunome.com.br lmtp:unix:/var/run/cyrus/socket/lmtp .seunome.com.br lmtp:unix:/var/run/cyrus/socket/lmtp

Criar o arquivo /etc/postfix/expresso-dominios e adicionar o conteúdo abaixo.

seunome.com.br OK

Executar os comandos:

postmap /etc/postfix/transport postmap /etc/postfix/expresso-dominios

Criar o arquivo e o diretório /etc/postfix/sasl/smtpd.conf e adicionar o conteúdo abaixo:

pwcheck_method: saslauthd mech_list: PLAIN LOGIN

A seção submission irá habilitar a porta 587 que é recomendado para clientes de email.

Adicionar o usuário postfix no grupo sasl e mail com os comandos abaixo.

gpasswd -a postfix sasl gpasswd -a postfix mail gpasswd -a cyrus mail

Reiniciar o serviço:

service postfix restart

OBS: É necessário garantir que o usuários cyrus e postfix estejam no grupo mail para

que a comunicação entre eles via protocolo lmtp funcione corretamente.

15

Page 16: Aula06 -  postfix

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

TECNOLOGIA EM REDES DE COMPUTADORES

APLICAÇÕES EM REDES

5º SEMESTRE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Testando o Postfix e Cyrus

Testar se a configuração do Postfix + Cyrus + Slapd esta funcionando. Faça um telnet

para o servidor postfix e envie um email.

# telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 expressov3.seunome.com.br ESMTP Postfix (Debian/GNU)

ehlo localhost

250-expressov3.nervosao.com.br250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN

mail from: [email protected] 250 2.1.0 Ok rcpt to: [email protected] 250 2.1.5 Ok DATA 354 End data with <CR><LF>.<CR><LF> hello world . 250 2.0.0 Ok: queued as 374FF412C4

quit

221 2.0.0 Bye

16