Dovecot、PostfixのマルチドメインでのSSL設定

一度すべての記事を非公開にしたと書いたのですが、いくつかのエントリには未だにアクセスがあるようですので加筆して復活をさせています。この記事も少し古い内容になっていると思いますが、定常的にアクセスがあるので…。とはいえ、それぞれのバージョン書いてないな。とりあえず2021年10月時点にCentOS7(8じゃないんか)をyum updateした状況ではこの設定で健全に動いています。

このクラウド上のマシンは実はいくつかのドメインのサービスをまとめて提供しています。

もう18年位前から独自ドメインを取得してメールやWebの管理を行っていたのですが、オンプレミス環境を離れてクラウド上にまとめて持ってくることにしました。そこでまずはこのhiiragiya.netのメールサーバ、Webサーバを設定し、その後元々運用していたドメインのとりあえずメールサーバを移転したのですが…。

Postfixのマルチドメイン対応

これ自体はそう難しい話では無くていろいろなページで紹介されています。

postfix/main.cf のvirtual_mailboxなんちゃらというあたりの設定が終わればそれでおしまいですよね。hiiragiya.netでは、基本的に暗号化されていないサービスの提供を行っていないので、こっちの方が少し大変でした。

Postfixは現時点で、複数のドメインに対して別々の証明書を設定することができません。それぞれのドメインのメールサーバに別々のIPアドレスを割り当てることができれば可能なのですが、グローバルアドレスを複数個持っている個人はあまりいないですよね。どうしようかなと思いましたが、結局個人向けのメールサーバですし暗号化されていればいいかということで2つのドメインで一つの証明書の対応としました。

もう一つ面倒だったのが、spoolです。元々は$HOME/Maildirにメールをため込んでいました。そしてバーチャルドメインであるhiiragiya.netのメールは今回は最近のデフォルトに従って/var/spool/virtual/hiiragiya.netを掘ってこっちに各メールを保存しようと思いそのように設定をおこなったのです。

結局起こったことは、hiiragiya.netのメールは/var/spool/virtual以下にたまり、もともとのドメインは$HOME/Maildirにたまっているのですがdovecotが両方とも/var/spool/virtual以下しか見てくれないというところでした。

Dovecotのマルチドメイン対応

こっちも正直設定自体はGoogle先生に聞いたら星の数ほど設定例がでてくるので割愛しますが、問題は上記の点でした。もともとのドメインのメールは$HOME/Maildirにためたい(好みです)。いや、でも/var/spool/virtualってバーチャルドメイン用なのでもともとのドメインはvirtual以下に起きたくないじゃないですか(潔癖症?)

結局どうしたかというとDovecotの参照フォルダをそれぞれ変更するというところだったのですが…。

メールが保存されているフォルダをdovecotに知らせるためには10-mail.confに以下の記述を行います。

# /etc/dovecot/10-mail.conf
mail_location = maildir:~/Maildir

イコールの後は各自読み替えていただければいいのですがここには明確に~/Maildirと記述してあるにもかかわらずdovecot氏は/var/spool/virtualを見に行ってくれます。

さて、僕の設定では、/etc/dovecot/conf.d/auth-passwdfile.conf.extに以下の記述があります。

# /etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb {
  driver = passwd-file
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
}

userdb {
  driver = passwd-file
  args = username_format=%u /etc/dovecot/users
}

で、DovecotのWiki (MailLocation – Dovecot Wiki) には以下の記述があります。

2. mail userdb field overrides mail_location setting.

はい。ここで上書きされていました。で、ドメイン毎に指定してoverwriteされないようにする設定、もしくはさらにoverwriteする設定がわからなかったので、userdbにフォルダ設定を入れてしまうことにしました。

このusersというファイル、ファイル名は何でもいいのですが、パスワードの設定の項目で他サイト様では書いてあると思います。中身にはユーザー名とパスワードがあるだけの例が多いです。

hiiragiya@hiiragiya.net:{CRAM-MD5} XXXXXXXXXXXXXXXXX

という形ですね。ただこれはマニュアルを見ると/etc/passwdと同じ書式であるとあります。上記の例では”:”で区切られたカラムの最初の2つのみが記入されており、その後ろのカラムが省略されている形となります。

そこでホームを記入してあげます。

ユーザー名:パスワード:ユーザーID:グループID:名前:ホームディレクトリ:ログインシェル

が書式ですので、先ほどのファイルの下に一行足します。パスワードの生成の仕方は別サイトを見ていただくとして、ユーザIDとグループIDは必須のようです。

$ id

と実行して自分のユーザIDとグループIDを確認してください。その後の名前は空欄でかまいません、その後ろがホームディレクトリです。ここに今回の場合はホームディレクトリを指定しますが、絶対パスで記入する必要があります。ひいらぎやのケースですと何も考えないでパーティショニングしている関係上、/home/ユーザ名としました。

$ cd
$ pwd

もしくは

$ echo $HOME

として表示されるディレクトリを指定すれば問題ないでしょう。またMaildirまでは書かなくてよいです。Postfixがそのように設定されていればすでに存在しますし、このフィールドでMaildirまで書いてしまうと、Dovecotが$HOME/Maildir/Maildirというディレクトリを作ってくれてしまうはずです。

あ。DovecotのマルチドメインSSL化自体は難しくないのでこれも検索していただければ。

 

ということで少しいつもと違う技術的なトピックでしたが、あまりネット上で見つけられない情報だったので。

(この投稿は2018年9月8日 6:16 PMに投稿した物を加筆修正しています)

最新情報をチェックしよう!