Postfix fazendo relay SMTP do Gmail/Google Apps

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! Neste artigo mostrarei como resolvi esse problema utilizando um SMTP Relay Server.

[ Hits: 73.931 ]

Por: LunodeSouza em 06/08/2010 | Blog: https://br.linkedin.com/in/lunodesouza


Introdução e certificados necessários



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.
Linux: Postfix Fazendo Relay SMTP do Gmail/Google Apps
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

    Próxima página

Páginas do artigo
   1. Introdução e certificados necessários
   2. Configurando o Postfix
   3. Testando, finalizando!
Outros artigos deste autor

Pool de Conexões Transparentes no Postgres usando o pgpool

Leitura recomendada

Enviando e-mail pelo shell com smtp remoto

Yahoo!Mail e Evolution contra o SPAM!

iRedMail como servidor de e-mails em servidor GNU/Linux ou BSD

Vacation fácil com o OpenVacation

Solução corporativa Expresso Livre, substituto de peso do Notes

  
Comentários
[1] Comentário enviado por remontti em 06/08/2010 - 10:15h

Muito bom! =)
Parabéns!!!

[2] Comentário enviado por tsanches em 21/08/2010 - 15:28h

Bother tenho dúvidas.
Tipo, isso ele não limita X e-mails por dia/?
Ele dispara e-mails a vontade?
Tipo poderia criar um script de e-mail marketing, e mandar atrávés deste server?
Dahora seu artigo, muito bom, parabéns!!!

Valeu,
TSANCHES

[3] Comentário enviado por removido em 27/10/2010 - 16:26h

Olá,

Fiz todos os passos e nao deu certo :-( ..... o que será que fiz errado? ...


/usr/lib/ssl/misc/CA.pl –newca

CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 1024 bit RSA private key
...............................++++++
.++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
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) [AU]:BR
State or Province Name (full name) [Some-State]:Santa Catarina
Locality Name (eg, city) []:Santa Catarina
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company X
Organizational Unit Name (eg, section) []:Student
Common Name (eg, YOUR name) []:Jurandir
Email Address []:ewb1.class@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:1234567
An optional company name []:1234567
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:1234567
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
f4:7a:17:78:77:6a:1d:c2
Validity
Not Before: Oct 27 19:57:53 2010 GMT
Not After : Oct 26 19:57:53 2013 GMT
Subject:
countryName = BR
stateOrProvinceName = Santa Catarina
organizationName = Company X
organizationalUnitName = Student
commonName = Jurandir
emailAddress = ewb1.class@gmail.com
X509v3 extensions:
X509v3 Subject Key Identifier:
D4:00:11:E4:BE:98:7F:D8:6F:89:15:AD:7F:A7:8F:32:1B:B2:75:FA
X509v3 Authority Key Identifier:
keyid:D4:00:11:E4:BE:98:7F:D8:6F:89:15:AD:7F:A7:8F:32:1B:B2:75:FA
DirName:/C=BR/ST=Santa Catarina/O=Company X/OU=Student/CN=Jurandir/emailAddress=ewb1.class@gmail.com
serial:F4:7A:17:78:77:6A:1D:C2

X509v3 Basic Constraints:
CA:TRUE
Certificate is to be certified until Oct 26 19:57:53 2013 GMT (1095 days)

Write out database with 1 new entries


openssl req -new -nodes -subj '/CN= Company X/O=Apelido EMPRESA/C=BR/ST= Santa Catarina/L= Santa Catarina/emailAddress=ewb1.class@mail.com' -keyout SERVER-key.pem -out SERVER-req.pem -days 3650

Generating a 1024 bit RSA private key
................++++++
.................++++++
writing new private key to 'SERVER-key.pem'
-----


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
The stateOrProvinceName field needed to be the same in the
CA certificate (Santa Catarina) and the request ( Santa Catarina)


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


cat > main.cf

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 # ( ??????? = gmail.com )
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases.db
myorigin = /etc/mailname

# não use o nome de seu domínio 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.1.20/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


/etc/postfix# cat > /etc/postfix/transport

#
# Relay de emails para o Gmail
* smtp:[smtp.gmail.com]:587


