Вы находитесь на странице: 1из 18

PostFix

Postfix um software de servidor de email que tem o objetivo de ser rpido, fcil de configurar, e que esperanosamente seguro. Ele um MTA, com bastante robustez, desempenho e maior facilidade na manuteno e configurao. Alm disso, o Postfix capaz de emular vrias funes do Sendmail, evitando assim modificaes nas aplicaes que utilizam o Sendmail.

Lio 1 - Introduo ao Postfix O Postfix um dos mais revolucionrios servidores de e-mail j desenvolvidos. Trata-se de um robusto sistema de e-mail que possui algumas razes do Sendmail, mas um produto completamente reformulado para as necessidades atuais da internet, pois foi criado com a preocupao em segurana, velocidade e facilidade de integrao. A forma com que o Postfix configurado permite fcil integrao com outros produtos que o adicionam funcionalidades, como filtros de e-mail (AntiVrus e AntiSpam) e gerenciadores de entrega. O Postfix possui centenas de parmetros de configurao controlados atravs de seu arquivo de configurao principal, o arquivo main.cf. Felizmente, a configurao padro do Postfix j utiliza valores corretos para a maioria dos cenrios de utilizao. Sendo assim, poucos parmetros precisam ser realmente modificados para que o Postfix possa oferecer sua funcionalidade principal. Iremos tratar dos parmetros de configurao que devem ser alterados em um arquivo de configurao padro fornecido pela instalao do pacote Debian do Postfix. O pacote pode ser encontrado nos CDs de instalao e/ou nos repositrios de pacotes oficiais Debian.

Lio 2 - Instalao e configurao bsica Instalao Basicamente esta parte se resume em instalar o pacote que prov o Postfix. Para instalar o pacote Debian do Postfix, use o comando a seguir: # apt-get install postfix Ao instalar o pacote Postfix, o pacote do que estiver provendo "mail-transport-agent" (Pode ser o Exim ou o Sendmail, por exemplo) ser removido. Uma particularidade do pacote Debian do Postfix que o mesmo utiliza o debconf para sua configurao inicial bsica. Devido a isso, logo aps instalar o pacote Postfix, o script de ps-instalao do pacote ir executar a etapa de configurao bsica inicial do pacote. Configurao bsica A primeira tela a ser exibida a tela que lhe questiona que tipo de configurao voc deseja para o Postfix. Diversas configuraes so possveis, como Internet com smarthost, Internet Site, Sistema satlite, Somente local e a opo Sem configurao. Como o processo de configurao bsica inicial do Postfix baseada em debconf ainda no pode gerenciar todos os parmetros geralmente necessrios, o procedimento a ser usado selecionar a opo Somente local, de modo que somente algumas perguntas sero feitas e, ao terminar de respond-las, voc ter um Postfix com uma configurao que lhe permitir enviar e receber mensagens de email para usurios locais. A maioria das distribuies Linux j provm pacotes do Postfix com este nvel de configurao. Configuraes adicionais para modificar o comportamento do Postfix devem ser feitas diretamente no arquivo de configurao principal, /etc/postfix/main.cf. Aps escolher a opo Somente local, surgir uma pergunta lhe questionando sobre qual ser o Mail name padro. O Mail name a poro logo aps o smbolo de arroba (@) dos endereos de e-mail, e ser usado para compor o endereo exibido no campo "De:" das mensagens enviadas a partir do servidor Postfix. Por exemplo, caso uma mensagem seja enviada do console do servidor pelo usurio waldemar e o Mail name esteja definido como cdtc.org.br, o destinatrio da mensagem ir receb-la e visualizar no campo "De:" desta mensagem o remetente waldemar@cdtc.org.br. Responda "No" para a prxima pergunta, que questiona se o Postfix dever acrescentar o sufixo .domnio (na verdade, o que ser acrescentado ser .\$mydomain, ou seja, o ponto mais o valor da varivel \$mydomain) em mensagens que contm somente um componente na poro hostname.

