buluma.postfix

Ansible角色 postfix

在你的系统上安装和配置postfix。

GitHub 版本 问题 拉取请求 下载
github 版本 问题 拉取请求 Ansible角色

示例剧本

这个示例来自于 molecule/default/converge.yml,并在每次推送、拉取请求和发布时进行了测试。

---
- name: 合并
  hosts: all
  become: true
  gather_facts: true

  roles:
    - role: buluma.postfix
      # postfix_relayhost: "[relay.example.com]"
      postfix_myhostname: "smtp.example.com"
      postfix_mydomain: "example.com"
      postfix_myorigin: "example.com"
      postfix_mynetworks:
        - 127.0.0.0/8
        - 192.168.0.0/16
      postfix_aliases:
        - name: root
          destination: [email protected]
      # Ziggo设置: ("email-address" 和 "email-password" 是占位符)
      postfix_relayhost: "[smtp.ziggo.nl]:587"
      postfix_smtp_sasl_auth_enable: true
      postfix_smtp_sasl_password_map: "/etc/postfix/relay_pass"
      postfix_smtp_sasl_security_options: ""
      postfix_smtp_tls_wrappermode: false
      postfix_smtp_tls_security_level: may
      postfix_smtp_sasl_password_map_content: |
        [smtp.ziggo.nl]:587 email-address:email-password

机器需要做好准备。在CI中,这通过 molecule/default/prepare.yml 来完成:

---
- name: 准备
  hosts: all
  become: true
  gather_facts: false

  roles:
    - role: buluma.bootstrap
    - role: buluma.core_dependencies

另请参见关于如何使用这些角色的 完整说明和示例

角色变量

这些变量的默认值在 defaults/main.yml 中设置:

---
# postfix的默认文件

# 这些设置在postfix中是必需的。
postfix_myhostname: "{{ ansible_fqdn }}"
postfix_mydomain: "{{ ansible_domain | default('localdomain', true) }}"
postfix_myorigin: "{{ ansible_domain | default('localdomain', true) }}"

# 要在公共接口上“监听”,请将inet_interfaces设置为类似“all”或接口名称,如“eth0”。
postfix_inet_interfaces: "loopback-only"

# 启用IPv4,如果支持则启用IPv6 - 如果仅支持IPV4,请设置为ipv4
postfix_inet_protocols: all

# 设置横幅
postfix_banner: "$myhostname ESMTP $mail_name"

# 目标告诉Postfix接受什么邮件。
postfix_mydestination: $mydomain, $myhostname, localhost.$mydomain, localhost

# 要接受来自其他机器的电子邮件,请将mynetworks设置为类似“- 192.168.0.0/24”。
postfix_mynetworks:
  - 127.0.0.0/8

# 这些设置将postfix服务器的角色更改为中继主机。
# postfix_relay_domains: "$mydestination"

# 如果您想将电子邮件转发到另一个中央中继服务器,请设置relayhost。
# 使用括号发送至relayhost的A记录。
# postfix_relayhost: "[relay.example.com]"

# 设置接收邮件的限制。
postfix_smtpd_recipient_restrictions:
  - permit_mynetworks
  - permit_sasl_authenticated
  - reject_unauth_destination
  - reject_invalid_hostname
  - reject_non_fqdn_hostname
  - reject_non_fqdn_sender
  - reject_non_fqdn_recipient
  - reject_unknown_sender_domain
  - reject_unknown_recipient_domain
  - reject_rbl_client sbl.spamhaus.org
  - reject_rbl_client cbl.abuseat.org
  - reject_rbl_client dul.dnsbl.sorbs.net
  - permit

postfix_smtpd_sender_restrictions:
  - reject_unknown_sender_domain

# Postfix SMTP客户端的默认TLS安全级别
# 有效值为:dane, encrypt, fingerprint, may, none, secure, verify
postfix_smtp_tls_security_level: none

# 要启用spamassassin,请确保已安装spamassassin,
# (提示:角色: buluma.spamassassin)并设置这两个变量:
# postfix_spamassassin: enabled
# postfix_spamassassin_user: spamd

# 要启用clamav,请确保已安装clamav,
# (提示:角色: buluma.clamav)并设置此变量:
# postfix_clamav: enabled