/etc/postfix# cat > sasl_passwd

# Caso use Gmail
#[smtp.gmail.com]:587 usuario@seudominio.com.br:senha
#
# Caso tenha seu domínio no Google Apps
[smtp.gmail.com]:587 ewb1.gmail@gmail.com:1234567=


root@debian:/etc/postfix# touch generic
root@debian:/etc/postfix# postmap /etc/postfix/sasl_passwd;postmap /etc/postfix/generic

Limpando os lixos e vamos ao teste! :)

cd
rm SERVER-req.pem SERVER-cert.pem SERVER-key.pem && rm -r demoCA/



echo "Test SMTP Relay" | mailx -s "Test 123" ewb1.class@gmail.com



telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
quit
+OK Better luck next time.
Connection closed by foreign host.


telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 servnet2.localhost ESMTP Postfix (Debian/GNU)
quit
221 2.0.0 Bye
Connection closed by foreign host.


tail -f /var/log/mail.log

Oct 27 17:14:30 debian postfix/master[22629]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Oct 27 17:15:30 debian postfix/trivial-rewrite[23440]: fatal: open database /etc/postfix/transport.db: No such file or directory
Oct 27 17:15:31 debian postfix/master[22629]: warning: process /usr/lib/postfix/trivial-rewrite pid 23440 exit status 1
Oct 27 17:15:31 debian postfix/master[22629]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Oct 27 17:16:31 debian postfix/trivial-rewrite[23442]: fatal: open database /etc/postfix/transport.db: No such file or directory
Oct 27 17:16:32 debian postfix/master[22629]: warning: process /usr/lib/postfix/trivial-rewrite pid 23442 exit status 1
Oct 27 17:16:32 debian postfix/master[22629]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Oct 27 17:17:32 debian postfix/trivial-rewrite[23446]: fatal: open database /etc/postfix/transport.db: No such file or directory
Oct 27 17:17:33 debian postfix/master[22629]: warning: process /usr/lib/postfix/trivial-rewrite pid 23446 exit status 1
Oct 27 17:17:33 debian postfix/master[22629]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup – throttling


Verificando e-mail na fila e envio:
postqueue -p ou

mailq

[4] Comentário enviado por gokden em 29/10/2010 - 16:05h

essex usa o comando postmap no arquivo transport da pasta /etc/postfix tbm que arruma

# postmap /etc/postfix/transport


Caro amigo
nao mata o programador nao coitadinho hehehe

eu trabalho com um ERP qui funciona da mesma maneira, e eu qui dou manutenção nessa parte de e-mail.
ai eu tive a idéia de mudar os e-mails da Locaweb, para o google Apps, porém o smto do google só manda e-mail por TLS ou SSL
e o Oracle 10g nao envia e-mail com esses protocolos

e a única solução pra mim era essa ai mesmo

vlwww

quando der, explica melhor sobre esses Certficados de Segurança :D
isso nao ficou claro para mim

[5] Comentário enviado por removido em 09/11/2010 - 15:38h

Olá... acho que algo esta errado..

# postmap /etc/postfix/transport

postmap: fatal: open /etc/postfix/transport: No such file or directory


o que faço?

obrigado






[6] Comentário enviado por Lunodesouza em 09/11/2010 - 15:55h

Caro essesx

"No such file or directory" siguinifica que vc não criou o arquivo ou criou em local errado, veja essa parte

"Crie o arquivo /etc/postfix/transport com o seguinte conteúdo: "

se seguir com atenção é sem erro!
qualquer dúvida, basta perguntar!

[7] Comentário enviado por removido em 09/11/2010 - 16:07h

