Postfix

O Postfix é o Agente de Transporte de Correio (MTA) pré-definido no Ubuntu. Este tenta ser rápido e fácil de administrar e seguro. É compativel com o MTA sendmail. Esta secção explica como instalar e configurar o postfix. Também explica como configurá-lo como servidor SMTP utilizando uma ligação segura (para envio de email de forma segura).

Instalação

Para instalar postfix com SMTP-AUTH e Transport Layer Security (TLS), execute o comando seguinte:

sudo apt-get install postfix

Pressione enter quando o processo de instalação lhe colocar questões, a configuração será feita com mais detalhe posteriormente.

Configuração Básica

Para configurar o postfix, execute o seguinte comando:

sudo dpkg-reconfigure postfix

A interface do utilizador será mostrada. Em cada ecrã, seleccione os valores seguintes:

  • Ok

  • Internet Site

  • NONE

  • mail.example.com

  • mail.example.com, localhost.localdomain, localhost

  • No

  • 127.0.0.0/8

  • Yes

  • 0

  • +

  • all

[Nota]

Substitua mail.example.com com o nome do seu servidor de correio electrónico.

Agora será uma boa altura para decidir que formatos de mailbox deseja usar. Por defeito o Postfix irá usar mbox para o formato da mailbox. Em vez de editar o ficheiro de configuração directamente, pode usar o comando postconf para configurar todos os parâmetros postfix. Os parâmetros de configuração serão armazenados em /etc/postfix/main.cf. Poderá posteriormente, se o desejar, configurar um parâmetro em particular correndo o comando ou alterando de forma manual o ficheiro.

Para configurar o formato da mailbox para Maildir:

sudo postconf -e 'home_mailbox = Maildir/'
[Nota]

Isto colocará o novo mail em home/username/Maildir pelo que será necessário configurar o seu agente de entrega de mail (MTA) para usar o mesmo caminho.

Autenticação SMTP

Os passos seguintes são os de configuração da aplicação postfix para usar SASL para SMTP AUTH.

  1. Configurar a Postfix para permitir SMTP AUTH usando SASL (saslauthd):

    sudo postconf -e 'smtpd_sasl_local_domain ='
    sudo postconf -e 'smtpd_sasl_auth_enable = yes'
    sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
    sudo postconf -e 'broken_sasl_auth_clients = yes'
    sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
    sudo postconf -e 'inet_interfaces = all'
    

    Open the /etc/postfix/sasl/smtpd.conf file and add the following lines to end of the file:

    pwcheck_method: saslauthd
    mech_list: plain login
    
  2. De seguida, configure o certificado digital para TLS. Quando for questionado, siga as instruções e responda apropriadamente.

    openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
    chmod 600 smtpd.key
    openssl req -new -key smtpd.key -out smtpd.csr
    openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
    openssl rsa -in smtpd.key -out smtpd.key.unencrypted
    mv -f smtpd.key.unencrypted smtpd.key
    openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
    sudo mv smtpd.key /etc/ssl/private/
    sudo mv smtpd.crt /etc/ssl/certs/
    sudo mv cakey.pem /etc/ssl/private/
    sudo mv cacert.pem /etc/ssl/certs/
    
    [Nota]

    Pode obter o certificado digital de uma autoridade de certificação. Em alternativa pode criar um certificado voce mesmo. Veja a sub-secção Creating a self Signed Certification para mais detalhes.

  3. Configurar o Postfix para executar encriptação TLS para entrada e saída de mail:

    sudo postconf -e 'smtpd_tls_auth_only = no'
    sudo postconf -e 'smtp_use_tls = yes'
    sudo postconf -e 'smtpd_use_tls = yes'
    sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
    sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
    sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
    sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
    sudo postconf -e 'smtpd_tls_loglevel = 1'
    sudo postconf -e 'smtpd_tls_received_header = yes'
    sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
    sudo postconf -e 'tls_random_source = dev:/dev/urandom'
    sudo postconf -e 'myhostname = mail.example.com'
    
  4. Desligue a operação chroot para o servidor SMTP. Localize a seguiten linha no ficheiro /etc/postfix/master.cf:

    smtp      inet  n       -       -       -       -       smtpd
    

    e modifique como se indica:

    smtp      inet  n       -       n       -       -       smtpd
    
[Nota]

Após ter executado todos os comandos, o SMTP AUTH está configurado no postfix. O certificado auto-assinado é criado para TLS e configurado no postfix.

Agora, o ficheiro /etc/postfix/main.cf deverá ser semelhante a este.

A configuração inicial do postfix está completa. Execute o comando seguinte para iniciar o controlador postfix:

          
            sudo /etc/init.d/postfix start
          
        

Agora o controlador postfix está instalado, configurado e é executado com sucesso. Postfix suporta SMTP AUTH como definido em RFC2554. É baseado em SASL. Contudo ainda é necessário configurar autenticação SASL antes de poder utilizar SMTP.

Configurar SASL

As aplicações libsasl2-2, sasl2-bin e libsasl2-modules são necessárias para activar SMTP AUTH usando SASL. Pode instalar estas aplicações se não as possui já.

sudo apt-get install libsasl2-2 sasl2-bin

Umas quantas mudanças são necessárias fazer para que funcione de forma apropriada. Uma vez que o Postfix corre chrooted no ficheiro /var/spool/postfix, a SASL necessita de ser configurada para correr num falso root (/var/run/saslauthd torna-se /var/spool/postfix/var/run/saslauthd):

sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo rm -rf /var/run/saslauthd

Para activar saslauthd, edite o ficheiro /etc/default/saslauthd, e altere ou adicione a variável START. De forma a configurar saslauthd para correr em root falso, adicione as variáveis PWDIR, PIDFILE e PARAMS. Finalmente, configure a variável MECHANISMS conforme pretender. O ficheiro deverá parecer-se com:

# Isto necessita reconfigurado antes que o saslauthd funcione
# automaticamente
START=yes

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

# Necessita especificar o mecanismo de autenticação que deseja utilizar
# O pré-definido é o "pam" para suportar o PAM, mas também pode incluir
# "shadow" ou "sasldb", assim:
# MECHANISMS="pam shadow"

MECHANISMS="pam"
[Nota]

Se preferir, pode usar shadow em vez de pam. Isto usará a transferência de senha MD5 hashed e é perfeitamente segura. O nome de utilizador e senha que precisam de autenticação serão os mesmos que os utilizadores do sistema onde executa o servidor.

Em seguida, actualize o "estado" do dpkg para /var/spool/portfix/var/run/saslauthd. O script de inicialização saslauthd usa as suas configurações para criar o directório desaparecido com as permissões e ownership apropriadas:

sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

Testar

A configuração de SMTP AUTH está completa. Agora está na hora de iniciar e testar a configuração. Pode executar o seguinte comando para iniciar o serviço SASL:

          
            sudo /etc/init.d/saslauthd start
          
        

Para verificar se o SMTP-AUTH e o TLS trabalham correctamente, execute o comando seguinte:

          
            telnet mail.example.com 25
          
        

Após ter estabelecido a ligação ao servidor de correio postfix, escreva:

ehlo mail.example.com

Se obtiver as linhas seguintes entre outras, então tudo estará a funcionar perfeitamente. Escreva quit para sair.

250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME