Postfix
Conteúdo |
Postfix
O Postfix é um agente de transferência de emails (MTA), um software livre para envio e entrega de emails. Rápido e fácil de administrar, é uma alternativa segura ao Sendmail. Ele é o MTA padrão do Ubuntu Linux.
Notas de pré instalação
* Do Ubuntu Karmic Koala em diante devido ao uso do upstart, há um novo comando para lidar com os daemons em alternativa ao invoke-rc.d (E que o substituirá em breve). O novo comando é o service e ele trabalha da mesma forma que o invoke-rc.d.
Instalação
Instale os seguintes pacotes
aptitude install postfix libsasl2-2 sasl2-bin libsasl2-modules procmail
Configuração
Configurando o postfix para autenticar via SASL/saslauthd, com suporte a Maildir e os modos de autenticação disponíveis
Acesse o shell do root ...
sudo -i
... e configure as opções do Postfix:
postconf -e "inet_interfaces = all" postconf -e "home_mailbox = Maildir/" postconf -e "mailbox_command = " postconf -e 'smtpd_sasl_local_domain =' postconf -e 'smtpd_sasl_auth_enable = yes' postconf -e 'smtpd_sasl_security_options = noanonymous' postconf -e 'broken_sasl_auth_clients = yes' postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination' postconf -e 'inet_interfaces = all' echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf
Configurando o suporte TLS
Geração dos certificados
mkdir /etc/postfix/ssl cd /etc/postfix/ssl/ openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 Enter pass phrase for smtpd.key:<Informe_a_frase_senha> Verifying - Enter pass phrase for smtpd.key:<Repita_a_frase_senha> chmod 600 smtpd.key openssl req -new -key smtpd.key -out smtpd.csr Enter pass phrase for smtpd.key:<Informe_a_senha_criada_anteriormente> Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Bahia Locality Name (eg, city) []:Salvador Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ideia Digital Organizational Unit Name (eg, section) []:projetos Common Name (eg, YOUR name) []:Alexandro Silva Email Address []:penguim@ubuntu.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:<ENTER> An optional company name []:<ENTER> openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt Verifying - Enter PEM pass phrase:<Informe_a_senha_criada_anteriormente> Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Bahia Locality Name (eg, city) []:Salvador Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ideia Digital Organizational Unit Name (eg, section) []:projetos Common Name (eg, YOUR name) []:Alexandro Silva Email Address []:penguim@ubuntu.com 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
Configurando o Postfix para usar a criptografia TLS
Execute estes procedimentos no shell:
postconf -e 'smtpd_tls_auth_only = no' postconf -e 'smtp_use_tls = yes' postconf -e 'smtpd_use_tls = yes' postconf -e 'smtp_tls_note_starttls_offer = yes' postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key' postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt' postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem' postconf -e 'smtpd_tls_loglevel = 1' postconf -e 'smtpd_tls_received_header = yes' postconf -e 'smtpd_tls_session_cache_timeout = 3600s' postconf -e 'tls_random_source = dev:/dev/urandom' postconf -e 'myhostname = server1.example.com'
A nova configuração é valida tanto para conexões de entrada quanto de saída.
O arquivo /etc/postfix/main.cf ficará da seguinte forma
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
# TLS parameters
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = ubuntu.ideiadigital.com.br, localhost.ideiadigital.com.br, , localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandomReinicie o daemon do postfix
invoke-rc.d postfix reload
Autenticação
A configuração anterior preparou o Postfix para utilizar o saslauthd. O próximo passo é configurar o daemon de autenticação SASL (saslauthd)
Adequando as configurações do saslauthd para o postfix
Devido ao fato do Postfix ser executado sobre uma chroot configurada no diretório /var/spool/postfix, é preciso fazer com que o saslauth mantenha seu diretório de trabalho dentro da chroot do postfix, conforme documentado a baixo. Em suma, a troca se da na linha OPTIONS="-c -m /var/run/saslauthd" que passará a ser OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd". Deve-se atentar também a mudança do parametro START, que deverá ser modificado para yes:
vi /etc/default/saslauthd
# # Settings for saslauthd daemon # Please read /usr/share/doc/sasl2-bin/README.Debian for details. # # Should saslauthd run automatically on startup? (default: no) START=yes # Description of this saslauthd instance. Recommended. # (suggestion: SASL Authentication Daemon) DESC="SASL Authentication Daemon" # Short name of this saslauthd instance. Strongly recommended. # (suggestion: saslauthd) NAME="saslauthd" # Which authentication mechanisms should saslauthd use? (default: pam) # # Available options in this Debian package: # getpwent -- use the getpwent() library function # kerberos5 -- use Kerberos 5 # pam -- use PAM # rimap -- use a remote IMAP server # shadow -- use the local shadow password file # sasldb -- use the local sasldb database file # ldap -- use LDAP (configuration is in /etc/saslauthd.conf) # # Only one option may be used at a time. See the saslauthd man page # for more information. # # Example: MECHANISMS="pam" MECHANISMS="pam" # Additional options for this mechanism. (default: none) # See the saslauthd man page for information about mech-specific options. MECH_OPTIONS="" # How many saslauthd processes should we run? (default: 5) # A value of 0 will fork a new process for each connection. THREADS=5 # Other options (default: -c -m /var/run/saslauthd) # Note: You MUST specify the -m option or saslauthd won't run! # # WARNING: DO NOT SPECIFY THE -d OPTION. # The -d option will cause saslauthd to run in the foreground instead of as # a daemon. This will PREVENT YOUR SYSTEM FROM BOOTING PROPERLY. If you wish # to run saslauthd in debug mode, please run it by hand to be safe. # # See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information. # See the saslauthd man page and the output of 'saslauthd -h' for general # information about these options. # # Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" #OPTIONS="-c -m /var/run/saslauthd" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
OBS: Se preferir, você poderá usar o "shadow" ao invés do "pam", isto é seguro também. O usuário e a senha para autenticar serão os mesmos do sistema, porém não usufruirá dos recursos do PAM.
Atualize o "estado" do dpkg de /var/spool/portfix/var/run/saslauthd. O init script do saslauthd usa essas configurações para criar o diretório que está faltado com os donos e as permissões corretas:
dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd
Por fim da configuração, adicione o usuário postfix no grupo sasl:
gpasswd -a postfix sasl
Aplicação das configurações
É necessário reiniciar o Postfix e iniciar o saslauthd:
invoke-rc.d postfix restart invoke-rc.d saslauthd start
Testando
Verifique se o SMTP-AUTH e o TLS estão funcionando
telnet localhost 25 ehlo localhost
Aparecendo estas linhas, tudo está OK
... 250-STARTTLS 250-AUTH ...
Postfix (last edited 2011-09-19 23:22:11 by localhost)