A prxima pergunta questiona quais os domnios que o servidor Postfix deve considerar, ele mesmo, como sendo o destino final. Ou seja, se voc acrescentar o domnio cdtc.org.br nessa listagem, o Postfix ir tentar entregar localmente todas as mensagens enviadas para endereos que contenham @cdtc.org.br no campo "Para:". Sendo assim, somente adicione nessa listagem os domnios que realmente sero hospedados no servidor Postfix sendo instalado. O padro sugerido o hostname totalmente qualificado (FQDN) do servidor onde o Postifix est sendo instalado. localhost.cdtc.org.br e localhost, neste caso. Acrescente essa lista os domnios para os quais voc deseja que o Postfix seja o destino final. Por exemplo, caso o Postfix sendo instalado tenha que ser o destino final para os domnios cdtc.org.br e iti.br, a listagem informada como resposta essa pergunta ficaria como: servidor.cdtc.org.br, localhost.cdtc.org.br, localhost, cdtc.org.br, iti.br Essa lista pode ser modificada posteriormente no parmetro mydestination do arquivo /etc/postfix/main.cf. A prxima pergunta questiona para qual endereo de e-mail as mensagens enviadas para o usurio root devero ser redirecionadas. O Postfix no entrega mensagens diretamente na caixa do usurio root, pois precisaria ser executado com privilgios de root para faz-lo. Como isso pode ser uma falha de segurana, o padro definir uma conta de usurio comum para onde as mensagens destinadas ao usurio root sero enviadas. Ao definir essa conta, uma entrada ser acrescentada no arquivo de aliases padro do Postfix, o arquivo /etc/aliases, criando um alias de root para o usurio definido. Pronto! A etapa de configurao ser finalizada e o Postfix ser iniciado, j funcionando para o envio e recebimento de email para usurios locais.

Lio 3 - O daemon do Postfix Aps a definio ou modificao da maioria dos parmetros do Postfix, no necessrio reinici-lo por completo. Apenas um reload necessrio, o que j far com que quaisquer modificaes nos arquivos de configurao do Postfix passem a ser vlidas. Somente alguns parmetros requerem que o Postfix seja reiniciado por completo (com o comando postfix restart, por exemplo) para que passem a ser vlidos. O parmetro inet_interfaces, do qual trataremos adiante, um exemplo. Ao longo desse treinamento, ser assumido que sempre que a definio ou modificao de um parmetro do Postfix seja requisitada, um reload do mesmo seja executado. Quando existir a necessidade de um restart completo do Postfix, isso ser explicitamente informado. Para referncia, um reload do Postfix equivalente a executar o comando a seguir: # postfix reload Um restart do Postfix, por sua vez, equivalente a executar o comando a seguir: # postfix restart

Lio 4 - O utilitrio Postconf (Gerenciamento de configuraes) Veremos agora a funo de alguns parmetros do Postfix no arquivo /etc/postfix/main.cf. Gerenciamento das configuraes Existem duas formas bsicas de gerenciar as configuraes do Postfix. A primeira a mais bvia, editando diretamene o arquivo main.cf. A segunda atravs do comando postconf (consulte a man page para maiores detalhes). O postconf permite basicamente visualizar e editar as configuraes do postfix a partir da linha de comando, sem a necessidade de utilizar um editor de texto para edio do main.cf. Consultando parmetros O funcionamento bem simples. Para exibir todos os parmetros que o Postfix suporta, assim como seus respectivos parmetros configurados atualmente, digite: # postconf Isso resultar em umas 300 linhas possveis, cada uma contando um parmetro de configurao do Postfix. Os valores padro para cada parmetro podem ser visualizados com a opo -d do postconf, assim: # postconf -d Para direcionar sua pesquisa a um parmetro especfico, basta especificar o parmetro na frente do comando. Por exemplo, digamos que voc queira visualizar o parmetro myhostname, utilize: # postconf myhostname Ser exibido o valor atual do parmetro myhostname. Para exibir o valor "padro", utilize: # postconf -d myhostname Para exibir somente os parmetros diferentes do padro, utilize: # postconf -n Sero exibidos os parmetros que foram definidos no arquivo main.cf, mesmo que atravs do postconf.

