# cd /usr/local/src
# tar xzvf pfixtls-0.8.16-2.0.16-0.9.7b.tar.gz
# cd postfix-2.0.16
# patch -p1 < ../pfixtls-0.8.16-2.0.16-0.9.7b/pfixtls.diff |
|
パッチの適用後、再コンパイルします。以前にコンパイルしたことのあるかたは、make tidy を実行してください。
# make tidy
# make makefiles CCARGS="-DUSE_SASL_AUTH
-DHAS_SSL -I/usr/local/include/sasl -I/usr/local/ssl/include"
AUXLIBS="-L/usr/local/lib -lsasl2 -lssl
-lcrypto"
# make install |
|
■/etc/postfix/main.cf の編集
/etc/postfix/main.cf の最下行に以下の行を追記します。
#
証明書ファイルの指定
smtpd_tls_cert_file = /etc/postfix/tls/server.crt
# 秘密鍵ファイルの指定
smtpd_tls_key_file = /etc/postfix/tls/server.key
# TLSセッションキャッシュデータベースの指定
smtpd_tls_session_cache_database = sdbm:/etc/postfix/tls/smtpd_scache
# TLSのログレベルの指定
smtpd_tls_loglevel = 3
# コマンドの利用の可否の指定
smtpd_use_tls = yes |
|
■/etc/postfix/master.cf の編集
/etc/postfix/master.cf を開いて、以下の行を追記します。すでに、記述されていればコメントアウトして有効にします。赤文字で「
y 」と指定されている箇所はPostfix のchroot 設定です。ここでは、chrootを有効にしています。
smtps inet n - y - - smtpd -o smtpd_tls_wrappermode=yes
submission inet n - y - - smtpd -o smtpd_enforce_tls=yes
tlsmgr fifo - - y 300 1 tlsmgr
|
|
■Postfix の再起動
■Telnet で動作確認
以下のように、Ready to start TLSと表示されれば正常に、TLSが稼動しています。
# telnet localhost
25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 kororo.jp ESMTP Postfix
EHLO localhost
250-mx.kororo.jp
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-XVERP
250 8BITMIME
STARTTLS
220 Ready to start TLS
^]
telnet> q
Connection closed. |
|
netstat コマンドで465番が待ち受け状態になっていることを確認します。あとは、SSL証明書を作成し、/etc/postfix/main.cf
で指定したパスに証明書と鍵をコピーしておいてください。
# netstat -an | grep
465
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN
# nmap localhost
465/tcp open smtps |
|
■Postfix + TLSでの証明書作成の際の注意点
Postfix をTLSで使用する際、秘密鍵、証明書共に暗号化されていると秘密鍵が取得することできないみたいなので、暗号化せずに秘密鍵と証明書を作成するようにしてください。また、必ずPEM形式にしてください。でないと、以下のようなエラーが発生してしまいます。
unable to get private
key from '/usr/local/certs/server.key'
32168:error:0906406D:PEM routines:DEF_CALLBACK:problems
getting password:pem_lib.c:105:
32168:error:0906A068:PEM routines:PEM_do_header:bad
password read:pem_lib.c:399:
32168:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM
lib:ssl_rsa.c:709:
TLS engine: cannot load RSA cert/key data
tls_engine not running |
|
具体的には、以下のようにします。以下は、独自CA用秘密鍵の作成です。
# /usr/local/ssl/bin/openssl
genrsa -out server.key 1024 -days 365 |
|
以下で証明書署名要求を作成します。
# /usr/local/ssl/bin/openssl
req -new -out server.csr -key server.key
|
|
最後に、CA用の証明書を作成します。
# /usr/local/ssl/bin/openssl
req -in server.csr -key server.key -x509
-days 365 -out server.crt |
|
⇒参考:
http://www.aet.tu-cottbus.de/personen/jaenicke/pfixtls/doc/conf.html
■Microsoft Outlookの設定
Outlook での設定は、以下図のように「詳細設定」タブで送信メールサーバーのポートを465番に変更し、且つ、「このサーバーはセキュリティで保護された接続(SSL)が必要」にチェックをいれます。
■Becky! Internet Mailの設定(※2005/8/3追記)
Becky のバージョンアップによってSMTPSによる送信が可能になりました。下記画面の「SMTPS」にチェックをつけるだけです。けれども、証明書による認証が必要となりますので予めクライアントマシンにインストールしておいてください。Beckyからメールを送信する際に、証明書の検証に失敗したというエラーダイアログが表示された場合は、下記図で指定したSMTPサーバーのホスト名と証明鍵を作る際に指定したホスト名(Organization
Name)が異なっている可能性がありますので再度、証明書作り直してください。あるいは、「ツール」→「メールボックスの設定」→「詳細」タブにある「証明書を検証しない」にチェックをしておけばそのままメールを送信することができます。