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.cf
archivo de configuración.
El primero son las credenciales de autenticación. Para esto, simplemente uso el /etc/postfix/sasl_passwd
cual 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:root
propiedad y los 0600
permisos. 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:587
lugar de simplemente, smtp.provider.com
ya 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 myusername@gmail.com: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: jbouse@example.com
250 2.1.0 Ok
rcpt to: myotherusername@gmail.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
To: myotherusername@gmail.com
From: jbouse@example.com
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 myotherusername
cuenta de Gmail y leo el mensaje:
Return-Path: <myotherusername@gmail.com>
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" <myotherusername@gmail.com>
Received: from localhost (solitare [127.0.0.1])
by example.com (Postfix) with SMTP id 6269B280191
for <myotherusername@gmail.com>; Thu, 4 Mar 2010 22:17:39 -0500 (EST)
To: myotherusername@gmail.com
From: jbouse@example.com
Subject: Testing Postfix smarthost via Gmail
Message-Id: <20100305031745.6269B280191@example.com>
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.cf
es 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.log
línea como:
Mar 4 22:10:58 solitare postfix/smtp[19873]: 20E07280191: to=<myotherusername@gmail.com>, 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=<myotherusername@gmail.com>, 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)