Configurer Postfix pour envoyer / relayer des emails Gmail (smtp.gmail.com) via le port 587


9

Utilisation de Centos 5.4, avec Postfix. Je peux faire un

mail foo@gmail.com 
subject: blah
 test
.
Cc:

et le msg est envoyé à gmail, mais il réside dans le dossier spam, ce qui est normal.

Mon objectif est de pouvoir générer des messages électroniques et de les faire apparaître dans la boîte de réception habituelle! Si je comprends bien Postfix / Gmail, il est possible de configurer Postfix pour envoyer / relayer le courrier via l'utilisateur authentifié / valide en utilisant le port 587, ce qui ne permettrait plus de voir le courrier comme du spam.

J'ai essayé un certain nombre de paramètres basés sur différents sites / articles du net, sans succès. Certains articles semblent effectivement entrer en conflit avec d'autres articles! J'ai également regardé les publications stacflow à ce sujet, mais il me manque encore quelque chose ... J'ai également parlé à quelques personnes sur IRC (Centos / Postfix) et j'ai encore des questions ..

Donc, je me tourne vers Serverfault, encore une fois!

S'il y a quelqu'un qui a réussi à accomplir cela, cela vous dérangerait de poster votre main.cf, sasl-passwd et tout autre fichier de conf que vous utilisez pour que cela fonctionne! Si je peux revoir vos fichiers de configuration, je peux voir avec un peu de chance où j'ai foiré et trouver comment corriger le problème.

Merci d'avoir lu ceci et toute aide / pointeur que vous fournissez!

ps, s'il y a une publication stackflow qui parle de cela que j'ai peut-être manqué, n'hésitez pas à me le signaler!

-à M

Réponses:


16

Même si je n'ai pas essayé de relayer via un fournisseur utilisant le port de soumission (587), cela devrait être possible. Pour permettre à Postfix de relayer, vous devrez configurer un fichier avec les informations d'identification authentifiées à utiliser et apporter quelques modifications à votre /etc/postfix/main.cffichier de configuration.

Le premier est les informations d'authentification. Pour cela j'utilise simplement /etc/postfix/sasl_passwdauquel j'ajoute la ligne appropriée en utilisant le modèle:

smtp.provider.com    smtp_user:smtp_passwd

Vous voudrez vous assurer que ce fichier est protégé, je recommande donc de définir la root:rootpropriété et les 0600autorisations. Vous souhaiterez ensuite exécuter ce qui suit pour créer la version mappée par hachage en tant que root.

postmap hash:/etc/postfix/sasl_passwd

Avec cela, détournez votre attention, /etc/postfix/main.cfvous pouvez trouver certaines des valeurs déjà définies, vous devrez donc les modifier en conséquence, mais les détails importants sont les suivants:

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

Celles-ci permettront à Postfix de pouvoir utiliser le fichier sasl_passwd pour s'authentifier lors de l'envoi de courrier. Vous devrez ensuite indiquer à Postfix qu'il doit utiliser le fournisseur pour envoyer le courrier en ajoutant la configuration

relayhost = smtp.provider.com:port

Par défaut, Postfix suppose le port 25 si vous ne le spécifiez pas et cela a fonctionné pour moi dans le passé. Avec la configuration demandée, vous devrez spécifier 587 comme port. Cela dit, je ne sais pas si vous devrez modifier l'entrée sasl_passwd pour qu'elle soit smtp.provider.com:587au lieu de simplement smtp.provider.comcar je n'ai pas essayé de le faire sur un port non par défaut auparavant, vous devrez donc l'essayer par vous-même.

Ces étapes de configuration gèrent à elles seules le transfert de courrier sur plusieurs serveurs que je gère via un serveur de messagerie central.

Mis à jour pour inclure un exemple pleinement fonctionnel

Il s'avère que j'avais configuré mon ordinateur portable Ubuntu (basé sur Debian) pour utiliser le port 587 sur mon fournisseur de messagerie (pas Gmail) car mon fournisseur DSL bloque le trafic sortant du port 25. J'ai mis à jour pour utiliser l'un de mes comptes Gmail pour envoyer des messages à la place. Le seul changement que je devais faire

J'obscurcis les données privées, mais sinon je colle la configuration de travail telle quelle pour Postfix.

Nous avons d'abord /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 =

Ensuite, nous avons /etc/postfix/sasl_passwd:

smtp.gmail.com:587  myusername@gmail.com:mypassword

J'ai ensuite exécuté la session SMTP suivante:

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.

Ensuite, je me connecte à mon myotherusernamecompte Gmail et lis le message:

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

Maintenant que mes 13 ans en tant qu'administrateur système ne sont pas perdus, j'ai des e-mails envoyés depuis mon ordinateur portable via Gmail sans avoir besoin de générer un certificat x.509 auto-signé comme d'autres vous le diraient. L'ajout clé à /etc/postfix/main.cfest le paramètre smtp_tls_security_level pour mai pour indiquer à Postfix qu'il est correct d'émettre la commande STARTTLS lors de la connexion à un autre MTA s'il prend en charge TLS. Si vous oubliez le paramètre smtp_tls_security_level , vous pouvez voir une entrée dans votre /var/log/mail.logdans le sens de:

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

Cependant, avec une configuration correcte, vous devriez voir quelque chose comme:

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)

Salut Jeremy ... Merci pour la réponse. Quelques questions. J'ai vu des publications nettes qui ont des paramètres smtpd _... .. Je suppose que je n'en ai pas besoin. De plus, certains articles ont / font référence à des certificats TSL. Dois-je en traiter? Merci!!
tom smith

les paramètres smtpd _... sont pour Postfix en tant que serveur ... Dans le cas d'un relais vers un smarthost, Postfix fonctionne comme un client qui utilise les paramètres smtp _....
Jeremy Bouse

1
gravyface, vous ne savez évidemment pas de quoi vous parlez. Je vous suggère d'aller lire un peu sur SMTP & TLS / SSL / x.509 car vous manquez de connaissances sur le sujet.
Jeremy Bouse

1
felipe-alfaro.org/blog/2009/05/10/… ... Le deuxième paragraphe fait écho à mes propres commentaires ...
Jeremy Bouse

1
Merci d'avoir clarifié cela, Jeremy. J'ai toujours pensé qu'il était un peu étrange que vous deviez signer votre propre certificat, mais dans ma hâte (et dans les nombreux articles / tutoriels que j'ai vus), ils ont tous dit de le faire. Vivre et apprendre.
gravyface
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.