Após: 2 dias, 12 tutoriais, sonhar com o problema, dores de cabeça constantes, leve vontade de matar alguem...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 dominios próprios no google apps (ex: http://google.com/a/seudominio.com.br/ (http://google.com/a/seudominio.com.br/)).
Veja o exemplo de topologia da rede em que foi implementada a solução.
(http://img267.imageshack.us/img267/7711/smtprelay1.png)
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 apenas pede 2 parâmetros: ip do servidor smtp + porta! ¬¬
Meu primeiro pensamento foi "eu adoraria dar uma 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 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 ;)
# não use o nome de seu dominio em um servidor relay
1º Passo: Criar os certificados necessáriosIremos criar os certificados em uma pasta temporária, usar oque for necessário e deletar as sobras
vá para seu home:
# cd ~
Crie o ceritificado CA usando:
Os parâmetros usados devem ser modificados por você!
Escolha sua senha!
# /usr/lib/ssl/misc/CA.pl -newca
QuoteMaking 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
QuotePlease 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 servidorOs parâmetros usados devem ser modificados por você!
Devem ser os mesmos que você colocou ao criar os certificados CA!!!
Caso você opite 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 certificadoDeverá usar senha senha!
# openssl ca -out SERVER-cert.pem -infiles SERVER-req.pem
QuoteUsing 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 permições# 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 permiçõesO 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 aconteseu comigo, você deverá acessar: https://www.geotrust.com/resources/root-certificates/index.html (https://www.geotrust.com/resources/root-certificates/index.html) , (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
6º Passo: Configurando o main.cfIrei passar o meu atual main.cf que está em funcionamento, afinal não haverá problemas em usa-lo para fazer um "Relay Server"
Fique atento a meus comentários!!
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# mude para seu hostname
myhostname = servnet2.localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases.db
myorigin = /etc/mailname
# não use o nome de seu dominio em um servidor relay
mydestination = servnet1.localhost, localhost.localdomain, localhost
relayhost =
transport_maps = hash:/etc/postfix/transport
# coloque a range de ip usada em sua rede
mynetworks = 127.0.0.0/8 192.168.12.0/24
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
## TLS Settings
#
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_tls_cert_file = /etc/postfix/SERVER-cert.pem
smtp_tls_key_file = /etc/postfix/SERVER-key.pem
smtp_tls_session_cache_database = btree:/var/run/smtp_tls_session_cache
smtp_use_tls = yes
smtpd_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tls_cert_file = /etc/postfix/SERVER-cert.pem
smtpd_tls_key_file = /etc/postfix/SERVER-key.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:/var/run/smtpd_tls_session_cache
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
#
## SASL Settings
#This is going in to THIS server
smtpd_sasl_auth_enable = no
# usei essa opção para o postfix não pedir senha ao meu sistema!!!
smtp_auth_enable = no
# We need this
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtpd_sasl_local_domain = $myhostname
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtpd_sasl_application_name = smtpdinet_protocols = ipv4
7º Passo: Criando o arquivc transportCrie o arquivo /etc/postfix/transport com o seguinte conteudo:
Quote# /etc/postfix/transport
#
# Relay de emails para o Gmail
* smtp:[smtp.gmail.com]:587
#
8º Passo: Criando o arquivo sasl_passwdCrie o arquivo /etc/postfix/sasl_passwd com o seguinte conteudo:
Quote# /etc/postfix/sasl_passwd
# Caso use Gmail
#[smtp.gmail.com]:587 usuario@seudominio.com.br:senha
#
# Caso tenha seu dominio no Google Apps
[smtp.gmail.com]:587 usuario@seudominio.com.br:senha
9º Passo: Criando arquivo generic e usando o postconf para criar os Hash's# touch generic
# postmap /etc/postfix/sasl_passwd;postmap /etc/postfix/generic
10º Passo: Limpando os lixos e vamos ao teste! :)Limpando...
# cd ~
# rm SERVER-req.pem SERVER-cert.pem SERVER-key.pem && rm -r demoCA/
Testando...
# echo "Test SMTP Relay" | mailx -s 'Test 123′ seumail@seudominio.com.br
Verificando o teste...
# tail -f /var/log/mail.log
Se seguiu este tutorial passo-a-passo deverá correr tudo ok :DAlgumas dicas:
Verificando e-mail na fila e envio:
# postqueue -p
ou
# mailq
Deletando todas as menssagens pendentes:
# postsuper -d ALL
Conclusões:EM CONSTRUÇÃO ;)
Legal cara.. ganhou um pontin (+) por compartilhar conosco a solução passo-a-passo.
;)
Tópicos assim(diagramas, exemplos, etc) enriquecem o fórum!
[]s