ROCK5GmbH.mailserver
Ansible角色设置邮件服务器
这个ansible角色安装邮件服务器,具体描述请参见 Thomas Leistner的这篇博客。
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替换为安全的密码)
现在,无论何时您使用此角色运行剧本,请记得在ansible-playbook
中使用--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数据库的root密码。现在添加一个域(例如: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