Relay de email via Google SMTP no Postfix

Tempo de leitura: 5 minutos

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 [email protected]:password
smtp.gmail.com [email protected]:password

Lembrando que, caso você não use o Google Apps, simplesmente coloque seu usuário ( [email protected] ) 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=<[email protected]>
Jul 27 11:26:20 neo postfix/qmgr[6450]: B78773E9B2: from=<[email protected]>, 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/[email protected]
Jul 27 11:26:36 neo postfix/smtp[7351]: B78773E9B2: to=<[email protected]>, 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 é [email protected] ele vai colocar o usuário que enviou com [email protected]

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.

Sobre ataliba

Pai, marido e analista de sistemas especializado em Linux e Network que fala aqui sobre suas especialidades para tentar ajudar mais os colegas e a comunidade do Software Livre.