メールサーバの移行メモ

サーバ,環境構築

今回、Postfix + Dovecotのサーバ環境のマシン移行をした時のいろいろを書き記しておく。

環境の概要

自分の環境はこんな感じ。

サービス

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のユーザ名、グループ)とすることでアクセスすることができた。

 

無事に使えるようになってホッとしています。

サーバ,環境構築

Posted by kawachan