StoneでPOP3をPOP3Sに変換だ

メールを暗号化したい

外部のメールサーバから受信する場合、POP3を使った場合丸見えになってしまう。POP3sが使用可能なんだが、POP3sを使うとウイルスバスター君が対応してくれない・・・。どうにかならないかと考え、調べてみた。

パケットリピータのStone

Stoneというのがあって、この機能自体は単なるパケット中継だがSSLに対応している。これを使えば、PCからはPOP3で自宅サーバにアクセスしてその先はStoneでPOP3sでアクセスが可能になる。これで、外部はSSLで暗号され内部はPOP3なので、バスター君も働いてくれるようになる。
Stone概要図

インストール

OpenSSLが入っていない場合はライブラリなどいろいろ入れる必要があります。今回はOpenSSLが使える前提で話を進めます。インストールはいつもの。

 apt-get install stone

コマンド書式

簡単に書くと、こんなん。

 stone [オプション] 転送先:dpost 転送元:sport

オプション

オプション内容
-dデバッグレベルを増加
-zSSL暗号化
-nホスト名やサービス名の代わりに IP アドレスやサービス番号を表示
-u同時に記憶できる UDP パケットの発信元の最大数を指定(デフォルト:10)
-f子プロセスの数を指定します。デフォルトは子プロセス無し
-lエラーメッセージ等を syslog へ出力
sport/udpTCP パケットを中継する代わりに、 UDP パケットを中継
sport/sslSSL で暗号化されたパケットを復号化して中継
sport/httphttp リクエスト上のパケットを中継
sport/proxyhttp proxy
dport/sslパケットを SSL で暗号化して中継

実行コマンド

今回の環境だと以下の様になる。

 stone mail_server:995/ssl myserver:110

さらにオプションでログとかつけてやる

 stone -l -f 2 mail_server:995/ssl myserver:110

テスト

上のコマンドを実行してPCからメールを受信してみる。今までPOP3が「mail_server」になっている所を、「myserver」と自分の自宅サーバに設定して実行。

起動スクリプト

こんな感じで書いてみた。/etc/init.d/に置いてupdate-rc.dで登録する。

 #! /bin/sh
 
 DAEMON=/usr/bin/stone
 #外部メールサーバ
 MAIL_SERVER=xxx.xxx.xxx.xxx
 #自宅サーバ
 MYHOST=192.168.110.101
 OPTION="-l -f 2 ${MAIL_SERVER}:995/ssl ${MYHOST}:110" 
 PIDFILE=/var/run/stone.pid
 
 case "$1" in
         start)
                 echo -n "Starting Stone daemons:"
                 start-stop-daemon -bm --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $OPTION
                 echo "."
                 ;;
         stop)
                 echo -n "Stopping Stone daemons: "
                 start-stop-daemon --stop --quiet --pidfile $PIDFILE
                 rm -f $PIDFILE
                 echo "."
                 ;;
         restart)
                 $0 stop
                 sleep 1
                 $0 start
                 ;;
         *)
                 echo "Usage: $0 {start|stop|restart}"
                 exit 1
                 ;;
 esac
 
 exit 0 

debian Valid HTML 4.01 Strict [VALID RSS!]