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

9

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

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

e a mensagem é enviada para o gmail, mas reside na pasta de spam, o que é esperado.

Meu objetivo é ser capaz de gerar mensagens de e-mail e fazer com que elas apareçam na Caixa de entrada normal! Pelo que entendi o Postfix / Gmail, é possível configurar o Postfix para enviar / retransmitir emails por meio de um usuário autenticado / válido usando a porta 587, que deixaria o email mais como spam.

Eu tentei vários parâmetros com base em diferentes sites / artigos da 'net, sem sorte. Alguns dos artigos parecem realmente entrar em conflito com outros! Também examinei as postagens do stacflow sobre isso, mas ainda estou perdendo alguma coisa ... Também conversei com algumas pessoas no IRC (Centos / Postfix) e ainda tenho dúvidas ..

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

Se houver alguém que conseguiu fazer isso, você se importaria de postar seu 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, espero ver onde eu estraguei tudo e descobrir como corrigir o problema.

Obrigado por ler isso e qualquer ajuda / dicas que você fornecer!

ps, Se houver uma postagem de stackflow que fale sobre isso que eu possa ter perdido, fique à vontade para apontar para mim!

-tom

Tom Smith
fonte

Respostas:

16

Embora eu não tenha tentado retransmitir através de um provedor usando a porta de envio (587), isso deve ser possível. Para ativar a retransmissão do Postfix, você precisará configurar um arquivo com as credenciais autenticadas para usar e fazer algumas modificações no seu /etc/postfix/main.cfarquivo de configuração.

A primeira são as credenciais de autenticação. Para isso, basta usar a /etc/postfix/sasl_passwdqual adiciono a linha apropriada usando o modelo:

smtp.provider.com    smtp_user:smtp_passwd

Você quer ter certeza de que este arquivo está protegido, por isso recomendo que a root:rootpropriedade e as 0600permissões sejam definidas nele. Você precisará executar o seguinte para criar a versão mapeada em hash como raiz.

postmap hash:/etc/postfix/sasl_passwd

Com isso, desvie sua atenção e /etc/postfix/main.cfvocê poderá encontrar alguns dos valores já definidos, portanto será necessário 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-mail. Você precisará informar ao Postfix que ele deve usar o provedor para enviar o email 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 a 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 que seja, em smtp.provider.com:587vez de simplesmente smtp.provider.comporque eu nunca tentei fazer isso em uma porta não padrão antes, então você terá que tentar por si mesmo.

Somente essas etapas de configuração estão lidando com o encaminhamento de email em vários servidores que mantenho através de um servidor de email central.

Atualizado para incluir um exemplo completo

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

Estou obscurecendo os dados privados, mas de outra forma colando como está trabalhando configuração para 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

Em seguida, 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.

Depois, faço login na minha myotherusernameconta 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, depois de mostrar que meus 13 anos como administrador de sistemas não são desperdiçados, tenho o envio de e-mails do meu laptop pelo Gmail sem a necessidade de gerar um certificado x.509 autoassinado, como outros diriam. A adição chave para a /etc/postfix/main.cfé a smtp_tls_security_level definição para pode dizer-Postfix que é bom para emitir o STARTTLS comando ao ligar para outro MTA se ele suporta TLS. Se você esquecer a configuração smtp_tls_security_level , poderá ver uma entrada ao /var/log/mail.loglongo 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 ele definido corretamente, você deverá ver algo ao longo das linhas de:

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)
Jeremy Bouse
fonte
Oi Jeremy ... Obrigado pela resposta. Algumas questões. Eu já vi postagens líquidas que têm smtpd _... params .. Acho que não preciso disso. Além disso, alguns dos artigos têm / referem-se aos certificados TSL. Preciso lidar com eles? obrigado!!
Tom Smith
os parâmetros smtpd _... são para o Postfix como servidor ... No caso de retransmitir para um smarthost, o Postfix está operando como um cliente que usa os parâmetros smtp _....
Jeremy Bouse
1
gravyface, você obviamente não sabe do que está falando. Sugiro que você leia um pouco sobre SMTP e TLS / SSL / x.509, pois não possui conhecimento sobre o assunto.
quer
1
felipe-alfaro.org/blog/2009/05/10/... ... ecos segundo parágrafo meus próprios comentários ...
Jeremy Bouse
1
Obrigado por esclarecer isso, Jeremy. Eu sempre pensei que era um pouco estranho que você tivesse que assinar seu próprio certificado, mas na minha pressa (e nos muitos artigos / tutoriais que eu vi), todos disseram fazer isso. Viva e aprenda.
gravyface