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 email.

Now is a good time to decide which mailbox format you want to use. By default Postifx will use mbox for the mailbox format. Rather than editing the configuration file directly, you can use the postconf command to configure all postfix parameters. The configuration parameters will be stored in /etc/postfix/main.cf file. Later if you wish to re-configure a particular parameter, you can either run the command or change it manually in the file.

To configure the mailbox format for Maildir:

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

This will place new mail in /home/username/Maildir so you'll need to configure your Mail Delivery Agent to use the same path.

Autenticação SMTP

The next steps are to configure postfix to use SASL for SMTP AUTH.

  1. Configure Postfix to do SMTP AUTH using 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. Next, configure the digital certificate for TLS. When asked questions, follow the instructions and answer appropriately.

    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]

    You can get the digital certificate from a certificate authority. Alternatively, you can create the certificate yourself. Refer to Creating a self Signed Certification sub-section for more details.

  3. Configure Postfix to do TLS encryption for both incoming and outgoing 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. Turn off the chroot operation for SMTP server. Locate for the following line in /etc/postfix/master.cf file:

    smtp      inet  n       -       -       -       -       smtpd
    

    and modify it as follows:

    smtp      inet  n       -       n       -       -       smtpd
    
[Nota]

Depois que você executar todos os comandos, o SMTP AUTH é configurado com o postfix. O cerficado 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

The libsasl2-2, sasl2-bin and libsasl2-modules are necessary to enable SMTP AUTH using SASL. You can install these applications if you have not installed them already.

sudo apt-get install libsasl2-2 sasl2-bin

A few changes are necessary to make it work properly. Because Postfix runs chrooted in /var/spool/postfix, SASL needs to be configured to run in the false root (/var/run/saslauthd becomes /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.

Next, update the dpkg "state" of /var/spool/portfix/var/run/saslauthd. The saslauthd init script uses this setting to create the missing directory with the appropriate permissions and ownership:

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