Iniciando agora minhas experiências mais generalizadas com o Desktop, aproveitando algumas facilidades do Fedora, comecei algumas experimentações com MTAS em um ambiente que eu normalmente instalo soluções deste tipo para cliente e/ou empresas que trabalho.
Como eu precisava ontem de começar a mandar os erros do meu Notebook para meu email ou até para o meu celular, comecei a tentar achar um modo de não ser considerado spammer pelas máquinas do mundo. Como meu ip é de redes de Cable Modem já viu né, qualquer lugar vai pegar meu ip e mandar o meu email para a caixa de Spam ou até expurgá-lo.
Uma forma de resolver este problema é sem dúvida, utilizar um servidor externo como gateway de relay dos seus emails. A solução apresentada pode ser utilizada também caso você tenha um servidor hospedado na Dreamhost ou até em um servidor qualquer de hospedagem, que lhe forneça smtp autenticado.
Vou me ater aqui, neste momento pelo menos, a configuração do MTA para utilizar o GMAIL como relay dos seus emails. Na próxima semana ou na outra, eu solto um tutorial de como fazer isto utilizando o seu provedor de hospedagem.
Além disto, pretendo depois de configurar o postfix, passar para esta mesma configuração no EXIM, que é outra MTA que eu tenho muito interesse em aprender, pois é regado de elogios.
E por fim, fecho sempre com o Qmail que é o meu MTA do coração, o que eu mais gosto de configurar.
Assim, deixando a conversa de lado, vamos as configurações do POSTFIX.
Primeiro, tenha certeza de ter instalado o Postfix :
# yum install postfix -y
Depois para criar as conexões você precisa das chaves TLS, e lógico, de uma autoridade certificadora. Esta autoridade certificadora, você cria com o seguinte comando:
# /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
Agora, configure assim, seu main.cf :
relayhost = [smtp.gmail.com]:587 smtp_connection_cache_destinations = smtp.gmail.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
E crie um arquivo com seu usuario e senha do gmail em /etc/postfix/sasl_passwd :
gmail-smtp.l.google.com username@yourdomain.com:password smtp.gmail.com username@yourdomain.com:password
Lembrando que, caso você não use o Google Apps, simplesmente coloque seu usuário ( usuario@gmail.com ) e sua senha.
Depois de criar o arquivo, deixe o mesmo no formato para que o postfix consiga lê-lo.
# postmap etc/postfix/sasl_passwd
Eu pessoalmente, não mudo a porta do Postfix, mas se quiser, modifique esta linha no master.cf :
10025 inet n - n - - smtpd
Depois disto, é só reiniciar o postfix :
# service postfix restart
Finalizado isto, é fazer um teste via telnet com envio via terminal e observar se no seu log apareceu algo parecido com isto ( no Fedora, /var/log/maillog ) :
Jul 27 11:24:42 neo postfix/smtpd[7312]: connect from localhost[::1] Jul 27 11:25:02 neo postfix/smtpd[7312]: B78773E9B2: client=localhost[::1] Jul 27 11:26:20 neo postfix/cleanup[7320]: B78773E9B2: message-id=<20090727142502.B78773E9B2@neo.ataliba.eti.br> Jul 27 11:26:20 neo postfix/qmgr[6450]: B78773E9B2: from=<usuario@gmail.com>, size=387, nrcpt=1 (queue active) Jul 27 11:26:21 neo postfix/smtpd[7312]: disconnect from localhost[::1] Jul 27 11:26:32 neo postfix/smtp[7351]: certificate verification failed for smtp.gmail.com[74.125.93.111]:587: untrusted issuer /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com Jul 27 11:26:36 neo postfix/smtp[7351]: B78773E9B2: to=<algumemail@algumdominio.com.br>, relay=smtp.gmail.com[74.125.93.111]:587, delay=103, delays=88/0.01/14/1.8, dsn=2.0.0, status=sent (250 2.0.0 OK 1248704607 6sm10819627qwk.44) Jul 27 11:26:36 neo postfix/qmgr[6450]: B78773E9B2: removed
A limitação, caso você tenha o gmail comum ou o apps comum também, é que você vai ter o sender sobrescrito. Ou seja, mesmo que você tenha colocado que o usuário que mandou é jose@seudominio.com.br ele vai colocar o usuário que enviou com usuario@gmail.com.
Isto é chato, mas para uma solução caseira resolve legal. Para quem quiser realmente uma solução mais parruda utilizando o Google Apps por exemplo, o Google parece fornecer realmente este tipo de solução para o Apps Enterprise e o Apps Educacional.