Postfix

如何使用後綴避免 550“中繼被拒絕”?

  • November 5, 2016

很長一段時間以來,我一直在使用 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 編寫文本的強大功能,我喜歡 grepping 純文字郵箱,我喜歡能夠使用 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在該文件中提供登錄憑據。

這是一個信任問題,中繼意味著您連接的郵件主機會將您的郵件發送到其他域。有兩種方法可以使它工作:將您的機器添加到郵件主機的配置中,或者使用每個使用者的其他身份驗證(使用者名/密碼)如果您可以從桌面使用此郵件主機發送郵件,那麼嘗試在 postfix 中配置身份驗證.

引用自:https://unix.stackexchange.com/questions/319124