Email

傳出 smtp 根據 From 地址選擇伺服器

  • July 15, 2020

我使用一個名為 Alpine 的電子郵件客戶端。目前我以幾種不同模式之一啟動它,以便根據我正在做的事情指定傳出 SMTP 伺服器,特別是我希望使用的發件人地址。

更方便的是,如果我可以簡單地指示 Alpine 使用我自己的 SMTP 伺服器(在我的筆記型電腦上),然後它會根據我發送的每條消息的發件人地址選擇一個中繼伺服器。

我希望有人已經在這樣做(鑑於最近收緊了對接受郵件的限制,這似乎應該是一種普遍的需求)並且它並不復雜。

(作為獎勵,我還希望能夠以使用本地伺服器的模式啟動 Alpine,該伺服器等到星期一早上發送消息。)

這可能是同一個問題:根據 From e-mail address 更改 mutt 中的 SMTP 身份驗證,但它很舊,esmtp 上的引用也是如此——我不確定 esmtp 是否與現代安全協議等保持同步。

Alpine 電子郵件客戶端的答案

Alpine 的最新版本是為 Ubuntu 編譯的,帶有許多可用的更新檔,即增強功能,其中包括一個稱為“smtp-rules”的功能。它的文件記錄並不完美,但這就是該.pinerc部分對我來說的樣子。它處理來自我的雇主、母校和兩個 Gmail 身份的電子郵件地址:

# Unfortunately, using gmail's SMTP servers require setting up 2-factor authorization,
# which then allows you to get an "app password" for each account, which can be used
# by Alpine. Instead of doing this, for now I'm using MIT's, which is changing but
# currently letting through my gmail identities
smtp-rules= _FROM_ == {me@McGill.ca} => _SMTP_{smtp.office365.com:587/tls/user=me@mcgill.ca}
smtp-rules= _FROM_ == {someone@gmail.com} => _SMTP_{outgoing-alum.mit.edu:465/ssl/user=me}
smtp-rules= _FROM_ == {anotheridentity@gmail.com} => _SMTP_{outgoing-alum.mit.edu:465/ssl/user=me}
smtp-rules= _FROM_ == {me@alum.mit.edu} => _SMTP_{outgoing-alum.mit.edu:465/ssl/user=me}

對於其他客戶,或使用 Alpine 的其他方式

我沒有測試過 esmtp,因為上面的效果很好,但這似乎是一個替代方案:

  1. 安裝 esmtp
  2. 將 smtp-server 欄位設置為執行檔,/usr/local/bin/esmtp
  3. 在您的~/.esmtprc文件中添加以下內容:
identity joe@mail.com
   hostname mail.server.com:25
   username "joe"
   password "secret"
   starttls enabled
   default
identity joe@gmail.com
   hostname smtp.gmail.com:587
   username "joe@gmail.com"
   password "secret2"
   starttls required

esmtp 部分的參考:使用 eSMTP 為簡單的單使用者系統發送郵件 - TechRepublic

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