StoneでPOP3をPOP3Sに変換だ
メールを暗号化したい
外部のメールサーバから受信する場合、POP3を使った場合丸見えになってしまう。POP3sが使用可能なんだが、POP3sを使うとウイルスバスター君が対応してくれない・・・。どうにかならないかと考え、調べてみた。
パケットリピータのStone
Stoneというのがあって、この機能自体は単なるパケット中継だがSSLに対応している。これを使えば、PCからはPOP3で自宅サーバにアクセスしてその先はStoneでPOP3sでアクセスが可能になる。これで、外部はSSLで暗号され内部はPOP3なので、バスター君も働いてくれるようになる。

インストール
OpenSSLが入っていない場合はライブラリなどいろいろ入れる必要があります。今回はOpenSSLが使える前提で話を進めます。インストールはいつもの。
apt-get install stone
コマンド書式
簡単に書くと、こんなん。
stone [オプション] 転送先:dpost 転送元:sport
オプション
| オプション | 内容 |
|---|---|
| -d | デバッグレベルを増加 |
| -z | SSL暗号化 |
| -n | ホスト名やサービス名の代わりに IP アドレスやサービス番号を表示 |
| -u | 同時に記憶できる UDP パケットの発信元の最大数を指定(デフォルト:10) |
| -f | 子プロセスの数を指定します。デフォルトは子プロセス無し |
| -l | エラーメッセージ等を syslog へ出力 |
| sport/udp | TCP パケットを中継する代わりに、 UDP パケットを中継 |
| sport/ssl | SSL で暗号化されたパケットを復号化して中継 |
| sport/http | http リクエスト上のパケットを中継 |
| sport/proxy | http 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