Fetchmail でも, SSL を使用して通信を暗号化できる.
注意しなければいけないのは, 設定ファイルに
sslcertck
を書いておく事.
これをしていないと, 中間者攻撃に脆弱になってしまう.
証明書の検査に関して, fetchmailの振舞いを試してみた.
(証明書のチェックで失敗させるため, CommonName を不一致にさせて実験した.)
以下が使用した
.fetchmailrc
set postmaster hoge
set nobouncemail
poll imap.example.com
protocol imap
user hoge
password 1234
ssl sslcertck
flush
no mimedecode
smtphost localhost
is hoge@example.org
sslcertck を書いておいた場合.
証明書のチェックで問題があると, 以下のようにエラーになって止まる.
$ fetchmail -v
fetchmail: 6.3.17 は example.com とプロトコル IMAP を用いて 2014年08月14日 xx時xx分xx秒 に交信しています。交信が開始されました。
xx.xx.xx.xx/993 へ接続しようとしています...接続しました。
fetchmail: サーバ証明書:
fetchmail: 発行元の組織: HogeSign, Inc.
fetchmail: 発行元の CommonName: HogeSign Class 3 International Server CA - G3
fetchmail: Subject CommonName: imap.example.com
fetchmail: サブジェクトの別名: imap.example.com
fetchmail: サーバの CommonName が一致しません : imap.example.com != example.com
fetchmail: xx.xx.xx.xx の key fingerprint は次の通りです。: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
140276599748424:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed:s3_clnt.c:1170:
fetchmail: SSL による接続に失敗しました。
fetchmail: socketエラーが hoge@example.com よりメールを受信している最中に発生しました。
fetchmail: 6.3.17 は xx.xx.xx.xx とプロトコル IMAP を用いて 2014年08月14日 xx時xx分xx秒 に交信しています。交信が終了しました。
fetchmail: Query status=2 (SOCKET)
fetchmail: 通常の終了です。status 2
sslcertck を書いていない場合, 証明書に問題があっても, そのまま通信を行なってしまう. (従って, ユーザ名やパスワードが漏れてしまう.)
fetchmail: 6.3.17 は example.com とプロトコル IMAP を用いて 2014年08月14日 xx時xx分xx秒 に交信しています。交信が開始されました。
xx.xx.xx.xx/993 へ接続しようとしています...接続しました。
fetchmail: サーバ証明書:
fetchmail: 発行元の組織: HogeSign, Inc.
fetchmail: 発行元の CommonName: HogeSign Class 3 International Server CA - G3
fetchmail: Subject CommonName: imap.example.com
fetchmail: サブジェクトの別名: imap.example.com
fetchmail: サーバの CommonName が一致しません : imap.example.com != example.com
fetchmail: example.com の key fingerprint は次の通りです。: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
fetchmail: 警告:接続は保護されていません、続けます。(--sslcertckの使用をお勧めします!)
fetchmail: IMAP< * OK .
fetchmail: IMAP> A0001 CAPABILITY
fetchmail: IMAP< * CAPABILITY IMAP4rev1 NAMESPACE IDLE LITERAL+ UIDPLUS QUOTA AUTH=LOGIN
fetchmail: IMAP< A0001 OK .
fetchmail: IMAP> A0002 LOGIN "hoge" *
...
正常な通信の場合.
fetchmail: 6.3.17 は imap.example.com とプロトコル IMAP を用いて 2014年08月14日 xx時xx分xx秒 に交信しています。交信が開始されました。
49.102.153.235/993 へ接続しようとしています...接続しました。
fetchmail: サーバ証明書:
fetchmail: 発行元の組織: HogeSign, Inc.
fetchmail: 発行元の CommonName: HogeSign Class 3 International Server CA - G3
fetchmail: Subject CommonName: imap.example.com
fetchmail: サブジェクトの別名: imap.example.com
fetchmail: imap.example.com の key fingerprint は次の通りです。: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
fetchmail: IMAP< * OK .
fetchmail: IMAP> A0001 CAPABILITY
fetchmail: IMAP< * CAPABILITY IMAP4rev1 NAMESPACE IDLE LITERAL+ UIDPLUS QUOTA AUTH=LOGIN
fetchmail: IMAP< A0001 OK .
fetchmail: IMAP> A0002 LOGIN "hoge" *
fetchmail: IMAP< A0002 OK .
...