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

作者信息

关于项目

An Ansible role that installs and configures Exim4

安装
ansible-galaxy install adegtyarev.ansible_role_exim4
许可证
Unknown
下载
347
拥有者