Aula06 - postfix
-
Upload
carlos-veiga -
Category
Technology
-
view
459 -
download
1
Transcript of 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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