# 您可以在这里配置别名。通常重定向`root`是个好主意。
# postfix_aliases:
#   - name: root
#     destination: [email protected]

# 您可以在这里配置发件人访问控制。
# postfix_sender_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# 您可以在这里配置收件人访问控制。
# postfix_recipient_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# 您可以在这里禁用SSL/TLS版本。
# postfix_tls_protocols: '!SSLv2, !SSLv3, !TLSv1, !TLSv1.1'

# 您可以在这里提供transport_maps Jinja2模板
# postfix_transport_maps_template: /path/to/transport.j2

# 您可以在这里提供header_checks Jinja2模板
# postfix_header_checks_template: /path/to/header_checks.j2

# 是否使用本地biff服务。
# postfix_biff: true

# 对于本地提交的邮件,将字符串 ".$mydomain" 附加到没有 ".domain" 信息的地址
# postfix_append_dot_mydomain: false

# 用于本地(8)投递的别名数据库
# postfix_alias_maps: "hash:/etc/aliases"

# 从$virtual_mailbox_maps表查找时,虚拟(8)投递代理在所有路径名结果前加上的前缀。
# postfix_virtual_mailbox_base: /var/mail

# 匹配$virtual_mailbox_domains的域中所有有效地址的可选查找表。
# postfix_virtual_mailbox_maps: mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf

# Postfix是指定列表域的最终目的地;邮件通过$virtual_transport邮件传输投递。
# postfix_virtual_mailbox_domains: "$virtual_mailbox_maps"

# Postfix是指定列表的虚拟别名域的最终目的地,即所有地址别名为其他本地或远程域中的地址的域。
# postfix_virtual_alias_domains: "$virtual_alias_maps"

# 将特定邮件地址或域别名为其他本地或远程地址的可选查找表。
# postix_virtual_alias_maps: "$virtual_maps"

# 包含虚拟(8)投递代理在写入收件人邮箱时使用的每个收件人用户ID的查找表。
# postfix_virtual_uid_maps: "static:2000"

# 用于虚拟(8)邮箱投递的每收件人组ID的查找表。
# postfix_virtual_gid_maps: "static:2000"

# 在Postfix SMTP服务器中启用SASL身份验证。
# postfix_smtpd_sasl_auth_enable: true

# Postfix SMTP服务器的本地SASL身份验证领域名称。
# postfix_smtpd_sasl_local_domain: $myhostname

# Postfix SMTP服务器SASL安全选项;从Postfix 2.3开始,可用功能的列表取决于使用的选择的SASL服务器实现。
# postfix_smtpd_sasl_security_options: noanonymous

# 在smtpd(8)收到的消息头中报告SASL认证用户的名称。
# postfix_smtpd_sasl_authenticated_header: true

# 启用与实现过时版本AUTH命令(RFC 4954)的远程SMTP客户端的互操作性。
# postfix_broken_sasl_auth_clients: false

# 包含(PEM格式)CA证书的文件,受信任的根CA用于签署远程SMTP客户端证书或中间CA证书。
# postfix_smtpd_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Postfix SMTP服务器RSA证书的PEM格式文件。
# postfix_smtpd_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# 包含Postfix SMTP服务器RSA证书的本地文件,这将被复制到目标主机。
# postfix_smtpd_tls_cert_file_source: ./certs/cert.pem

# Postfix SMTP服务器RSA私钥的PEM格式文件。
# postfix_smtpd_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# 包含Postfix SMTP服务器RSA私钥的本地文件,这将被复制到目标主机。
# postfix_smtpd_tls_key_file_source: ./certs/privkey.pem

# 请求Postfix SMTP服务器生成包含有关所使用协议和密码的信息的Received:消息头,以及远程SMTP客户端的CommonName和客户端证书发布者的CommonName。
# postfix_smtpd_tls_received_header: true

# Postfix SMTP客户端的默认TLS安全级别;指定非空值时,覆盖过时参数smtp_use_tls、smtp_enforce_tls和smtp_tls_enforce_peername。
# postfix_smtpd_tls_security_level: may

# 请求远程SMTP客户端提供客户端证书。
# postfix_smtpd_tls_ask_ccert: true

