imotenの記事もそろそろ最後かな。
今回は最後の大仕事、SSL化です。
別にしなくてもいいけど、セキュリティレベルを高めるために設定することをお勧めしますが、訳わからん。って人は別にしなくてもかまいません。

ブラウザでのログインよりコンソールプログラムを使って設定することを強くお勧めします。
コンソールでログインする方法はこちら
プログラムの記入があるので、手打ちはキツイです。

※注意

imotenの設定はすでに終了しているものとみなします。

サーバーに新しいプログラムを書きこむので、CPUやメモリ使用率が上がります。
失敗すると最悪使えなくなるかもしれないので注意してください。

SSLとは

ネット上で情報を暗号化し、データを送受信するプロトコル。
Yahoo!メールはSSLで暗号化されているんだけど、送信(SMTP)サーバーはimotenでしているのでSSLで暗号化されていない。
そこで、imotenをSSLに対応させて暗号化してしまおう!という算段です。

サーバーでの設定

さくらインターネットのVPS新プランの場合(CentOS6)

Stunnelをインストールする。

[root@ ~]# yum -y install stunnel エンターキー

これでStunnelがインストールされた。

サーバー証明書を作成

コンソールでサーバーにログインし、certsディレクトリに移動する。

[root@ ~]# cd /etc/pki/tls/certs エンターキー

サーバー証明書の作成

[root@ ~]# make localhost.pem エンターキー

するといろいろ聞かれるが、全部エンターで返してしまっても構わない。
きっちり答えてもOK。

Country Name (2 letter code) [GB]:JP ← 国
State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県
Locality Name (eg, city) [Newbury]:katsushika ← 市区町村
Organization Name (eg, company) [My Company Ltd]:www.kyoji-kuzunoha.com ← サイト名(無ければエンターで返す)
Organizational Unit Name (eg, section) []: ← エンターキーで返す
Common Name (eg, your name or your server's hostname) []:xxxxxx.sakura.ne.jp ← ホスト名
Email Address []:xxxxxx@kyoji-kuzunoha.com ← 自分のメールアドレス

全部答えると証明書作成が終了する。

stunnel.confを作成

新規にstunnel.confを作成する。

[root@ ~]# vi /etc/stunnel/stunnel.conf エンターキー

何もないテキストデータが開くが、そこにプログラムを書き込む。

cert=/etc/pki/tls/certs/localhost.pem
;chroot = /var/run/stunnel/
;setuid = nobody
;setgid = nobody
pid = /var/run/stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
;foreground = yes

[smtps]
accept = 465
connect = 587

記入したら :wqで終了。
stunnel.confが作られた。

stunnel(stunnel起動プログラム)を作成

stunnelを作成する。

[root@ ~]# vi /etc/init.d/stunnel エンターキー

何もないテキストデータが開くが、そこにプログラムを書き込む。

#!/bin/sh
# chkconfig: 2345 20 80
# description: s
# Source function library.
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 0
fi

DAEMON=/usr/sbin/stunnel

prog=stunnel

start () {
echo -n $"Starting $prog: "

# start daemon
daemon $DAEMON
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/stunnel
return $RETVAL
}

stop () {
# stop daemon
echo -n $"Stopping $prog: "
killproc $DAEMON
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/stunnel
}

restart() {
stop
start
}

case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status $DAEMON
;;
*)

echo $"Usage: $prog {start|stop|restart|status}"
exit 1
esac

exit $RETVAL

記入したら :wqで終了。
起動プログラム stunnel が作られた。

さくらVPS(CentOS6)の場合は、

DAEMON=/usr/sbin/stunnel

DAEMON=/usr/bin/stunnel

に書き換えること。

パーミッション(アクセス権)の設定

作成したプログラム stunnel のアクセス権を変更する。

[root@ ~]# chmod 755 /etc/init.d/stunnel エンターキー

作成したプログラム stunnel 実行権が与えられた。

stunnelをスタートアップに登録

サーバーが再起動しても、自動でstunnelが起動するように設定する。

[root@ ~]# /sbin/chkconfig --add stunnel エンターキー

stunnelを起動

stunnelを起動する。

[root@ ~]# /etc/init.d/stunnel start エンターキー

これでstunnelが起動した。

これでサーバーでの設定は終了。

iPhoneでの設定

設定→メール/連絡先/カレンダー→yahooアカウント→アカウント→送信メールサーバーを開く。

プライマリサーバー(imotenのホスト名)をタップ。

SSL使用をオンにし、サーバーポートを465に変更して完了をタップ。

Iphone1

”サーバの識別情報を検証できません”というメッセージが出てくるので、”続ける”をタップ。

これでSSL化が終了する。

テストメールを送信してみよう。
無事届いたら成功。

これでほぼ完璧

imotenのSMTPサーバーもSSLに対応させてセキュリティレベルもアップ!
これで隙のない運用になったかと思われる。

あとはMail.appでのプッシュに難がある方もいるみたいなので、色々検証してみます。
うまくいけばいいけど。

関連記事

59件のコメント

  1. 葛葉キョウジ

    >エラーメッセージを読めばわかります。

    Reply

  2. >root権限で入っていないと出るエラーのようですが、ちゃんと入ってるんだけどおかしいな?
    またいろいろ調べてみます。ありがとうございました。

    Reply

  3. >もう一度ひととおりやり直して、他のサイトで見つけた
    #service stunnel start
    というコマンドを実行してみたらうまく起動しました。

    Reply

  4. 葛葉キョウジ

    >なるほど。
    自分の場合はそのままで出来たんですが、なんでなんだろう(;´Д`)?

    Reply

  5. こんばんは。
    いつも大変参考にさせて頂いています。
    SSL化で行き詰ってしまいました。
    このページの記事通り進めてきて、[root@ ~]# /etc/init.d/stunnel start エンターキー
    → Starting stunnel:  [ OK ] が出たので iphone の設定に移ったのですが、
    SSLをON、サーバポートを465に変更すると、
    『STMPサーバ ”~” が応答しません。ネットワークの接続状態と、”送信メールサーバ”フィールドに正しい情報を入力したかを確認してください。』と表示されて先に進めません。
    サーバはDTI VPSで、コピペも、間違いも全てチェックしましたが、判りません。
    何か解決策があれば、ご教授ください。

    Reply

  6. こんにちは、いつもありがとうございます。
    centos6 64bitです。

    (15分でDTIにcenteos6をインストールする方法というのをまねて)
    しています。色々設定をいじっているうちに、
    rootログイン禁止したまましてしまって、再インストールするしかなくなってしまいました。それはさておき、

    ①iphoneで、ssl設定後
    「mobile me は
    は識別情報を確認できません。

    続けますか?」
    のようなメッセージがでました。つづけたらいけましたが、ちょっと焦りました。

    わたしも、送信がうまく行かず、
    #service stunnel start
    をしたら、
    Starting stunnel: [ OK ]
    とできるようになりました。

    # /etc/init.d/stunnel start 
    の時は、
    Usage: stunnel {start|stop|restart|status}
    というメッセージでした。送信はサバーやホストが一致しないみたいな感じで、
    失敗していました。

    Reply

  7. こんばんは。
    おっしゃる通りでした。
    iptablesの設定で、587を465に変更していませんでした。
    お騒がせしました。
    iphoneの設定を色々弄ってる内に、何か設定を保存したんですけど、
    とりあえず、SSL ON , サーバポート 465 でメール送信できるので、
    SSL化成功したんでしょうかね。

    Reply

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">