Este post eu havia prometido a um tempo atrás, mas acabei deixando de lado por um tempo pois o Gmail como Relay estava atendendo bem. Mas na realidade é sempre interessante experimentar um pouco mais além as soluções, principalmente porque sempre temos a possibilidade de usar um pouco melhor os recursos que temos, por exemplo, em provedores de hospedagem externos.
Um fenômeno que aconteceu nos últimos anos foi que as hospedagens de sites se tornaram muito baratas. Hoje, a maioria lhe fornece espaço ilimitado, tendo em vista que o custo do GB caiu demais. Assim, muitas empresas pequenas ou médias estão levando em conta que vale a pena minimizar o uso de recursos internos, hospedando seus sites e emails fora da empresa.
Se a sua empresa faz uso destes recursos, mas por exemplo, quer controlar algumas coisas a mais que provedores de hospedagem não fazem você pode montar um gateway de email onde você faria estes controles.
Na realidade, você simplesmente usaria o seu provedor de hospedagem como um relay do seu servidor local de smtp.
O modo de fazer isto, é literalmente idêntico ao que eu já expliquei no post do Gmail.
Mas, para quem caiu direto aqui neste post, eu vou explicar passo a passo novamente como fazer.
Este post é baseado no Fedora, mas pode ser facilmente traduzido para o CentOS e outras distribuições.
O primeiro passo para iniciar o processo é ter o postfix instalado :
# yum install postfix -y
Depois, você deve criar a autoridade certificadora. Na realidade, ela vai ser necessária para criar as chaves necessárias para a comunicação TLS entre os servidores. O comando para criação da autoridade certificadora é :
# /etc/pki/tls/misc/CA -newca
Siga os prompts e os responda com cuidado. Na realidade você precisa de um cuidado bem grande aqui organizationalUnitName pois vocẽ não pode criar dois certificados para a mesma unidade organizacional. Assim, para a unidade certificadora, coloque, por exemplo, isto aqui como Central.
Logo após, vamos criar as chaves e certificados do cliente ( novamente, tome cuidado aqui no organizationalUnitName pois ele pode lhe causar problema na hora de atualizar a base de dados do TLS. Ou seja, por exemplo, para esta chave, um exemplo, seria criar o campo citado como Email ), tendo certeza de usar o mesmo common name e códigos de país, estado, etc.
cd /etc/postfix openssl genrsa -out postfixclient.key 1024 openssl req -new -key postfixclient.key -out postfixclient.csr openssl ca -out ./postfixclient.pem -infiles postfixclient.csr
Com tudo isto criado, agora é só ir para a configuração do postfix propriamente dita. Primeiro, vamos aos pontos. Na Dreamhost, provedor de hospedagem que eu uso, todo o domínio tem o mail.dominio.com. Ou seja, o ataliba.eti.br tem o mail.ataliba.eti.br. No seu provedor de hospedagem isto pode ser diferente, mas sempre tem um tutorial lhe falando qual é o seu servidor de smtp.
Assim, vou usar de exemplo, o mail.dominio.com. Portanto, o main.cf vai ficar do seguinte modo :
relayhost = [mail.dominio.com]:25 smtp_connection_cache_destinations = mail.dominio.com relay_destination_concurrency_limit = 1 default_destination_concurrency_limit = 5 smtp_sasl_auth_enable=yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_use_tls = yes smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous smtp_tls_note_starttls_offer = yes tls_random_source = dev:/dev/urandom smtp_tls_scert_verifydepth = 5 smtp_tls_key_file=/etc/postfix/postfixclient.key smtp_tls_cert_file=/etc/postfix/postfixclient.pem smtp_tls_enforce_peername = no smtpd_tls_req_ccert =no smtpd_tls_ask_ccert = yes soft_bounce = yes
Vá ao seu cpanel e crie um email ou então no painel da Dreamhost e faça o mesmo. Criado o email, crie um arquivo chamado sasl_passwd :
mail.dominio.com usuario@dominio.com:senha
Salve o arquivo, e torne-o legível para o postfix:
# postmap sasl_passwd
Finalizado isto, é só inicializar o postfix :
# service postfix start
E pronto. Com isto você já tem o serviço rodando sem problemas. Agora, é só testar com o envio de uma mensagem, via telnet, ou caso seja um Desktop, configure seu cliente de email para utilizar o localhost como saída de smtp.
Bom, feito o teste, você tem que ter no seu log algo parecido com isto:
Aug 16 21:23:42 neo postfix/smtpd[4053]: connect from localhost[::1] Aug 16 21:24:01 neo postfix/smtpd[4053]: 348BB1894DA: client=localhost[::1] Aug 16 21:24:10 neo postfix/cleanup[4058]: 348BB1894DA: message-id=<20090817002401.348BB1894DA@neo.ataliba.eti.br> Aug 16 21:24:10 neo postfix/qmgr[3825]: 348BB1894DA: from=<ataliba@rootshellsolutions.com>, size=392, nrcpt=1 (queue active) Aug 16 21:24:13 neo postfix/smtp[4060]: certificate verification failed for mail.rootshellsolutions.com[208.97.132.20]:25: untrusted issuer /C=US/ST=California/L=Los Angeles/O=New Dream Network, LLC/OU=Security/CN=New Dream Network Certificate Authority/emailAddress=support@dreamhost.com Aug 16 21:24:15 neo postfix/smtp[4060]: 348BB1894DA: to=<ataliba@gmail.com>, relay=mail.rootshellsolutions.com[208.97.132.20]:25, delay=20, delays=15/0.03/4.8/0.47, dsn=2.0.0, status=sent (250 Ok: queued as 61E911FCA6) Aug 16 21:24:15 neo postfix/qmgr[3825]: 348BB1894DA: removed
Agora, é só procurar aplicações para esta dica. Eu pessoalmente já vi algumas bem interessante desde que implementei isto no Postfix.
Principalmente, porque, neste caso o sender não é sobrescrito, tal qual acontece com a solução utilizando o Gmail.
Sim, em breve, esta mesma solução implementada no Exim, tal qual eu já prometi.