Định cấu hình Postfix để gửi / chuyển tiếp email Gmail (smtp.gmail.com) qua cổng 587


9

Sử dụng Centos 5.4, với Postfix. Tôi có thể làm một

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

và thông điệp được gửi đến gmail, nhưng nó nằm trong thư mục thư rác.

Mục tiêu của tôi là có thể tạo thông điệp email và để chúng xuất hiện trong Hộp thư đến thông thường! Theo tôi hiểu Postfix / Gmail, có thể định cấu hình Postfix để gửi / chuyển tiếp thư qua người dùng được xác thực / hợp lệ bằng cổng 587, điều này sẽ không còn bị coi là thư rác.

Tôi đã thử một số thông số dựa trên các trang web / bài viết khác nhau từ 'mạng, không có may mắn. Một số bài báo, thực sự có vẻ mâu thuẫn với các bài viết khác! Tôi cũng đã xem qua các bài đăng stacflow về điều này, nhưng tôi vẫn còn thiếu một cái gì đó ... Cũng đã nói chuyện với một vài người trên IRC (Centos / Postfix) và vẫn còn thắc mắc ..

Vì vậy, tôi sẽ chuyển sang Serverfault, một lần nữa!

Nếu có ai đó quản lý để thực hiện điều này, bạn có phiền khi đăng main.cf, sasl-passwd và bất kỳ tệp conf nào khác mà bạn sử dụng để làm việc này không! Nếu tôi có thể xem lại các tệp cấu hình của bạn, tôi hy vọng có thể thấy nơi tôi đã làm hỏng và tìm ra cách khắc phục sự cố.

Cảm ơn bạn đã đọc nó, và bất kỳ trợ giúp / gợi ý bạn cung cấp!

ps, nếu có một bài đăng stackflow nói về điều này mà tôi có thể đã bỏ lỡ, hãy thoải mái chỉ ra cho tôi!

-tom

Câu trả lời:


16

Mặc dù tôi chưa thử chuyển tiếp qua nhà cung cấp bằng cổng gửi (587) nhưng điều đó là có thể. Để bật Postfix để chuyển tiếp, bạn sẽ cần thiết lập một tệp có thông tin xác thực để sử dụng và thực hiện một số sửa đổi cho /etc/postfix/main.cftệp cấu hình của mình .

Đầu tiên là thông tin xác thực. Đối với điều này, tôi chỉ cần sử dụng /etc/postfix/sasl_passwdmà tôi thêm dòng thích hợp bằng cách sử dụng mẫu:

smtp.provider.com    smtp_user:smtp_passwd

Bạn sẽ muốn chắc chắn rằng tệp này được bảo vệ vì vậy tôi khuyên bạn nên root:rootquyền sở hữu và 0600quyền được đặt trên nó. Sau đó, bạn sẽ muốn chạy như sau để tạo phiên bản ánh xạ băm dưới dạng root.

postmap hash:/etc/postfix/sasl_passwd

Với mục đích này, hãy chú ý, /etc/postfix/main.cfbạn có thể tìm thấy một số giá trị đã được đặt, do đó bạn sẽ cần thay đổi chúng cho phù hợp nhưng các chi tiết quan trọng như sau:

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

Những thứ này sẽ cho phép Postfix có thể sử dụng tệp sasl_passwd để xác thực khi gửi thư. Sau đó, bạn sẽ cần nói với Postfix rằng nó nên sử dụng nhà cung cấp để gửi thư bằng cách thêm cấu hình

relayhost = smtp.provider.com:port

Theo mặc định, Postfix giả định cổng 25 nếu bạn không chỉ định và điều này đã hoạt động với tôi trong quá khứ. Với thiết lập được yêu cầu của bạn, bạn sẽ cần chỉ định 587 làm cổng. Như đã nói, tôi không chắc liệu bạn có cần sửa đổi mục nhập sasl_passwd smtp.provider.com:587thay vì chỉ đơn giản smtp.provider.comlà tôi đã không thử làm điều này qua một cổng không mặc định trước đó hay không, vì vậy bạn sẽ phải tự mình thử.

Chỉ riêng các bước cấu hình này đang xử lý chuyển tiếp thư trên một số máy chủ tôi duy trì thông qua máy chủ thư trung tâm.

Cập nhật để bao gồm ví dụ làm việc đầy đủ

Thực tế hóa ra tôi đã cấu hình máy tính xách tay Ubuntu (dựa trên Debian) của mình để sử dụng cổng 587 trên nhà cung cấp email của tôi (không phải Gmail) vì nhà cung cấp DSL của tôi chặn lưu lượng truy cập cổng ngoài 25. Tôi đã cập nhật để sử dụng một trong các tài khoản Gmail của mình để gửi thư đi. Thay đổi duy nhất tôi cần thực hiện

Tôi đang làm lu mờ dữ liệu cá nhân nhưng nếu không dán như-là làm việc cấu hình cho Postfix.

Đầu tiên chúng ta có /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 =

Tiếp theo chúng ta có /etc/postfix/sasl_passwd:

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

Sau đó tôi đã chạy phiên SMTP sau:

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.

Sau đó, tôi đăng nhập vào myotherusernametài khoản Gmail của mình và đọc tin nhắn:

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

Bây giờ đã cho thấy 13 năm làm quản trị viên hệ thống của tôi không bị lãng phí, tôi có email gửi từ máy tính xách tay của mình qua Gmail mà không cần phải tạo chứng chỉ x.509 tự ký như những người khác sẽ nói với bạn. Việc bổ sung quan trọng cho /etc/postfix/main.cfsmtp_tls_security_level thiết lập để có thể nói với Postfix rằng nó không quan trọng để ban hành STARTTLS lệnh khi kết nối với MTA khác nếu nó hỗ trợ TLS. Nếu bạn quên cài đặt smtp_tls_security_level, bạn có thể thấy một mục trong /var/log/mail.logdòng của bạn:

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

Tuy nhiên với nó được đặt đúng, bạn sẽ thấy một cái gì đó dọc theo dòng:

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)

Xin chào Jeremy ... Cảm ơn bạn đã trả lời. Một số câu hỏi. Tôi đã thấy các bài đăng trên mạng có smtpd _... params .. Tôi không cần những thứ đó. Ngoài ra, một số bài báo, có / đề cập đến certs TSL .. tôi có cần phải đối phó với những điều đó không? cảm ơn!!
tom smith

các thông số smtpd _... dành cho Postfix dưới dạng máy chủ ... Trong trường hợp chuyển tiếp đến Smarthost Postfix đang hoạt động như một ứng dụng khách sử dụng các thông số smtp _....
Jeremy Bouse

1
Gravyface, rõ ràng bạn không biết bạn đang nói về cái gì. Tôi khuyên bạn nên đọc lên trên SMTP & TLS / SSL / x.509 một chút vì bạn thiếu kiến ​​thức về vấn đề này.
Jeremy Bouse

1
felipe-alfaro.org/blog/2009/05/10/ từ ... Đoạn thứ hai lặp lại ý kiến ​​của riêng tôi ...
Jeremy Bouse

1
Cảm ơn vì đã xóa nó, Jeremy. Tôi luôn nghĩ có một chút kỳ lạ là bạn phải ký vào chứng chỉ của riêng mình, nhưng trong sự vội vàng của tôi (và trong nhiều bài viết / hướng dẫn tôi đã thấy) tất cả họ đều nói là làm như vậy. Sống và học hỏi.
gravyface
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.