Postfix

Postfix é o Mail Transfer Agent (MTA) padrão do Ubuntu. Ele tenta ser rápido, fácil de administrar e seguro. É compatível com o MTA sendmail. Esta seção explica como instalar e configurar o postfix. Também explica como configurá-lo como um servidor SMTP usando uma conexão segura (para enviar emails de forma segura).

Instalação

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

sudo apt-get install postfix

Simplesmente pressione enter para a perguntas durante o processo de instalação, a configuração será feita em detalhes no próximo passo.

Configuração Básica

Para configurar o postfix, execute o seguinte comando:

sudo dpkg-reconfigure postfix

A interface do usuário será mostrada. Em cada tela, selecione os seguintes valores:

  • Ok

  • Site de Internet

  • NENHUM

  • email.exemplo.com

  • email.exemplo.com, localhost,localdomain, localhost

  • Não

  • 127.0.0.0/8

  • Sim

  • 0

  • +

  • all

[Nota]

Substitua mail.example.com pelo nome do seu servidor de e-mail.

Agora é uma boa hora para decidir qual formato de caixa de e-mails (mailbox) você quer usar. Por padrão o Postfix isrá usar mbox como formato da caixa de e-mails. Ao invés de editar o arquivo de configuração manualmente você pode usar o comando postconf para configurar todos os parâmetros do postfix. Os parâmetros de configuração serão guardados no arquivo /etc/postfix/main.cf. Se você desejar reconfigurar um parâmetro particilar, você pode tanto executar o comando como mudar manualmente o arquivo.

Para configurar o formato das caixas postais para Maildir:

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

Isso irá colocar os e-mails novos em /home/username/Maildir então você precisará configurar seu Agente Entregador de E-mails (Mail Delivery Agent) para usar o mesmo caminho.

Autenticação SMTP

Os próximos passos destinam-se a configurar o postfix para usar SASL para SMTP AUTH.

  1. Configure o Postfix para fazer 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'
    

    Abra o arquivo /etc/postfix/sasl/smtpd.conf e adicione as seguintes linhas no final do arquivo:

    pwcheck_method: saslauthd
    mech_list: plain login
    
  2. Em seguida, configure o certificado digital para TLS. Quando questionado, siga as instruções e respondo-as adequadamente.

    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]

    Você pode conseguir um certificado digitalde uma autoridade certificadora. Alternativamente, você pode criar seu próprio certificado. Para mais detalhes veja a sub-sessão Criando uma sua Própria Certificação Assinada.

  3. Configure o Postfix para fazer encriptação TLS para os e-mails de entrada e de saída :

    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.examplo.com'
    
  4. Desligar a operação de chroot para o servidor SMTP. Localize a seguinte linha no arquivo /etc/postfix/master.cf:

    smtp      inet  n       -       -       -       -       smtpd
    

    e modifique isso com o seguinte:

    smtp      inet  n       -       n       -       -       smtpd
    
[Nota]

Depois que você executar todos os comandos, o SMTP AUTH é configurado com o postfix. O certificado auto-assinado é criado para o TLS e é configurado com o postfix.

Agora, o arquivo /etc/postfix/main.cf parecerá com este.

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

          
            sudo /etc/init.d/postfix start
          
        

Agora o postfix daemon está instalado, configurado e executando com sucesso. O Postfix suporta o SMTP AUTH como definido na RFC2554. É baseado no SASL. Entretanto é necessário configurar a autenticação SASL antes de usar o SMTP.

Configurando SASL

A libsasl2-2, o sasl2-bin e o libsasl2-modules são necessários para habilitar o SMTP AUTH usando SASL. Você pode instalar essas aplicações se você ainda não o fez.

sudo apt-get install libsasl2-2 sasl2-bin

Poucas mudanças são necessárias para fazer com que isso funcione devidamente. Devido ao Postfix ser executado em um chroot em /var/spool/postfix, o SASL precisa ser configurado para rodar na falsa raiz (/var/run/saslauthd passa a ser /var/spool/postfix/var/run/saslauthd):

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

Para ativar o saslauthd, edite o arquivo /etc/default/saslauthd e modifique ou adicione a variável START. Para configurar o saslauthd para rodar na raíz falsa, adicione as variáveis PWDIR, PIDFILE e PARAMS. Finalmente, configure a variável MECHANISMS à sua maneira. O arquivo deve se parecer com isso:

# Isso deve ser descomentado antes que o saslauthd rode
# automaticamente
# automatically
START=yes

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

# Você deve especificar os mecanismos de autenticação que você
# deseja usar. O valor padrão é "pam" para suporte PAM, mas você
# pode também incluir "shadow" ou "sasldb", assim:
# MECHANISMS="pam shadow"

MECHANISMS="pam"
[Nota]

Se preferir, você pode utilizar shadow ao invés de pam. Ele irá usar transferência encriptada de senha MD5 e isso é perfeitamente seguro. O nome do usuário e a senha necessários para a autenticação serão aqueles mesmos dos usuários do sistema que você está usando no servidor.

A seguir, atualize o "estado" do dpkg de /var/spool/portfix/var/run/saslauthd. O script saslauthd init usa esta configuração para criar o diretório não encontrado com as apropriadas premissões e donos:

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

Testando

A configuração da Autenticação do SMTP está completa. Agora é hora de iniciar e testar a configuração. Você pode rodar o seguinte comando para iniciar o daemon SASL:

          
            sudo /etc/init.d/saslauthd start
          
        

Para ver se o SMTP-AUTH e o TLS estão funcionando normalmente, rode o seguinte comando:

          
            telnet mail.example.com 25
          
        

Depois que tiver estabelecido uma conexão com o servidor de e-mail postfix, digite:

ehlo mail.example.com

Se você vir as seguintes linhas entre outras, então tudo estará funcionando perfeitamente. Digite quit para sair.

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