DTIサーバー構築27 「コソコソ」

Postfixで、SASLを使おう。
SASLとは、
http://www.ipa.go.jp/security/rfc/RFC2222JA.html
文章だけでは理解するのに一苦労。

まず、Postfixがdovecotを使ったSASLに対応しているかを確認。

$ postconf -a
cyrus
dovecot
postconfのマニュアルを一部コピっとく。

       -a     List  the available SASL server plug-in types.  The SASL plug-in
              type is selected with the smtpd_sasl_type configuration  parame-
              ter by specifying one of the names listed below.
              cyrus  This  server  plug-in  is available when Postfix is built
                     with Cyrus SASL support.
              dovecot
                     This  server  plug-in  uses  the  Dovecot  authentication
                     server,  and  is available when Postfix is built with any
                     form of SASL support.
              This feature is available with Postfix 2.3 and later.

ということで、dovecotが表示されたので、対応可能ということで。

Dovecot SASLを使う場合は、Cyrus-SASLを停止させて問題ない。

$ sudo service saslauthd stop
saslauthd を停止中:                                        [  OK  ]
自動起動もしないように変更。

$ sudo chkconfig saslauthd off

Postfixの設定に追記して、SASLを可能に変更。

$ sudo vi /etc/postfix/main.cf
以下を追加する。

smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = no
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions =
    permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

broken_sasl_auth_clients = no
 broken_sasl_auth_clients

broken_sasl_auth_clients (デフォルト: no)
古いバージョンの AUTH コマンド (RFC 2554) を実装した SMTP クライアントとの相互運用性を有効にします。このようなクライアントには MicroSoft Outlook Express バージョン 4 や MicroSoft Exchange バージョン 5.0 といった例があります。
標準的でない方法の AUTH サポートを Postfix に案内させるには、 “broken_sasl_auth_clients = yes” を指定します。

SASLとは関係ないが、セキュリティ上、以下の設定も追加。

disable_vrfy_command = yes
smtpd_helo_required = yes

次に、Dovecot側の設定を変更。

$ sudo vi /etc/dovecot/conf.d/10-master.conf
unix_listener部分を変更。

service auth {
  # auth_socket_path points to this userdb socket by default. It’s typically
  # used by dovecot-lda, doveadm, possibly imap process, etc. Its default
  # permissions make it readable only by root, but you may need to relax these
  # permissions. Users that have access to this socket are able to get a list
  # of all usernames and get results of everyone’s userdb lookups.
  unix_listener auth-userdb {
    #mode = 0600
    #user =
    #group =
  }
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  # Auth process is run as this user.
  #user = $default_internal_user
}

続いて以下のファイルも編集。

$ sudo vi /etc/postfix/master.cf

コメントを外す!

submission inet n       –       n       –       –       smtpd
#  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       –       n       –       –       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

最後に、サーバーを再起動。

$ sudo service dovecot restart
Dovecot Imap を停止中:                                     [  OK  ]
Dovecot Imap を起動中:                                     [  OK  ]
$ sudo service postfix restart
postfix を停止中:                                          [  OK  ]
postfix を起動中:                                          [  OK  ]
次は、STLかな。

DTIサーバー構築26 「まだ信用してもらえないなんて」

信用されていない証明書を使っていると、不都合が起こる。
Google様に信用してもらえずに、Google AppsのメールでPOPしてもらえないのがその一例。
Dovecotで、サンプルの証明書をそのまま使っていると、

Unable to establish secure SSL connection
Unable to establish secure SSL connection

Unable to establish secure SSL connection to YOURDOMAIN.COM [ Help ]
Server returned error: “SSL error: self signed certificate”
と、怒られる。まあ、これは仕方ない。
設定を編集して、StartSSLで取得した証明書を使うように変更する。

$ sudo vi /etc/dovecot/conf.d/10-ssl.conf
と設定ファイルを開いて、次の部分を編集する。

#ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
#ssl_key = </etc/pki/dovecot/private/dovecot.pem
ssl_cert = </etc/pki/tls/certs/domain.pem
ssl_key = </etc/pki/tls/private/domain.pem

あと、秘密鍵にパスワードがかかっているので、以下の部分にそのパスワードを入れる。

ssl_key_password = PASSWORD
保存して再起動すれば、もう怒られないはず、

$ sudo service dovecot start
だった。
だが、HTTPSで成功したStartSSLの証明書を使っていても、

Unable to establish secure SSL connection
Unable to establish secure SSL connection

Unable to establish secure SSL connection to YOURDOMAIN.COM [ Help ]
Server returned error: “SSL error: unable to verify the first certificate”
と、怒られる。
で、対処法は、自分の証明書にStartSSLの証明書をくっつける。
まず、
http://www.startssl.com/certs/ca-bundle.pem
からStartSSLの証明書をダウンロード。
適当なフォルダにファイルをアップロード。
面倒なら、エディタでペースト。

$ sudo vi ca-bundle.pem
その後に、自分の証明書と、StartSSLの証明書をくっつける。

$ sudo cat /etc/pki/tls/certs/domain.pem ca-bundle.pem > domain.bundled.pem
続いて設定ファイルの編集。

$ sudo vi /etc/dovecot/conf.d/10-ssl.conf

次の部分を少し変える。

#ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
#ssl_key = </etc/pki/dovecot/private/dovecot.pem
#ssl_cert = </etc/pki/tls/certs/domain.pem
ssl_cert = </etc/pki/tls/certs/domain.bundled.pem
ssl_key = </etc/pki/tls/private/domain.pem

以上で、再起動後はGoogleさんも認めてくれるはず。

$ sudo service dovecot start
これでもダメなら、、、わかりません。

DTIサーバー構築25 「信じてもらえると思ってた」

StartSSLの証明書をやっとこさ取ったので、サーバーに入れてみる。
一度CAcertの証明書でやっているので、それと同じ。

$ sudo vi /etc/httpd/conf.d/ssl.conf
以下の部分を取得した秘密鍵と証明書に変更します。

SSLCertificateFile /etc/pki/tls/certs/domain.pem
SSLCertificateKeyFile /etc/pki/tls/private/domain.pem
Apacheを再起動して、

$ sudo service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

さて、ブラウザで開いてみよう。

https://yourdomain.com/

待ちに待った「この証明書は有効です。」!!
この証明書は有効です。
この証明書は有効です。
良かったね〜。

DTIサーバー構築24 「まだまだ、だよ」

さて、ログインが出来るようになったら、ドメインの認証をする。
あなたが所有するドメインを入力。

すると、whois情報を手がかりに、認証で利用するためのメールアドレスが一覧で表示されるので、どれかを選択。
(前にも書いたが、Google Appsを利用してる場合は、デフォルトでpostmasterが利用できない。グループを作ればいけるけどね。)

で、メール内のコードをコピーして

貼り付ける。

成功!

さて、秘密鍵を作成しようか。
既に作成済みならスキップできる。
なるべく長いパスワードで自衛しよう。

秘密鍵はテキストで表示されるので、コピーして大切に大事にこっそり保存しておこう。

ドメインを指定して、

証明書のサブドメインを指定。
ちなみにマルチサブドメイン(*)は、無料では作れない。ケチ!

準備が完了

やっと証明書ができたよ。
大事に保存してね。

さて、続いてClass2の証明書を有料で、、、取ってね。

それでは、サーバーに入れましょうかね。

DTIサーバー構築23 「忘れないように、こうしてあげる」

StartSSLへログイン可能になった。
ということで、次のFAQページを参考に証明書をバックアップする。
(参考にしなくても難しいものではないが。)
4.) How do I backup my client certificates?
4.) How do I backup my client certificates?
まずは、キーチェーンアクセスを起動。
キーチェーンアクセス
キーチェーンアクセス

この中に、登録に使ったメールアドレスの証明書があるはず。

キーチェーン
キーチェーン

メニューから「書き出す」を選択しましょう。って、ほとんどモザイクで見えへんやん!!

を書き出す
を書き出す

で、ファイル名を書いて保存。

証明書の保存
証明書の保存

パスワードを入力して暗号化して書き出し!

パスワード忘れると使えなくなるよ。
パスワード
パスワード

ちなみに他のMac等で利用したいときは、ファイルをコピーして、ダブルクリックでパスワードを入力してね。