Olá, desculpe... havia feito este arquivo ... mas enfim, ja fiz novamente na pasta certa... nao sei onde foi parar... e honestamente falha miha... :-(


fiz o comando e agora nao listou nada..


root@debian:/etc/postfix# postmap /etc/postfix/transport

root@debian:/etc/postfix#

----------------------------------------------------------------------------------------------------

tail -f /var/log/mail.log

Nov 9 16:04:48 debian postfix/smtpd[4389]: warning: database /etc/postfix/virtusertable.db is older than source file /etc/postfix/virtusertable
Nov 9 16:04:48 debian postfix/smtpd[4389]: warning: cannot get certificate from file /etc/postfix/SERVER-cert.pem
Nov 9 16:04:48 debian postfix/smtpd[4389]: warning: TLS library problem: 4389:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: CERTIFICATE:
Nov 9 16:04:48 debian postfix/smtpd[4389]: warning: TLS library problem: 4389:error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib:ssl_rsa.c:727:
Nov 9 16:04:48 debian postfix/smtpd[4389]: cannot load RSA certificate and key data
Nov 9 16:04:48 debian postfix/smtpd[4389]: connect from localhost[127.0.0.1]
Nov 9 16:07:01 debian postfix/scache[4365]: statistics: start interval Nov 9 16:03:21
Nov 9 16:07:01 debian postfix/scache[4365]: statistics: domain lookup hits=61 miss=20 success=75%
Nov 9 16:07:01 debian postfix/scache[4365]: statistics: max simultaneous domains=1 addresses=1 connection=11
Nov 9 16:07:13 debian postfix/smtpd[4389]: disconnect from localhost[127.0.0.1]



* vou fazer o exempo tudo novamente...

[8] Comentário enviado por Lunodesouza em 09/11/2010 - 16:36h

essex:

o arquivo "/etc/postfix/SERVER-cert.pem" existe?
se sim, gere novamente
se não, crie!


[9] Comentário enviado por removido em 09/11/2010 - 18:02h

Ola

Tentei fazer o exemplo todo novamente... mas na 1a linha algo já nao esta ok...

Apaguei o arquivo "CA.pl" porque após executar "#/usr/lib/ssl/misc/CA.pl -newca" nao fazia nada
entao pensei que o arquivo acima estava danificado.... como poderia saber? ... estou aprendendo, entao apaguei..

Copiei o arquivo "CA.pl" de um colega que usa debain

/usr/lib/ssl/misc/CA.pl -newca
-bash: /usr/lib/ssl/misc/CA.pl: Permission denied

root@debian:~# chmod 777 /usr/lib/ssl/misc/CA.pl

root@debian:~# /usr/lib/ssl/misc/CA.pl -newca

e novamente, após pressionar enter na linha acima......nao fez nada... :-(

[10] Comentário enviado por removido em 09/11/2010 - 21:47h


Ola

Acho que achei... devo usar esta linha né?


# /usr/lib/ssl/misc/CA.pl -newreq


parece que gerará.. desculpe tantas respostas, mas assim saberás o que estou fazendo para saber se estou no caminho..

obrigado

[11] Comentário enviado por ProverbioX em 23/01/2011 - 17:31h

alguém pode me ajudar pelo amor de Deus ?

estou tentando isso já faz 3 dias e ainda não consegui, to até com dor na vista cara

meu log:

Jan 23 22:13:02Jan 23 22:25:49 webcpz postfix/qmgr[26048]: 8F97466D0025: removed
Jan 23 22:25:49 webcpz postfix/smtp[28292]: CE39566D002A: to=<root@webcpz.com>, relay=smtp.gmail.com[74.125.91.109]:587, delay=0.21, delays=0.05/0/0.12/0.04, dsn=5.7.0, status=bounced (host smtp.gmail.com[74.125.91.109] said: 530 5.7.0 Must issue a STARTTLS command first. h20sm8571692qck.36 (in reply to MAIL FROM command))
Jan 23 22:25:49 webcpz postfix/qmgr[26048]: CB88966D0027: removed
Jan 23 22:25:49 webcpz postfix/qmgr[26048]: EC61288C017F: removed
Jan 23 22:25:49 webcpz postfix/qmgr[26048]: CF31C66D002C: removed
Jan 23 22:25:49 webcpz postfix/smtp[28291]: 0119E108A0296: to=<root@webcpz.com>, relay=smtp.gmail.com[74.125.93.109]:587, conn_use=2, delay=0.07, delays=0.01/0/0.03/0.03, dsn=5.7.0, status=bounced (host smtp.gmail.com[74.125.93.109] said: 530 5.7.0 Must issue a STARTTLS command first. y17sm8569381qci.21 (in reply to MAIL FROM command))
Jan 23 22:25:49 webcpz postfix/qmgr[26048]: CE39566D002A: removed
Jan 23 22:25:49 webcpz postfix/smtp[28453]: 0A068108A029B: to=<root@webcpz.com>, relay=smtp.gmail.com[74.125.93.109]:587, conn_use=2, delay=0.05, delays=0/0/0.02/0.02, dsn=5.7.0, status=bounced (host smtp.gmail.com[74.125.93.109] said: 530 5.7.0 Must issue a STARTTLS command first. y17sm8578829qci.33 (in reply to MAIL FROM command))
Jan 23 22:25:49 webcpz postfix/qmgr[26048]: 0119E108A0296: removed
Jan 23 22:25:49 webcpz postfix/qmgr[26048]: 0A068108A029B: removed

email não chega ao destino, help

[12] Comentário enviado por nandow em 26/05/2011 - 11:50h

Cara, muito bom seu tutorial.

Segui passo a passo em um servidor Ubuntu e funcionou certinho.

Só uma observação, na hora de usar o postmap, voce não colocou que teria que fazer o postmap no arquivo transport.

#postmap /etc/postfix/transport

Mas muito obrigado.

Ajudou muito aqui!

Atenciosamente,

Fernando Lozer

[13] Comentário enviado por cbsistem em 16/08/2012 - 08:59h

Socorro..
Montei o servidor com contas locais, internas:
carlos@mail.intranet, mario@mail.intranet

conta externa no gmail
externo@gmail.com

relayhost =[smtp.gmail.com]:587

envio entre contas locais ... ok
envio para uma conta externa usando externo@gmail.com .... erro

detalhe o email esta ficanco na caixa do email externo externo@gmail.com
o gmail esta bloqueando dizendo que não é um email do gmail, esta identificado o nome do meu servidor no cabeçalho

ao mudar para ..

relayhost =
transport_maps = hash:/etc/postfix/transport

.... o email e enviado certinho para qualquer email externo.
o problema é que até as contas internas estao usando o relay do gmail, ai esta o erro.

como posso dizer para minhas contas internas nao usarem o relay.


[14] Comentário enviado por LunodeSouza em 16/08/2012 - 14:32h


[13] Comentário enviado por cbsistem em 16/08/2012 - 08:59h:

Socorro..
como posso dizer para minhas contas internas nao usarem o relay.




Caro cbsistem,

Acredito que vale a pena utilizar 2 instâncias do postfix, uma para o relay server outra para a config de servidor usando o host interno...
Faça o teste :D

[15] Comentário enviado por vauires em 26/01/2016 - 11:45h


[3] Comentário enviado por removido em 27/10/2010 - 16:26h

Olá,

Fiz todos os passos e nao deu certo :-( ..... o que será que fiz errado? ...


/usr/lib/ssl/misc/CA.pl –newca

CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 1024 bit RSA private key
...............................++++++
.++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
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) [AU]:BR
State or Province Name (full name) [Some-State]:Santa Catarina
Locality Name (eg, city) []:Santa Catarina
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company X
Organizational Unit Name (eg, section) []:Student
Common Name (eg, YOUR name) []:Jurandir
Email Address []:ewb1.class@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:1234567
An optional company name []:1234567
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:1234567
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
f4:7a:17:78:77:6a:1d:c2
Validity
Not Before: Oct 27 19:57:53 2010 GMT
Not After : Oct 26 19:57:53 2013 GMT
Subject:
countryName = BR
stateOrProvinceName = Santa Catarina
organizationName = Company X
organizationalUnitName = Student
commonName = Jurandir
emailAddress = ewb1.class@gmail.com
X509v3 extensions:
X509v3 Subject Key Identifier:
D4:00:11:E4:BE:98:7F:D8:6F:89:15:AD:7F:A7:8F:32:1B:B2:75:FA
X509v3 Authority Key Identifier:
keyid:D4:00:11:E4:BE:98:7F:D8:6F:89:15:AD:7F:A7:8F:32:1B:B2:75:FA
DirName:/C=BR/ST=Santa Catarina/O=Company X/OU=Student/CN=Jurandir/emailAddress=ewb1.class@gmail.com
serial:F4:7A:17:78:77:6A:1D:C2

X509v3 Basic Constraints:
CA:TRUE
Certificate is to be certified until Oct 26 19:57:53 2013 GMT (1095 days)

Write out database with 1 new entries


openssl req -new -nodes -subj '/CN= Company X/O=Apelido EMPRESA/C=BR/ST= Santa Catarina/L= Santa Catarina/emailAddress=ewb1.class@mail.com' -keyout SERVER-key.pem -out SERVER-req.pem -days 3650

Generating a 1024 bit RSA private key
................++++++
.................++++++
writing new private key to 'SERVER-key.pem'
-----


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
The stateOrProvinceName field needed to be the same in the
CA certificate (Santa Catarina) and the request ( Santa Catarina)


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


cat &gt; main.cf

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 # ( ??????? = gmail.com )
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases.db
myorigin = /etc/mailname

# não use o nome de seu domínio 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.1.20/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


/etc/postfix# cat &gt; /etc/postfix/transport

#
# Relay de emails para o Gmail
* smtp:[smtp.gmail.com]:587


/etc/postfix# cat &gt; sasl_passwd

# Caso use Gmail
#[smtp.gmail.com]:587 usuario@seudominio.com.br:senha
#
# Caso tenha seu domínio no Google Apps
[smtp.gmail.com]:587 ewb1.gmail@gmail.com:1234567=


root@debian:/etc/postfix# touch generic
root@debian:/etc/postfix# postmap /etc/postfix/sasl_passwd;postmap /etc/postfix/generic

Limpando os lixos e vamos ao teste! :)

cd
rm SERVER-req.pem SERVER-cert.pem SERVER-key.pem &amp;&amp; rm -r demoCA/



echo "Test SMTP Relay" | mailx -s "Test 123" ewb1.class@gmail.com



telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
quit
+OK Better luck next time.
Connection closed by foreign host.


telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 servnet2.localhost ESMTP Postfix (Debian/GNU)
quit
221 2.0.0 Bye
Connection closed by foreign host.


tail -f /var/log/mail.log

Oct 27 17:14:30 debian postfix/master[22629]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Oct 27 17:15:30 debian postfix/trivial-rewrite[23440]: fatal: open database /etc/postfix/transport.db: No such file or directory
Oct 27 17:15:31 debian postfix/master[22629]: warning: process /usr/lib/postfix/trivial-rewrite pid 23440 exit status 1
Oct 27 17:15:31 debian postfix/master[22629]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Oct 27 17:16:31 debian postfix/trivial-rewrite[23442]: fatal: open database /etc/postfix/transport.db: No such file or directory
Oct 27 17:16:32 debian postfix/master[22629]: warning: process /usr/lib/postfix/trivial-rewrite pid 23442 exit status 1
Oct 27 17:16:32 debian postfix/master[22629]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Oct 27 17:17:32 debian postfix/trivial-rewrite[23446]: fatal: open database /etc/postfix/transport.db: No such file or directory
Oct 27 17:17:33 debian postfix/master[22629]: warning: process /usr/lib/postfix/trivial-rewrite pid 23446 exit status 1
Oct 27 17:17:33 debian postfix/master[22629]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup – throttling


Verificando e-mail na fila e envio:
postqueue -p ou

mailq


Você viu o teste apresentado pelo autor?
Não acompanha nenhum log comprovando que isso funciona...
Com artigos desse tipo eu nem, perco meu tempo. Tem muito bbc com banca de nerd enviando lixo desse tipo.
Aproveito para sugerir ao Vol publicar somente artigos que acompanham alguma documentação comprovando o funcionamento, dessa forma, eles evitam o armazenamento de lixo em seus servidores.

[16] Comentário enviado por LunodeSouza em 26/01/2016 - 12:08h

Boa tarde Vauires,

Qual sua dificuldade?


[15] Comentário enviado por vauires em 26/01/2016 - 11:45h




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts