- PR -

qmailにてpop over ssl, smtp over sslの設定

投稿者投稿内容
パンダ
ベテラン
会議室デビュー日: 2005/07/04
投稿数: 54
投稿日時: 2006-02-07 20:46
こんにちは。 現在、qmailにて運用しています。 pop, smtpにsslを実装したいと思うのですが、実際の作業方法についての情報があまりありません。qmailにて、SSLは実装可能なのでしょうか? また、インストール方法についての詳細がわかるHPがあればご教授いただけると助かります。 何卒よろしくお願いいたします。
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-02-07 22:09
こんばんは。

qmail 単体で、というお話でしょうか?

一応、自分が試した際に参考にしたサイトです。
※実サイトは Wiki 書き換えられていて内容が消えていたので、Google キャッシュです。
http://64.233.179.104/search?q=cache:ONOB9m_bUloJ:www.kawaz.jp/pukiwiki/%3FPOP%25A4%25C8SMTP%25A4%25F2SSL%25B2%25BD%25A4%25B9%25A4%25EB+POP+%E3%81%A8+SMTP+%E3%82%92+SSL+%E5%8C%96%E3%81%99%E3%82%8B+site:www.kawaz.jp&hl=ja&gl=jp&ct=clnk&cd=1&lr=lang_ja&inlang=ja

ご参考までに。

※アドレス間違いを修正。

[ メッセージ編集済み 編集者: あるかな 編集日時 2006-02-07 22:12 ]
パンダ
ベテラン
会議室デビュー日: 2005/07/04
投稿数: 54
投稿日時: 2006-02-07 22:14
あるかなさん、お忙しいところ返信していただきありがとうございます。
早速試してみたいと思います。 何かありましたら、再度質問させていただきます。
よろしくお願いします。
パンダ
ベテラン
会議室デビュー日: 2005/07/04
投稿数: 54
投稿日時: 2006-02-08 14:25
お忙しいところすみません。 ucspi-tcp-sslのパッチを適用しようとしているのですが、下記のエラーがでて適用できない状態です。 
------------------------------------------------------------------------------
patch < ucspi-tcp-ssl-20050405.patch
結合されたコンテキスト diff のようです。
次のパッチは結合されたコンテキスト diff のようです。
次のパッチは結合されたコンテキスト diff のようです。
次のパッチは結合されたコンテキスト diff のようです。
パッチを適用するファイル:
-----------------------------------------------------------------------------
上記のエラーを回避するためには、このパッチファイルのパラメーター等を変更する必要があるのでしょうか? ご教授いただけると助かります。
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-02-08 17:47
こんばんは。
引用:

patch < ucspi-tcp-ssl-20050405.patch
パッチを適用するファイル:
-----------------------------------------------------------------------------


作業ディレクトリを間違えていませんか?

# cd /usr/local/src/qmail/
# wget http://www.emaillab.org/djb/tools/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# tar xfvz ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88/
# wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz
# zcat ucspi-tcp-ssl-20050405.patch.gz | patch
patching file FILES
patching file Makefile
patching file TARGETS
patching file addcr.1
patching file argv0.1
patching file date@.1
patching file delcr.1
patching file error.h
patching file finger@.1
patching file fixcrio.1
patching file hier.c
patching file http@.1
patching file mconnect.1
patching file recordio.1
patching file tcp-environ.5
patching file tcpcat.1
patching file tcpclient.1
patching file tcprules.1
patching file tcprules.c
patching file tcprulescheck.1
patching file tcprulescheck.c
patching file tcpserver.1
patching file tcpserver.c
patching file who@.1

