Postfix

Linux in Brazil

Documentação original
e de qualidade
em bom português

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Dúvidas comuns | Perguntar no Fórum | Notícias | Mais documentos | Contato
 
Destaques de hoje:
  • A semana no BR-Linux: Google Chrome, Ubuntu 8.10, KDE 4.2 e Dell
  • Abundam as análises do Chromium, navegador web open source do Google
  • A semana no BR-Linux: Reiser condenado, Firefox 3.1 mais rápido, pedal de guitarra open source
  • Resultado da promoção da camiseta "Nerdômetro" da Red Bug - brinde pra todo mundo!
  • Instalando e configurando o Postfix como MTA

    Postfix é um MTA, que apresenta-se como alternativa ao Sendmail, tendo como objetivo ser mais rápido, seguro e fácil de configurar que o Sendmail, além de tentar manter a compatibilidade com ele. Pode ser encontrado em http://www.postfix.org

    Esse tutorial tem como objetivo auxiliar os administradores de sistema a instalar Postfix e auxiliar a migrar um servidor rodando sendmail para o Postfix, demonstrando como fazer a configuração do MTA, através de exemplos.

    Inicialmente, vamos começar com o download do programa. O source pode ser obtido no próprio site do Postfix: http://www.postfix.org/ftp-sites.html

    Existe ainda as opções de pagar pacotes RPM em: http://www.ext.ea4els.ampr.org/~sjmudd/postfix/

    E pacotes para o Debian em: http://packages.debian.org/postfix

    Você pode escolher a forma de instalação que se adequar as suas necessidades.

    Antes de iniciar a instalação é recomendável você fazer um backup dos arquivos de configuração do sendmail e remover os seus pacotes . Se não for remove-lo do sistema, é aconselhável desativa-lo e mover os seus arquivos.

    Movendo os arquivos do sendmail:

    # mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
    # mv /usr/bin/newaliases /usr/bin/newaliases.OFF
    # mv /usr/bin/mailq /usr/bin/mailq.OFF
    # chmod 755 /usr/sbin/sendmail.OFF /usr/bin/newaliases.OFF \
    /usr/bin/mailq.OFF
    

    Iniciando o processo de compilação e instalação

    Descompactando o postfix:

    # tar xvfz postfix-release.tar.gz
    

    O arquivo INSTALL que encontra-se que acompanha os sources do postfix explica detalhadamente o processo de instalação. Nesse documento vão ser demonstrados os principais passos.

    Adicionando um usuário para o postfix:

    # adduser postfix -s /bin/false
    

    Ou adicionar uma entrada no passwd como essa:

    postfix:*:12345:12345:postfix:/no/where:/bin/false
    

    Adicionar alias para o usuário postfix no arquivo /etc/aliases:

    postfix: root
    

    Compilando o postfix:

    # cd postfix-release
    # make
    

    Instalando o postfix:

    # make install
    

    Em seguida o programa de instalação vai fazer diversas perguntas sobre a localização dos arquivos e alguns parâmetros. Vão serem seguidas as sugestões do programa, pode-se altera-las de acordo com a sua necessidade.

    Configurando o sistema:

    O postfix contém um arquivo chamado main.cf, no qual estão as configurações gerais do daemon, localizado no diretório "/etc/postfix", pela instalação padrão. Abaixo, serão demonstrados os principais parâmetros de configuração para ter-se um servidor de e-mail funcional. Nos exemplos abaixo, vai ser utilizado o nome do servidor como "mail.dominio.com.br" e o dominio "dominio.com.br", favor substitui-los de acordo com a sua necessidade.

    Parâmetro "myhostname", substituir pelo nome da maquina/host:

    myhostname = mail.dominio.com.br
    

    Parâmetro "mydomain", substituir pelo seu domínio:

    mydomain = dominio.com.br
    

    Parâmetro "mydestination", substituir pelos domínios que o seu servidor de e-mail é responsável. Por exemplo, mail.dominio.com.br, ftp.dominio.com.br, www.dominio.com.br, dominio2.com.br, etc. Exemplo:

    mydestination = $myhostname, localhost.$mydomain, $mydomain, \
       mail.$mydomain, www.$mydomain, dominio2.com.br
    

    Caso você tenha diversos domínios, pode se informar um arquivo com a listagem de domínios que você possui:

    mydestination = $myhostname, localhost.$mydomain, /etc/postfix/dominios
    

    Exemplo do arquivo /etc/postfix/dominios:

    # /etc/postfix/dominios 
    dominio2.com.br, dominio3.com.br, www.dominio2.com.br
    

    Esse arquivo funciona de forma semelhante ao sendmail.cw

    Observação: Se você for utilizar o estilo de domínios virtuais do postfix, você não deve incluir nesse arquivo de domínios os domínios virtuais que você pretende utilizar.

    Qual a diferença entre o estilo de domínios virtuais do postfix e do sendmail ?

    Através dos domínios virtuais do postfix, somente os usuários cadastrados no domínio virtual receberam e-mail, caso seja enviado um e-mail para um usuário que não consta no mapa de usuários virtuais retornará uma mensagem dizendo que o usuário não existe. Com os domínios virtuais do sendmail, se existir um usuário no sistema ele será visível para o dominio virtual.

    Como fazer para utilizar o sistema de domínios virtuais do postfix ?

    Como foi explicado anteriormente, o dominio não deve estar incluído no parâmetro "mydestination", e devera ser incluído a seguinte linha no arquivo de configuração:

    virtual_maps = hash:/etc/postfix/virtual
    

    Para criar o mapa de dominio virtuais utiliza-se o comando:

    # postmap /etc/postfix/virtual
    

    Exemplo de um arquivo de domínios virtuais do postfix:

    # /etc/postfix/virtual
    dominio2.com.br E-mails do dominio2.com.br
    luizinho@dominio2.com.br luizinho
    zezinho@dominio2.com.br zezinho@outrodominio.com.br
    galera@dominio2.com.br guinho, zezinho, luizinho
    

    A primeira linha informa o nome do domínio virtual e a seguir tem um comentário sobre o domínio, deve-se escrever qualquer coisa após o nome do dominio.

    O primeiro exemplo mostra o redirecionamento do e-mail luizinho@dominio2.com.br para o usuário local luizinho. O segundo exemplo demonstra o e-mail zezinho@dominio2.com.br sendo redirecionado para zezinho@outrodominio.com.br. O ultimo exemplo demonstra galera@dominio2.com.br sendo redirecionado para os usuários guinho, zezinho e luizinho.

    Como utilizar o sistema de domínios virtuais do sendmail ?

    Colocar os domínios virtuais no parâmetro "mydestination".

    Inserir o parâmetro:

    virtual_maps = hash:/etc/postfix/virtual
    

    Exemplo de um arquivo de domínios virtuais do sendmail:

    # /etc/postfix/virtual
    luizinho@dominio2.com.br        luizinho
    zezinho@dominio2.com.br         zezinho@outrodominio.com.br
    galera@dominio2.com.br          guinho, zezinho, luizinho
    

    Parâmetro "mynetworks", nesse parâmetro você deve determinar as redes do seu provedor:

    mynetworks = 192.168.0.0/16, 127.0.0.0/8
    

    Também pode se informar os domínios em um arquivo como:

    mynetworks = /etc/postfix/mynetworks
    

    Pela configuração default do postfix, ele permite relay de e-mails das suas redes e de seus domínios. Caso você tenha clientes que não fazem parte da sua rede e que necessitam utilizar o seu servidor de e-mail para o envio de mensagens, você pode criar um arquivo com a lista de clientes e através do parâmetro "smtpd_recipient_restrictions" habilitar o envio de mensagens. Como no exemplo abaixo:

    smtpd_recipient_restrictions = permit_mynetworks
                    check_client_access hash:/etc/postfix/client_access
                    check_relay_domains
    

    Exemplo do arquivo /etc/postfix/client_access

    dial.amigos.com.br OK
    10.0.0 OK
    lamers.com.br REJECT
    

    Esse parâmetro não consta na configuração default do postfix e você pode inclui-lo no final do arquivo de configuração main.cf

    Para criar o mapa de clientes que possam acessar o servidor de e-mail basta digitar:

    # postmap /etc/postfix/client_access
    

    Relay de e-mails de outros domínios que o seu servidor de e-mail não é o destino final

    Esse procedimento é bem comum em grandes servidores de e-mail, o administrador do sistema designa um ou mais MX secundários para o seu servidor de e-mail, caso o MX primário esteja fora do ar, os MX's secundários recebem os e-mails destinados aquele servidor de e-mail.

    Como foi visto, o Postfix, por padrão, permite o relay de e-mails que estão cadastrados como destino final, para permitir relay de outros domínios, basta você adicionar o seguinte parâmetro:

    relay_domains = $mydestination, /etc/postfix/relay-domains
    

    Exemplo do arquivo "/etc/postfix/relay-domains":

    # /etc/postfix/relay-domains
    outro-dominio.com.br
    dominio-10.com.br
    

    Aliases

    Existem dois tipos de configuração do sistema de aliases. Uma através dos mapas do postfix e outra através de um banco de dados semelhante ao sendmail.

    Para utilizar o sistema de mapas do postfix, utiliza-se o seguinte parâmetro:

    alias_maps = hash:/etc/aliases
    

    Através do comando "postalias /etc/aliases", voce atualizará o mapa de aliases.

    Para utilizar o sistema de banco de dados semelhante ao do sendmail, utiliza-se o seguinte parâmetro:

    alias_database = hash:/etc/aliases
    

    O comando "newaliases" ou "sendmail -bi" atualiza o banco de dados dos aliases.

    No subdiretório "conf" pode ser encontrado um exemplo do arquivo "aliases".

    Entrega de e-mails

    A entrega de e-mails no postfix pode ser feita de diversas formas, utilizando a forma tradicional, enviando os e-mails para "/var/spool/mail/user", no formato "Maildir/", utilizado pelo qmail, entre outros. Se você esta migrando sendmail para o postfix, ou tem pouca experiência recomenda-se utilizar o formato "/var/spool/mail/user", que é o padrão do postfix.

    mail_spool_directory = /var/spool/mail
    

    Alterando o banner do seu servidor de e-mail

    O banner padrão do postfix é:

    220 mail.dominio.com.br ESMTP Postfix
    

    Alguns administradores de sistema alteram o banner do servidor de e-mail para esconder a versão do sistema. Esse procedimento pode ser feito através do parâmetro "smtpd_banner", como no exemplo abaixo:

    smtpd_banner = $myhostname ESMTP
    

    Com esse procedimento o banner do servidor de e-mail seria:

    220 mail.dominio.com.br ESMTP
    

    Operação

    Finalizada a configuração do servidor de e-mail o próximo passo é iniciar o servidor de e-mail e testar se ele funciona corretamente.

    Iniciando o servidor de E-mail:

    # postfix start
    

    Caso seja feita alguma alteração na configuração do servidor de e-mail, para atualiza-lo, basta digitar o comando:

    # postfix reload
    

    Para desativar o servidor de e-mail:

    # postfix stop
    

    Considerações finais

    Esse tutorial demonstrou através de exemplos a configuração básica de um servidor de e-mail utilizando o postfix. O Postfix suporta diversos recursos, como base de usuários em um banco de dados Mysql, LDAP, entre outros. Para configurações avançadas do postfix recomenda-se a leitura dos documentos que encontram-se em http://www.postfix.org

    Caso você encontre algum erro nesse documento favor notificar o autor.

    Obrigado pela leitura e Boa Sorte!