Changes between Version 17 and Version 18 of HowTo/SakuraVpsSetup2


Ignore:
Timestamp:
May 31, 2012, 5:29:28 PM (12 years ago)
Author:
村山 俊之
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HowTo/SakuraVpsSetup2

    v17 v18  
    500500
    501501$ exit
    502 }}}
    503 
    504 === パスワードを暗号化 ===
    505 
    506 前回、メールアカウントのパスワードは平文で保存するしかないものと思い、平文で保存していたが、暗号化 (正確には salt を付けてハッシュ関数で符号化) して保存しても運用できそうな目処が立ったので、暗号化することにした。
    507 
    508  1. mailusers DB にアクセス。
    509 {{{
     502(...他のユーザーも)
     503}}}
     504
     505そして mailusers DB に保存されている uid と gid も新しいものに修正しますよと。
     506{{{
     507$ grep toshiyuki.murayama /etc/passwd
     508(uid と gid をチェック...)
     509
    510510$ mysql -u mailusers -p mailusers
    511 }}}
    512  1. users テーブルに、符号化されたパスワードのためのフィールドと、 salt のためのフィールドを追加。ハッシュ関数は SHA1、 salt は 5文字とする。
    513 {{{
    514 mysql> alter table users add (passwd char(40), salt char(5));
    515 }}}
    516  1. salt を設定する。ランダムな 5文字を設定する方法はいくつか考えられるかも知れないが、とりあえず以下のような感じでやってみた。ちなみに plain_passwd が NULL になっているアカウントは、届いたメールを転送するだけで送受信に使う予定のないアカウントなので、 salt は設定していない。
    517 {{{
    518 mysql> update users set salt = substring(encrypt(rand()), 3, 5) where plain_passwd is not null;
    519 }}}
    520  1. salt を元に、平文のパスワードを符号化する。 SHA1() 関数も CONCAT() 関数も引数が NULL ならよしなに NULL を返してくれるので、 WHERE 句は不要。
    521 {{{
    522 mysql> update users set passwd = sha1(concat(salt, plain_passwd));
    523 }}}
    524  1. 平文のパスワードはもはや不要。捨ててしまえ。
    525 {{{
    526 mysql> alter table users drop plain_passwd;
    527 }}}
     511
     512mysql> update users set uid=XXX, gid=XXX where userid='toshiyuki.murayama';
     513mysql> quit
     514
     515(...他のユーザーも)
     516}}}
     517
     518この辺の作業は流石にターミナル 2つ開いてやった方がいいかもね。あんまりユーザー数多いならスクリプト書いた方がいいかも…。
    528519
    529520=== POP3S の設定 ===
     
    536527}}}
    537528
    538 バージョンが変わっているので、設定ファイルのパスも微妙に変わってた。
     529バージョンが変わっているので、設定ファイルの書き方ががらっと変わってる。設定項目毎にファイルが切り分けられ、ようするに httpd.conf のなれの果てみたいになっている。大本の設定ファイルは以下だが、
    539530
    540531{{{
     
    542533}}}
    543534
    544 もっとも、このファイルの中で設定すべき項目は以下ぐらい。
     535このファイルの中で設定すべき項目は以下ぐらい。
    545536
    546537{{{
     
    551542}}}
    552543
    553 POP3 プロトコルは受け付けたくないので、 conf.d/10-master.conf を編集。
     544POP3s プロトコル以外は受け付けたくないので、 conf.d/10-master.conf を編集。
    554545
    555546{{{
     
    592583#}
    593584}}}
     585
     586Maildir 形式の設定は conf.d/10-mail.conf にて。
     587
     588{{{
     589# vim /etc/dovecot/conf.d/10-mail.conf
     590
     591mail_location = maildir:~/Maildir
     592}}}
     593
     594認証周りの設定は conf.d/10-auth.conf にて。
     595
     596{{{
     597# vim /etc/dovecot/conf.d/10-auth.conf
     598
     599# 平文認証。通信路は SSL で保護されているので無問題。むしろ生のパスワードが渡されないと SQL で認証できない。
     600auth_mechanisms = plain
     601
     602# 認証には SQL を使用するので、挿入するファイルを変更
     603#!include auth-system.conf.ext   # ←コメントアウト
     604!include auth-sql.conf.ext       # ←こっちのコメントアウトを外す
     605}}}
     606
     607それから SSL 関連の設定は conf.d/10-ssl.conf にて行う。
     608
     609{{{
     610# vim /etc/dovecot/conf.d/10-ssl.conf
     611
     612ssl = yes
     613ssl_cert = </etc/httpd/conf/ssl/developer.harapeko.jp.crt
     614ssl_key = </etc/httpd/conf/ssl/developer.harapeko.jp.key
     615ssl_ca = </etc/httpd/conf/ssl/intermediate.crt
     616}}}
     617
     618ここまでの設定に関しては、以下のサイトが参考になった。
     619
     620 * [http://d.hatena.ne.jp/defiant/20110421/1303362615 dovecot-2.0.x ハマリ道 - defiantの日記]
     621
     622そして、 SQL 認証に関する設定。これは conf.d/10-auth.conf が include しているファイル conf.d/auth-sql.conf.ext の中で、更に conf.d/dovecot-sql.conf.ext ファイルを、変数が設定されたファイルとして参照しているので、そいつを作成してその中に記述する。
     623
     624{{{
     625# vim /etc/dovecot/conf.d/dovecot-sql.conf.ext
     626
     627driver = mysql
     628connect = host=localhost dbname=mailusers user=mailusers password=パスワード
     629password_query = select userid as username, domain, plain_passwd as password from users where userid = '%n' and domain = '%d'
     630user_query = select home, uid, gid from users where userid = '%n' and domain = '%d'
     631}}}
     632
     633以上で設定は完了。起動し、デフォルトで起動するようにする。
     634
     635{{{
     636# /etc/init.d/dovecot start
     637# chkconfig --add dovecot
     638# chkconfig dovecot on
     639}}}
     640
     641=== Submission over TLS の設定 ===
     642
     643cyrus-SASL と SQL auxprop プラグインはすでにインストールされていた。 MD5 認証用プラグインは今回は使わないのでインストールしない。
     644
     645設定ファイルは前回とは異なり、 /etc/sasl2/smtpd.conf 以外の 2つのファイルは削除されていた。安心して左記のファイルのみを編集する。
     646
     647{{{
     648# vim /etc/sasl2/smtpd.conf
     649
     650pwcheck_method: auxprop
     651auxprop_plugin: sql
     652mech_list: plain
     653sql_engine: mysql
     654sql_hostnames: localhost
     655sql_user: mailusers
     656sql_passwd: パスワード
     657sql_database: mailusers
     658sql_select: select plain_passwd as password from users where userid = '%u'
     659}}}
     660
     661こっちも mech_list は plain のみとした。
     662
     663さらに main.cf を編集。
     664
     665{{{
     666# vim /etc/postfix/main.cf
     667
     668# 以下の行を追加
     669smtpd_sasl_auth_enable = yes
     670smtpd_sasl_security_options = noanonymous   # noplaintext は外した。
     671smtpd_sasl_local_domain = $myhostname
     672smtpd_tls_cert_file = /etc/httpd/conf/ssl/developer.harapeko.jp.crt
     673smtpd_tls_key_file = /etc/httpd/conf/ssl/developer.harapeko.jp.key
     674smtpd_tls_CAfile = /etc/httpd/conf/ssl/intermediate.crt     # ルート CA 証明書の指定を追加
     675smtpd_use_tls = yes
     676smtpd_tls_auth_only = yes
     677smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
     678}}}
     679
     680そして postfix を再起動…。
     681
     682{{{
     683# /etc/init.d/postfix restart
     684}}}