こんな感じでスンナリいくと思いますが、試しに/usr/local/src/qmail/を作成して、
上記の通りに作業してみてください。
パンダ
ベテラン
会議室デビュー日: 2005/07/04
投稿数: 54
投稿日時: 2006-02-08 18:52
あるかなさん、お返事ありがとうございます! すみません、うまくいきました。
次に、makeをすると、下記のようなエラーがでます。
----------------------------------------------------------------------------
tcpserver.c:4:25: openssl/ssl.h: No such file or directory
tcpserver.c:45: error: parse error before '*' token
tcpserver.c: In function `main':
tcpserver.c:432: error: `BIO' undeclared (first use in this function)
tcpserver.c:432: error: (Each undeclared identifier is reported only once
tcpserver.c:432: error: for each function it appears in.)
tcpserver.c:432: error: `sbio' undeclared (first use in this function)
tcpserver.c:433: error: `SSL' undeclared (first use in this function)
tcpserver.c:433: error: `ssl' undeclared (first use in this function)
tcpserver.c:434: error: `SSL_CTX' undeclared (first use in this function)
tcpserver.c:434: error: `ctx' undeclared (first use in this function)
tcpserver.c:544: error: `SSL_FILETYPE_PEM' undeclared (first use in this function)
tcpserver.c:644: error: `BIO_NOCLOSE' undeclared (first use in this function)
tcpserver.c: At top level:
tcpserver.c:691: error: parse error before '*' token
tcpserver.c: In function `allwritessl':
tcpserver.c:695: error: `len' undeclared (first use in this function)
tcpserver.c:696: error: `ssl' undeclared (first use in this function)
tcpserver.c:696: error: `buf' undeclared (first use in this function)
tcpserver.c: At top level:
tcpserver.c:710: error: parse error before '*' token
tcpserver.c: In function `translate':
tcpserver.c:720: error: `ssl' undeclared (first use in this function)
tcpserver.c:732: error: `iotimeout' undeclared (first use in this function)
tcpserver.c:739: error: `clearin' undeclared (first use in this function)
tcpserver.c:752: error: `clearout' undeclared (first use in this function)
make: *** [tcpserver.o] Error 1
上記の、ssl.hは、きちんと存在しています。また、PATHもきちんと設定していると思うのですが...。 何かおわかりになりますか?
よろしくお願いいたします。
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-02-08 22:37
引用:

せさみさんの書き込み (2006-02-08 18:52) より:
あるかなさん、お返事ありがとうございます! すみません、うまくいきました。
次に、makeをすると、下記のようなエラーがでます。
> tcpserver.c:4:25: openssl/ssl.h: No such file or directory
上記の、ssl.hは、きちんと存在しています。また、PATHもきちんと設定していると思うのですが...。 何かおわかりになりますか?
よろしくお願いいたします。



該当箇所が全てを物語っていますので、openssl へのパスが不完全なのでしょう。
PATH の確認はどうされましたか?

環境がわからないので、地道に確認していくと、
# less Makefile
---
#INCS=-I/usr/local/include
---
の箇所を確認してご自分の環境を確認してください。

次に上のパス指定だった場合、
# ls -al /usr/local/include/openssl/ssl.h
のコマンドを投入して該当ファイルの確認をしましょう。

もし、ファイルがない場合は、Makefile の #INCS=-I 以下をご自分の openssl ライブラリ関係のパスを記述しなおしてみてください。

それでもダメだったら tcpserver.c の4行目にある
#include <openssl/ssl.h> の openssl/ssl.h をご自分の環境の ssl.h までの絶対パスに書き換えてみましょう。

ちなみに openssl の導入方法はどうされましたか?またはバージョンはどうでしょうか?
パンダ
ベテラン
会議室デビュー日: 2005/07/04
投稿数: 54
投稿日時: 2006-02-08 23:05
あるかなさん、お返事ありがとうございます。 おっしゃるとおり、まず、Makefileを編集してみました。まず、Makefileの中身ですが、下記のとおりです。
#INCSをコメントアウトして、INCS=-I/usr/local/ssl/includeにしました。
ちなみに、OSは、Solaris10で、SSLのdirectoryは、/usr/local/sslになります。
バージョンは、openssl0.9.7eで、パッケージファイルでインストールしました。
apacheでは、SSLを使用していますが、これは、問題なく動いています。

DEFINES=-DWITH_SSL
#add -DWITH_SSL to enable ssl support
# LIBS for additional libraries and INCS for additional includes
LIBS=-lcrypto -lssl
INCS=-I/usr/local/ssl/include
OPENSSLBIN=openssl

さて、これで、makeを実行すると、下記のエラーで終了します。
-------------------------------------------------------------------------------
./load tcpserver rules.o remoteinfo.o timeoutconn.o cdb.a \
dns.a time.a unix.a byte.a -lcrypto -lssl `cat socket.lib`
ld: 重大なエラー: ライブラリ -lcrypto: 見つかりません。
ld: 重大なエラー: ライブラリ -lssl: 見つかりません。
ld: 重大なエラー: ファイル処理エラー。tcpserver へ書き込まれる出力がありません。
collect2: ld returned 1 exit status
-------------------------------------------------------------------------------
そこで、先ほどの、Makefileにある、LIBS=-lcrypto -lsslを編集しました。
ここで言っているファイル名は、恐らく、cryptoですよね? このファイルも存在するのですが、-lsslというのがわかりません。 とりあえず、cryptoのディレクトリーは、
/usr/libにあります。 例えば、LIBS=-l/usr/lib/cryptoとかにしても、エラーで終了します。記述方法がいまいちわかりません。 
よろしくお願いいたします。

スキルアップ/キャリアアップ(JOB@IT)