2012-03-01 更新
找到更通用的作法, 用 Python 的 smtplib, 細節見 segfault.in » Sending Emails Via Gmail SMTP With Python。
( 之前寫的舊方法 )
用命令列寄信好處多多, 像是程式掛的時候寄個信通知自己。但若又懶得自己架個 mail server, 可以透過 gmail 幫忙寄信。安裝
參考這篇設定 ~/.mailrc 和 ~/.msmtprc。這篇有更詳細的 msmtp 設定。之後用命令列的 mail 寄信時就會透過設好的 gmail client 寄信。簡記過程如下。$ sudo aptitude install heirloom-mailx msmtp $ vim ~/.mailrc # 見下文 $ vim ~/.msmtprc # 見下文 $ chmod 600 ~/.msmtprc $ echo "Hello, world!" | mail -s "Test from command line" somebody@somedomain.org
~/.mailrc
set from="YOURNAME@gmail.com (YOURNAME)" set sendmail="/usr/bin/msmtp" set message-sendmail-extra-arguments="-a gmail"
~/.msmtprc
defaults logfile /home/USER/msmtp.log # gmail account account gmail auth on host smtp.gmail.com port 587 user YOURNAME@gmail.com password YOURPASSWORD from YOURNAME@gmail.com tls on tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt # set default account to use (not necessary with single account) account default : gmail
可能遇到的問題
msmtp: no recipients
mail 裝到mailutils。移掉它改裝 heirloom-mailx。msmtp: TLS certificate verification failed: the certificate hasn't got a known issuer
用到舊的 certificate, 參照 msmtp 設定, 在 ~/.msmtprc 裡這麼設 tls_trust_file:tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt這檔案本來就在我的系統裡, 不知是 Ubuntu 裝好時就有還是之前裝啥東西時一併裝進來的。
Dear fcamel,
回覆刪除我照了你的作法設定, 測式寄信到我的gmail信箱.
但是連線到 smtp.google.com 就會 timeout 了.
不知你是否有遇過相同的狀況? 謝謝!
Hi superptt,
回覆刪除我當時沒遇到這問題, 這篇文章有點舊了, 也許後來有些變化就失效了
Dear fcamel,
刪除了解, 謝謝你的回覆.
@superptt, 我有個在 msmtp-1.4.23 確定會動的設定範例在此:
回覆刪除http://itrs.tw/hg/personal-config/file/206e087662de/.msmtprc
你需要改的除:
1. from
2. user
3. password (行首註解要拿掉)
若你用的不是 Fedora / Red Hat 還要改:
4. tls_trust_file
題外話,憑證安裝在 Linux distro 間分裂的特別嚴重。Ubuntu, Fedora, openSUSE certificate 都放在不的地方,甚至用不同格式。想裝個憑證然後讓 nss, openssl 與 gnutls 都會去讀在各個 distro 間也需要不同作法。比 Windows 與 Mac 麻煩的多。 Fedora 本有計畫將全部程式 port 到用 nss, 可惜未竟全工就遇到很多阻力而 stall 住了: http://fedoraproject.org/wiki/FedoraCryptoConsolidation
To Scott,
回覆刪除真是太感謝你了 ^^
Dear Fcamel:
回覆刪除我照您的作法在Linux Mint 13會出現event not found 如下:
egret@power ~ $ echo "Hello, world!" | mail -s "Test from command line" bunjinw@gmail.com
bash: !": event not found
請您指導,感謝