buluma.postfix
Ansible角色 postfix
在你的系统上安装和配置postfix。
GitHub | 版本 | 问题 | 拉取请求 | 下载 |
---|---|---|---|---|
示例剧本
这个示例来自于 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: ""
要求
- requirements.txt 中列出的pip包。
使用的角色状态
以下角色用于准备系统。您可以以其他方式准备系统。
要求 | GitHub | 版本 |
---|---|---|
buluma.bootstrap | ||
buluma.core_dependencies |
上下文
这个角色是许多兼容角色的一部分。请查看这些角色的 文档 以获取更多信息。
以下是相关角色的概述:
兼容性
此角色已在以下 容器镜像 上进行测试:
容器 | 标签 |
---|---|
Amazon | 候选 |
EL | 9, 8 |
Debian | 所有 |
Fedora | 所有 |
Ubuntu | 所有 |
Kali | 所有 |
所需的最低Ansible版本为2.12,测试已在以下版本中进行:
- 先前版本。
- 当前版本。
- 开发版本。
如果您发现问题,请在 GitHub 注册。