Modificando parmetros Agora vamos aprender a utilizar o postconf para modificar parmetros de configurao sem tocar no arquivo main.cf. A sintaxe tambm bem simples, basta acionar a opo -e do postconf e especificar (entre aspas, geralmente) o valor desejado para a opo: # postconf -e myhostname="servidor.\$mydomain" No se esquea de que o caractere "$" deve ser escapado com barra invertida "\" para que o shell no interprete como uma varivel de ambiente. Agora verifique as mudanas no arquivo /etc/postfix/main.cf.

Lio 5 - Configuraes Gerais RELAY O parmetro mynetworks controla para quais endereos de IP e/ou redes o Postfix ir fazer RELAY (oferecer o servio de envio de mensagens). Segue um exemplo de configurao do parmetro mynetworks: mynetworks = 127.0.0.0/8, 192.168.1.0/24 No exemplo acima, o RELAY est sendo liberado para as redes 127.0.0.0/8 (rede da interface de loopback) e 192.168.1.0/24 (rede de classe C invlida de exemplo). FQDN O parmetro myhostname indica ao Postfix qual o hostname totalmente qualificado (FQDN) da mquina onde este est sendo implantado. O padro obter esse valor do hostname padro do servidor. importante ter o hostname definido no arquivo /etc/hosts para que o Postfix de forma geral funcione satisfatoriamente. Um exemplo de arquvivo /etc/hosts segue abaixo: 127.0.0.1 localhost.localdomain localhost 192.168.1.12 cursos.cdtc.org.br cursos Certifique-se de que o "nome curto" do servidor seja o nico contedo do arquivo /etc/hostname (isto espercfico do Debian) e que a sada dos comandos abaixo seja semelhante: #cat /etc/hostname cursos #hostname cursos #hostname -f cursos.cdtc.org.br #grep `hostname -f` /etc/hosts 192.168.1.12 cursos.cdtc.org.br cursos Isto garante que a configurao de nomes do servidor esteja correta. Como estamos revisando a configurao e vamos precisar utilizar o DNS, verifique tambm se existe uma entrada de nameserver apontando para seu prprio IP (pode ser o loopback tambm) no arquivo /etc/resolv.conf. #cat /etc/resolv.conf search cdtc.org.br nameserver 127.0.0.1

Agora voltemos ao Postfix. Um exemplo de configurao do parmetro myhostname seria: #postconf myhostname myhostname = cursos.$mydomain Constate tambm que o parmetro mydomain comporta realmente o seu domnio, que deve ser a mesma sada do comando dnsdomainname #dnsdomainname cdtc.org.br #postconf -e mydomain="`dnsdomainname`" #postconf mydomain mydomain = cdtc.org.br Dessa forma, garantido que o Postfix esteja configurado corretamente com seu FQDN. Gerenciamento de interfaces de rede O parmetro inet_interfaces controla em quais interfaces de rede o Postfix dever aguardar por conexes SMTP. Caso seja necessrio oferecer os servios do daemon SMTP para todas as redes nas quais o servidor Postfix tenha uma interface de rede, defina o valor do parmetro inet_interfaces como a seguir: inet_interfaces = all Logicamente, as restries do parmetro mynetworks ainda so vlidas para controle de quais endereos IP e/ou redes podem fazer RELAY utilizando o Postfix, uma vez que o parmetro inet_interfaces somente controla em quais interfaces de rede o Postfix vai ouvir. Somente no caso do servidor possuir mais de uma interface de rede que este parmetro comea a se tornar til. Conforme dito, se o valor de inet_interfaces estiver definido para "all", o postfix deixar a porta SMTP (25/tcp) aberta em todas as interfaces de rede, isso inclui a interface loopback. Digamos que seu provedor possua 2 interfaces de rede (alm da loopback, claro) onde, uma fica com o IP 192.168.1.12, a outra com o IP 200.1.2.3, e no queremos oferecer os servios do Postfix para a interface de rede com o IP 200.1.2.3. A configurao ficaria assim: inet_interfaces = 127.0.0.1, 192.168.1.12 A modificao do parmetro inet_interfaces requer um restart do Postfix e no simplesmente um reload.

