使用offlineimap時如何發送郵件?
我只使用過像 Thunderbird 這樣的 GUI 郵件客戶端,並且想嘗試將 offlineimap 與 alpine 一起使用。但是,我對這一切如何联系在一起感到困惑。
據我了解:
一旦我使用我的帳戶配置了offlineimap,它將轉到每個相應的伺服器並使用 IMAP 將我的郵件鏡像到本地文件夾,例如
~/mail/gmail
. 大概我可以使用任何郵件客戶端來閱讀這些電子郵件,如果我對它們進行更改(例如標記為已讀或在文件夾之間移動),它們將在下次離線 imap 同步時被推送到伺服器。但是發送郵件呢?我對電子郵件的工作方式有點模糊,但是,它看起來像:
IMAP 僅用於下載/上傳要儲存在我的郵件提供商伺服器上的郵件。所以IMAP實際上不能發送郵件。郵件使用 SMTP 發送。在許多客戶端中,當您點擊“發送郵件”時,實際發生的是您撰寫的郵件通過 SMTP 發送*,並且*郵件客戶端將郵件的副本保存到您帳戶的“已發送”文件夾中,該文件夾將被傳播通過 IMAP。
所以我的問題是:
- 我上面的理解正確嗎?
- 如果我使用offlineimap,誰會真正通過SMTP 發送我的外發郵件?我是否會設置一些單獨的“發送電子郵件”程序,該程序會定期檢查我的“傳出”文件夾並通過 SMTP 發送其中的所有內容(它如何知道要使用哪個 SMTP 伺服器和帳戶)?或者我還需要在 alpine 中設置 SMTP 伺服器/憑據嗎?
是的,IMAP 是一種訪問儲存在另一台機器上的郵箱內容的協議,它與電子郵件發送、路由和傳遞本身無關。
SMTP 是通過網路發送電子郵件的協議。
要發送電子郵件,您可以將它們送出到您機器上的本地郵件伺服器,前提是有一個並且已正確配置為接受和路由電子郵件,在這種情況下,可以通過 SMTP 或使用
sendmail
命令完成,或者將其送出到另一台郵件伺服器通過網路。您可以將本地郵件伺服器(exim、postfix…)配置為直接向收件人發送電子郵件,但是現在,您發送的那些電子郵件可能會被收件人伺服器視為垃圾郵件,尤其是如果您自己的地址來自一個已知的電子郵件提供商,所以不推薦。
如果您通過 IMAP 訪問您的郵箱,而不是訪問您電腦上的本地郵箱,其中郵件由本地郵件伺服器傳遞,則表明您的電子郵件是由某些第三方郵件提供商處理的。除了 imap 訪問之外,這些電子郵件提供商還會提供伺服器的地址,您可以在經過身份驗證後向該地址送出電子郵件。
理論上,您可以配置您的本地郵件伺服器,以便它通過該提供商的 smtp 伺服器將電子郵件中繼給外部收件人,使用您自己的系統上所有使用者的憑據,但您可能會說這聽起來是個壞主意,即使只是從問責制的觀點。
最好讓您系統上的每個使用者配置他們的郵件使用者代理(他們的郵件客戶端應用程序,無論是 Thunderbird、evolution 還是 mutt/pine/mailx…),以將所有電子郵件直接送出給他們的郵件提供商,每個郵件都有自己的憑據.
您需要確保啟用了加密。通常,此類電子郵件送出是通過 SMTP 完成的,但使用埠 587(相應的服務稱為
submission
)而不是為郵件中繼保留的 25,並且使用 STARTTLS SMTP 命令啟用加密。通常也可以通過 TCP 埠 465 (smtps
) 上的 TLS 直接聯繫郵件送出伺服器。每個 MUA 都有自己的方式來配置郵件發送。例如,使用
mutt
,您可以添加:set smtp_url="smtps://user:password@smtp.provider.example"
或者:
set smtp_url="smtp://user:password@smtp.provider.example:587"
(並確保
ssl_force_tls
和ssl_starttls
設置yes
為應該是預設值)。到您的
~/.muttrc
(或更安全地配置它以從某個安全的密碼庫中獲取密碼)。