Após dois dias, doze tutoriais, sonhar com o problema, dores de cabeça constantes, leve vontade de matar alguém... Resolvi compartilhar com vocês uma solução definitiva de como usar o
Postfix para fazer um
Relay Server usando o
SMTP do
Gmail ou
Google Apps.
Estou citando Google Apps, pois muitos usam seus domínios próprios no Google Apps no modelo: http://google.com/a/seudominio.com.br/
Veja o exemplo de topologia da rede em que foi implementada a solução.
O problema: determinados usuários fazem uso de um sistema e com ele gostariam de enviar e-mails, assim, agilizando o dia-a-dia. Mas o sistema em questão pede apenas dois parâmetros: IP do servidor SMTP + porta! ¬¬
Meu primeiro pensamento foi: "eu adoraria dar um tapa na cara do programador disso" e o segundo pensamento foi...
A solução: como o sistema apenas pede os parâmetros IP do servidor + porta, a solução escolhida por mim para conseguir enviar e-mails usando a próprio servidor da empresa, seria um Relay SMTP repassando os e-mails ao Gmail!
Lembrando que, como a empresa usa o Google Apps, não havia um servidor Postfix local, então o Postfix implementado nesta solução foi unicamente para ser um Relay SMTP. ;)
Obs.: não use o nome de seu domínio em um servidor relay.
1° passo: Criar os certificados necessários
Iremos criar os certificados em uma pasta temporária, usar o que for necessário e deletar as sobras. Vá para seu home:
# cd ~
Crie o certificado CA usando:
(Os parâmetros usados devem ser modificados por você! Escolha sua senha!)
# /usr/lib/ssl/misc/CA.pl -newca
Making CA certificate ...
Generating a 1024 bit RSA private key
.......++++++
...................++++++
writing new private key to "./demoCA/private/cakey.pem"
Enter PEM pass phrase: password
Verifying - Enter PEM pass phrase: password
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ".", the field will be left blank.
Country Name (2 letter code) [US]:
BR
State or Province Name (full name) [New York]:
Sao Paulo
Locality Name (eg, city) []:
Sao Paulo
Organization Name (eg, company) []:
EMPRESA LTDA
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Luno de Souza
Email Address []:
username@email.com
Please enter the following "extra" attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
2° passo: Criar os certificados do servidor
Os parâmetros usados devem ser modificados por você! Devem ser os mesmos que você colocou ao criar os certificados CA!!! Caso você opte por mudar "SERVER-key.pem -out SERVER-req.pem" para outros nomes, lembre-se que essa alteração deverá ser feita em todo esse artigo. ;)
# openssl req -new -nodes -subj '/CN=EMPRESA LTDA/O=APELIDO EMPRESA/C=BR/ST=SAO PAULO/L=SAO PAULO/emailAddress=username@mail.com' -keyout SERVER-key.pem -out SERVER-req.pem -days 3650
3° passo: Assinar o certificado
Deverá usar sua senha!
# openssl ca -out SERVER-cert.pem -infiles SERVER-req.pem
Using configuration from
/usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
4° passo: Copiar os certificados para a pasta do Postfix com suas permissões
Use os comandos:
# cp demoCA/cacert.pem SERVER-key.pem SERVER-cert.pem /etc/postfix
# chmod 644 /etc/postfix/SERVER-cert.pem /etc/postfix/cacert.pem
# chmod 400 /etc/postfix/SERVER-key.pem
5° passo: Copiar os certificados para a pasta do Postfix com suas permissões
O Gmail usa o certificado Thawte Premium Server CA. Então adicione isso no final do arquivo /etc/postfix/cacert.pem.
Obs.: Essa é a versão atual do certificado. ;)
----BEGIN CERTIFICATE----
MIIDNjCCAp+gAwIBAgIQNhIilsXjOKUgodJfTNcJVDANBgkqhkiG9w0BAQUFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
cnZlckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIxMDEwMTIzNTk1OVow
gc4xCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcT
CUNhcGUgVG93bjEdMBsGA1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNV
BAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRo
YXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1z
ZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560
ZXUCTe/LCaIhUdib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j
+ao6hnO2RlNYyIkFvYMRuHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBlkKyID1bZ5jA01CbH0FDxkt5r1DmI
CSLGpmODA/eZd9iy5Ri4XWPz1HP7bJyZePFLeH0ZJMMrAoT4vCLZiiLXoPxx7JGH
IPG47LHlVYCsPVLIOQ7C8MAFT9aCdYy9X9LcdpoFEsmvcsPcJX6kTY4XpeCHf+Ga
WuFg3GQjPEIuTQ==
----END CERTIFICATE----
Obs.: Caso você esteja em um futuro e acusar o erro de certificado inválido, como aconteceu comigo, você deverá acessar:
(Base-64 encoded X.509) e fazer download da "nova versão" do certificado! Após o download basta um:
# cat Equifax_Secure_CA.pem >> /etc/posfix/cacert.pem