
Postfix 拒絕以中繼主機發送電子郵件。它一直在說:
連接到 mydomain.com[xxx.xx.xxx.xxx]:25: 連線被拒絕
但是連接埠 25 是開放的:
sudo netstat -ntlp
tcp 0 0 127.0.0.1:33060 0.0.0.0:* LISTEN 39162/mysqld
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 57910/proftpd: (acc
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 614/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 762/sshd: /usr/sbin
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 70265/master
tcp6 0 0 :::3306 :::* LISTEN 39162/mysqld
tcp6 0 0 :::80 :::* LISTEN 61217/apache2
tcp6 0 0 :::22 :::* LISTEN 762/sshd: /usr/sbin
tcp6 0 0 ::1:25 :::* LISTEN 70265/master
tcp6 0 0 :::443 :::* LISTEN 61217/apache2
我不知道這個問題從何而來。
有人能幫我嗎 ?
答案1
您的中繼主機需要身份驗證。也就是說,您需要證明您可以透過此中繼主機發送郵件。通常,中繼主機操作員會向您提供憑證(一些登入名稱和密碼),您可以在 Postfix 中設定這些憑證,以便在與中繼主機通訊時使用。
SMTP 用戶端驗證的設定(當您的 Postfix 與中繼主機(即 SMTP 伺服器)對話時使用)在Postfix SASL 指南。就是這樣:
在後綴中main.cf
:
relayhost = [relay.host.name]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
第一行設定中繼主機,第二行啟用身份驗證,第三行指定儲存每個中繼主機憑證的檔案 - 即/etc/postfix/sasl_passwd
.在該文件中,您輸入:
[relay.host.name] username:password
始終postmap /etc/postfix/sasl_passwd
在更改此文件以及postfix reload
編輯main.cf
.也要限制對此文件的訪問,因為它包含敏感資訊:
chmod 0600 /etc/postfix/sasl_passwd
chown root:root /etc/postfix/sasl_passwd
請注意,如果您的中繼主機期望您在另一個連接埠上提交(例如,當我必須設定中繼主機時,我在連接smtp submission
埠上進行了操作tcp/587
),您需要在檔案relayhost = [relay.host.name]:submission
中main.cf
和相同的檔案中指定這一點sasl_passwd
。
Postfix SMTP 用戶端不支援「直接 SMTPS」(他們稱之為「wrappermode」),其中 SMTP-over-SSL 伺服器期望直接在連接埠上進行 SSL 握手tcp/465
(就像 Google 所做的那樣)。它僅支援使用 STARTTLS 命令啟動通過連接埠 25 或 587 的 TLS。
答案2
Connection refused
表示給定介面上的給定連接埠上沒有任何內容正在偵聽。且您的 netstat 輸出顯示連接埠 25 僅在127.0.0.1
環回介面上偵聽。
如果您嘗試從另一台電腦存取它,則無法存取它。
要讓 Postfix 偵聽您需要變更的所有接口inet_interfaces
:
inet_interfaces = all
如果您有多個介面且不希望它偵聽所有接口,您也可以提供應偵聽的以逗號分隔的 IP 位址清單。