O servidor SMTP configurado para a rede local poderia, teoricamente, enviar email para qualquer destinatário. Na prática era pouco provável que chegasse ao destino final. Isto porque os fornecedores de acesso à Internet, para lutar contra o envio de email não solicitado (spam), impõem regras muito apertadas para aceitar e reencaminhar emails.
Por outro lado, mesmo que o email chegasse ao destino, uma eventual resposta seria endereçada para o remetente (por exemplo fribeiro@home.lan) de um domínio que não existe fora da rede local.
Assim, para enviar correio eletrónico para o exterior, deverão ser resolvidas 2 questões:
Para contornar estas questões, nada mais simples do que utilizar então servidores e endereços válidos. Assim, ao enviar emails para o exterior, deverá acontecer o seguinte:
Neste caso, iremos utilizar o servidor SMTP do Gmail (smtp.gmail.com) e um endereço do Gmail (pinguim.ribeiro@gmail.com).
A configuração do postfix para usar um servidor smtp intermédio (relay) é feita no ficheiro /etc/postfix/main.cf:
Em primeiro lugar, indicar o servidor smtp do Gmail como “relay”.
# [...] # # relay # relayhost = [smtp.gmail.com]
Em seguida, configurar uma ligação encriptada (tls) e autenticada (sasl_auth), bem como a localização do ficheiro de parâmetros de autenticação (password_maps):
# [...] # # SASL SUPPORT FOR SERVERS # # The following options set parameters needed by Postfix to enable # Cyrus-SASL support for authentication of mail servers. # smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous
Os parâmetros de autenticação no servidor smtp do Gmail estão guardados no ficheiro /etc/postfix/sasl/sasl_passwd:
[smtp.gmail.com] pinguim.ribeiro:myGmailPassword
Por segurança, o ficheiro /etc/postfix/sasl/sasl_passwd deve estar protegido, sendo só acessível por root:
root@server:# chmod 600 /etc/postfix/sasl/sasl_passwd
Sempre que o ficheiro /etc/postfix/sasl/sasl_passwd for alterado, deve ser a base de dados correspondente deve ser regenerada:
root@server:# postmap /etc/postfix/sasl/sasl_passwd
Ao enviar emails para o exterior, os endereços internos (fribeiro@home.lan) devem ser substituídos por endereços externos (pinguim.ribeiro@gmail.com).
O postfix deve ser configurado para usar o ficheiro de mapeamento de endereços, o que é feito no ficheiro /etc/postfix/main.cf:
smtp_generic_maps = hash:/etc/postfix/generic
O ficheiro com o mapeamento de endereços consiste numa lista de endereços locais e os correspondentes endereços externos. O tamanho da lista não está limitado, podendo ser aumentada para conter os endereços dos diversos utilizadores locais.
O ficheiro está em /etc/postfix/generic:
fribeiro@home.lan pinguim.ribeiro@gmail.com
Sempre que o ficheiro /etc/postfix/generic for alterado, deve ser a base de dados correspondente deve ser regenerada:
root@server:# postmap /etc/postfix/generic
Reiniciar o postfix:
root@server:~# service postfix restart