Email

如何啟用 SMTP 轉發?

  • September 3, 2017

我正在使用執行 linux (Ubuntu 16.04) 的大學伺服器。我正在嘗試使用此伺服器發送電子郵件(使用 python,下面的程式碼),但顯然傳出 SMTP 連接被阻止(我這麼說是因為程式碼在我的 mac 上工作,它隻掛在伺服器上)。有什麼辦法可以解除他們的封鎖嗎?

當然,我問過我的系統管理員,但我想在此期間我可能會做一些事情。我已經必須添加導出才能使伺服器連接到網際網路;特別是我將其添加到.bash_profile

export https_proxy='...'
export http_proxy='...'

很可能我必須這樣做才能使其工作?我在一個網頁(來自大學)上讀到,我需要“啟用 SMTP 身份驗證(SMTP AUTH)”才能發送電子郵件。但是在網上看並沒有帶來任何有用的東西。啟用 SMTP AUTH 意味著什麼?連接到電子郵件伺服器時是否意味著使用安全連接進行連接?

這是我用來發送電子郵件的 python 程式碼:

server = smtplib.SMTP_SSL(smtp_ssl_host, smtp_ssl_port) <--- this is where is hangs
server.login(username, password)
server.sendmail(username, targets, msg.as_string())
server.quit()

作為說明,我正在使用我的 yandex 帳戶發送這些電子郵件

正如我在評論中提到的,確實有幾個問題被問到。我將在這裡稍微談談埠 25 的問題。

埠 25 是標準的未加密SMTP 埠,系統管理員配置組織的防火牆以阻止該埠上的出站流量是很常見的。這樣做主要有兩個原因:

  1. 防止惡意軟體、流氓軟體、垃圾郵件發送者等出於惡意目的發送電子郵件。
  2. 防止合法使用者通過未加密的渠道發送電子郵件。

第二種假設管理員允許授權使用者通過加密連接(例如使用 SSL/TLS)發送電子郵件。安全出站 SMTP 的標準埠是 587。如果在您的情況下這是允許的,那麼這可以解決您的問題。通過埠 587 與您的 SMTP 中繼伺服器建立加密連接。您必須弄清楚如何在您的程式碼中執行此操作(或詢問如何單獨/在其他地方)。

不幸的是,#1 經常取代 #2,甚至管理員也不允許安全的電子郵件通信。如果是這樣,請檢查您的電子郵件提供商(維護 SMTP 中繼的人)是否接受備用埠上的流量。例如,有些人會提供使用埠 10025 的選項。或者,有第三方電子郵件提供商可以轉發電子郵件。也就是說,他們在埠 10025 上接受電子郵件,然後簡單地將其轉發到埠 25 上的主要提供商的中繼。這是一個範例,我的搜尋出現的第一個:“備用埠 SMTP”服務。這個是收費的。您也許可以找到免費提供此功能的人(至少對於小批量)。

或者您的管理員可能允許策略有特殊例外。例如,如果您為一家公司工作並證明訪問對業務至關重要,他們可能會允許 25/587 上的流量用於有限數量的原始主機和/或特定 SMTP 中繼地址。

如果您仍然沒有成功,那麼您的下一個最佳選擇可能是 SSH 隧道。您將需要訪問防火牆外執行 SSH 伺服器(例如 sshd)的某些機器。然後,您可以設置一種特殊類型的連接,該連接偵聽一個埠並將出站轉發到某處另一台主機上的另一個埠。我不會詳細介紹如何做到這一點,因為網上已經有很多描述了。

**更新:**我應該補充一點,如果您在未與管理員討論的情況下使用備用埠或設置 SSH 隧道,他們稍後會發現他們可能看起來不太友好。如果他們不高興,你可以吻別那個選項。另一方面,如果您提前與他們討論,他們可能會徹底禁止。你必須權衡你的選擇。只要您所做的事情不會對安全性產生負面影響,合理的管理員就可以接受。不過,它們並不都是合理的。:)

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