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.cf
tệ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_passwd
mà 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:root
quyền sở hữu và 0600
quyề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.cf
bạ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:587
thay vì chỉ đơn giản smtp.provider.com
là 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 myotherusername
tà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.cf
là smtp_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.log
dò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)