Qpopper で SSL を利用する
Qpoppper は Vine Linux に標準でインストールされる POP サーバです。
POP サーバの問題点は ユーザ名やパスワードなどが平文で送受信されるという事が問題です。
APOP という技術を利用すると、ユーザ名とパスワードは暗号化できますが、本文は出来ません。
そこで、よりセキュアーな状態にする為に、本文までも暗号化する SSL を用いる事にしました。
なお、SSL を利用する為には、「 OpenSSL 」というソフトウェアが必要ですが、Vine Linux には標準でインストールされる為、 OpenSSL のインストール方法については割愛します。
ページ内コンテンツ一覧
Vine Linux には標準で Qpopper がインストールされていますが、ソースからリビルドする必要があるので、パッケージをアップデートしなければなりません。
ftp://ftp.jaist.ac.jp/os/linux/Vine/Vine-2.6/SRPMS/SRPMS/ などの FTP サイトから、qpopper-4.0.4-0vl1.src.rpm をダウンロードします。
バージョンはその時々の最新版をお使いになるのが最良と思います。
ダウンロードする場所はどこでも構いません。
私はユーザのホームディレクトリ( /home/user/qpopper-4.0.4-0vl1.src.rpm )にダウンロードしました。
ダウンロードしてきたファイルを展開します。
( -Uvh はパッケージのアップデートを意味します。 )
$ rpm -Uvh qpopper-4.0.4-0vl1.src.rpm
すると、展開を行ったユーザーのホームディレクトリ中に「 ./rpm/SPECS/qpopper.spec 」が作成されています。
この qpopper.spec をエディタで開き以下の部分を編集します。
修正箇所は下記の configure のオプション( 約27行目付近から )の部分です。
%build CFLAGS="$RPM_OPT_FLAGS" ./configure \ --prefix=/usr \ --enable-bulletins=/var/spool/mail/bulletins \ --enable-specialauth \ --with-pam=qpopper \ --with-popuid=pop \ --enable-apop=/etc/pop.auth \ <-- "\"(円マーク)も忘れず追加します。 --with-openssl <-- この行を追加します。 make
編集が出来たら保存し、qpopper.spec から rpm ファイルを作成します。
$ rpm -bb ./rpm/SPECS/qpopper.spec
上記コマンド実行後、RPMSディレクトリ以下のお使いの環境のディレクトリにrpmファイルが出来ているので、
これをインストールします。
$ su <-- root になります
# rpm -Uvh ./rpm/RPMS/i386/qpopper-4.0.4-0vl1.i386.rpm
これで、Qpopper のアップデートは終了です。
前準備はこれでバッチリです。
SSL を使用する時は証明書というモノを認証局という所から発行してもらわなければなりません。
通常、この証明書は第三者機関によって発行すべきモノですが、これは有料です。
単に通信内容を暗号化したいだけなので、証明書も自作してしまいます。
この証明書を自作するという事は、単純に「証明書に信憑性が無い」という事になります。
企業の web サイトならともかく個人のページでわざわざお金出して証明書だしてもらわなくても十分事足ります。
では早速、証明書を発行して行きます。
証明書を格納しておくディレクトリを作成します。
# mkdir /etc/mail/certs
# chown root:mail /etc/mail/certs
# chmod 660 /etc/mail/certs
次に、証明書用のファイルを作成します。
# openssl req -new -nodes -out req.pem -keyout /etc/mail/certs/cert.pem 上記コマンドを実行すると、下記の様に幾つかの質問に答えなければなりません。 Using configuration from /usr/share/ssl/openssl.cnf Generating a 1024 bit RSA private key .............++++++ .............++++++ writing new private key to '/etc/mail/certs/cert.pem' ----- You are ... 途中省略 ... the field will be left blank. ----- Country Name (2 letter code) [AU]:JP JP を指定します State or Province Name (full name) [Some-State]:Shiga 都道府県名を指定します Locality Name (eg, city) []:Moriyama 市町村名を指定します Organization Name (eg, company)[Internet Widgits Pty Ltd]:miloweb.net 組織名を指定 Organizational Unit Name (eg, section)[]:Eigyo1ka 部署名を指定 Common Name (eg, your name or your server's hostname)[]:www.miloweb.net サーバーのホスト名 Email Address []:exampleuser@example.com 管理者のメールアドレス Please enter the following 'extra' attributes to be sent with your certificate request A challenge password[]: 無記入でエンター An optional company name []: 無記入でエンター
上記コマンド実行後、ファイルが作成されますので、そのファイルにアクセス権を与えます。
# chmod 600 /etc/mail/certs/cert.pem
# chown root /etc/mail/certs/cert.pem
作成された証明書を認証します。
# openssl genrsa -des3 -out ca.key 1024
上記コマンドを実行すると、パスワードを聞かれますので、任意のパスワードを入力します。
ここで指定したパスワードは次のコマンドでも使用しますので、忘れない様にして下さい。
# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
先ほど入力したパスワードを再度聞かれますので、入力します。
# openssl x509 -req -CA ca.crt -CAkey ca.key -days 365 -in req.pem -out signed-req.pem -CAcreateserial
上記コマンドを実行すると、またパスワードを聞かれますので入力します。
署名の完成です。
前に作ったcert.pemと結合します。
# cat signed-req.pem >> /etc/mail/certs/cert.pem
以上で証明書の発行作業は終了です。
Qpopper で SSL を利用可能にする為の設定を行います。
まず、独自の設定ファイルを作成する為に、/etc/mail/qpopper.conf というファイルを作成し、以下の内容を入力します。
#vi /etc/mail/qpopper.conf
set tls-support = alternate-port
set tls-server-cert-file = /etc/mail/certs/cert.pem
次に、システムに「 POP は SSL を使用しますよ! 」と宣言すべく、/etc/inetd.conf の57行目付近を編集します。
# vi /etc/inetd.conf
↓ pop-3 の行を残しておくと通常の POP ( 110 番ポート )でのアクセスも可能になります。
pop-3 stream tcp nowait root /usr/sbin/tcpd in.qpopper
↓ SSL 経由の アクセスでは 995 番ポートを使用します。
pop3s stream tcp nowait root /usr/sbin/tcpd in.qpopper -s -f /etc/mail/qpopper.conf
ここまでくると、後はデーモンの再起動だけとなりました。
# /etc/rc.d/init.d/inet restart Stopping INET services: [ OK ] Starting INET services: [ OK ]
以上で POP サーバに SSL 経由でアクセスする事が可能になりました。
この SSL 経由でメールの受信を行うには、ルータの 995 番ポートを開かなければなりません。
また、メーラーの受信サーバのポート番号も 995 番に変更してやならければなりません。