Maildir O padro do Postfix utilizar o formato de caixas-postais mbox (igual ao Sendmail). Mas o Postfix pode lidar com diversos formatos de caixas-postais, dentre elas, uma boa alternativa o formato Maildir, que organiza em uma estrutura de diretrios as mensagens de caixa-postal, tornando a varredura muito mais rpida. Porm, para que isso seja possvel, precisamos configurar o Postfix para entregar as mensagens dos usurios locais nesse formato de caixapostal. O parmetro necessrio o home_mailbox, que no possui padro definido (O que leva o Postfix a optar pelo formato mbox). Vejamos: #postconf home_mailbox home_mailbox = #postconf -e home_mailbox="Maildir/" #postconf home_mailbox home_mailbox = Maildir/ #postfix reload postfix/postfix-script: refreshing the Postfix mail system Por padro, o Postfix entrega mensagens no formato mbox sob o diretrio /var/mail (/var/spool/mail um link simblico para /var/mail). A configurao acima instrui o Postfix a entregar as mensagens dos usurios em um diretrio de nome Maildir, sob o diretrio pessoal de cada usurio. No necessrio a existncia prvia de um diretrio de nome Maildir sob o diretrio pessoal de cada usurio uma vez que o prprio Postfix se encarregar de criar tal diretrio caso o mesmo ainda no exista, bem como criar a estrutura de subdiretrios para a entrega das mensagens e acertar quaisquer permisses necessrias. RELAYHOST Algumas vezes necessrio encaminhar mensagens geradas localmente no servidor de mensagens ou atravs da rede para que sejam entregues em outro servidor e no localmente, assim como um SmartHost do Sendmail. Para habilitar o suporte a esse recurso, o parmetro relayhost pode ser utilizado, configurado da seguinte forma: relayhost = [1.2.3.4]:25 Onde 1.2.3.4 o endereo IP do servidor de mensagens para o qual as mensagens devem ser encaminhadas. O endereo IP deve ser especificado entre colchetes para evitar pesquisas DNS e agilizar o envio. Aps os dois pontos, 25 representa no exemplo acima o nmero da porta TCP onde o servidor de mensagens remoto est ouvindo por conexes SMTP (geralmente 25).

Aliases O arquivo de aliases do Postfix definido pelo parmetro alias_maps. O valor padro desse parmetro no pacote Debian do Postfix : alias_maps = hash:/etc/aliases Modifique somente no caso de querer especificar um arquivo de aliases alternativo. Outro ponto importante a ser lembrado que o Postfix possui um comando prprio para gerar a base de dados de aliases a partir do arquivo de aliases definido no parmetro alias_maps. O comando usado para gerao dessa base de dados postalias. Segue abaixo um exemplo de utilizao do comando postalias para gerao da base de dados de aliases: #postalias /etc/aliases O parmetro alias_database define qual arquivo de aliases ser lido pelo Postfix para obter a lista de aliases. Em uma configurao comum o valor desse parmetro idntico ao parmetro alias_maps, que apontam para arquivos de mapa do tipo hash. Ao utilizarmos o comando postalias em um arquivo de mapa (/etc/aliases, por exemplo), ser criado um arquivo binrio no formato hash de mapa. Este arquivo ter o mesmo nome do arquivo de entrada, mas com a extenso ".db". No nosso exemplo (e na maioria dos casos) o arquivo binrio criado pelo comando "postalias /etc/aliases" ser "/etc/aliases.db". Definindo um alias para o postmaster de extrema importncia definir um alias para o postmaster, uma vez que as mensagens de erro enviadas pelo Postfix recomendam relatar o problema sendo reportado para o postmaster do domnio em questo. O destino desse alias costuma ser a conta de usurio encarregado de administar o servidor de email. Adicionalmente, um padro estabelecido em sistemas de controle de mensagens para manter um endereo no formato postmaster@dominio com o intuito de receber mensagens administrativas e de usurios que desejam relatar problemas ao responsvel pelo gerenciamento de mensagens, inclusive usurios de outros domnios que precisem relatar um problema que possam eventualmente estar enfrentando na tentativa de se comunicar com um usurio do domnio atendido pelo Postfix. A sintaxe da definio do alias exatamente a mesma usada na definio de um alias no MTA Sendmail. Segue abaixo um exemplo definindo um alias do postmaster para o usurio local aluno: postmaster: aluno

