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.cf
fichier de configuration.
Le premier est les informations d'authentification. Pour cela j'utilise simplement /etc/postfix/sasl_passwd
auquel 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:root
propriété et les 0600
autorisations. 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.cf
vous 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:587
au lieu de simplement smtp.provider.com
car 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 myotherusername
compte 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.cf
est 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.log
dans 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)