Configure o Postfix para enviar / retransmitir emails do Gmail (smtp.gmail.com) pela porta 587

8

Usando o Centos 5.4, com o Postfix. Eu posso fazer um

mail [email protected] 
subject: blah
 test
.
Cc:

e a msg é enviada para o gmail, mas ela reside na pasta de spam, o que é de se esperar.

Meu objetivo é gerar mensagens de e-mail e exibi-las na Caixa de entrada normal. Pelo que entendi Postfix / Gmail, é possível configurar o Postfix para enviar / retransmitir mensagens através do usuário autenticado / válido usando a porta 587, que não teria mais o email ser visto como spam.

Eu tentei vários parâmetros com base em sites / artigos diferentes da rede, sem sorte. Alguns dos artigos, na verdade, parecem entrar em conflito com outros artigos! Eu também olhei sobre as postagens de stacflow sobre isso, mas eu ainda estou sentindo falta de algo ... Também conversei com algumas pessoas no IRC (Centos / Postfix) e ainda tenho perguntas ..

Então, estou voltando ao Serverfault, mais uma vez!

Se houver alguém que tenha conseguido fazer isso, você se importaria de postar seus arquivos main.cf, sasl-passwd e quaisquer outros arquivos conf que você usa para fazer isso funcionar! Se eu puder revisar seus arquivos de configuração, posso ver onde errei e descobrir como corrigir o problema.

Obrigado por ler isto e qualquer ajuda / ponteiros que você forneça!

ps, Se houver uma postagem de fluxo de pilha que fale com isso que eu possa ter perdido, sinta-se à vontade para apontar para mim!

-tom

    
por tom smith 04.03.2010 / 19:59

1 resposta

15

Embora eu não tenha tentado transmitir através de um provedor usando a porta de envio (587), isso deveria ser possível. Para permitir que o Postfix seja retransmitido, você precisará configurar um arquivo com as credenciais autenticadas para usar e fazer algumas modificações no arquivo /etc/postfix/main.cf config.

A primeira é as credenciais de autenticação. Para isso eu simplesmente uso /etc/postfix/sasl_passwd , que eu adiciono a linha apropriada usando o template:

smtp.provider.com    smtp_user:smtp_passwd

Você precisa ter certeza de que este arquivo está protegido, então eu recomendo root:root ownership e 0600 permissões. Você então desejará executar o seguinte para criar a versão mapeada do hash como root.

postmap hash:/etc/postfix/sasl_passwd

Com isso fora do caminho, volte sua atenção para /etc/postfix/main.cf . Você pode encontrar alguns dos valores já definidos, então você precisará alterá-los adequadamente, mas os detalhes importantes são os seguintes:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_security_level = may

Isso permitirá que o Postfix possa usar o arquivo sasl_passwd para autenticar ao enviar e-mails. Você precisará informar ao Postfix que ele deve usar o provedor para enviar o e-mail adicionando a configuração

relayhost = smtp.provider.com:port

Por padrão, o Postfix assume a porta 25 se você não especificar e isso funcionou para mim no passado. Com sua configuração solicitada, você precisará especificar 587 como a porta. Com isso dito, não tenho certeza se você precisará modificar a entrada sasl_passwd para ser smtp.provider.com:587 em vez de simplesmente smtp.provider.com , como eu não tentei fazer isso em uma porta não padrão antes, então você terá que experimente por si mesmo.

Estas etapas de configuração sozinhas estão lidando com o encaminhamento de mensagens em vários servidores que mantenho por meio de um servidor de correio central.

Atualizado para incluir um exemplo totalmente funcional

Na verdade, configurei meu laptop Ubuntu (baseado no Debian) para usar a porta 587 no meu provedor de e-mail (não-Gmail), pois meu provedor de DSL bloqueia o tráfego de saída da porta 25. Eu atualizei para usar uma das minhas contas do Gmail para enviar e-mails em vez disso. A única mudança que eu precisava fazer

Estou ocultando os dados privados, mas de outra forma colando a configuração de trabalho como-é para o Postfix.

Primeiro, temos /etc/postfix/main.cf :

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
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

# TLS parameters
#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_use_tls=yes
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = may

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = solitare, localhost.localdomain, , localhost
relayhost = smtp.gmail.com:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

Em seguida, temos /etc/postfix/sasl_passwd :

smtp.gmail.com:587  [email protected]:mypassword

Eu então executei a seguinte sessão SMTP:

jbouse@solitare:~$ telnet localhost 25
Trying 127.0.0.1...
Connected to solitare.
Escape character is '^]'.
220 example.com ESMTP Postfix (Ubuntu)
helo localhost
250 example.com
mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
To: [email protected]
From: [email protected]
Subject: Testing Postfix smarthost via Gmail
this is just a test
.
250 2.0.0 Ok: queued as 6269B280191
quit
221 2.0.0 Bye
Connection closed by foreign host.

Em seguida, faço login na minha conta myotherusername do Gmail e leio a mensagem:

Return-Path: <[email protected]>
Received: from example.com (mydslproviderhostname.net [x.x.x.229])
        by mx.google.com with ESMTPS id 6sm401663ywd.11.2010.03.04.19.19.58
        (version=TLSv1/SSLv3 cipher=RC4-MD5);
        Thu, 04 Mar 2010 19:19:58 -0800 (PST)
Sender: "Jeremy Bouse" <[email protected]>
Received: from localhost (solitare [127.0.0.1])
    by example.com (Postfix) with SMTP id 6269B280191
    for <[email protected]>; Thu,  4 Mar 2010 22:17:39 -0500 (EST)
To: [email protected]
From: [email protected]
Subject: Testing Postfix smarthost via Gmail
Message-Id: <[email protected]>
Date: Thu,  4 Mar 2010 22:17:39 -0500 (EST)

this is just a test

Agora que mostrei meus 13 anos como administrador de sistemas, não é um desperdício enviar e-mails do meu laptop pelo Gmail sem precisar gerar um certificado x.509 auto-assinado, como os outros diriam a você. A principal adição ao /etc/postfix/main.cf é a configuração smtp_tls_security_level para pode dizer ao Postfix que é correto emitir o STARTTLS comando ao conectar-se a outro MTA se ele suportar o TLS. Se você esquecer a configuração smtp_tls_security_level , poderá ver uma entrada no seu /var/log/mail.log ao longo das linhas de:

Mar  4 22:10:58 solitare postfix/smtp[19873]: 20E07280191: to=<[email protected]>, relay=smtp.gmail.com[74.125.47.109]:587, delay=38, delays=38/0.03/0.08/0.01, dsn=5.7.0, status=bounced (host smtp.gmail.com[74.125.47.109] said: 530 5.7.0 Must issue a STARTTLS command first. 20sm399188ywh.48 (in reply to MAIL FROM command))

No entanto, com a configuração correta, você deve ver algo nos seguintes termos:

Mar  4 22:20:00 solitare postfix/smtp[20313]: 6269B280191: to=<[email protected]>, relay=smtp.gmail.com[74.125.47.109]:587, delay=141, delays=110/29/0.36/1.9, dsn=2.0.0, status=sent (250 2.0.0 OK 1267759200 6sm401663ywd.11)
    
por 04.03.2010 / 20:56