Definindo um alias para o root Da mesma forma que o alias para o postmaster, definir um alias para o root tambm extremamente importante. At mesmo mais importante do que o caso do postmaster, uma vez que o Postfix, por razes de segurana, no entrega mensagens diretamente na caixa postal do usurio. Para que a entrega direta para o usurio root funcionasse seria necessrio que o usurio Postfix pudesse gravar na caixa de mensagens do usurio root ou que o processo do Postfix fosse executado com privilgios de root. Como um dos focos do Postfix segurana, isso no permitido. Sendo assim, obrigatrio ter definido um alias do usurio root para um usurio comum. Esta configurao deve ser modificada e as mensagens com destino ao usurio root devero ser entregues na conta de um usurio comum encarregado de administrao do servidor ou at mesmo um grupo de usurios encarregados. Como exemplo, a seguir veremos uma linha do arquivo de aliases do Postfix que define que as mensagens destinadas ao usurio root sero entregues para o usurio aluno (o qual, logicamente, j deve existir): root: aluno Aps realizar modificaes no arquivo de aliases no se esquea de recriar os mapas de aliases com o comando "postalias /etc/aliases".

Lio 6 - Configurao de domnios virtuais O suporte a domnios virtuais no Postfix, assim como muitos outros de seus recursos, implementado utilizando mapas de lookup. Simplificando para nossos propsitos, um mapa de lookup onde o Postfix busca informaes de equivalncia de endereos de e-mail para usurios. O Postfix suporta domnios virtuais no estilo do Sendmail e em seu prprio estilo. O suporte ao estilo do Sendmail s est disponvel para compatibilidade com instalaes que esto sendo migradas do MTA Sendmail para o Postfix. Em novas instalaes, o melhor utilizar o formato do Postfix. Para configurar o Postfix para buscar informaes de domnios virtuais no mapa de lookup correto, especifique-o na opo virtual_maps, conforme abaixo: #postconf virtual_maps virtual_maps = #postconf -e virtual_maps="hash:/etc/postfix/virtual" O arquivo /etc/postfix/virtual deve seguir o seguinte formato: cdtc.org.br Um comentrio qualquer aqui aluno@cdtc.org.br aluno sidney@cdtc.org.br sydney fredao@cdtc.org.br fredao tomas@cdtc.org.br tomas iti.br Um comentrio qualquer aqui aluno@iti.br aluno2 sidney@iti.br sydney2 fredao@iti.br fredao2 tomas@iti.br tomas2 A principal diferena de formato do Postfix que os domnios devem ser separados e deve existir um cabealho com um comentrio antes da primeira entrada para cada domnio. Para ativar as configuraes, execute: #postmap /etc/postfix/virtual #postfix reload O primeiro comando cria o mapa em formato binrio, /etc/postfix/virtual.db. O segundo ativa as configuraes efetuadas no Postfix.

O contedo do arquivo /etc/postfix/virtual.db, ao contrrio do arquivo /etc/postfix/virtual, no pode ser lido normalmente (trata-se de um arquivo binrio). O Postfix sabe como ler o arquivo binrio /etc/postfix/virtual.db, o que feito em detrimento da leitura do arquivo /etc/postfix/virtual, devido a leitura do arquivo binrio ser extremamente mais rpida do que interpretar todo o arquivo, /etc/postfix/virtual, em texto puro.

