robertdebock.postfix
Ansible角色Postfix
在您的系统上安装和配置Postfix。
GitHub | GitLab | 下载 | 版本 |
---|---|---|---|
示例剧本
以下示例来自molecule/default/converge.yml
,并在每次推送、拉取请求和发布时进行测试。
---
- name: Converge
hosts: all
become: true
gather_facts: true
roles:
- role: robertdebock.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: Prepare
hosts: all
become: true
gather_facts: false
roles:
- role: robertdebock.bootstrap
- role: robertdebock.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,
# (提示:role: robertdebock.spamassassin)并设置这两个变量:
# postfix_spamassassin: enabled
# postfix_spamassassin_user: spamd
# 要启用clamav,确保已安装clamav,
# (提示:role: robertdebock.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"
# 虚拟(8)投递代理在从$virtual_mailbox_maps表查找路径名结果时前缀的字符串。
# 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以来,可用特性的列表取决于所选的smtpd_sasl_type的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
# 包含信任签名远程SMTP客户端证书或中间证书的根CA证书的PEM格式文件。
# 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证书的PEM格式,需复制到目标主机。
# 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私钥的PEM格式,需复制到目标主机。
# 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
# 包含信任签名远程SMTP服务器证书或中间证书的根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
# 默认邮件投递传输和最终交付到列在$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 README文件的位置,描述如何构建、配置或操作特定的Postfix子系统或功能。
# postfix_readme_directory: /usr/share/doc/postfix
# Postfix HTML文件的位置,描述如何构建、配置或操作特定的Postfix子系统或功能。
# 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 | GitLab |
---|---|---|
robertdebock.bootstrap | ||
robertdebock.core_dependencies |
上下文
该角色是许多兼容角色的一部分。有关更多信息,请查看这些角色的文档。
以下是相关角色的概述:
兼容性
该角色已在这些容器镜像上进行测试:
容器 | 标签 |
---|---|
EL | 9 |
Debian | 所有 |
Fedora | 所有 |
Ubuntu | 所有 |
所需的最低Ansible版本为2.12,已对以下版本进行测试:
- 之前的版本。
- 当前版本。
- 开发版本。
如果您发现问题,请在GitHub上进行登记。
许可证
作者信息
请考虑赞助我。
关于项目
Install and configure postfix on your system.
安装
ansible-galaxy install robertdebock.postfix
许可证
apache-2.0
下载
145k
拥有者
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.