使用 postfix 如何避免 550「中繼被拒絕」?

使用 postfix 如何避免 550「中繼被拒絕」?

我一直在使用 fetchmail 和 postfix長的是時候從我的私人 Linux 盒子接收和發送電子郵件了。我的ISP被收購合併了好幾次,但原來的SMTP主機始終保持工作。現在我必須切換到一個新的主機來發送郵件(mail.o2mail.de),而這個主機不允許我發送郵件:

550 5.7.1 <RECIPIENT>... Relaying denied: You must check for new mail before sending mail. (in reply to RCPT TO command)

因此伺服器希望我在發送外發郵件之前檢查傳入郵件。如果我理解正確的話,此工作流程適用於 Windows LiveMail 或 KMail 等桌面郵件程序,它們實際上總是在同一會話中接收和發送電子郵件。但我從來沒有這樣做過,而且我不知道如何做(我透過 fetchmail 輪詢接收郵件,而且仍然工作正常)。

我想我可以使用提供者的網路郵件介面,或是切換到獨立的電子郵件用戶端;但是我喜歡使用 emacs 和 VM 傳送和接收電子郵件。我喜歡 emacs 編寫文字的強大功能,喜歡 grep 純文字信箱,喜歡能夠使用 elisp 設定使用者體驗...

我可能很守舊,但有沒有辦法讓我繼續用自己喜歡的方式做事呢?能否以某種方式使 postfix 表現得像那些新奇的一體化電子郵件程式之一?我應該輸入什麼內容/etc/postfix/main.cf才能讓我的提供者接受我的外發郵件?

編輯我嘗試過的事情不成功:

  • 使用連接埠 465:收到錯誤“客戶端包裝模式(連接埠 smtps/465)未實現;相反,使用 STARTTLS 發送到(連接埠提交/587)”
  • 按照說明使用連接埠 587:這會導致與使用連接埠 25 完全相同的「中繼被拒絕」錯誤。

我無法快速解除與 ISP 的合約(幾年,而不是幾個月)。我有一個gmail位址,雖然我很少使用它。我可以使用 Google 的服務來傳送電子郵件postfix嗎?

編輯事實證明,只有當使用者以純文字方式連線時才會出現「中繼被拒絕」的情況。透過告訴 postfix 透過 ssl 連接並提供我的帳戶憑證,遠端伺服器足夠信任我,可以接受我發給任何人的消息。 (唯一的困惑是為什麼他們以前的伺服器首先接受純文字登錄,現在對我來說這似乎非常不安全。)

所以解決方案本質上是添加

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

/etc/postfix/main.cf提供該文件中的登入憑證。

答案1

這是一個信任問題,中繼表示您連接的郵件主機會將您的郵件傳送到其他網域。有兩種方法可以使其工作:將您的電腦新增至郵件主機的設定中,或使用每個使用者的其他驗證(使用者名稱/密碼)如果您可以使用此郵件主機從桌面傳送郵件,請嘗試在postfix 中設定身份驗證。

相關內容