Lio 7 - POP3 e IMAP POP3 Para muitos sistemas, invivel manter um sistema completo para uso de correio eletrnico: servidor de e-mail, checagens contra vrus, servidor de caixas postais, etc. Alm, claro, de termos o fator conexo, onde nem todas as mquinas tm condies de estar permanentemente ligadas internet. Independente de todos estes fatores, interessante e muito til a possibilidade de gerenciar mensagens de correio eletrnico a partir dessas mquinas e usar o programa cliente ("mail user agent'' MUA) disponvel para esta tarefa. So exemplos de clientes: Outlook, KMail, Evolution, Sylpheed, pine, mutt, Netscape Messenger, entre outros. Para resolver esse problema de uso de e-mail em uma mquina menos poderosa, foram criados servidores que disponibilizam caixas postais para e-mail. O protocolo POP Post Office Protocol --- verso 3 (POP3) permite que as estaes acessem essas caixas dinamicamente, de uma maneira til. Isso significa que o protocolo POP3 usado para permitir que estaes de trabalho recuperem mensagens de e-mail de um servidor que as armazena. O protocolo POP3 no tem por objetivos permitir manipulaes de mensagens no servidor. A inteno permitir que as mensagens sejam recuperadas e ento deletadas. A especificao e regulamentao do protocolo POP3 dada pela RFC 1939. IMAP O protocolo IMAP Internet Message Access Protocol --- verso 4, reviso 1 (IMAP4 rev. 1), permite que um cliente acesse e manipule mensagens de correio eletrnico disponveis em um servidor. Este protocolo permite a manipulao de pastas remotas, chamadas ``mailbox'', de maneira funcionalmente equivalente a pastas locais. O protocolo IMAP4rev1 tambm disponibiliza mecanismos capazes de fazer com que clientes offline possam ressincronizar suas pastas com o servidor. So disponibilizadas operaes para criao, deleo, renomeao de mailboxes; checagem por novas mensagens; remoo permanente de mensagens; busca; recuperao seletiva de atributos, textos e partes de mensagens. As mensagens so acessadas individualmente atravs de nmeros que so ou seqenciais ou identificadores nicos para cada mensagem. O protocolo IMAP, assim como o POP, no pode ser usado para enviar mensagens, apenas para recuper-las. O envio de mensagens deve ser feito com o uso de um servidor SMTP, como o Postfix, por exemplo.

Servidores POP3 e IMAP Agora que j implementamos o protocolo SMTP no servidor de e-mail, pode ser necessrio disponibilizar acesso remoto s caixas postais atravs dos protocolos POP3 e IMAP, que foram explicados anteriormente. importante compreender que os protocolos POP3 e IMAP no so responsabilidade do MTA instalado no sistema (Sendmail ou Postfix). O suporte a esses protocolos dado atravs de servidores especficos para cada um. Geralmente o servio que prov suporte ao POP3 o mesmo que prov suporte IMAP. No Debian, existem diversas alternativas, mas a mais simples, funcional e com boa interao com o formato de caixas postais Maildir o courier. Outras distribuies, como a Conectiva por exemplo, utilizam o courier por padro. Instalao do Courier Para instalar o courier com suporte a POP3 e IMAP no Debian, utilize o comando a seguir: # aptitude install courier-pop courier-imap Aps o download, descompactao e instalao dos pacotes courier-pop e courier-imap e suas dependncias, uma nota debconf ser exibida, informando que o empacotamento do Courier foi totalmente revisado. Simplesmente tecle [Enter] para continuar. Configurao do Courier Os arquivos de configurao do Courier ficam armazenados no diretrio /etc/courier. A configurao do servidor POP feita no arquivo /etc/courier/pop3d e a configurao do servidor IMAP feita no arquivo /etc/courier/imapd. O arquivo /etc/courier/authdaemonrc no precisar ser modificado a menos que seja necessrio aumentar a quantidade de daemons de autenticao iniciados por padro, ou seja, cinco instncias do daemon ou que sejam utilizados outros mtodos de autenticao. Os valores padres fornecidos pelos pacotes courier-pop e courier-imap j so adequados para a grande maioria das instalaes.

Lio 8 - Testando o funcionamento do Servidor Para testarmos o funcionamento dos daemons POP e IMAP, precisamos de uma conta vlida no sistema. Vamos supor que haja uma conta "waldemar". Envie uma mensagem para o usurio utilizando o comando a seguir: # echo "Testando.." | mail -s "Teste" waldemar Aps o envio da mensagem, consulte o log de mensagens do Postifix localizado no arquivo /var/log/mail.log e procure no final do arquivo por uma linha indicando a entrega da mensagem na caixa postal do usurio waldemar. Depois de verificarmos o funcionamento da entrega da mensagem, vamos utilizar o comando telnet para testar o funcionamento dos daemons de POP e IMAP. # telnet 127.0.0.1 110 Este comando estabelecer uma conexo na porta 110/tcp. O mesmo poderia ser feito para testar o servidor IMAP (porta 143). Da em diante, basta configurar o seu Mail User Agent (MUA) para utilizar o servidor configurado.

Anexos RFC1939 - http://www.rfc-editor.org/rfc/rfc1939.txt