メールサーバの移行メモ
今回、Postfix + Dovecotのサーバ環境のマシン移行をした時のいろいろを書き記しておく。
Contents
環境の概要
自分の環境はこんな感じ。
サービス
SMTP(smtps)
Postfix
SMTP(SSL/TLS)のみ
IMAP(imaps)
Dovecot
IMAP(SSL/TLS)のみ
証明書
自己署名証明書。いわゆるオレオレ証明書。
データ
ドメイン
複数のドメイン
形式
バーチャルメールボックス
Maildir
フォルダ
/home/vhosts/ドメインのフォルダ/ユーザごとのフォルダ
旧マシンでの作業
バックアップ
設定ファイル
etc/postfix
etc/dovecot
データ
/home/vhosts/ 以下まるごと
オレオレ認証ファイル
上記をtarアーカイブしてFTP。
新マシンのセッティング
インストール
下記をすべてpkgにて導入した。別にportからオプション等指定してインストールする意味も感じなかったので。
- Postfix
- Dovecot
- OpenSSL
- SASL
認証ファイルの作成
各ドメインの自己署名証明書を作成。作成にあたっては【FreeBSD】サーバ証明書を生成する(openssl)が非常にわかりやすく参考になった。
サーバ秘密鍵の作成
秘密鍵を最初に作る。
$ openssl genrsa -aes256 -passout pass:password -out server.pem 2048 $ openssl rsa -passin pass:password -in server.pem -out servernopass.pem
1行目でパスワード付きのものが作成される。2行目でそれを解除したものを作成する。解除しておかないとサーバー起動ごとにパスワードを聞かれるらしい。そんなの運用できない。。。
CSR(Certificate Signing Request)ファイルの作成
認証局に発行してもらうためのファイル。秘密鍵を入力に指定している。自己署名の時もこれを元に自己署名することになる。このファイルは配置するものではない。
$ openssl req -new -key servernopass.pem -out server_csr.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:(県を入力すればいい) Locality Name (eg, city) []:(市を入力すればいい) Organization Name (eg, company) [Internet Widgits Pty Ltd]:(会社名・組織名) Organizational Unit Name (eg, section) []:(部署名、ハイフンでもいいらしい) Common Name (e.g. server FQDN or YOUR name) []:(サーバーのFQDNを入力する) Email Address []:(連絡先メールアドレス) Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
聞かれたことに入力をしていく形です。
自己署名認証局の作成
認証局の代わりになるもの(という理解で正しいだろうか?)を作成する。
$ mkdir -p ./ca/newcerts $ touch ./ca/index.txt $ echo '01' > ./ca/serial $ openssl req -new -x509 -keyout ./ca/cakey.pem -out ./ca/cacert.pem -days (有効日数:365なら1年間) Generating a 2048 bit RSA private key ........................................................................................................................................+++ ..................................+++ writing new private key to './ca/cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: Verify failure Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:(入力) Locality Name (eg, city) []:(入力) Organization Name (eg, company) [Internet Widgits Pty Ltd]:(入力) Organizational Unit Name (eg, section) []:(入力) Common Name (e.g. server FQDN or YOUR name) []:(入力) Email Address []:(入力)
入力のところはCSRファイルの時と同じものを入力した。
サーバ証明書の作成
自己署名証明書の作成。PostfixやDovecotにcertファイルやkeyファイルとして指定するものが出来上がる。
まず、設定ファイルの準備。以下コマンドに指定するものになる。
[ ca ] default_ca = CA_default [ CA_default ] dir = ./ca database = $dir/index.txt new_certs_dir = $dir/newcerts serial = $dir/serial x509_extensions = usr_cert name_opt = ca_default cert_opt = ca_default certificate = $dir/cacert.pem default_days = 3652 default_crl_days = 30 default_md = sha256 preserve = no private_key = $dir/cakey.pem policy = policy_default [ policy_default ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ usr_cert ] basicConstraints = CA:FALSE nsCertType = server nsComment = "OpenSSL Generated Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always
証明書を作成するコマンド。
$ openssl ca -config ./openssl_server.conf -in server_csr.pem -out server_cert.pem
-outに指定したものがサーバ証明書のファイルになります。
Postfix設定
Postfixは設定する項目が多い。今回はマシンの移設なのでほとんど修正がない。Postfixの設定に関してはまた別途書くかもしれない。
Dovecot設定
Dovecotに関しても(Postfixほど難解ではないが)設定する項目が多い。が、こちらもマシンの移設にあたってはほとんど修正がなかった。Dovecotの設定についはまた気が向いたら書くかもしれない。Postfixと同時になると思いますが。
その他の設定
起動設定
/etc/rc.confに関連する項目を追加
# for mail server saslauthd_enable="YES" saslauthd_flags="-a sasldb" sendmail_enable="NO" sendmail_flags="-bd" sendmail_pidfile="/var/spool/postfix/pid/master.pid" sendmail_outbound_enable="NO" sendmail_submit_enable="NO" sendmail_msp_queue_enable="NO"
移行前のマシンからコピーしてきただけですが、、、
データの移植
旧マシンのデータフォルダを新マシンのデータフォルダへ展開。
データファイルの所有者、グループをmailuser(Dovecotのユーザ名、グループ)とすることでアクセスすることができた。
無事に使えるようになってホッとしています。
ディスカッション
コメント一覧
まだ、コメントがありません