pimvh.postfix
分子测试
要求
- 安装 Ansible:
sudo apt install python3
python3 -m ensurepip --upgrade
pip3 install ansible
- 安装这个角色:
ansible-galaxy install pimvh.postfix
需要的变量
请查看默认值中显示的变量。在 meta/main.yaml
中包含了变量的描述。传递给这个角色的变量将在运行时通过参数规范进行验证。
示例剧本
在主机上运行这个角色的简单方法如下:
- hosts:
- foo
vars:
postfix_ipv4: << 在这里传递 Postfix 邮件服务器的 IPv4 地址 >>
postfix_ipv6: << 在这里传递 Postfix 邮件服务器的 IPv6 地址 >>
postfix_myhostname: "<< 在这里传递 Postfix 域名 >>"
postfix_mydomain: "<< 在这里传递 Postfix 域,默认为 myhostname >>"
postfix_mynetworks:
- 127.0.0.0/8
- "::1/128" # 您不需要将 IPv6 地址用括号括起来,过滤器会处理
# 根据需要添加额外网络
postfix_virtual_alias_domains: [] # 根据需要添加虚拟别名域(请参见 meta/main.yaml 的结构)
postfix_relay_domains: [] # 根据需要添加中继域(请参见 defaults/main.yaml 的结构)
postfix_aliases: # 根据需要添加用户别名
- user: root
alias: postmaster
# 也可以是用户列表
# - users:
# - fred
# - foo
# - bar
# alias: something
postfix_virtual_aliases: [] # 根据需要添加虚拟别名(请参见 meta/main.yaml 的结构)
# 您可以跳过其余的变量
# postfix_install: true
# postfix_dir: /etc/postfix
# postfix_dkim_enabled: true # DKIM 默认启用
# postfix_dkim_keys:
# default:
# mail: "*"
# DKIM 文件放置文件系统中
# postfix_dkim_keytable: /etc/opendkim/keytable
# postfix_dkim_signingtable: /etc/opendkim/signingtable
# postfix_dkim_trustedhosts: "/etc/opendkim/trustedhosts"
# 证书位置基于 certbots 默认位置(您可以运行 pimvh.certbot 角色以获取证书)
# postfix_smtpd_tls_cert_file: "/etc/letsencrypt/live/{{ postfix_mydomain }}/fullchain.pem"
# postfix_smtpd_tls_key_file: "/etc/letsencrypt/live/{{ postfix_mydomain }}/privkey.pem"
roles:
- pimvh.postfix
如果您不在线设置变量而是基于主机和/或组,您可能会节省一些重构的工作,不过这取决于您具体的使用案例。请查看 Ansible 推荐的剧本设置。
TLDR - 如果我运行这个会发生什么
- 验证变量是否正确
- 安装 Postfix
- 安装并配置 Amavis
- 安装并配置 OpenDKIM
- 安装并配置 OpenDMARC
- 安装并配置 Dovecot,带系统用户和虚拟邮件目录
- 配置 Mailutils(该角色依赖于这个安装)
这个角色不做的事情
防火墙设置
这个角色不进行任何防火墙设置,因为您可能有特定的需求。您可能不希望将 IMAP 端口开放给整个互联网,如果可以避免的话。所以要小心!
设置数据库后端
我还没有配置数据库作为 Postfix 的后端。如果您有兴趣,请随时贡献。
故障排除
这个角色会验证传递的变量。如果您:
- 在参数规范中看到问题,您可能在传递变量时犯了错误。
- 在运行这个剧本时遇到问题,不要犹豫,详细描述您的问题并提交一个问题。
未来改进
这个角色还有很多可以改进的地方。以下是我考虑添加的一些功能:
- 添加一个 DMARC 解析工具
- 为 Postfix 服务器添加更好的后端,例如用数据库替代纯文件系统。
如果您有其他改进,请随时提交一个问题。