Chociaż nie próbowałem przekazywać danych przez dostawcę korzystającego z portu przesyłania (587), powinno to być możliwe. Aby umożliwić Postfixowi przekazywanie, musisz skonfigurować plik z uwierzytelnionymi poświadczeniami, aby użyć i wprowadzić pewne zmiany w /etc/postfix/main.cf
pliku konfiguracyjnym.
Pierwszy to poświadczenia uwierzytelnienia. W tym celu używam po prostu tego, /etc/postfix/sasl_passwd
który dodaję odpowiednią linię za pomocą szablonu:
smtp.provider.com smtp_user:smtp_passwd
Będziesz chciał mieć pewność, że ten plik jest chroniony, więc polecam root:root
prawo własności i 0600
uprawnienia do niego. Następnie uruchom następujące polecenie, aby utworzyć wersję z mapowaniem skrótu jako root.
postmap hash:/etc/postfix/sasl_passwd
Po tym, jak odwrócisz swoją uwagę /etc/postfix/main.cf
, możesz znaleźć niektóre z już ustawionych wartości, więc będziesz musiał je odpowiednio zmienić, ale ważne szczegóły są następujące:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_security_level = may
Umożliwi to Postfixowi używanie pliku sasl_passwd do uwierzytelnienia podczas wysyłania poczty. Następnie musisz powiedzieć Postfix, że powinien użyć dostawcy do wysłania poczty poprzez dodanie konfiguracji
relayhost = smtp.provider.com:port
Domyślnie Postfix zakłada port 25, jeśli go nie określisz, a to działało dla mnie w przeszłości. W żądanej konfiguracji musisz podać 587 jako port. Powiedziawszy to, nie jestem pewien, czy będziesz musiał zmodyfikować wpis sasl_passwd, aby był smtp.provider.com:587
po prostu, smtp.provider.com
ponieważ wcześniej nie próbowałem tego robić na innym niż domyślny porcie, więc będziesz musiał spróbować sam.
Same te czynności konfiguracyjne obejmują przekazywanie poczty na kilku serwerach, które utrzymuję za pośrednictwem centralnego serwera pocztowego.
Zaktualizowano, aby uwzględnić w pełni działający przykład
Okazuje się, że skonfigurowałem laptopa Ubuntu (opartego na Debianie) do używania portu 587 na moim dostawcy poczty e-mail (nie-Gmail), ponieważ mój dostawca DSL blokuje ruch wychodzący z portu 25. Zaktualizowałem, aby zamiast tego wysłać jedno z moich kont Gmail do wysyłania poczty. Jedyną zmianą, którą musiałem wprowadzić
Ja przesłaniając prywatnych danych, ale w inny sposób wklejania jak jest konfiguracja pracuje dla Postfix.
Najpierw mamy /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 =
Następnie mamy /etc/postfix/sasl_passwd
:
smtp.gmail.com:587 myusername@gmail.com:mypassword
Następnie uruchomiłem następującą sesję 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.
Następnie loguję się na swoje myotherusername
konto Gmail i czytam wiadomość:
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
Teraz, gdy pokazałem swoje 13 lat pracy jako administrator systemu, nie zmarnowałem się. Mam e-maile wysyłane z mojego laptopa przez Gmaila bez potrzeby generowania samopodpisanego certyfikatu x.509, jak powiedzą inni. Kluczowym dodatkiem do ustawienia /etc/postfix/main.cf
jest poziom smtp_tls_security_level , który może informować Postfix, że można wydać polecenie STARTTLS podczas łączenia się z innym MTA, jeśli obsługuje TLS. Jeśli zapomnisz ustawienia smtp_tls_security_level , możesz zobaczyć wpis w swoim wierszu/var/log/mail.log
:
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))
Jednak przy odpowiednim ustawieniu powinieneś zobaczyć coś w stylu:
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)