Konfigurasikan Postfix untuk mengirim / menyampaikan email Gmail (smtp.gmail.com) melalui port 587


9

Menggunakan Centos 5.4, dengan Postfix. Saya bisa melakukan

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

dan pesan dikirim ke gmail, tetapi berada di folder spam, yang diharapkan.

Tujuan saya adalah untuk dapat menghasilkan pesan email, dan membuatnya muncul di Kotak Masuk biasa! Seperti yang saya pahami Postfix / Gmail, mungkin saja mengkonfigurasi Postfix untuk mengirim / menyampaikan email melalui pengguna yang diautentikasi / valid menggunakan port 587, yang tidak akan lagi membuat email dilihat sebagai spam.

Saya telah mencoba sejumlah parameter berdasarkan berbagai situs / artikel dari internet, tanpa hasil. Beberapa artikel, sebenarnya sepertinya bertentangan dengan artikel lain! Saya juga sudah melihat-lihat posting aliran ini, tapi saya masih kehilangan sesuatu ... Juga berbicara dengan beberapa orang di IRC (Centos / Postfix) dan masih ada pertanyaan ..

Jadi, saya beralih ke Serverfault, sekali lagi!

Jika ada seseorang yang berhasil melakukan ini, maukah Anda memposting main.cf, sasl-passwd, dan file conf lainnya yang Anda gunakan untuk membuatnya berfungsi! Jika saya dapat meninjau file konfigurasi Anda, saya berharap dapat melihat di mana saya telah mengacau, dan mencari cara untuk memperbaiki masalah ini.

Terima kasih telah membaca ini, dan semua bantuan / petunjuk yang Anda berikan!

ps, Jika ada posting stackflow yang berbicara tentang hal ini yang mungkin saya lewatkan, silakan tunjukkan kepada saya!

-Tom

Jawaban:


16

Meskipun saya belum mencoba untuk merelay melalui penyedia menggunakan port pengiriman (587) itu harus mungkin. Untuk mengaktifkan Postfix untuk menyampaikan, Anda perlu mengatur file dengan kredensial yang diautentikasi untuk menggunakan dan membuat beberapa modifikasi pada /etc/postfix/main.cffile konfigurasi Anda .

Yang pertama adalah kredensial otentikasi. Untuk ini saya cukup menggunakan /etc/postfix/sasl_passwdyang saya tambahkan baris yang sesuai menggunakan templat:

smtp.provider.com    smtp_user:smtp_passwd

Anda akan ingin memastikan file ini dilindungi sehingga saya sarankan root:rootkepemilikan dan 0600izin ditetapkan padanya. Anda kemudian ingin menjalankan yang berikut ini untuk membuat versi hash mapped sebagai root.

postmap hash:/etc/postfix/sasl_passwd

Dengan keluar dari cara mengalihkan perhatian Anda pergi, /etc/postfix/main.cfAnda mungkin menemukan beberapa nilai yang sudah ditetapkan sehingga Anda perlu mengubahnya sesuai tetapi rincian penting adalah sebagai berikut:

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

Ini akan memungkinkan Postfix untuk dapat menggunakan file sasl_passwd untuk mengotentikasi saat mengirim email. Anda kemudian harus memberi tahu Postfix bahwa itu harus menggunakan penyedia untuk mengirim surat dengan menambahkan konfigurasi

relayhost = smtp.provider.com:port

Secara default Postfix mengasumsikan port 25 jika Anda tidak menentukan dan ini telah bekerja untuk saya di masa lalu. Dengan pengaturan yang Anda minta, Anda harus menentukan 587 sebagai port. Dengan mengatakan bahwa saya tidak yakin apakah Anda harus memodifikasi entri sasl_passwd menjadi smtp.provider.com:587hanya smtp.provider.comkarena saya belum mencoba melakukan ini pada port non-default sebelum jadi Anda harus mencobanya sendiri.

Langkah-langkah konfigurasi ini sendiri menangani penerusan surat pada beberapa server yang saya pelihara melalui server surat pusat.

Diperbarui untuk memasukkan contoh yang berfungsi penuh

Ternyata saya mengkonfigurasi laptop Ubuntu (berbasis Debian) saya untuk menggunakan port 587 pada penyedia email saya (bukan-Gmail) karena penyedia DSL saya memblokir lalu lintas port keluar 25. Saya memperbarui untuk menggunakan salah satu akun Gmail saya untuk mengirim surat sebagai gantinya. Satu-satunya perubahan yang perlu saya lakukan

Saya mengaburkan data pribadi tetapi menyisipkan konfigurasi as- berfungsi untuk Postfix.

Pertama yang kita miliki /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 =

Selanjutnya kita memiliki /etc/postfix/sasl_passwd:

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

Saya kemudian menjalankan sesi SMTP berikut:

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.

Lalu saya masuk ke myotherusernameakun Gmail saya dan membaca pesan:

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

Sekarang setelah menunjukkan 13 tahun saya sebagai administrator sistem tidak sia-sia, saya memiliki pengiriman email dari laptop saya melalui Gmail tanpa perlu membuat sertifikat x.509 yang ditandatangani sendiri seperti yang orang lain katakan kepada Anda. Tambahan kunci ke pengaturan /etc/postfix/main.cfini adalah pengaturan smtp_tls_security_level agar dapat memberi tahu Postfix bahwa tidak masalah untuk mengeluarkan perintah STARTTLS saat menghubungkan ke MTA lain jika mendukung TLS. Jika Anda lupa pengaturan smtp_tls_security_level, Anda mungkin melihat entri di /var/log/mail.logsepanjang baris:

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

Namun dengan itu diatur dengan benar, Anda akan melihat sesuatu di sepanjang baris:

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)

Hai Jeremy ... Terima kasih atas jawabannya. Beberapa pertanyaan. Saya telah melihat postingan bersih yang memiliki smtpd _... params .. Saya kira saya tidak membutuhkannya. Juga, beberapa artikel, memiliki / merujuk ke sertifikat TSL .. apakah saya harus berurusan dengan itu sama sekali? Terima kasih!!
tom smith

smtpd _... params adalah untuk Postfix sebagai server ... Dalam kasus merelay ke smarthost Postfix beroperasi sebagai klien yang menggunakan params smtp _....
Jeremy Bouse

1
gravyface, Anda jelas tidak tahu apa yang Anda bicarakan. Saya sarankan Anda membaca sedikit tentang SMTP & TLS / SSL / x.509 karena Anda tidak memiliki pengetahuan tentang materi pelajaran.
Jeremy Bouse

1
felipe-alfaro.org/blog/2009/05/10/… ... Paragraf kedua mengomentari komentar saya sendiri ...
Jeremy Bouse

1
Terima kasih sudah membereskannya, Jeremy. Saya selalu berpikir itu agak aneh bahwa Anda harus menandatangani sertifikat Anda sendiri, tetapi dalam tergesa-gesa saya (dan dalam banyak artikel / tutorial yang pernah saya lihat) mereka semua berkata untuk melakukannya. Hidup dan belajar.
gravyface
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.