Configure Postfix para enviar / retransmitir correos electrónicos Gmail (smtp.gmail.com) a través del puerto 587

9

Usando Centos 5.4, con Postfix. Puedo hacer un

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

y el mensaje se envía a gmail, pero reside en la carpeta de correo no deseado, lo cual es de esperar.

¡Mi objetivo es poder generar mensajes de correo electrónico y que aparezcan en la Bandeja de entrada normal! Según tengo entendido Postfix / Gmail, es posible configurar Postfix para enviar / retransmitir correo a través del usuario autenticado / válido utilizando el puerto 587, que ya no vería el correo como spam.

He probado varios parámetros basados ​​en diferentes sitios / artículos de la red, sin suerte. ¡Algunos de los artículos parecen entrar en conflicto con otros artículos! También he revisado las publicaciones de stacflow sobre esto, pero todavía me falta algo ... También hablé con algunas personas en IRC (Centos / Postfix) y todavía tengo preguntas ...

Por lo tanto, estoy recurriendo a Serverfault, una vez más!

Si hay alguien que ha logrado esto, ¿le importaría publicar su main.cf, sasl-passwd y cualquier otro archivo conf que use para que esto funcione? Si puedo revisar sus archivos de configuración, espero ver dónde me he equivocado y descubrir cómo corregir el problema.

¡Gracias por leer esto, y cualquier ayuda / consejos que brinde!

ps, si hay una publicación de stackflow que habla de esto y que me haya perdido, ¡siéntase libre de señalarme!

-tom

Tom Smith
fuente

Respuestas:

16

Si bien no he intentado retransmitir a través de un proveedor utilizando el puerto de envío (587), debería ser posible. Para habilitar la retransmisión de Postfix, deberá configurar un archivo con las credenciales autenticadas para usar y realizar algunas modificaciones en su /etc/postfix/main.cfarchivo de configuración.

El primero son las credenciales de autenticación. Para esto, simplemente uso el /etc/postfix/sasl_passwdcual agrego la línea apropiada usando la plantilla:

smtp.provider.com    smtp_user:smtp_passwd

Querrá asegurarse de que este archivo esté protegido, por lo que le recomiendo que se establezca la root:rootpropiedad y los 0600permisos. Entonces querrás ejecutar lo siguiente para crear la versión mapeada hash como root.

postmap hash:/etc/postfix/sasl_passwd

Con esto alejado /etc/postfix/main.cf, puede encontrar algunos de los valores ya establecidos, por lo que deberá cambiarlos en consecuencia, pero los detalles importantes son los siguientes:

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

Esto permitirá que Postfix pueda usar el archivo sasl_passwd para autenticarse al enviar correo. Luego deberá decirle a Postfix que debe usar el proveedor para enviar el correo agregando la configuración

relayhost = smtp.provider.com:port

Por defecto, Postfix asume el puerto 25 si no especificas y esto me ha funcionado en el pasado. Con la configuración solicitada, deberá especificar 587 como el puerto. Dicho esto, no estoy seguro de si tendrá que modificar la entrada sasl_passwd para que esté en smtp.provider.com:587lugar de simplemente, smtp.provider.comya que no he intentado hacerlo en un puerto no predeterminado antes, por lo que tendrá que probarlo usted mismo.

Estos pasos de configuración solo están manejando el reenvío de correo en varios servidores que mantengo a través de un servidor de correo central.

Actualizado para incluir un ejemplo completamente funcional

En realidad, configuré mi computadora portátil Ubuntu (basada en Debian) para usar el puerto 587 en mi proveedor de correo electrónico (no Gmail) ya que mi proveedor DSL bloquea el tráfico del puerto 25 saliente. Actualicé para usar una de mis cuentas de Gmail para enviar correo en su lugar. El único cambio que necesitaba hacer

Estoy ocultando los datos privados, pero pegando la configuración de trabajo tal como está para Postfix.

Primero tenemos /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 =

A continuación tenemos /etc/postfix/sasl_passwd:

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

Luego ejecuté la siguiente sesión 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.

Luego inicio sesión en mi myotherusernamecuenta de Gmail y leo el mensaje:

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

Ahora que he demostrado que mis 13 años como administrador de sistemas no se desperdician, envío un correo electrónico desde mi computadora portátil a través de Gmail sin tener que generar un certificado x.509 autofirmado, como otros dirían. La adición clave para el /etc/postfix/main.cfes la smtp_tls_security_level ajuste a puede decirle a Postfix que está bien para emitir el STARTTLS comando cuando se conecta a otro MTA si es compatible con TLS. Si olvida la configuración smtp_tls_security_level , puede ver una entrada en su /var/log/mail.loglínea como:

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))

Sin embargo, con su configuración correcta, debería ver algo en la línea 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
fuente
Hola Jeremy ... Gracias por la respuesta. Unas cuantas preguntas. He visto publicaciones netas que tienen smtpd _... params. Supongo que no las necesito. Además, algunos de los artículos tienen / hacen referencia a certificados de TSL ... ¿debo tratar con ellos? ¡¡Gracias!!
Tom Smith
los parámetros smtpd _... son para Postfix como servidor ... En el caso de retransmitir a un smarthost, Postfix funciona como un cliente que utiliza los parámetros smtp _....
Jeremy Bouse
1
gravyface, obviamente no sabes de qué estás hablando. Le sugiero que lea un poco sobre SMTP y TLS / SSL / x.509, ya que no tiene el conocimiento sobre el tema.
Jeremy Bouse
1
felipe-alfaro.org/blog/2009/05/10/… ... El segundo párrafo hace eco de mis propios comentarios ...
Jeremy Bouse
1
Gracias por aclarar eso, Jeremy. Siempre pensé que era un poco extraño que tuvieras que firmar tu propio certificado, pero en mi apuro (y en los muchos artículos / tutoriales que he visto) todos me dijeron que lo hicieran. Vive y aprende.
gravyface