ROCK5GmbH.mailserver
メールサーバーをセットアップするためのAnsibleロール
このansibleのロールは、トーマス・ライストナーによるこのブログ記事に記載されているように、メールサーバーをインストールします。
SSL
SSL証明書とキーは、メールホストの/etc/myssl/$FQDN.crt
と/etc/myssl/$FQDN.key
に配置されることが期待されています(ここで$FQDNはホストの完全修飾ドメイン名です)。このパスは、{{ ssl_directory }}
変数を別のパスに設定することで変更できます。
これらのファイルが存在しない場合、初期利用のために自己署名証明書が作成されますが、これは本番環境では推奨されていません。信頼できるCAによって署名された証明書が必要な場合は、Let's Encryptを利用してください。
変数
このロールを使用するために、以下の変数を設定する必要があります。
変数 | 説明 |
---|---|
dbserver_root_pw | データベースのルートユーザーのパスワード |
mailserver_sql_vmail_password | データベース内のvmailユーザーのパスワード |
milter_sql_spamass_password | データベース内のspamassassinユーザーのパスワード |
mailserver_hostname | メールサーバーのホスト名(例:mail ) |
mailserver_domain | メールサーバーのドメイン(例:example.com ) |
メールサーバーのインストールをカスタマイズするために、さらに多くの変数が利用可能です。これらはこのロールのdefaults/main.yml
やその依存関係に記載されています。
パスワード
vars/vars.yml
にパスワードをプレーンテキストで保存する代わりに、ansible vaultを使用することを検討してください。
vaultのクイックスタートのために、ansible-vault create vars/vault.yml
を実行して、次のように記入できます:
mailserver_sql_vmail_password: foo
milter_sql_spamass_password: bar
dbserver_root_pw: baz
(foo、bar、bazを安全なパスワードに置き換えてください)
このロールを含むプレイブックを実行する際は、--ask-vault-pass
を使用するのを忘れないでください。
デプロイメント
デプロイメントの前に、データベースユーザーのパスワードを必ず設定してください(上記参照)。 また、このプレイブックはUbuntu Server 16.04のデフォルトインストールを前提としており、他のディストリビューションではテストされていません。
サンプルのプレイブックは次のようになります:
---
- hosts: all
become: yes
roles:
- ROCK5GmbH.mailserver
vars:
- vault.yml
このロールとすべての依存関係を取得するには、ansible galaxyを使用できます:
ansible-galaxy install ROCK5GmbH.mailserver
単一ホストにデプロイするには、次のコマンドを実行すれば十分です:
ansible-playbook --ask-vault-pass -i $HOST, playbook.yml
ここで$HOSTはサーバーのIPアドレスまたはURLです。
複数のホストにデプロイしたい場合は、各ホストごとに変数を設定できるように、インベントリを使うことをお勧めします。
デプロイメントが完了すると、メールサーバーはほぼ準備が整います。残るのは実際のドメインとユーザーをSQLデータベースに追加することだけです。
まず、doveadm pw -s SHA512-CRYPT
を使用してユーザーのパスワードのハッシュを生成してください。
ユーザーを追加するには、サーバーにログインし、次のコマンドでデータベースに接続します:
mysql -u root -p
ここで、SQLデータベースのルートパスワードを入力します。次に、ドメイン(ここでは:mysystems.tld)とユーザー(user1)を追加します。
use vmail;
insert into domains (domain) values ('mysystems.tld');
insert into accounts (username, domain, password, quota, enabled, sendonly) values ('user1', 'mysystems.tld', '{SHA512-CRYPT}$kgid87hdenss', 2048, true, false);
さらなるカスタマイズ
このセットアップでは、SQLデータベース内でTLSポリシーを設定できるため、特定のドメインに特定のTLSポリシーを設定できます。 ポリシーを追加するには、次のようにします:
insert into tlspolicies (domain, policy, params) values ('gmx.de', 'secure', 'match=.gmx.net');
さまざまな可能なポリシーは、こちらにリストされ、説明されています。
(match=.gmx.net
は、Postfixがgmx.net
の証明書をチェックすることを保証します。彼らはgmx.de
の証明書を持っていないためです。)
新しいメールサーバーをDNSに追加することもお勧めします(A(AAA)およびMXレコード)、およびSPFとDKIMのエントリも追加してください。
This role installs a mailserver with Postfix, Dovecot, Spamassassin, Amavis, ClamAV and a database backend.
ansible-galaxy install ROCK5GmbH.mailserver