Wiki内検索
メニューバーA
タグ
心に残る名言集
最近更新したページ
2013-03-24
2012-12-28
2012-11-23
2011-12-28
2011-12-10
2011-11-04
2011-05-04
2010-08-01
2010-07-29
2010-07-27
2010-06-15
2010-05-22
2010-05-06
2010-04-01
2010-03-28
2010-03-25
2010-03-12

20070502

RubyでPOPクライアント

RubyのPOP3を扱うライブラリを使ってメールの受信を試みるが、ここのサンプル通りにやってみたところ
pop.start
ではねられる。APOPで試してもだめ。受信できるメーラの設定を見ると"SSLを使用する"がONになっていたので、どうやらPOPサーバが「POP over SSL」を要求しているようだ。
でその対応をRubyだけでできるかというと1.8系では未対応のようだ(1.9系では対応される予定?)。
さらに調べると、SSL非対応のPOPクライアントをSSL対応サーバに対して使うには「SSL Proxy」を使えばいいということがわかった。
  • 追記
    ポート995を使う時点で「POP over SSL」のようだ。

stunnel

「SSL Proxy」のためにstunnelを導入する。
インストールはsynapticで実施。stunnel.confという設定ファイルを書くようだが格納場所がわからない。調べたところ、どこでもよくstunnelの起動時に引数として与えればよいようだ。
sudo stunnel stunnel.conf
とやってもうまくいかない。なんとなくstunnelのバージョンを調べるとVer3代、最新版はVer4代、どうやらインストールしたバージョンが古かった予感。synapticを見ると「stunnel4」があったのでそちらをインストールしなおした。すると/etc/stunnel/stunnel.confが作成されていた。
デフォルトから変更したものだけを書いておく。
cert = /etc/stunnel/stunnel.pem
client=yes ;←デフォルトでyesだったかも。またはコメントアウトされていたかな。

[pop3s]
accept = localhost:110 ;メーラの設定はこちらを指定する。
connect = pop.gmail.com:995

[ssmtp]
accept = localhost:25 ;メーラの設定はこちらを指定する。
connect = smtp.gmail.com:465

次にどうやら証明書を作らないとダメらしい。stunnelを説明しているサイトによっては、証明書の説明が何も無いところもあったので無くてもいいのかと思って試していたがダメだった。で、証明書の作り方についてはインストールされたREADME( /usr/share/doc/stunnel4/README.Debian)の通りにやった。
  1. /etc/default/stunnelを編集しENABLE=1へ。
  2. edit /etc/stunnel/stunnel.confを希望する設定へ編集(上述)。
  3. openssl req -new -x509 -nodes -days 365 -out stunnel.pem -keyout stunnel.pem を実行。
    • このときにいろいろ証明書に必要な内容を聞かれるが、とりあえずテストなので全部デフォルトにした^^;どのような内容を聞かれるかはここ参照。
  1. chmod 600 stunnel.pem アクセス権を変更。
  2. dd if=/dev/urandom of=temp_file count=2 次の手順で必要なテンポラリファイルを生成。
  3. openssl dhparam -rand temp_file 512 >> stunnel.pem
最後にリンクする場合のことが書かれていたけど、stunnel.confで直接指定するのでやらなかった。

実行してテストしてみる。
sudo stunnel
とやっても、
sudo stunnel /etc/stunnel/stunnel.conf
とやっても、
次のメッセージが表示されどうやらうまく動かない。
inetd mode must define a remote host or an executable
しょうがないのでコマンドラインの引数に直接指定してみたところ動いた。設定ファイルが有効になってない?
stunnel -c -d 127.0.0.1:ポート -r リモートホスト:ポート
telnetを使ってテストする。ロカールのポートに接続してリモートに転送されればOK。
telnet 127.0.0.1 110

参考

トンネル掘削機:各ソフトウェアの特徴や比較等がある。
http://old.netsecurity.ne.jp/article/3/2744.html:stunnelの一部の引数の説明

インストールの管理

Ubuntuを使っているとインストールを管理するツールとしてapt/dpkg/synaptic/aptitudeが出てきた。それぞれの関係はどうやらこんな感じ。
( synaptic > aptitude ) == apt > dpkg
  • synaptic:GUIベースのaptフロントエンド
  • aptitude:テキストベースのaptフロントエンド
    フルスクリーンモード有り
  • apt:dpkgの機能に加え、依存関係等も処理してくれる。
  • dpkg:基本的なパッケージ管理機能の提供
  • 番外
    • アプリケーションの追加と削除:synapticの一部?基本的にこれでいけるはずなんだけど、リポジトリに登録したものがsynapticやaptitudeでは検索にヒットするのに、こちらではヒットしないなどちょっと怪しい。

新規リポジトリの追加方法

デフォルトで登録されているリポジトリには無いソフト(パッケージ)をインストールする際の手順。
1.リポジトリリストに追加したいソフトが登録されているリポジトリを追加する。
リストは
/etc/apt/sources.list
2.パッケージリストを更新する。
sudo aptitude update
3.検索でヒットすることを確認する。
sudo aptitude search hoge
4.インストールする。
sudo aptitude install hoge

インストール済み一覧の表示

aptitudeでやる方法を探したが見つからず。んー、できないのかなあ。
dpkg -l

参考

http://ja.wikipedia.org/wiki/Debian
http://debian.fam.cx/?AptGet#content_1_13
aptitudeユーザマニュアル
2007年11月11日(日) 17:30:57 Modified by n0gam0ga




スマートフォン版で見る