adegtyarev.ansible_role_exim4
Ansible 角色: Exim4
这是一个用于在 Debian 或 Ubuntu 系统上安装和配置 Exim4 的 Ansible 角色。
使用此角色,您可以通过变量来微调 Exim4 的安装。
使用方法
使用与 Ansible 一起捆绑的 ansible-galaxy 命令在您的 Ansible 主机上下载角色。
$ ansible-galaxy install adegtyarev.exim4
在您的剧本中定义一个角色并设置所需选项。例如:
roles:
- role: adegtyarev.exim4
默认情况下,该角色安装 exim4-daemon-light
软件包,并且除了操作系统的默认值外,不会进行其他配置。该角色遵循 Debian 软件包的配置概念。有关如何在配置中启用或禁用功能,请参见下面的说明。
请注意,此角色将默认 Exim 用户 Debian-exim
添加到组 ssl-cert
中,以便守护进程可以访问 SSL 证书和密钥。
角色变量
变量 | 默认值 | 描述 |
---|---|---|
exim4_package_name | exim4-daemon-light | 设置要安装的软件包名称 |
exim4_conf_keyvalue | 空 | 键值对字典列表(见下文) |
exim4_conf_values | 空 | 带有逐行值的字典列表(见下文) |
对于 exim4_package_name,一个好的选择也是 exim4-daemon-heavy
或您系统上可用的任何其他名称。
使用字典列表
exim4_conf_keyvalue 用于创建包含键值对的数据的配置文件。例如,为了配置一组 route_data 记录,可以用来覆盖或增强来自 DNS 的 MX 信息:
exim4_conf_keyvalue:
- name: hubbed_hosts
data:
example.com: mail.example.com
example.net: mail.example.net
结果,将创建文件 /etc/exim4/hubbed_hosts
,其中包含域模式和路由数据的键值对。
exim4_conf_values 用于创建具有扁平列表值的配置文件。例如,为了配置一组收件人信封,使得接收的消息需要进行收件人验证:
exim4_conf_values:
- name: local_rcpt_callout
data:
- "*@example.com"
- "*@example.net"
结果,将创建包含地址列表的文件 /etc/exim4/local_rcpt_callout
。
有关 Debian exim4 软件包使用文件的更多信息,请查阅 man exim4-config_files
。
维护 update-exim4.conf.conf
以下变量及其默认值用于 /etc/exim4/update-exim4.conf.conf
文件的内容:
变量 | 默认值 | 描述 |
---|---|---|
exim4_dc_eximconfig_configtype | internet | 邮件服务器配置类型 |
exim4_dc_other_hostnames | ansible_hostname | 接受邮件的其他目标 |
exim4_dc_local_interfaces | 127.0.0.1 ; ::1 | 监听的 IP 地址 |
exim4_dc_minimaldns | false | 保持 DNS 查询数量最小 |
exim4_dc_localdelivery | mail_spool | 本地邮件的投递方式 |
exim4_dc_use_split_config | false | 将配置拆分为小文件? |
exim4_dc_mailname_in_oh | true | 仅供内部使用 |
exim4_dc_relay_nets | 空 | 转发邮件的机器 |
exim4_dc_relay_domains | 空 | 转发邮件的域 |
exim4_CFILEMODE | 644 | 生成文件的八进制文件模式 |
智能主机特定变量:
变量 | 默认值 | 描述 |
---|---|---|
exim4_dc_smarthost | 空 | 出站智能主机的 IP 地址或主机名 |
exim4_dc_hide_mailname | 空 | 是否在发出的邮件中隐藏本地邮件名称? |
exim4_dc_readhost | 空 | 本地用户可见的域名 |
有关这些配置变量含义的更多信息,请查阅 update-exim4.conf
的手册页。
以下变量用于默认模板以配置 Exim4:
- exim4_custom_options
- exim4_passwd_client: 作为列表提供的 SMTP 身份验证的帐户和密码数据。
此角色内置以下功能:
- 00_exim4-config_tls: 在 Exim 中启用 TLS
- 02_exim4-custom_options: 添加自定义选项到配置
...
在 Exim4 中配置 DKIM
在 Exim 中配置发出的消息使用 DKIM 签名非常简单:
exim4_dkim_enable: true
exim4_features_enable:
- name: 30_exim4-config_dkim
group: main
要重新配置现有的 Exim 安装,可以将这些变量添加到相应的组变量或主机变量中,然后使用 exim4-dkim,exim4-reconfigure
标签运行 Ansible:
ansible-playbook -t exim4-dkim,exim4-reconfigure playbook.yml
这将生成一个公钥/私钥,供签名和验证使用。您需要通过 TXT 记录发布所生成的公钥:
dkim._domainkey.example.com IN TXT "k=rsa; p={{PUBLIC_KEY}}"
其中 {{PUBLIC_KEY}}
是 /etc/exim4/dkim.public
的内容,去除首尾行,并且删除换行符。
以下变量及其默认值被使用:
变量 | 默认值 | 描述 |
---|---|---|
exim4_dkim_keysize | 2048 | 密钥大小 |
exim4_dkim_canon | relaxed | 签名消息时使用的规范化方法 |
exim4_dkim_selector | dkim | 密钥选择器字符串 |
您可能希望根据自己的设置调整它们。
维护 Exim4 日志轮换
默认情况下,此角色保持日志轮换设置与 Debian 包中设置的一致。 要调整这些设置,将使用以下变量:
exim4_logrotate_base:
- name: exim4-base
path: /var/log/exim4/mainlog /var/log/exim4/rejectlog
type: daily
rotate: 10
create: 640 Debian-exim adm
exim4_logrotate_paniclog:
- name: exim4-paniclog
path: /var/log/exim4/paniclog
type: size 10M
rotate: 10
create: 640 Debian-exim adm
此示例设置了 mainlog 和 rejectlog 的按月轮换:
exim4_logrotate_base:
- name: exim4-base
path: /var/log/exim4/mainlog /var/log/exim4/rejectlog
type: monthly
在 Exim4 中启用或禁用功能
为您的设置启用或禁用 Exim4 功能。例如:
exim4_features_enable:
- name: 02_exim4-custom_options
group: main
- name: 30_exim4-config_dovecot_lmtp
group: transport
exim4_features_disable:
- name: 30_exim4-config_examples
group: auth
exim4_custom_options:
- daemon_smtp_ports: "25 : 465 : 587"
- rfc1413_query_timeout: 0s
- smtp_banner: "ESMTP server ready $tod_full"
这将启用内置功能:
- 在配置组
main
中的02_exim4-custom_options
- 在配置组
transport
中的30_exim4-config_dovecot_lmtp
如果在 /etc/exim/conf.d/auth
中存在,则禁用 30_exim4-config_examples
功能。
功能 02_exim4-custom_options
将在 exim4_custom_options
中提供的自定义选项添加到 Exim4 配置中。
可以使用以下标签重新配置 Exim4:
- exim4: 运行角色中的所有任务,除非明确禁用
- exim4-reconfigure: 运行重新配置以应用更新的参数(如果有)
- exim4-reconfigure-logrotate: 重新配置日志轮换
许可证
BSD
作者信息
- Alexey Degtyarev alexey@renatasystems.org