Security

如何使用 fetchmail(或其他電子郵件抓取工具)和 OSX 鑰匙串進行身份驗證?

  • June 13, 2010

我讀過的許多 fetchmail 教程都說將您的電子郵件帳戶密碼明文放在配置文件中是安全的。但是,我更喜歡通過層來確保安全**[愚蠢的例子:如果我的終端啟動並且有人懷疑這種電子郵件愚蠢行為滑過並簡單地輸入“grep -i pass ~/.”然後,哎呀,我所有的基地都屬於給他們!特別是如果我的電子郵件提供商使用 openid(或者我愚蠢到可以為我的銀行使用相同的密碼) ]*。

現在,使用 msmtp(而不是 sendmail),我可以使用 OSX 鑰匙串進行身份驗證。是否有一個免費/開源的電子郵件“抓取工具”可以讓我使用鑰匙串(或者至少可以讓我使用 MD5 密碼)?

如果通過 POP3 檢索郵件對您來說已經足夠了,請查看出色的mpop。它與 msmtp 來自同一作者,並且還支持 OSX 鑰匙串來儲存身份驗證憑據。

對於 IMAP4,您可以使用非常好的OfflineIMAP並使用William Snow Orvis 的 Python hook將其連接到 OSX 鑰匙串。

我個人更喜歡這些工具而不是 fetchmail(由於例如下載速度、功能集、配置),但您的里程可能會有所不同。

從簡單實用的角度來看,是的,您可以使用 Keychain。我強烈建議您閱讀整個security(1)手冊頁,其中包含額外的警告。

您可以使用 Keychain 程序或通過命令行輸入密碼:

# WARNING: exposes password in ps(1), history(1), etc.
$ security add-internet-password -a $USER -s pop3.example.com -w 'Mellon!'

您可以使用以下方法提取它:

# Note: by default, first use will prompt
$ security find-internet-password -s pop3.example.com -a $USER -g

如果您Always Allowsecurity(1)將能夠在沒有進一步提示的情況下提取這些憑據。這可能會給您的系統帶來風險。但是,您可以選擇在啟動之前始終提示您輸入密碼。

最後,使用它,您可以使用fetchmail設置要使用的密碼的跳板腳本來包裝您的呼叫。

user=$USER
server=pop3.example.com
# WARNING: insecure tmpfile creation and usage
# As [DAM][1] mentions, see mkstemp(3)
tmpfile=/tmp/fetchmailrc.$$ 

password=$(security find-internet-password -s $server -a $USER -g 2>&1 \
          | perl -ne '/password: "(\S*)"/ and print $1')

# create temporary fetchmailrc and pass to fetchmail, etc...
cat <<EoF > $tmpfile
poll $server with proto POP3 and options no dns
 user $user with pass '$password' is $user here 
 options keep mda '/usr/bin/procmail -d %T'
EoF

fetchmail -d -f $tmpfile
rm -f $tmpfile

雖然這確實實現了您既定的目標,即沒有明顯的文件與密碼一起放置,但我確實注意到此配置仍然存在安全風險,您應該考慮這一點。

引用自:https://serverfault.com/questions/149452