Skonfiguruj Postfix do wysyłania / przekazywania wiadomości e-mail Gmail (smtp.gmail.com) przez port 587


9

Korzystanie z Centos 5.4 z Postfix. Mogę zrobić

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

i msg zostaje wysłany do Gmaila, ale znajduje się w folderze spamu, czego należy się spodziewać.

Moim celem jest generowanie wiadomości e-mail i wyświetlanie ich w zwykłej skrzynce odbiorczej! Jak rozumiem Postfix / Gmail, można skonfigurować Postfix do wysyłania / przekazywania poczty za pośrednictwem uwierzytelnionego / ważnego użytkownika korzystającego z portu 587, który nie byłby dłużej postrzegany jako spam.

Próbowałem wielu parametrów opartych na różnych witrynach / artykułach z sieci, ale bez powodzenia. Niektóre artykuły wydają się faktycznie kolidować z innymi artykułami! Przejrzałem także posty na ten temat, ale wciąż coś mi brakuje ... Rozmawiałem także z kilkoma osobami na IRC (Centos / Postfix) i wciąż mam pytania ...

Więc ponownie przechodzę do Serverfault!

Jeśli jest ktoś, komu udało się to zrobić, czy mógłbyś opublikować pliki main.cf, sasl-passwd i inne pliki conf, których używasz, aby to działało! Jeśli mogę przejrzeć twoje pliki konfiguracyjne, mam nadzieję, że zobaczę, gdzie się popsułem, i wymyślę, jak rozwiązać problem.

Dziękujemy za przeczytanie tego i wszelkich udzielonych przez Ciebie pomocy / wskazówek!

ps, jeśli istnieje post stackflow, który mówi o tym, że mogłem przegapić, nie krępuj się, aby mi to wskazać!

-Tomek

Odpowiedzi:


16

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.cfpliku konfiguracyjnym.

Pierwszy to poświadczenia uwierzytelnienia. W tym celu używam po prostu tego, /etc/postfix/sasl_passwdktó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:rootprawo własności i 0600uprawnienia 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:587po prostu, smtp.provider.componieważ 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 myotherusernamekonto 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.cfjest 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)

Cześć Jeremy ... Dzięki za odpowiedź. Kilka pytań. Widziałem posty sieciowe, które mają parametry smtpd _... .. Rozumiem, że ich nie potrzebuję. Ponadto niektóre artykuły mają / odnoszą się do certyfikatów TSL. Czy w ogóle muszę sobie z nimi poradzić? dzięki!!
Tom Smith

parametry smtpd _... dotyczą Postfix jako serwera ... W przypadku przekazywania do smarthost Postfix działa jako klient korzystający z parametrów smtp _...
Jeremy Bouse

1
gravyface, oczywiście nie wiesz o czym mówisz. Sugeruję, aby przeczytać trochę więcej na temat SMTP i TLS / SSL / x.509, ponieważ brakuje Ci wiedzy na ten temat.
Jeremy Bouse

1
felipe-alfaro.org/blog/2009/05/10/… ... Drugi akapit przypomina moje własne komentarze ...
Jeremy Bouse

1
Dzięki za wyjaśnienie, Jeremy. Zawsze myślałem, że to trochę dziwne, że musiałeś podpisać własny certyfikat, ale w pośpiechu (oraz w wielu artykułach / samouczkach, które widziałem) wszyscy tak mówili. Żyj i ucz się.
gravyface
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.