O Postfix determina os clientes que estão autorizados a enviar e-mails através do seu servidor, de acordo com a configuração da linha "mynetworks" no arquivo "main.cf".
Como já foi dito, usando o endereço 127.0.0.0/8 ou 127.0.0.1, o Postfix aceita apenas e-mails enviados do próprio servidor. No caso de um servidor local, você pode permitir o envio a partir de qualquer micro da rede local como "mynetworks = 192.168.10.0/24".
Mas, quando você precisa permitir o envio de mensagens para usuários da Web, utilizando cable modens, ou qualquer outro tipo de conexão, com IP dinâmico. A saída neste caso, é autenticar os usuários da rede local da mesma forma como fazem os provedores e-mail.
Vamos utilizar então o SASL, que no
Debian Squeeze pode ser instalado via
apt-get:
# apt-get install libsasl2-2 sasl2-bin procmail
Após a instalação dos pacotes, vamos à configuração do autenticador SASL, que se encontra no arquivo:
/etc/default/saslauthd
Troque a linha:
START = " no "
Por:
START = "
yes "
Adicione, ou configure a linha:
MECHANISMS = "pam"
Isto permite que ele aceite a autenticação dos usuários.
Crie, ou edite, o arquivo
/etc/postfix/sasl/smtpd.conf, para que fique assim:
pwcheck_method: saslauth
mech_list: plain login
O Postfix, ao ser instalado no Debian (e outras distribuições derivadas), roda dentro de uma "jaula" (
chroot): "
/var/spool/postfix", que faz com que elimine qualquer problema ligado à segurança, ou falha nos arquivos que possa prejudicar o resto do sistema operacional.
Mas existe um porém, o fato do Postfix possuir o seu próprio
chroot ele não tem acesso ao daemon "saslauthd", prejudicando a autenticação dos usuários no Postfix.
A solução seria criar um diretório dentro do
chroot do Postfix para o "saslauthd", e configura-lo para ser utilizado no lugar do diretório padrão.
Vamos, então, criar o diretório:
/var/spool/postfix/var/run/saslauthd:
# mkdir -p /var/spool/postfix/var/run/saslauthd
Configure novamente o arquivo:
/etc/default/saslauthd
Em:
OPTIONS = "-c"
Altere para:
OPTIONS = " -c -m /var/spool/postfix/var/run/saslauthd -r "
Assim, o SASL passa a utilizar o chroot do Postfix e o Postfix passa a ter acesso ao "saslauthd" para autenticar os clientes.
Para assegurarmos nossa modificação, adicione o usuário postfix ao grupo "sasl":
# adduser postfix sasl
O último passo, é adicionar as linhas a seguir ao final do arquivo:
/etc/postfix/main.cf
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broke_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
smtpd_tls_auth_only = no
Reinicie o Postfix para que as alterações entre em vigor:
# /etc/init.d/postfix restart
Nesta configuração, o servidor suporta apenas autenticação em texto puro, sem encriptação ao enviar as mensagens da rede local para o servidor.
Para configurar um cliente de e-mails, utilize o endereço do servidor como SMTP e nas opções de autenticação para o servidor SMTP, escolha "PLAIN", e envie um e-mail de teste para ver se está "rodando".
Nas opções do POP3, utilize o POP do seu serviço de e-mail, e nas opções de autenticação, utilize as chaves TLS, ou ambas TLS/SSL, e sua respectiva porta de configuração: 995.
Após adicionarmos as linhas do serviço de autenticação SASL, o arquivo "main.cf" passará a ficar assim:
# Postfix - Agente Relay com suporte SASL
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
myhostname = localhost
mydomain = localdomain
relayhost = smtp.googlemail.com:587
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
mydestination = localhost, localhost.localdomain
mynetworks = 127.0.0.0/8, 192.168.10.0/24
inet_interfaces = all
inet_protocols = all
# Autenticaçao SASL
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options =
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
smtpd_tls_auth_only = no