Anche se non ho provato a inoltrare tramite un provider utilizzando la porta di invio (587), dovrebbe essere possibile. Per consentire a Postfix di inoltrare, dovrai impostare un file con le credenziali autenticate da utilizzare e apportare alcune modifiche al tuo /etc/postfix/main.cf
file di configurazione.
Il primo sono le credenziali di autenticazione. Per questo uso semplicemente il /etc/postfix/sasl_passwd
quale aggiungo la riga appropriata usando il modello:
smtp.provider.com smtp_user:smtp_passwd
Dovrai assicurarti che questo file sia protetto, quindi ti consiglio di impostare la root:root
proprietà e le 0600
autorizzazioni. Ti consigliamo quindi di eseguire quanto segue per creare la versione mappata hash come root.
postmap hash:/etc/postfix/sasl_passwd
Con questo, sposta la tua attenzione /etc/postfix/main.cf
e potresti trovare alcuni dei valori già impostati, quindi dovrai cambiarli di conseguenza, ma i dettagli importanti sono i seguenti:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_security_level = may
Ciò consentirà a Postfix di poter utilizzare il file sasl_passwd per l'autenticazione durante l'invio di posta. Dovrai quindi dire a Postfix che dovrebbe usare il provider per inviare la posta aggiungendo la configurazione
relayhost = smtp.provider.com:port
Per impostazione predefinita Postfix assume la porta 25 se non si specifica e questo ha funzionato per me in passato. Con la configurazione richiesta dovrai specificare 587 come porta. Detto questo, non sono sicuro che dovrai modificare la voce sasl_passwd in modo che non sia smtp.provider.com:587
semplicemente smtp.provider.com
perché non ho mai provato a farlo prima su una porta non predefinita, quindi dovrai provarlo tu stesso.
Questi soli passaggi di configurazione gestiscono l'inoltro della posta su diversi server che gestisco tramite un server di posta centrale.
Aggiornato per includere un esempio pienamente funzionante
Si è scoperto che avevo configurato il mio laptop Ubuntu (basato su Debian) per utilizzare la porta 587 sul mio provider di posta elettronica (non Gmail) poiché il mio provider DSL blocca il traffico della porta 25 in uscita. Ho aggiornato per utilizzare uno dei miei account Gmail per inviare la posta invece. L'unica modifica che dovevo fare
Sto oscurando i dati privati ma per il resto si incolla come-sta configurazione funzionante per Postfix.
Per prima cosa abbiamo /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 =
Successivamente abbiamo /etc/postfix/sasl_passwd
:
smtp.gmail.com:587 myusername@gmail.com:mypassword
Ho quindi eseguito la seguente sessione 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.
Quindi accedo al mio myotherusername
account Gmail e leggo il messaggio:
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
Ora, dopo aver dimostrato che i miei 13 anni come amministratore di sistema non sono sprecati, ho l'invio di e-mail dal mio laptop tramite Gmail senza la necessità di generare un certificato x.509 autofirmato, come altri potrebbero dirti. L'aggiunta chiave a /etc/postfix/main.cf
è l' impostazione smtp_tls_security_level su may per dire a Postfix che è corretto emettere il comando STARTTLS quando ci si connette a un altro MTA se supporta TLS. Se si dimentica l' impostazione smtp_tls_security_level , è possibile che venga visualizzata una voce nella propria linea /var/log/mail.log
lungo le righe di:
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))
Tuttavia, se impostato correttamente, dovresti vedere qualcosa sulla falsariga di:
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)