# 启用Postfix SMTP服务器TLS活动的额外日志记录。
# postfix_smtpd_tls_loglevel: 1

# 包含可选Postfix SMTP服务器TLS会话缓存的文件名。
# postfix_smtpd_tls_session_cache_database: btree:/var/lib/postfix/smtpd_tls_session_cache

# 包含受信任的根CA,用于签署远程SMTP服务器证书或中间CA证书的CA证书的文件。
# postfix_smtp_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Postfix SMTP客户端RSA证书的PEM格式文件。
# postfix_smtp_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Postfix SMTP客户端RSA私钥的PEM格式文件。
# postfix_smtp_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# 包含可选Postfix SMTP客户端TLS会话缓存的文件名。
# postfix_smtp_tls_session_cache_database: btree:/var/lib/postfix/smtp_tls_session_cache

# 提供内存中tlsmgr(8)伪随机数生成器(PRNG)池的外部熵源。
# postfix_tls_random_source: dev:/dev/urandom

# Postfix SMTP服务器接受的TLS协议,必须使用TLS加密。
# postfix_smtpd_tls_mandatory_protocols: TLSv1

# Postfix SMTP客户端将在强制TLS加密时使用的TLS协议。
# postfix_smtp_tls_mandatory_protocols: TLSv1

# Postfix的默认邮件投递传输和最终交付到列出$virtual_mailbox_domains的域的下一跳目的地。
# postfix_virtual_transport: maildrop1

# 相对于本地(8)用户主目录的邮箱文件的可选路径。
# postfix_home_mailbox: Maildir/

# 消息的最大大小(字节),包括信封信息。
# postfix_message_size_limit: 10240000

# 要求远程SMTP客户端在发送MAIL命令或其他需要EHLO协商的命令之前使用HELO或EHLO命令自我介绍。
# postfix_smtpd_helo_required: false

# 计算客户端连接速率和其他速率的时间单位。
# postfix_anvil_rate_time_unit: 60s

# 每个时间单位允许任何客户端对该服务进行的最大连接尝试次数。
# postfix_smtpd_client_connection_rate_limit: 10

# 任何客户端可以同时对该服务进行的最大连接数。
# postfix_smtpd_client_connection_count_limit: 10

# 当投递失败且队列中的时间达到bounce_queue_lifetime限制时,将反弹消息视为无法送达。
# postfix_bounce_queue_lifetime: 5d

# 描述如何构建、配置或操作特定Postfix子系统或功能的Postfix README文件的位置。
# postfix_readme_directory: /usr/share/doc/postfix

# 描述如何构建、配置或操作特定Postfix子系统或功能的Postfix HTML文件的位置。
# postfix_html_directory: /usr/share/doc/postfix

# 您可以更改Postfix监听的端口。
# Postfix使用 `/etc/services` 将服务名称映射到端口号,如 `2525`。
# 因此要么指定端口号,要么指定像`smtp`这样的服务名称。
postfix_smtp_listen_port: smtp

postfix_smtp_sasl_auth_enable: false
postfix_smtp_sasl_password_map: ""
postfix_smtp_sasl_security_options: ""
postfix_smtp_tls_wrappermode: false
postfix_smtp_sasl_password_map_content: ""

要求

使用的角色状态

以下角色用于准备系统。您可以以其他方式准备系统。

要求 GitHub 版本
buluma.bootstrap Ansible Molecule 版本
buluma.core_dependencies Ansible Molecule 版本

上下文

这个角色是许多兼容角色的一部分。请查看这些角色的 文档 以获取更多信息。

以下是相关角色的概述:

依赖关系

兼容性

此角色已在以下 容器镜像 上进行测试:

容器 标签
Amazon 候选
EL 9, 8
Debian 所有
Fedora 所有
Ubuntu 所有
Kali 所有

所需的最低Ansible版本为2.12,测试已在以下版本中进行:

  • 先前版本。
  • 当前版本。
  • 开发版本。

如果您发现问题,请在 GitHub 注册。

更新日志

角色历史

许可证

Apache-2.0

作者信息

Shadow Walker

关于项目

Install and configure postfix on your system.

安装
ansible-galaxy install buluma.postfix
许可证
apache-2.0
下载
86.9k
拥有者
DevOps Engineer