Académique Documents
Professionnel Documents
Culture Documents
Agradecimentos
Lista de Abreviaturas
Introdução......................................................................................................................... 1
1 Breve história dos sistemas de correio electrónico................................................... 3
1.1 Troca de mensagens numa mainframe ............................................................. 3
1.2 Sistema de mensagens multi-mainframe .......................................................... 4
1.3 Sistema de mensagens em ambiente UNIX...................................................... 5
1.4 Programas MTA para ambientes UNIX ........................................................... 6
1.4.1 Sendmail ................................................................................................... 6
1.4.2 Postfix....................................................................................................... 7
1.4.3 Qmail ........................................................................................................ 8
1.4.4 Smail......................................................................................................... 8
1.4.5 Exim ......................................................................................................... 8
1.5 Programas MUA............................................................................................... 9
1.5.1 O programa mail....................................................................................... 9
1.5.2 O programa pine ..................................................................................... 10
1.5.3 Programas para X Windows ................................................................... 10
1.6 Sistemas de correio em Redes Locais............................................................. 10
1.7 Protocolos utilizados pelos sistemas de mail.................................................. 12
1.7.1 MTA’s - Mail Transfer Agent Protocols ............................................... 12
1.7.1.1 SMTP – Simple Mail Transfer Protocol............................................. 12
1.7.1.2 ESMTP – Extended Simple Mail Transfer Protocol .......................... 13
1.7.1.3 LMTP – Local Mail Transport Protocol............................................. 14
1.7.2 Protocolos MUA..................................................................................... 14
1.7.2.1 POP – Post Office Protocol ................................................................ 14
1.7.2.2 IMAP – Interactive Mail Access Protocol.......................................... 15
2 Introdução ao Postfix.............................................................................................. 17
2.1 Arquitectura do Postfix................................................................................... 17
2.1.1 Programas de processamento de mensagens .......................................... 18
2.1.2 Queues utilizadas pelo Postfix................................................................ 19
i
2.1.3 Utilitários ................................................................................................ 20
2.1.4 Ficheiros de configuração....................................................................... 21
2.1.5 Lookup Tables ........................................................................................ 21
2.1.6 Compatibilidade com o Sendmail .......................................................... 22
2.2 Comunicação entre processos......................................................................... 22
2.3 Gestão de filas (queues).................................................................................. 23
2.4 Segurança........................................................................................................ 25
3 Instalação e Configuração do Postfix ..................................................................... 29
3.1 Sistemas compatíveis...................................................................................... 29
3.2 Requisitos ....................................................................................................... 30
3.2.1 Packages necessários.............................................................................. 30
3.2.2 Configurações Adicionais ...................................................................... 31
3.2.2.1 Importância do DNS no Postfix.......................................................... 32
3.2.2.2 Configuração de um cliente DNS....................................................... 33
3.3 Instalação a partir de um ficheiro RPM.......................................................... 34
3.3.1 Executar Postfix pela primeira vez......................................................... 38
3.4 Instalação a partir de código fonte.................................................................. 41
3.4.1 Instalação dos executáveis...................................................................... 43
3.5 Instalando o Postfix num ambiente chroot ..................................................... 43
3.6 Programas utilitários do Postfix ..................................................................... 44
3.6.1 Verificar as queues - mailq..................................................................... 45
3.6.2 Iniciar e finalizar o Postfix – postfix ...................................................... 45
3.6.3 Gestão de Alias - postalias...................................................................... 46
3.6.4 Visualizar mensagens - postcat............................................................... 47
3.6.5 Gestão dos ficheiros de configuração - postconf.................................... 47
3.6.6 Envio de mensagens para os programas do Postfix - postkick............... 49
3.6.7 Bloquear ficheiros - postlock.................................................................. 50
3.6.8 Tratamento de mensagens de log - postlog ............................................ 50
3.6.9 Gestão das tabela de lookup - postmap................................................... 50
3.6.10 Gestão das queues - postsuper ................................................................ 51
3.7 Iniciar o Postfix como Serviço ....................................................................... 51
3.8 Comandos úteis .............................................................................................. 52
ii
4 O Ficheiro Master.cf............................................................................................... 57
4.1 O programa master ......................................................................................... 57
4.2 Sintaxe do ficheiro master.cf .......................................................................... 57
4.2.1 Tipos de serviço...................................................................................... 59
4.2.2 Tipos de transporte ................................................................................. 60
4.2.3 Private..................................................................................................... 60
4.2.4 Unprivileged ........................................................................................... 61
4.2.5 Chroot ..................................................................................................... 62
4.2.6 Wakeup................................................................................................... 62
4.2.7 Maxprocess............................................................................................. 62
4.2.8 Commands .............................................................................................. 62
5 Ficheiro Main.cf ..................................................................................................... 65
5.1 Ficheiro main.cf.............................................................................................. 65
6 Lookup Tables ........................................................................................................ 77
6.1 Base de Dados Indexadas ............................................................................... 79
6.2 Ficheiros texto de expressões regulares.......................................................... 80
6.3 Base de dados externas ................................................................................... 80
6.3.1 Utilizando NIS........................................................................................ 81
6.3.2 Utilizando MySQL ................................................................................. 81
6.3.3 Utilizando LDAP.................................................................................... 82
6.4 Tabelas utilizadas pelo Postfix ....................................................................... 84
6.4.1 Tabela access .......................................................................................... 84
6.4.2 Tabela aliases.......................................................................................... 86
6.4.3 Tabela canonical ..................................................................................... 87
6.4.4 Tabela relocated...................................................................................... 87
6.4.5 Tabela transport ...................................................................................... 88
6.4.6 Tabela virtual.......................................................................................... 89
7 Migrando Sendmail para o Postfix ......................................................................... 93
7.1 Ficheiros e Directórios utilizados pelo Sendmail ........................................... 93
7.1.1 O programa executável Sendmail........................................................... 93
7.1.2 O ficheiro de configuração sendmail.cf.................................................. 94
7.1.3 O sistema de queues no Sendmail .......................................................... 94
iii
7.1.4 Como verificar o conteúdo da queue...................................................... 94
7.1.5 Como criar Alias..................................................................................... 95
7.1.5.1 Base de dados de Alias ....................................................................... 95
7.1.6 Como calcular estatísticas ...................................................................... 96
7.1.6.1 Como reiniciar as estatísticas ............................................................. 96
7.1.6.2 Armazenando as estatísticas ............................................................... 96
7.1.6.3 Configurar o Sendmail para guardar estatísticas ................................ 96
7.1.7 Ficheiro de Ajuda no Sendmail .............................................................. 96
7.1.8 Reenvio de correio – forwarding ............................................................ 96
7.2 Configurar Postfix para utilizar ficheiros do Sendmail .................................. 97
7.2.1 Utilização das caixas de correio existentes............................................. 98
7.2.2 O Formato Maildir ................................................................................. 99
7.2.3 Utilização dos Aliases do Sendmail ....................................................... 99
7.2.4 Utilização de ficheiros .forward no Postfix .......................................... 100
7.2.5 Utilização do ficheiro sendmail.cw e de virtusertable ......................... 101
7.2.6 Processar Mensagens a Enviar ............................................................. 102
8 Postfix num ISP .................................................................................................... 103
8.1 Características de um Servidor de correio de um ISP .................................. 103
8.1.1 Domínios Virtuais ................................................................................ 104
8.1.2 Selective Relaying ................................................................................ 105
8.2 Configuração de domínios virtuais............................................................... 107
8.3 Configuração do DNS para Dominios Virtuais............................................ 107
8.4 Configuração do Postfix para suporte a Domínios Virtuais ......................... 108
8.4.1 Configuração para receber correio de um domínio completo .............. 108
8.4.2 Configuração para receber correio de utilizadores individualmente .... 109
8.4.3 Configuração para receber correio utilizando o ficheiro transport....... 110
8.5 Selective Relaying no Postfix ....................................................................... 111
8.5.1 Valores de rejeição ............................................................................... 112
8.5.2 Valores de permissão............................................................................ 113
8.5.3 Utilizando loockup tables para controlar o acesso de clientes ............. 113
9 Sistemas Externos vs Postfix................................................................................ 115
9.1 MySQL ......................................................................................................... 115
iv
9.2 OpenLDAP ................................................................................................... 115
9.3 Majordomo ................................................................................................... 116
9.4 SqWebMail................................................................................................... 116
Futuro do Correio Electrónico...................................................................................... 119
Postfix – uma visão pessoal.......................................................................................... 123
Bibliografia................................................................................................................... 125
Onde encontrar mais informação ?........................................................................... 126
v
Índice de Figuras
Figura 1.1 - Troca de mensagens numa mainframe.......................................................... 3
Figura 1.2 - Sistema de armazenamento de mensagens numa mainframe ....................... 4
Figura 1.3 - Sistema de mensagens multi-mainframe ...................................................... 5
Figura 1.4 - Sistema de mail em ambiente UNIX ............................................................ 6
Figura 1.5 - Exemplo de uma comunicação SMTP........................................................ 13
Figura 1.6 - Exemplo de uma comunicação POP3......................................................... 15
Figura 1.7 - Exemplo de uma ligação IMAP.................................................................. 16
Figura 2.1 - Gestão de correio no Postfix....................................................................... 23
Figura 3.1 - Exemplo da aplicação Gnome RPM........................................................... 34
Figura 3.2 - Instalar programas utilizando o Gnome RPM ............................................ 35
Figura 3.3 - Pesquisa de um programa utilizando o kpackage ....................................... 35
Figura 3.4 - Listagem dos ficheiros instalados utilizando o kpackage........................... 36
Figura 3.5 - Listagem dos ficheiros instalados do Postfix............................................. 37
Figura 3.6 - Controlo do inicio de serviços em Lina Recheai ........................................ 52
Figura 6.1- Procedimento para criar lookup tables......................................................... 79
Figura 6.2 - Fluxo de informação entre o Postfix e um servidor MySQL...................... 82
Figura 6.3 - Fluxo de informação entre o Postfix e um servidor LDAP ........................ 83
Figura 6.4 - Restrição de acesso ao correio electrónico ................................................. 84
Figura 6.5 - Protocolos de comunicação utilizados no transporte.................................. 88
Figura 6.6 - Exemplo de domínios virtuais .................................................................... 90
Figura 8.1- Exemplo de Domínios Virtuais.................................................................. 105
Figura 8.2 - Exemplo de Open Relaying ...................................................................... 105
Figura 8.3 - Exemplo da aplicação de selective relaying ............................................. 106
Figura 8.4 - Exemplo da interacção de um domínio na Internet .................................. 108
Índice de Listagens
Listagem 4.1 - Exemplo de um ficheiro master.cf ......................................................... 59
Listagem 4.2 - Exemplo dos directórios private e public ............................................... 61
Listagem 7.1- Exemplo de um ficheiro sendmail.hf ...................................................... 96
Listagem 7.2 - Exemplo de um ficheiro virtusertable.................................................. 101
vi
Listagem 7.3 - Exemplo de um ficherio virtual no Postfix .......................................... 101
Índice de Tabelas
Tabela 2.1 - Programas de processamento de mensagens .............................................. 19
Tabela 2.2 - Exemplo de um ficheiro master.cf ............................................................. 19
Tabela 2.3 - Queues utilizadas pelo Postfix .................................................................. 20
Tabela 2.4 - Utilitários do Postfix ................................................................................. 20
Tabela 2.5 - Ficheiros de configuração .......................................................................... 21
Tabela 2.6 - Ficheiros utilizados palo Postfix (Loockup Tables) ................................... 22
Tabela 3.1 - Directórios onde o Postfix instala ficheiros ............................................... 38
Tabela 3.2 - Comandos do Postfix ................................................................................. 46
Tabela 3.3 - Parâmetros do postalias .............................................................................. 46
Tabela 3.4 - Tipos de base de dados utilizadas nos Alias............................................... 46
Tabela 3.5 - Opções de pesquisa do postconf................................................................. 48
Tabela 3.6 - Opções de edição do postconf .................................................................... 48
Tabela 3.7 - Opções de edição do postlog ...................................................................... 50
Tabela 3.8 - Opções de edição do postmap .................................................................... 51
Tabela 4.1 - Parâmetros do ficheiro master.cf............................................................... 58
Tabela 4.2 - Tipos de serviço ......................................................................................... 60
Tabela 5.1- Estrutura de directórios ............................................................................... 66
Tabela 5.2 - Owner do processo e das queues............................................................... 66
Tabela 5.3 - Nome do Servidor na Internet e Nome de Domínio................................... 67
Tabela 5.4 - Envio de Correio ........................................................................................ 67
Tabela 5.5 - Recepção de Correio .................................................................................. 68
Tabela 5.6 - Ligação á Internet ou a Intranets ................................................................ 68
Tabela 5.7 - Controlo das caixas de correio locais ......................................................... 68
Tabela 5.8 - Redefinição dos Endereços de Correio ...................................................... 69
Tabela 5.9 - Trabalhar com Virtual Domains................................................................. 70
Tabela 5.10 - Protocolo de Transporte ........................................................................... 70
Tabela 5.11 - Base de Dados de Alias ............................................................................ 71
Tabela 5.12 - Extensões aos Endereços de Correio........................................................ 71
Tabela 5.13 - Entrega de Mensagens.............................................................................. 72
vii
Tabela 5.14 - Tratamento de SPAM............................................................................... 73
Tabela 5.15 - Serviço ETRN .......................................................................................... 73
Tabela 5.16 - Criação de Banner .................................................................................... 73
Tabela 5.17 - Entrega de Múltiplas Mensagens ............................................................. 74
Tabela 5.18 - Controlo do Debug ................................................................................... 74
Tabela 5.19 - Estabelecer Limites nas Mensagens ......................................................... 75
Tabela 6.1 - Lookup Tables no Postfix .......................................................................... 78
Tabela 6.2 - Tabela vs Programa .................................................................................... 78
Tabela 6.3 - Parâmetros LDAP....................................................................................... 84
Tabela 6.4- Tipos de formatos no ficheiro Access ......................................................... 85
Tabela 6.5 - Resultados a devolver ao servidor SMTP remoto ...................................... 85
Tabela 6.6 - Parâmetros smtpd que utilizam tabelas access ........................................... 86
Tabela 6.7- Tipos de domínios virtuais .......................................................................... 90
Tabela 7.1 -Exemplo de um ficheiro alias ..................................................................... 95
Tabela 7.2- Exemplo de um ficheiro .forward................................................................ 97
Tabela 8.1- Valores de rejeição .................................................................................... 113
viii
Agradecimentos
O uso do e-mail cresceu significativamente nos últimos anos. O que foi antes
considerado um luxo, é agora uma necessidade, sobretudo num ambiente corporativo.
Actualmente, a importância do e-mail tem vindo também a crescer nos ambientes
domésticos, levando os ISP's a criar serviços de e-mail para os utilizadores domésticos.
O crescimento exponencial da utilização do e-mail, quer no domínio empresarial
quer no domínio doméstico, fez com que as necessidades de hardware para suporte do
serviço de mail, também crescessem vertiginosamente, sendo banal em empresas de
dimensão considerável ver servidores de grande capacidade de processamento e
armazenamento exclusivamente dedicados ao serviço de mail. À medida que o número
de utilizadores cresce, para além do hardware, há necessidade da existência de software
servidor e cliente que responda a esse incremento de número de utilizadores.
A crescente existência e complexidade dos sistemas de correio electrónico,
contribuiu decisivamente para o desenvolvimento dos protocolos de mail. O Simple
Mail Transporte Protocol desenhou-se para transferir de forma eficiente, correio
electrónico entre computadores remotos. O Post Office Protocol e o Interactive Mail
Access Protocol criaram-se para permitir que utilizadores remotos, relativamente ao seu
servidor de correio, podessem aceder à sua caixa de correio.
Este trabalho tem como objectivo dar a conhecer um dos sistemas de correio, que
nos últimos anos tem ganho grande popularidade no mundo UNIX e que pretende ser
um dos softwares mais utilizados, sendo por isso, uma forte alternativa ao tão conhecido
Sendmail. É o Postfix.
1
1 Breve história dos sistemas de correio electrónico
Este trabalho, não tem como objectivo dar a conhecer a história, a forma como os
servidores de correio electrónico cresceram mas, o conhecimento da sua evolução
histórica permite uma melhor compreensão relativamente ao servidor Postfix, como
software de mail.
Mainframe
Utilizador A Utilizador B
Os sistemas UNIX, à medida que foram sendo utilizados cada vez mais em
detrimento das mainframes, levou a que os sistemas de e-mail também se tornassem
mais populares. Um dos principais contributos do UNIX no mundo dos softwares de e-
3
Breve história dos sistemas de correio electrónico
Mainframe
Base Dados das
mensagens
Software de troca mensagem
Utilizador A Utilizador B
4
Breve história dos sistemas de correio electrónico
Mainframe 1 Mainframe 2
Utilizador A Utilizador B
5
Breve história dos sistemas de correio electrónico
Servidor Unix
1.4.1 Sendmail
O Sendmail é um dos mais populares MTA’s no mundo UNIX. A grande
popularidade do Sendmail teve origem essencialmente na sua grande versatilidade.
Muitas das características introduzidas pelo Sendmail, tornaram-se padrão nos sistemas
de mail: virtual domains, message forwarding, user alias, mailing lists, e
masquerading. Os novos sistemas de mail incluindo o Postfix, são comparados com as
do Sendmail. Veremos mais adiante que o Postfix foi desenvolvido também para ser
cem porcento compatível com o Sendmail, sendo o impacto da migração mínimo quanto
possível.
O sistema de mail pode ser implementado para diversas finalidades: grandes redes
corporativas; interligação com ISP’s, ou mesmo apenas como gateway para outros
6
Breve história dos sistemas de correio electrónico
1.4.2 Postfix
O Postfix foi desenvolvido com o objectivo de ser uma alternativa aos MTA’s
existentes, ser mais seguro e facilmente implementável num sistema já existente, por
exemplo Sendmail. A sua grande diferença comparado ao Sendmail, é a sua
modularidade. O Postfix é composto por pequenos programas que implementam
determinadas funcionalidades e no conjunto formando um todo. O objectivo desta
modularidade é tornar as tarefas (implementadas por cada pequeno programa) mais
rápidas do que são num único programa monolítico. A modularidade, para além da
eficiência, também permite aumentar a segurança. De facto este é um dos grandes
objectivos e factor diferenciador relativamente aos outros MTA’s existentes no
mercado. Devido à arquitectura do Postfix, permite que, mesmo que um intruso consiga
penetrar num determinado modulo, a segurança não fica contudo comprometida. Estes
aspectos de segurança, serão desenvolvidos adiante mais em detalhe.
Simetricamente, e uma vez mais comparando com o Sendmail, o Postfix
apresenta-se como um programa bastante simples de implementar e utilizar. Em vez de
um único ficheiro compilado, o Postfix utiliza vários ficheiros texto, cujos parâmetros e
respectivos valores descrevem facilmente a funcionalidade que implementam. Por outro
lado, o administrador só terá que configurar um número mínimo de parâmetros para que
rapidamente tenha o sistema a funcionar.
7
Breve história dos sistemas de correio electrónico
1.4.3 Qmail
Este servidor assemelha-se ao Postfix na sua modularidade. Esta modularidade e
juntamente com o facto de cada modulo (pequeno programa que implementa
determinada funcionalidade do servidor) ser executado com diferente userid (tal como o
Postfix) garantem-lhe também a fama de um dos mais seguros programas de mail, tal
como o Postfix. À medida que as mensagens vão entrando, são armazenadas numa
queue. O Qmail implementa um conjunto de subdirectórios e estados, garantindo que
não existe perda de nenhuma mensagem caso, por exemplo, determinado subprograma
deixe de responder. Adicionalmente, o Qmail pode ser configurado para utilizar uma
queue especial que minimiza a possibilidade da caixa de correio do utilizador ficar
corrompida.
1.4.4 Smail
O Smail é mais um dos populares programas MTA’s existentes para plataformas
UNIX. Este é mais um dos muitos projectos da GNU (<http://www.gnu.org>). O Smail
implementa muitas das funcionalidades do Sendmail, sendo a sua principal
característica a facilidade de configuração - pouco mais de vinte linhas numa
configuração standard.
Uma das características do Smail, é a capacidade de fazer reencaminhamento
(forward) de mensagens sem utilizar nenhuma queue. O Sendmail, Postfix e o Qmail,
todos utilizam uma queue para armazenar as mensagens a serem entregues. Num
ambiente com pouco tráfego de correio esta é uma característica importante, uma vez
que o Smail tenta enviar o correio imediatamente, caso não consiga então irá ser
armazenado numa queue temporariamente até ser entregue. Contudo, num ambiente
com muito tráfego de correio, esta vantagem rapidamente se converte numa grande
desvantagem, levando a um crescente “overhead” na entrega de mensagens. No entanto,
o Smail também pode ser configurado para colocar primeiramente as mensagens numa
queue antes de as enviar.
1.4.5 Exim
Este programa é mantido pela Universidade de Cambridge. A sua popularidade
alcançada nos anos recentes, deve-se à capacidade de na sua configuração se poder
8
Breve história dos sistemas de correio electrónico
restringir facilmente a acção dos hackers e spammers. Os hackers são aqueles que
tentam furar um sistema, utilizando muitas vezes bugs existentes nas muitas linhas de
código dos programas. Os spammers são aqueles que “bombardeiam” os servidores de
correio com mensagens que não tem outra finalidade senão encher as caixas de correio.
Á medida que os sites indesejados são detectados, facilmente se configura o sistema
para restringir a entrada, por exemplo de correio vindo desses locais.
9
Breve história dos sistemas de correio electrónico
10
Breve história dos sistemas de correio electrónico
especifico (Lotus Notes) para aceder ás caixas de correio. É fundamental referir também
que, cada vez mais os programas de correio estão integrados com outras
funcionalidades, como por exemplo tratamento de bases de dados (ex: Lotus Notes) ou
ainda no caso da Microsoft, o Exchange está integrado com o Active Directory. Esta
integração, independentemente de novas facilidades incorporadas, trazem também
novos problemas, por exemplo ao nível de disponibilidade do serviço uma vez que, um
MTA passa a estar dependente de outros programas. Por outro lado, muitas das vezes
requerem máquinas dedicadas, aumentando consideravelmente os custos de
implementação bem como de administração.
A existência de protocolos proprietários, condiciona o trabalho dos servidores de
correio. Tem que verificar se o servidor destino implementa o mesmo protocolo
proprietário, e caso não se verifique, “traduzir” as mensagens num formato standard
para poder ser utilizado um protocolo standard.
A existência de uma única base de dados para armazenar todo o correio de todos
utilizadores, leva a existência de ficheiros bastante grandes cuja manipulação se torna
complicada – a facilidade de manipular 100 MB não é a mesma que 1 GB. Por outro
lado, caso a base de dados fique corrompida, a sua recuperação requer muitas das vezes
a desactivação do serviço para poder restaurar a base de dados com o respectivo
utilitário facultado pelo fornecedor do software, e nas situações em que não é possível
recuperar, novos problemas surgem. Nestas situações, os programas que utilizam
ficheiros isolados para cada utilizador tem grande vantagem, caso uma base de dados
fique corrompida, apenas essa poderá ficar temporariamente inacessível, evitando que
todos os utilizadores fiquem sem acesso. Os sistemas de correio proprietários apesar de
serem bastante populares, são também muito caros. Em alternativa, o administrador
pode utilizar sistemas operativos Linux ou FreeBSD com programas “open source”
como o Postfix, que oferecem as mesmas funcionalidades que esses sistemas
proprietários.
Em suma, estas e outras questões serão levantadas ao longo deste documento que,
de alguma forma poderão ajudar o administrador de sistema a escolher o sistema de
correio ideal.
11
Breve história dos sistemas de correio electrónico
12
Breve história dos sistemas de correio electrónico
Sistema X Sistema Y
Utilizador A Utilizador B
LAN
MUA MUA
User A User B
13
Breve história dos sistemas de correio electrónico
14
Breve história dos sistemas de correio electrónico
Sistema X
Utilizador A
Serviço
POP3
LAN
Cliente POP3
Utilizador A
15
Breve história dos sistemas de correio electrónico
Sistema X
Utilizador A
Serviço
IMAP
LAN
Cliente IMAP
Utilizador A
16
2 Introdução ao Postfix
Agora que conhecemos um pouco da história dos servidores de e-mail, bem como
os protocolos utilizados, focar-se-à nas próximas páginas o tema central deste livro – o
Postfix.
Inicialmente foi desenvolvido na IBM com o nome de Vmailer. No entanto,
devido ao facto de se ter verificado que existia no mercado uma marca registada com
um nome parecido, passou-se a designar Postfix. O Postfix foi desenvolvido por Wietse
Venema nos finais da década de 90, para ser uma alternativa aos sistemas de mail
existentes para ambientes UNIX, sobre tudo o Sendmail.
O Postfix rapidamente tornou-se num dos mais populares softwares de mail
disponíveis para ambientes UNIX. É mais um entre um leque enorme de projectos
freeware.
O Postfix tem como objectivo ser rápido, de fácil administração e seguro e,
simultaneamente, ser compatível com o Sendmail devido à grande implantação deste
servidor de mail. Tal como referido na sua página principal, <http://www.postfix.org>,
pretende competir directamente com o Qmail.
17
Introdução ao Postfix
18
Introdução ao Postfix
# ============================================================
# service type private unpriv chroot wakeup maxproc command+args
(yes) (yes) (yes) (never) (50)
# ============================================================
smtp inet n - n - - smtpd
pickup fifo n n n 60 1 pickup
cleanup unix - - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
smtp unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
local unix - n n - - local
Tabela 2.2 - Exemplo de um ficheiro master.cf
19
Introdução ao Postfix
Queue Descrição
maildrop Contém as novas mensagens a serem processadas vindas de
utilizadores locais.
incoming Contém as novas mensagens recebidas de servidores remotos,
bem como mensagens já processadas de utilizadores locais.
active Contém as mensagens que estão prontas para entrega.
deferred Contém as mensagens cuja primeira tentativa de entrega
falhou. Novas tentativas de entrega serão feitas.
mail Mensagens entregues a utilizadores locais.
Tabela 2.3 - Queues utilizadas pelo Postfix
2.1.3 Utilitários
O Postfix contempla um conjunto de programas utilitários que são utilizados por
outros programas do Postfix, além de poderem ser utilizados por utilizadores locais. A
tabela 2.4 contém estes utilitários.
Programa Descrição
mailq Pesquisa mensagens nas queues e mostra o resultado.
postalias Este comando permite criar, alterar ou fazer pesquisas à base de
dados de alias.
postcat Mostra o conteúdo das queues.
postconf Permite visualizar e alterar o conteúdo do ficheiro de configuração
main.cf.
postfix Permite iniciar, parar ou reiniciar o servidor de correio.
postkick Permite enviar pedidos para executar determinados serviços do
Postfix.
postlock Permite bloquear determinado ficheiro do Postfix, e executa
determinado comando.
postlog Envia mensagens de log (traçagem) para o sistema.
postmap Este comando permite criar bem como fazer pesquisas a tabelas
lock up.
postsuper Permite fazer manutenção a determinado directório de queue’s.
sendmail Fornece uma interface compativel com o Sendmail a programas
para enviar mensagens para a maildrop.
Tabela 2.4 - Utilitários do Postfix
20
Introdução ao Postfix
Ficheiro Descrição
install.cf Contém os parâmetros utilizados aquando da instalação do
Postfix.
main.cf Contém parâmetros de controlo de operações, utilizado pelo
Postfix durante o processamento de mensagens.
master.cf Contém parâmetros utilizados pelo programa master do Postfix,
utilizados para controlo da execução de outros programas.
Tabela 2.5 - Ficheiros de configuração
Ficheiro Descrição
access Faz o mapeamento de SMTP’s remotos numa perspectiva de
controlo de acesso, para efeitos de segurança.
aliases Faz o mapeamento de caixas alternativas para as caixas de correio
locais (mailbox’s).
canonical Faz o mapeamento de nomes alternativos de caixas de correio para
as caixas de correio reais (devido ao cabeçalho das mensagens)
relocated Permite renomear uma caixa de correio antiga para uma nova.
21
Introdução ao Postfix
Estes ficheiros são editados e alterados utilizando para o efeito qualquer editor de
texto (por exemplo o “vi”). Depois de criados, invoca-se o comando postmap para
converter estes ficheiros de texto noutros de formato binário. Estes últimos sim,
utilizados pelo Postfix. O formato binário permite uma pesquisa mais rápida que em
formato texto.
22
Introdução ao Postfix
para verificar a ocorrência de erros. Esta última metodologia não é nova no Postfix,
sendo utilizada noutras situações.
Legenda:
Elipses amarelas – programas de mail
Rectângulos amarelos – queues ou ficheiros
Rectângulos azuis – ficheiros de configuração
Rectângulo picotado – estes processos são controlados pelo master daemon
(processo principal do Postfx). Os dados aqui transaccionados são também
administrados exclusivamente pelo Postfx.
23
Introdução ao Postfix
Esta figura mostra os principais componentes do Postfix bem como a forma como
eles interagem uns com os outros. O queue manager apenas retêm em memória
informação acerca da queue active. Sempre que a active queue tenha espaço disponível,
o queue manager permite a entrada de uma mensagem proveniente da incoming queue e
outra da deferred queue, permitindo desta forma que o novo correio também entre no
circuito de distribuição mesmo que exista muito correio no deferred queue. Para além
destas queues o Postfix reserva ainda duas outras queues especiais: a hold queue e a
corrupt queue. A primeira destina-se ás mensagens que não foi possível entregar.
Permanecem aqui até à intervenção do administrador com o comando postsuper. A
corrupt queue destina-se aos ficheiros de mensagens danificados e, em vez de os
eliminar, o Postfix coloca-os aqui para que possam ser administrados manualmente pelo
administrador.
Como referido anteriormente, um dos objectivos do Postfix é a rapidez na
entrega de mensagens. No entanto, seria bastante desagradável, quando num servidor
destino por qualquer razão o servidor de correio não responda, o servidor emissor ficar
continuamente a tentar enviar mensagens. Isto poderia dificultar outras comunicações
com outros serviços existentes nesse servidor destino. Para evitar esta situação, o
Postfix implementa algumas restrições quando estabelece comunicação com o
destinatário, efectuando no máximo duas tentativas de ligação simultâneas. À medida
que o emissor (Postfix) vai tendo sucesso nas entregas, vai aumentando o número de
entregas simultâneas (limite configurável) até o servidor destino não ser capaz de
processar todas as entregas – posteriormente o emissor poderá diminuir o número de
entregas. Este processo é baseado no TCP Slow Start Algorithm. Aparte deste
estratagema, a estratégia de entrega de correio no Postfix é baseada no algoritmo round-
robin. O queue manager ordena as mensagens por destino existente na queue active e
posteriormente implementa o round-robin sobre todas as queues destino. Quando a
quantidade de mensagens que entram é superior à capacidade do Postfix processar a sua
entrega, o Postfix passa a favorecer a entrega de mensagens para servidores mais
rápidos em detrimento de servidores mais lentos. Isto permite que não se amontoe
correio para entrega devido a problemas com determinados servidores destino. Este tipo
de mensagens poderão ser processados, assim que o tempo de inactividade do Postfix
aumente. Quando uma mensagem não é entregue, o Postfix cria um time stamp o qual
24
Introdução ao Postfix
corresponderá uma data futura para uma nova tentativa de entrega (este valor é
configurável). Estas mensagens são normalmente ignoradas pelo queue manager. À
medida que estas mensagens falham repetidamente a sua entrega, o time stamp vai
aumentando para o dobro da idade da mensagem, isto é, duplica a data para a próxima
tentativa de entrega. Este método é conhecido como exponential backoff.
Na estratégia de entrega, seria escusado o emissor tentar fazer novas entregas a
servidores destino que não estejam a “responder”. O Postfix prevê esta situação, criando
uma lista com servidores com os quais a comunicação esteja interrompida, através das
mensagens que tem para entrega a esses destinos. Isto permite que o servidor não “perca
tempo” de processamento com servidores que à partida não conseguirá enviar
mensagens.
2.4 Segurança
Este ponto focará um outro objectivo do Postfix - a segurança. Por definição, os
programas de correio processam mensagens de emissores potencialmente perigosos.
Sendo assim, os programas de correio deverão ser desenvolvidos com bastante cuidado,
mesmo que sejam executados com direitos mínimos (privilégios de utilizador) ou
mesmo que não comunique directamente com a rede onde está inserido.
Como referido na sua página principal (<http://www.postfix.org>), inicialmente
o Postfix tinha 30.000 linhas de código após remoção dos comentários. Não é muito,
considerando a modularidade do produto, ao contrário de servidores como o Sendmail.
No entanto, isto não significa que a segurança seja boa apenas recorrendo à
“modularidade”. É necessário implementar vários mecanismos de segurança e não
apenas um, uma vez que caso esse mecanismo falhe ou seja ultrapassado, toda a
segurança está comprometida. Por esta razão, o Postfix implementa vários níveis de
segurança, permitindo minimizar os estragos com eventuais problemas com o programa
(bugs) ou com tentativas de acesso não autorizadas. Estes são os níveis implementados:
v Privilégios mínimos
Alguns processos do Postfix podem ser executados com direitos de utilizador.
Isto aplica-se sobretudo nos processos que estão “em contacto” com a rede,
como o SMTP Server e o SMTP Client. Por outro lado, utiliza o mecanismo do
UNIX chroot por forma a criar espaços isolados de trabalho, permitindo a
25
Introdução ao Postfix
v Isolamento
Como já referido, o Postfix foi implementado a pensar no conceito de
modularidade isto é, programas independentes que executam determinadas
tarefas. Os processos expostos, são executados independentes uns dos outros –
single-threaded. Processos separados (single-threaded) permitem maior
segurança do que os processos multi-thread executados num mesmo ambiente.
v Ambiente restrito
Nenhum processo no Postfix é executado sob o controlo de um utilizador
normal, mas sim sob o controlo do master daemon e é por sua vez executado
num ambiente restrito sem qualquer relação de parentesco (processos pai e
processos filho, lançados pelo primeiro). Este mecanismo evita tentativas de
violação do sistema utilizando signals do sistema operativo, ficheiros abertos,
variáveis de ambiente ou outros atributos de processos processados pelo UNIX
de um processo pai malicioso para um processo filho.
v Set-uid
No Postfix, nenhum processo é setuid. O setuid permite a um utilizador sem
direitos executar determinado programa/processo com direitos de
administrador (root). Segundo o site oficial do Postfix, este (tal como o setgid)
é o maior erro de segurança jamais implementado pelo UNIX.
v Confiança
Os processos do Postfix não trocam entre si as mensagens (por exemplo do
maildrop queue para a incoming queue) ou mesmo o conteúdo das mensagens
26
Introdução ao Postfix
v Grandes inputs
§ A memória para buffers e strings são alocados dinamicamente, por forma a
evitar buffer overrun.
§ Linhas de texto que excedam determinado valor são convertidas em várias
linhas de tamanho também determinado, e posteriormente reconvertidas
aquando da entrega.
§ O Postfix não implementa nenhum mecanismo de segurança para controlo
de comandos longos, uma vez que este procedimento é garantido pela shell
do sistema.
§ Os diagnósticos são truncados antes de serem enviados para o syslog por
forma a evitar buffer overrun em plataformas mais antigas.
v Outras defesas
§ O número de instâncias em memória de cada objecto é limitado por forma a
evitar sobrecarregar o sistema (causando os óbvios problemas de
performance).
§ Em caso de problemas, o Postfix faz uma pausa antes de enviar a mensagem
de erro para o cliente, antes de terminar com “fatal error” ou antes de
reiniciar determinado processo que tivesse “crachado”.
§ Não é adicionada nenhum parâmetro com informação remota em variáveis
ou comandos.
§ Não são criados ficheiros com informação pertinente no directório /tmp.
27
3 Instalação e Configuração do Postfix
29
Instalação e Configuração do Postfix
NetBSD 1.x
OPENSTEP 4.x
OSF1.V3 (Digital UNIX)
OSF1.V4 aka Digital UNIX V4
OSF1.V5 aka Digital UNIX V5
OpenBSD 2.x
Reliant UNIX 5.x
Rhapsody 5.x
SunOS 4.1.x (with Postfix 1.1.0)
SunOS 5.4..5.8 (Solaris 2.4..8)
Ultrix 4.x (well, that was long ago)
3.2 Requisitos
30
Instalação e Configuração do Postfix
libcrypto.so.2
libc.so.6
libdb-3.3.so
libdl.so.2
libgdbm.so.2
libnsl.so.1
libresolv.so.2
libssl.so.2
/bin/sh
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.2)
libnsl.so.1(GLIBC_2.0)
libresolv.so.2(GLIBC_2.2)
31
Instalação e Configuração do Postfix
Como se pode constatar, o DNS deverá estar instalado e bem configurado, até
porque só após atingir o passo 5 e com sucesso, poderá efectivamente enviar o correio.
Existem várias formas para termos um servidor de correio. Podemos ter um
servidor directamente ligado à Internet, e cuja máquina tem um registo MX no DNS do
32
Instalação e Configuração do Postfix
ISP. Neste caso, sempre que o DNS do ISP detecta pedidos para aquele domínio, irá
responder com o IP associado ao seu registo MX. Posteriormente o emissor tentará
efectuar uma ligação SMTP com esse endereço. Obviamente que este tipo de
configuração obriga a que o nosso servidor de correio esteja permanentemente ligado à
Internet. Nos nossos dias isso poderá não ser um problema, em grande parte devido aos
preços praticados pelo ISP para o acesso à Internet. No entanto, podemos ter um
servidor de correio que actua como um cliente. Isto é, o ISP receberá todo o correio
proveniente para aquele domínio, e assim que o nosso servidor (cliente) iniciar uma
ligação SMTP com o ISP, todo esse correio será então transferido. Este tipo de ligação
permite efectuar ligações esporádicas à Internet, ao contrário de ter uma ligação
permanente, bem como suportar determinados custos para com o ISP.
Se não tivermos uma ligação permanente à Internet então não é necessário
dispormos de um DNS dedicado. No ponto seguinte, veremos como podemos
configurar a nossa máquina para resolver nomes.
33
Instalação e Configuração do Postfix
1. Gráficamente:
Depois de invocar o comando kpackage ou através do gestor de programas,
seleccionamos o Gnome RPM, aparece um ecrã similar à figura 3.1.
34
Instalação e Configuração do Postfix
35
Instalação e Configuração do Postfix
36
Instalação e Configuração do Postfix
2. Linha de comando:
Invoca-se o comando:
rpm -i postfix-1.1.7-2.i386.rpm
ou
rpm -Uvh postfix-1.1.7-2.i386.rpm , caso queiramos fazer um upgrade ou
reinstalar uma versão já instalada.
37
Instalação e Configuração do Postfix
Directório Descrição
/etc/postfix Directório onde se encontram os ficheiros de
configuração do Postfix, tais como master.cf, main.cf,
bem como ficheiros de alias.
/etc/postfix/README_FILES Contém ficheiros que explicam a integração com outros
serviços, tais como base de dados MySql, serviços de
autenticação SASL, entre outros.
/usr/share/doc/postfix-1.1.7 Contém documentação em formato html
/usr/share/man Contém os típicos manuais dos comandos em sistemas
unix (ver comando man nos sistemas unix)
/etc/rc.d/init.d Contém o script de controlo do Postfix (processo
master). Por exemplo para iniciar o postfix, executa-se o
comando /etc/rc.d/init.d/postfix start .
/usr/libexec/postfix Directório onde se encontram os sub-processos
executados pelo processo principal - master
/var/spool/postfix Contém os vários directórios queues utilizados em cada
fase do processo de envio de uma mensagem.
/usr/bin Programas de administração
/usr/sbin Programas utilitários
Tabela 3.1 - Directórios onde o Postfix instala ficheiros
38
Instalação e Configuração do Postfix
Exemplo b:
[root@ myhost postfix]# postfix
postfix/postfix-script: fatal: usage: postfix start (or stop, reload, abort, flush, or check)
Neste caso, deve-se fornecer uma das opções apresentadas, neste exemplo queremos
iniciar o Postfix, daí o parâmetro start ter de ser invocado.
Agora embora não tenha sido mostrada alguma mensagem de erro, devemos certificar
que de facto o processo foi iniciado. Para isso podemos utilizar o comando de sistema
ps.
Exemplo:
[root@ myhost /]# ps -ef | grep post
Não aparece nada porque não iniciou o Postfix. Uma das formas mais sensatas e
imediatas de verificar a eventual existencia de erros, é consultando o ficheiro de log
criado pelo Postfix /var/log/maillog.
Exemplo: Utilizando o comando tail, que dá as últimas linhas do ficheiro.
tail /var/log/maillog
.............
Jul 14 11:49:26 myhost postfix/postfix-script: starting the Postfix mail system
Jul 14 11:49:26 myhost postfix/master[11506]: fatal: bind 127.0.0.1 port 25: Address
already in use
39
Instalação e Configuração do Postfix
Poderá ser apresentado uma listagem similar à apresentada, significando que existe um
processo Sendmail a ser executado.
Pode-se utilizar o comando kill do sistema para este processo.
Na instalação do Postfix não são criados os directórios de queue, mas sim depois de se
iniciar o processo master (lançado pelo comando postfix start).
Exemplo:
[root@ myhost postfix]# ls -la /var/spool/postfix
total 68
40
Instalação e Configuração do Postfix
Note-se as permissões, o dono e o grupo com que estes directórios foram criados.
41
Instalação e Configuração do Postfix
42
Instalação e Configuração do Postfix
Não esquecer que o sendmail utiliza o mecanismo setuid já referido, e por motivos de
segurança dever-se-á mudar as permissões. Por exemplo:
chmod 744 /usr/sbin/sendmail.antigo
chmod 744 /usr/sbin/ qmail.antigo
chmod 744 /usr/sbin/ newaliases.antigo
Algumas distribuições de Sendmail podem criar alguns links tais como mailq e
newaliases. Deve-se por isso remover estes links – ver comando de sistema unlink.
Depois de salvaguardar alguns ficheiro importantes, pode-se instalar o Postfix. Para isso
basta executar o script INSTALL.sh. Este script irá fazer algumas perguntas como por
exemplo onde colocar ficheiros de configuração, dono entre outros caminhos. Pode-se
assumir os valores sugeridos pela instalação, premindo a tecla Enter. Note-se que os
directórios das queues não serão criados durante a instalação, mas sim depois de se
iniciar o processo master do Postfix, responsável pela gestão destas queues.
43
Instalação e Configuração do Postfix
44
Instalação e Configuração do Postfix
Comando Descrição
abort Para imediatamente a execução do Postfix.
check Verifica a configuração do postfix, por forma a detectar a estrutura
de directório inválida bem como permissões e directórios de
queues inexistentes.
flush Tenta enviar todas as mensagens existentes na queue deferred
reload Este comando permite voltar a ler os ficheiros de configuração,
por exemplo quando se efectuar alguma alteração no master.cf e
queremos que essas alterações sejam efectivadas mas sem parar o
processo, pode-se invocar o comando postfix com reload como
parâmetro.
start Este comando verifica a configuração de sistema e inicia o
processo master do Postfix.
stop Permite parar a execução do Postfix, deixando que os processos
dependentes terminem após terminarem as tarefas que estão no
momento em execução, por exemplo se estiver nesse momento a
45
Instalação e Configuração do Postfix
Comando Descrição
-N Inclui caracter null para terminar as chaves (key).
-i Lê do standard input e adiciona-o no final do ficheiro.
-n Não inclui caracter null para terminar as chaves (key).
-r Não imprime avisos caso exista duplicação de nomes.
-w Imprime avisos caso exista duplicação de nomes.
-c config_dir Utiliza o ficheiro main.cf existente no directório config_dir
-d key Remove determinado alias com o nome key.
-q key Permite efectuar pesquisas à base de dados sobre a existência
de determinada key (imprime a primeira ocorrência de key).
-v Modifica o nível de log.
file_type Tipo de base de dados onde será efectuada a pesquisa (ver
tabela 3.4).
nome_ficheiro Nome da base de dados que será utilizada.
Tabela 3.3 - Parâmetros do postalias
Se não for fornecido nenhum file_type o postalias irá utilizar o valor do parâmetro
database_type existente no ficheiro main.cf.
Tipo Descrição
Btree Este tipo de base de dados, com o nome nome_ficheiro.db utiliza o
sistema de base de dados DB.
Dbm Este tipo de base de dados cria dois ficheiros : nome_ficheiro.pag e
nome_ficheiro.dir.
Hash Similar à opção btree só que a base de dados utiliza o método hash.
Tabela 3.4 - Tipos de base de dados utilizadas nos Alias
46
Instalação e Configuração do Postfix
47
Instalação e Configuração do Postfix
ou
postconf [-ev] [-c config_dir] [parametro=valor ...]
Opção Descrição
-d Mostra o valor por defeito atribuído aquele parâmetro em vez do
actual valor existente no ficheiro de configuração.
-h Mostra o valor do parâmento sem descrição.
-m Lista o conjunto de tipos de tabelas de lookup suportadas.
-n Mostra apenas os parâmetros cujo conteúdo é diferente do valor
padrão.
-v Permite colocar determinadas mensagens de log no sistema.
-c Permite informar o comando para utilizar o ficheiro main.cf
existente em config_dir.
Tabela 3.5 - Opções de pesquisa do postconf
Exemplo de utilização:
[root@ myhost /]# postconf -n
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
command_directory = /usr/bin
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
default_destination_concurrency_limit = 10
home_mailbox = Maildir/
local_destination_concurrency_limit = 2
mail_owner = postfix
queue_directory = /var/spool/postfix
Opção Descrição
-e Edita o ficheiro main.cf.
-v Permite o envio de determinadas mensagens para o sistema de
log.
-c Utiliza o ficheiro main.cf existente no directório config_dir.
Tabela 3.6 - Opções de edição do postconf
48
Instalação e Configuração do Postfix
Não esquecer que este comando deverá ser invocado com direitos de administração.
Não deverá existir espaço entre o nome do parâmetro e o valor a inserir no ficheiro de
configuração.
Exemplo de utilização:
[root@ myhost /]# postconf -e command_directory=/usr/teste_cmd
[root@ myhost /]# postconf -n
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
command_directory = /usr/teste_cmd
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
default_destination_concurrency_limit = 10
home_mailbox = Maildir/
local_destination_concurrency_limit = 2
mail_owner = postfix
queue_directory = /var/spool/postfix
[root@ myhost /]# postconf -e command_directory=/usr/bin
49
Instalação e Configuração do Postfix
Uma vez mais, as opções -c e -v são comuns nos comandos do Postfix. Este comando
efectua N tentativas de bloqueio da mailbox até conseguir ou atingir o limite
estabelecido no ficheiro de configuração main.cf. Após bloqueado, é executado o
comando command, utilizando fork().
Opção Descrição
-c Permite informar qual o master.cf a ler
-i Permite incluir o ID do processo no sistema de log
-p Especifica a prioridade no registo da mensagem. Pode ser info,
warn, error, fatal, ou panic. Caso não seja indicado nenhum, é
utilizado a prioridade info.
-t Permite especificar uma palavra para identificar o registo
-v Activa o verbose no sistema de log
Tabela 3.7 - Opções de edição do postlog
O ficheiro de log do sistema encontra-se normalmente, em linux, em /var/log/message.
50
Instalação e Configuração do Postfix
Opção Descrição
-N Inclui caracter null para terminar as chaves (key).
-i Lê do standard input e adiciona-o no final do ficheiro.
-n Não inclui caracter null para terminar as chaves (key).
-r Não imprime avisos caso exista duplicação de nomes.
-v Permite enviar mensagens de log para o sistema de log.
-w Imprime avisos caso exista duplicação de nomes.
-c config_dir Permite informar o comando para utilizar o ficheiro main.cf
existente em config_dir.
-d key Remove determinado alias com o nome key.
-q key Permite efectuar pesquisas à base de dados sobre a existência de
determinada key (imprime a primeira ocorrência de key).
Tabela 3.8 - Opções de edição do postmap
Por defeito este comando tenta organizar os directórios que definem as queues do
sistema, movendo determinadas mensagens de um sistema de queue, para outro caso a
sua localização esteja errada (-p); removendo directórios desnecessários (-s) ;
removendo mensagens danificadas, por exemplo após algum crash do sistema, mas
apenas aquelas que estejam corrompidas, uma vez que uma das bandeiras do Postfix é
esta mesmo, isto é não perder nenhuma mensagem graças ao seu sistema de queues.
51
Instalação e Configuração do Postfix
exemplo:
[root@myhost postfix]# rpm --checksig -v compat-db-3.3.11-4.i386.rpm
compat-db-3.3.11-4.i386.rpm:
MD5 sum OK: 56a0775b1356791050777ce1d2d54a4b
gpg: /root/.gnupg: directory created
52
Instalação e Configuração do Postfix
53
Instalação e Configuração do Postfix
54
Instalação e Configuração do Postfix
exemplo:
rpm -q --requires postfix
/sbin/chkconfig
/sbin/service
sh-utils
fileutils
textutils
/usr/sbin/alternatives
/usr/sbin/groupadd
…………
55
Instalação e Configuração do Postfix
56
4 O Ficheiro Master.cf
57
O Ficheiro Master.cf
Por defeito, o dono deste ficheiro é o utilizador root e por isso apenas alterável por ele.
Não esquecer que o master.cf é o ficheiro que controla a forma como outros programas
do Postfix são iniciados. Qualquer erro de configuração, poderá impedir o normal
funcionamento desses programas ou mesmo do programa principal mater. A tabela 4.1
descreve cada um destes parâmetros.
Parâmetro Significado
service Especifica o nome do serviço a ser configurado
type Tipo de transporte utilizado para comunicação do
serviço
private Tipo de restrição aplicável ao serviço para
motivos de segurança
unprivileged Privilégios de utilizador permitido a esse
processo
chroot Permite definir se esse processo é executado
numa estrutura de directórios definida
wakeup Número de segundos entre os quais são enviados
sinais de wakeup para mantê-lo em execução
maxprocess Número máximo de processos que pode utilizar
este serviço simultaneamente
Command Comando a ser executado para fornecer
determinado serviço
Tabela 4.1 - Parâmetros do ficheiro master.cf
58
O Ficheiro Master.cf
59
O Ficheiro Master.cf
Cada tipo de transporte tem sistemas próprios de iniciação e fim de conexão, tendo os
sub programas do Postfix implementado os respectivos mecanismos para utilizar cada
tipo de transporte.
4.2.3 Private
Este parâmetro define se determinado processo poderá ou não comunicar com
outros processos externos ao Postfix que esteja em execução no servidor. Os valores
possiveis são um traço (-) ou o caracter n. O traço torna a execução do processo privada,
enquanto que o caracter n permite que o processo interaja com outros processos.
60
O Ficheiro Master.cf
4.2.4 Unprivileged
Este campo determina qual o nível de privilégios que determinado processo irá
ter, isto é definindo o dono do processo com o qual será iniciado esse mesmo processo.
Se este campo tiver o caracter y, o serviço será iniciado com o utilizador definido no
parâmetro main_owner no ficheiro main.cf, e por defeito é o utilizador postfix criado no
sistema aquando da instalação. O caracter n permite que o processo seja executado
como utilizador root. Este procedimento deverá ser evitado uma vez que torna o sistema
mais vulnerável a ataques de hackers.
61
O Ficheiro Master.cf
4.2.5 Chroot
O campo chroot define quando determinado processo será executado num
ambiente restrito (vulgarmente conhecido como chrooted jail e referido no capítulo 3).
Obviamente, executar um processo nestas condições, aumenta a segurança de todo o
sistema, impedindo que após um ataque com sucesso, o acesso ao sistema seja limitado
a determinados directórios. Idealmente todos os processos que interagem com outros
sistema externos, deverão ser executados neste tipo de configuração, excepto os
programas pipe e local. O directório utilizado pelos processos que são executados num
ambiente chroot é por defeito /var/spool/postfix.
Para configurar o serviço neste tipo de ambiente, basta colocar o caracter y no
respectivo campo.
4.2.6 Wakeup
Este campo, define quando e como o programa principal master deverá contactar
os serviços que estão em execução. O valor neste campo significa o tempo em segundos
entre cada sinal wakeup enviado pelo master ao respectivo processo. O valor 0 significa
que não será enviado nenhum sinal. Adicionando o caracter interrogação (?) no valor
dado, significa que o master só deverá enviar o sinal se o processo correspondente
estiver activo.
4.2.7 Maxprocess
O maxprocess especifica o numero máximo de processos que poderão executar
aquele serviço. Este parâmetro deverá ser utilizado com especial cuidado pois está
directamente relacionado com a performance global do sistema. Existe uma forma de
definir o valor por defeito deste campo, através do parâmetro default_process_limit no
ficheiro main.cf. Caso não seja definido nenhum valor neste parâmetro por defeito é
assumido 50.
4.2.8 Commands
Este campo corresponde ao programa a ser executado para fornecer determinado
serviço. O caminho destes comandos, são relativos ao parâmetro program_directory no
62
O Ficheiro Master.cf
ficheiro main.cf. Opcionalmente pode ser incluído duas opções juntamente com o
comando:
§ -v - permite fazer o log dos eventos
§ -D[debugger] - permite activar o debug
Estas opções podem ser bastante importantes para determinar eventuais problemas no
sistema de correio.
63
5 Ficheiro Main.cf
65
Ficheiro Main.cf
66
Ficheiro Main.cf
comando uname –n
mydomain = domain.name Permite definir o nome do domínio onde
a máquina está inserida. Normalmente
igual ao anterior exceptuando o nome
host.
Tabela 5.3 - Nome do Servidor na Internet e Nome de Domínio
67
Ficheiro Main.cf
68
Ficheiro Main.cf
69
Ficheiro Main.cf
70
Ficheiro Main.cf
71
Ficheiro Main.cf
72
Ficheiro Main.cf
73
Ficheiro Main.cf
74
Ficheiro Main.cf
75
6 Lookup Tables
Tabela Descrição
access Tabela utilizada para aceitar ou rejeitar
mensagens a partir do nome do emissor;
nome do servidor; rede entre outros.
aliases Permite configurar o Postfix para
redireccionar mensagens provenientes
para um utilizador, para um ou vários
utilizadores. Por exemplo, uma
mensagem que seja enviada para o
utilizador vendas@dominio.com pode
ser redireccionado para o utilizador
ana@dominio.com.
canonical Permite estabelecer correspondência
(adress mapping) entre endereços locais
e não locais.
relocated Permite configurar acções para
determinadas situações em que por
exemplo, o nome do utilizador a que se
destina a mensagem foi renomeado ou
transferido para outro domínio. Estas
acções são no fundo, mensagens de
aviso.
transport Permite estabelecer correspondência
entre nome de sistemas remotos e a
forma como o Postfix deverá comunicar
77
Lookup Tables
Cada tabela tem a sua função e destina-se a fornecer determinadas informações aos
vários programas do Postifx. A tabela 6.2, relaciona cada tabela com o programa que a
utiliza.
Tabela Programa
access Smtp
aliases Local
canonical Cleanup
relocated Qmgr
transport trivial-rewrite
virtual Cleanup
Tabela 6.2 - Tabela vs Programa
Estas tabelas, podem ter algumas linhas para ambientes limitados, por exemplo
com poucos endereços de correio, mas podem atingir centenas ou milhares. O acesso a
estes ficheiros pode desta forma, ser rápido ou lento, conforme o seu tamanho. O
Postfix implementa várias formatos que estas tabelas podem ter, por forma a minimizar
os tempos de acesso. Os formatos podem ser:
§ Base de dados indexadas – por exemplo btree, hash, dbm
§ Ficheiros texto de expressões regulares – por exemplo regexp
§ Base de dados externas – por exemplo NIS, Ldap e MySQL
Para verificar quais os formatos que podem ser utilizados, pode-se invocar o comando
postconf -m , exemplo:
[root@ myhost / ]# postconf –m
nis
regexp
environ
btree
unix
hash
78
Lookup Tables
Os pontos seguintes, descrevem de que forma se pode utilizar cada tipo de formato.
Utilizador
Não esquecer que sempre que se altere o ficheiro texto, tem-se que repetir o
processo de conversão, caso contrário as alterações não sortirão efeito.
79
Lookup Tables
# Departamento comercial
Antonio antonio.gomes
Ana ana.filipa
Joao joao.antunes
# Departamento financeiro
Olga Olga.santos
Exemplo:
/[%!@].*[%!@]/ 550 Sender – specified routing rejected
/^postmaster@.*$/ OK
80
Lookup Tables
81
Lookup Tables
dbname = aliases
table = aliases_do_postfix
select_field = nome_utilizador
where_field = nome_alias
additional_conditions = and status = ‘activo’
hosts = srvmysql.meudominio.org
result
Postfix MySQL
pattern
Rede Local
82
Lookup Tables
result
Postfix LDAP
pattern
Rede Local
Parâmetro Significado
ldaptag_server_host Permite especificar o endereço do
servidor LDAP
ldaptag_server_port A porta TCP por onde deverá ser
estabelecida a comunicação (por defeito
é a porta 389)
ldaptag_search_base Base LDAP onde deverá ser iniciada a
pesquisa
ldaptag_timeout Permite definir o tempo máximo que o
Postfix deverá aguardar por uma
resposta. Por defeito é 10.
ldaptag_query_filter Valor da base de dados a pesquisar. Por
defeito é mailacceptinggeneralid
ldaptag_result_attribute Define o atributo LDAP a ser retornado.
83
Lookup Tables
Endereço electrónico
Servidor Postfix
Postfix
smtpd
access
Endereço electrónico
84
Lookup Tables
Tipo Significado
OK Permite a ligação SMTP
REJECT Nega a ligação SMTP
XXX YYY Nega a ligação SMTP e devolve o
código XXX bem como o texto YYY
YYY Permite a ligação SMTP e devolve o
texto YYY
Tabela 6.5 - Resultados a devolver ao servidor SMTP remoto
85
Lookup Tables
Tipo Significado
smtpd_client_restrictions Define quais os clientes que podem
enviar correio.
smtpd_helo_restrictions Define quais as máquinas que podem
invocar comandos HELO (shell SMTP)
smtpd_sender_restrictions Define quem pode enviar mensagens
utilizando o comando MAIL FROM, na
shell do SMTP.
smtpd_recipient_restrictions Define quem pode receber correio
utilizando o comando RCPT na shell
SMTP.
Tabela 6.6 - Parâmetros smtpd que utilizam tabelas access
86
Lookup Tables
Para que estas configurações surtam efeito, é necessário alterar o ficheiro main.cf.
Se pretendemos que seja utilizado o mesmo ficheiro canonical, podemos utilizar o
parâmetro canonical_maps. Caso se pretenda um ficheiro diferente para o correio de
entrada e de saída então, utiliza-se os seguintes parâmetros:
sender_canonical_maps = hash:/etc/postfix/canonical.out
recipient_canonical_maps = hash:/etc/postfix/canonical.in
87
Lookup Tables
Unix Server
Postfix
TCP/IP UUCP
Rede Local
Embora o protocolo mais utilizado seja o SMTP, ainda existem entidades que
utilizam o protocolo UUCP. Este protocolo, foi inicialmente utilizado para transferência
de ficheiros e correio, nas ligações dial-up por modem, quando a velocidade destes
equipamentos rondava os 1200 baud rate. Possivelmente ainda seja uma forma mais
segura do que o acesso permanente à Internet. O protocolo utilizado por defeito pelo
Postfix, é o SMTP. Contudo, pode-se alterar esta definição, utilizando para o efeito o
parâmetro :
default_transport = uucp
88
Lookup Tables
Exemplos de utilização:
foo.org uucp:foo
.foo.org uucp:foo
test.com smtp:meu_isp.net
outroteste.org smtp:outroisp.net:8025
Note-se que o termo hash define o tipo de base de dados, sobre o qual foi criado o
ficheiro transport. Não esquecer que para cada transporte é necessário associar um
serviço, e isto é feito no ficheiro master.cf.
89
Lookup Tables
joao@host1.com
Servidor Unix
Sistema de queues
Postfix
ana@host2.com
virtual
@host1.com
@host2.com
@host3.com
@host4.com
rita@host3.com
Existem vários tipos de definição de domínio virtual que podem ser definidos no
ficheiro virtual. A tabela 6.7 faz referência aos vários tipos.
Tipo Significado
nome.dominio <qualquer_coisa> Permite ao Postfix receber mensagens
para o dominio nome.dominio e coloca-
las no sistema de queues.
utilizador@dominio endereço1, endereço2 Recebe mensagens para o utilizador
utilizador@dominio e reenvia-as para os
utilizadores endereço1 e endereço2. Esta
declaração tem prioridade mais alta
relativamente ás outras.
utilizador endereço1, endereço2 Recebe mensagens do utilizador do
servidor local e reenvia-as para os
endereços especificados.
@dominio endereço1, endereço2 Recebe mensagens de todos os
utilizadores do dominio especificado e
reenvia-as para os endereços
especificados.
Tabela 6.7- Tipos de domínios virtuais
90
Lookup Tables
91
7 Migrando Sendmail para o Postfix
Este capitulo focará um dos aspectos mais pertinentes para qualquer administrador
de sistemas: Como migrar de um servidor de correio para outro. O Sendmail é um MTA
bastante mais antigo que o Postfix, por essa razão é natural que o número de servidores
que tem instalados o Sendmail seja bastante grande. Isto coloca um grave problema,
uma vez que, numa migração é fundamental preservar os dados existentes e cujo
processo seja além de transparente para os utilizadores, não traga transtornos
indesejáveis. Obviamente que o processo de migração trás maiores cuidados que uma
instalação de raiz de um servidor de correio (neste caso servidor de correio, no entanto é
uma preocupação presente em qualquer migração de aplicações). É necessário garantir
que não se perderá nenhuma mensagem.
Como já referido no capítulo 1, o Sendmail é um dos mais versáteis e robustos
MTA’s disponíveis. Graças á sua versatilidade é também um dos mais complicados de
administrar uma vez que a quase totalidade dos parâmetros de configuração encontra-se
num único ficheiro – sendmail.cf. Neste ficheiro existem parâmetros que controlam
tanto as mensagens recebidas bem como a forma como irá efectuar a entrega de correio.
93
Migrando Sendmail para o Postfix
ficheiro de configuração poderá ser bastante extenso e por isso a sua interpretação pode
ser muito morosa). Este programa é executado como root. Os outros utilizadores podem
também executa-lo, no entanto não poderão aceder a locais tais como a mail queue do
sendmail.
94
Migrando Sendmail para o Postfix
Sintaxe Significado
Nomealias: nome1,nome2,... nomealias é o alias e nome1 e nome2 são os
nomes das caixas de correio para onde será
efectivamente enviado o correio recebido (via o
nomealias)
Nomealias: | nome_programa nome_programa é o caminho completo do
programa a ser executado para processar
determinada mensagem. Vulgarmente utilizado
para processar mailing lists tais como o programa
Majordomo.
nomealias: ficheiro_out Ficheiro_out é o ficheiro texto para onde irão
todas as mensagens recebidas pelo alias
nomealias. É necessário ter cuidado com as
permissões deste ficheiro_out.
nomealias: :include:fich_nomes Esta sintaxe tem o mesmo efeito que a primeira
(nomealias: nome1,nome2,...). No entanto poderá
ser mais fácil de utilizar em sistemas com muitos
nomes para um alias.
O ficheiro fich_nomes contém os endereços de
correio para onde deverão ser enviadas as
mensagens recebidas via nomealias.
Tabela 7.1 -Exemplo de um ficheiro alias
95
Migrando Sendmail para o Postfix
96
Migrando Sendmail para o Postfix
97
Migrando Sendmail para o Postfix
Não esquecer alterar as permissões destes ficheiros, uma vez que o Sendmail é
instalado com a permissão “setuid” que permite executar o comando com direitos de
root (administrador principal). Exemplo :
chmod 744 /usr/sbin/sendmail.original
98
Migrando Sendmail para o Postfix
Por defeito o Postfix utiliza estas caixas de correio sem ser necessário alterar
nenhuma configuração. Contudo caso estas caixas de correio encontrem-se numa outra
localização, definida pelo administrador de sistema, é necessário alterar a seguinte linha
no ficheiro master.cf :
mail_spool_directory = /dados/caixas_correio
Em que /dados/caixas_correio é a localização alternativa onde serão armazenadas as
mensagens recebidas.
Existem contudo outras possibilidades para armazenamento de mensagens de correio.
Por exemplo, e bastante comum em sistema UNIX é localizarem-se em $HOME.
Exemplo: /home/rjoao/Mailbox
Para que isto funcione deve-se proceder da seguinte maneira:
a) Mover a caixa de correio para /home/rjoao/
mv /var/spool/mail/rjoao /home/rjoao/Mailbox
b) Mudar as permissões para que o utilizador rjoao possa ler o ficheiro
chown rjoao /home/rjoao/Mailbox
c) Linkar o ficheiro Mailbox para o ficheiro original
ln -s /home/rjoao/Mailbox /var/spool/mail/rjoao
99
Migrando Sendmail para o Postfix
O administrador cria um ficheiro texto com estes alias, e depois converte esses
alias para um ficheiro binário, utilizando para o efeito o comando newaliases. O formato
binário permite a sua pesquisa bastante mais rápida.
O Postfix suporta integralmente as base de dados de alias do Sendmail. Existem
dois parâmetros no ficheiro main.cf que permitem definir essas base de dados de alias:
§ alias_maps – define a lista de base de dados de alias utilizadas pelo MDA local
(pode não ser necessariamente controlado pelo Postfix)
§ alias_database – define a base de dados criada pelo comando newaliases do
Postfix e é controlada pelo próprio Postfix
A existência deste dois parâmetros que especificam base de dados de alias poderá
parecer confusa, no entanto bastante útil em ambientes UNIX de grande escala,
nomeadamente aqueles que utilizam serviços de NIS para melhor administração dos
logins e passwords (estão centralizada). É aqui que o parâmetro alias_maps torna-se
importante. Podemos assim referenciar um servidor NIS que detém os nomes de
utilizadores existentes no sistema. Exemplo:
alias_maps = hash:/etc/postfix/aliases, nis:maq_nis.meudominio.net
alias_database = hash:/etc/postfix/aliases
100
Migrando Sendmail para o Postfix
@outrodominio.net Virtual
@xptodominio.com Virtual
@dom2.pt Virtual
rjoao@outrodominio.net João
@outrodominio.net Outrodominio
@xptodominio.com Xptodominio
manuela@dom2.pt Mega
Listagem 7.3 - Exemplo de um ficherio virtual no Postfix
101
Migrando Sendmail para o Postfix
virtusertable pois apenas tem os nomes dos domínios ou sistemas (hosts) enquanto que
o virtusertable mapeia directamente domínios a utilizadores.
O Postfix implementa esta função através do parâmetro mydestination. Todas as
referências existentes no ficheiro sendmail.cw devem ser aqui incorporadas. Exemplo:
mydestination = $myhostname, localhost.$mydomain, xptodominio.com
102
8 Postfix num ISP
103
Postfix num ISP
servidor de correio do ISP para transferir o correio correcto. Aos múltiplos domínios
que servem um único servidor de correio é chamado de domínios virtuais - Virtual
Domains.
Outro requisito nos servidores de correio de um ISP é o mail relaying. Muitos
clientes que se ligam ao ISP não podem enviar mensagens directamente para o
destinatário, confiando-as num servidor de correio que por sua vez se encarregará de
entregar esse correio aos destinatários. Existem outros conceitos associados a serviços
que os ISP fornecem na área de correio electrónico, nomeadamente open relaying e
selective relaying. O primeiro é quando o servidor aceita mensagens de qualquer
emissor para posterior entrega, o segundo veio corrigir as lacunas do primeiro,
nomeadamente no que diz respeito ao envio de correio não solicitado (UCE), quase
sempre de forma abusiva por parte de quem pratica tais actos.
104
Postfix num ISP
Internet
Mensagem para
Paulo@mydomain.pt
Servidor de
correio do ISP
Postfix
Caixa de correio do
utilizador em
Domínio mydomain.pt mapeado
para o utilizador mydomain mydomain.
Caixa de correio
da organização
Paulo
Postfix
Caixa de correio
do Paulo
Internet Servidor
de Correio
Mensagem para do ISP
Marco@isp2.net
mailsrv.isp2.net
Servidor
de Correio
do ISP
srvmail.isp1.net
105
Postfix num ISP
Pelo exemplo pode-se verificar que, uma máquina clandestina envia uma
mensagem ao servidor do ISP srvmail.isp1.net, cujo destino é o utilizador Marco
existente no servidor mailsrv.isp2.net sem que o primeiro crie qualquer entrave – não
esquecer que a mensagem é proveniente de uma máquina não registada na Internet. O
resultado é que o correio que chega ao ISP2 tem como endereço original, o servidor de
correio ISP1. Para corrigir este problema, foram adicionadas extensões ao protocolo
SMTP, contudo nem todos os ISP’s estarão a tirar proveito do mesmo ou os seus
servidores não estarão configurados correctamente – a prova é que continuamos a
receber correio não solicitado, sobretudo aqueles que utilizaram os seus endereços em
newsgroups ou em sites de origem duvidosa. Como forma de atenuar este problema,
alguns servidores de correio implementam as suas próprias defesas. Basicamente duas:
§ apenas aceitar correio que se destina a utilizadores locais. Contudo, muitos ISP
permitem o acesso a contas de correio, por exemplo via http a utilizadores que
por sua vez podem enviar mensagens para a Internet.
§ implementando o selective relaying. A figura 8.3 mostra um exemplo dessa
implementação, em que o servidor poderá verificar quando recusa ou permite o
relaying de mensagens, bastando para o efeito consultar uma base de dados
com os IP’s dos clientes do ISP.
Internet Servidor
de Correio
do ISP
Mensagem para bloqueado
jpedro@isp2.net
Servidor de
mailsrv.isp2.net
Correio do
ISP
Postfix
Servidor Correio
da Organização
Postfix
Mensagem para
jpedro@isp2.net
106
Postfix num ISP
107
Postfix num ISP
Internet
Servidor
de Correio
do ISP
mail.dominioxpto.com
Servidor de
Correio da
Organização
www.dominioxpto.com ftp.dominioxpto.com
Domínio de dominioxpto.com
Figura 8.4 - Exemplo da interacção de um domínio na Internet
108
Postfix num ISP
O nome virtual neste ficheiro, não é importante, podendo ser qualquer texto. Cada
linha é um novo registo. Após a identificação dos dominios virtuais suportados, resta
identificar uma conta local no servidor que irá receber todo o correio de todos os
utilizadores de um domínio, por exemplo:
@dominioxpto.com utilizador_local_1
@outrodominio.pt utilizador_local_2
@maisum.org utilizador_local_3
109
Postfix num ISP
jmega@outrodomvirtual.pt vendas
joana@outrodomvirtual.pt vendas
Obviamente, os nomes dos utilizadores locais não tem que ter o mesmo nome que
o utilizador do domínio virtual. Apresenta-se desta maneira, por questões de clareza. Os
dois últimos exemplos são o reflexo disso mesmo, ao fazer corresponder dois
utilizadores do domínio virtual a uma mesma conta local. Outro ponto a referir, o
servidor de correio apenas irá aceitar mensagens para os utilizadores definidos,
rejeitando portanto todo o outro correio.
110
Postfix num ISP
Por último, identificar este ficheiro no Postfix, isto é adicionado a seguinte linha no
ficheiro main.cf:
transport_maps = hash:/etc/postfix/transport
111
Postfix num ISP
Valor pode assumir uma ou várias opções, separadas por virgula ou espaço. Existem
contudo, outros valores que podem ser definidos.
Por defeito, e caso não se especifique nada, o Postfix assume os valores
permit_mynetworks e check_relay_domains. O parâmetro permit_mynetworks permite
especificar que o Postfix aceitará correio proveniente de qualquer IP definido em
$mynetworks, no ficheiro main.cf. Normalmente utilizado em redes com várias
subredes. Se este valor for utilizado para rede de clientes, outras configurações serão
necessárias, descritas mais adiante.
Valor Significado
reject Todos os pedidos, mesmo os locais.
reject_invalid_hostname Nome de maquinas inválidas fornecidos
ao comando HELO (comando SMTP).
reject_maps_rbl Se o cliente estiver definido em
$maps_rbl_domains.
reject_mon_fqdn_hostname Quando não se trata de um nome de
máquina FQDN definido no comando
HELO.
reject_mon_fqdn_recipient Quando não se trata de um nome de
máquina FQDN no endereço destino.
reject_non_fqdn_sender Quando não se trata de um nome de
máquina FQDN no caso do emissor.
reject_unauth_destination Caso a máquina destino não esteja
definida em $mydestination,
$inet_interfaces, $virtual_maps ou
$relay_domains.
reject_unauth_pipelining Correio enviado através de um
programa SMTP pipelining.
reject_unknown_client Quando não é conhecido o nome da
máquina cliente.
reject_unknown_hostname Nome da máquina definida no comando
HELO, não tem registo DNS A ou MX.
112
Postfix num ISP
Em que Endereço pode ser um IP, nome de uma máquina, nome de domínio ou
uma gama de IP’s de uma rede. O campo valor terá a acção a ser executada pelo Postfix,
113
Postfix num ISP
por exemplo REJECTC ou códigos de erros de SMTP, por exemplo 4xx, 5xx. Qualquer
outro conteúdo no campo valor, permitirá ao cliente efectuar relaying.
Exemplo da utilização no parâmetro smtpd_recipient_restrictions :
smtpd_recipient_restrictions = check_client_access hash:/etc/postfix/meus_clients,
reject
114
9 Sistemas Externos vs Postfix
9.1 MySQL
O MySQL é um gestor de base de dados disponível para sistemas UNIX. As suas
capacidades englobam:
§ Suporte a base de dados relacionais
§ Suporte a base de dados indexadas
§ Linha de comando
§ Suporte a clientes remotos
§ Possibilidade de importar/exportar base de dados
§ Acesso controlado por nível utilizador
§ Suporte ODBC e JDBC
9.2 OpenLDAP
O OpenLDAP é um programa que implementa o protocolo LDAP e para
ambientes UNIX. O LDAP é um protocolo que fornece serviços de directório, isto é, de
uma forma centralizada pode-se ter informação sobre aplicações, recursos, utilizadores,
115
Sistemas Externos vs Postfix
9.3 Majordomo
O Majordomo é mais um dos exemplos de programas externos referenciados ao
longo deste trabalho. Possibilita a criação de várias mailing lists quer do administrador
quer do utilizador. Este tipo de serviço permite por exemplo, receber por correio as
últimas novidades do Postfix, caso se tenha subscrito essa mailing list. Existem muitas
aplicações que implementam este serviço (ex: Mailman), contudo o Majordomo será
eventualmente o mais conhecido.
9.4 SqWebMail
O acesso ao correio via WWW tornou-se uma prática corrente e necessária.
Existem vários programas que permitem a leitura de correio via web e que podem
interagir com o Postfix. No caso do Postfix estar configurado para funcionar com o
esquema de queues Maildir, pode-se utilizar o SqWebMail. Este programa faz parte do
servidor de correio Courier, contudo pode ser instalado separadamente para operar com
o Postfix. Funciona à base de CGI e requer que se tenha a funcionar um servidor Web,
por exemplo Apache. Quanto à autenticação, este programa permite vários métodos:
§ Via ficheiro standard do UNIX, /etc./passwd ou /etc./shadow
§ Pluggable Authentication Modules (PAM)
§ Base de dados MySQL
§ LDAP
§ Base de dados própria
§ SASL
116
Sistemas Externos vs Postfix
Permite também, o acesso autenticado, criação de novas pastas, bem como o envio de
correio.
117
Futuro do Correio Electrónico
Desde a antiguidade que o Homem tenta superar amanha, o que conseguiu hoje.
Nos últimos séculos, assistimos a várias revoluções: mecânica, eléctrica, electrónica e
por fim a informática. No primeiro capítulo, apresentou-se uma breve história ao
desenvolvimento do correio electrónico. Em apenas vinte anos a transformação foi tal,
que seria impensável utilizar as ferramentas de correio que nessa época existiram. Como
será daqui a outros vinte anos?
Não sei, e provavelmente ninguém sabe. Contudo, neste capítulo tentar-se-á, na
medida do possível, fazer uma antevisão, para as evoluções num futuro próximo,
utilizando naturalmente, temas "quentes" da actualidade.
Apresentou-se de forma sucinta, a evolução dos protocolos utilizados pelos
programas de correio: SMTP, POP, LMTP, IMAP, etc. Constatou-se que houve
evolução dos protocolos, para responder a novos desafios, ou mesmo lacunas dos seus
antecessores, bem como, a crescente necessidade da integração de serviços até então
alheios ao e-mail. Surgiram várias aplicações já enumeradas, Microsoft Exchange,
Domino da IBM, Novell GroupWise, entre outras, que integram outros serviços,
podendo noutros casos a própria funcionalidade de correio estar integrada noutros
serviços, como é o caso do Exchange e o Active Directory. Naturalmente que esta
integração exigia novos protocolos standars, por exemplo o LDAP ou mesmo
protocolos proprietários, utilizados pelas respectivas softwarehouses.
Este raciocínio, conduz naturalmente a uma proliferação de protocolos mais ou
menos padronizados. Por que não integrar várias funcionalidades num único protocolo ?
É neste contexto que surge a ideia de criar um único protocolo que agrupe as
funcionalidades MIME, IMAP4, LDAP e SMTP. Esse protocolo é o IMSP - Internet
Message Support Protocol (Project Cyrus , Carnegie Mellon University). Os objectivos
deste protocolo são:
§ Escalabilidade
§ Mobilidade - transparente para o utilizador em ambientes heterogéneos e em
locais diferentes, isto é, o utilizador não deverá sentir diferença quando se
desloca de um "cliente" para outro. Em termos comparativos, seria um
"profile" do windows igual em qualquer máquina, independentemente onde
faça login.
119
Postfix – uma visão pessoal
§ Flexibilidade na Administração
120
Futuro do Correio Electrónico
121
Postfix – uma visão pessoal
123
Bibliografia
A sua inclusão já existe, aquando da realização deste trabalho, utilizando para o efeito o
TLS e autenticação SASL, no entanto, este último não é recomendado por Wietse
Venema.
É mais que evidente, que o Postfix è uma importante opção no seio dos MTA’s,
quer pela caracterização aqui referida, quer pelos inúmeros comentários em sites da
especialidade.
124
Bibliografia
§ ftp://ftp.inescn.pt/pub/net/mail/postfix/index.html
§ ftp://ftp.porcupine.org/pub/security/index.html
§ ftp://koobera.math.uic.edu/www/surveys/smtpsoftware3.txt
§ http://amtp.bw.org/
§ http://andrew2.andrew.cmu.edu/cyrus/
§ http://kirb.insanegenius.net/postfix.html
§ http://msgs.securepoint.com/postfix/
§ http://rpmfind.net
§ http://starbase.neosoft.com/~claird/comp.lang.python/python.html
§ http://www. openldap.org
§ http://www.advosys.ca/papers/postfix-filtering.html
§ http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/
§ http://www.alphaworks.ibm.com
§ http://www.deadly.org/article.php3?sid=20030712074538
§ http://www.direct-to-linux.com/TUTORIALS/LinuxTutorialLDAP.html
§ http://www.exim.org
§ http://www.fivesight.com/downloads/openldap.asp
§ http://www.freebsddiary.org/postfix-virtual-domains.php
§ http://www.gnu.org
§ http://www.greatcircle.com/majordomo/FAQ.html
§ http://www.high5.net/howto/
§ http://www.hispalinux.es/~data/postfix/
§ http://www.inter7.com/sqwebmail.html
§ http://www.kagekaze.org/postfix/
§ http://www.linuxsecurity.com/feature_stories/feature_story-91.html
§ http://www.linuxworld.com/linuxworld/expo/lw-email.html
§ http://www.list.org/
§ http://www.majordomo.com
§ http://www.mandrakesecure.net/en/docs/ldap-auth.php
§ http://www.mysql.com
§ http://www.opensource.org/
125
Bibliografia
§ http://www.oxixares.com
§ http://www.postfix.org
§ http://www.qmail.org
§ http://www.redhat.com/support/resources/faqs/RH-postfix-FAQ/book1.html
§ http://www.sendmail.com
§ http://www.sendmail.org
§ http://www.sunworld.com/swol-07-1998/swol-07-security.html
§ http://www.wilsonweb.com/articles/majordomo.htm
§ http://www-1.ibm.com/servers/aix/products/aixos/linux/date.html
§ [CCITT.X509.1988]
International Telephone and Telegraph Consultative
Committee, "Information Technology - Open Systems
Interconnection - The Directory: Authentication
Framework", CCITT Recommendation X.509, November 1988.
§ [RFC2693] Ellison, C., Frantz, B., Lampson, B., Rivest, R., Thomas,
B. and T. Ylonen, "SPKI Certificate Theory", RFC 2693, September 1999.
126