StackFocus.postfix-dovecot

ansible-role-postfix-dovecot

这是一个Ansible角色,用于自动化安装和配置Postfix和Dovecot,并在Ubuntu上使用MySQL进行身份验证。MySQL的模式来源于以下Digital Ocean教程。你可以在 schema.sql 中查看使用的MySQL模式。

角色变量

必需变量

  • dovecot_ssl_cert - Dovecot使用的SSL证书的路径。如果需要提供证书链,必须将其与证书合并在同一个文件中。
  • dovecot_ssl_key - Dovecot使用的SSL密钥的路径。
  • postfix_ssl_cert - Postfix使用的SSL证书的路径。如果适用,还应包括中介CA。
  • postfix_ssl_key - Postfix使用的SSL密钥的路径。
  • postfix_dovecot_mysql_password - 用于身份验证的SQL数据库服务器上,可以查询数据库的用户的密码。

可选变量

  • postfix_dovecot_mysql_host - 用于身份验证的MySQL服务器的完全合格域名或IP地址。默认为127.0.0.1
  • postfix_dovecot_mysql_db_name - 用于身份验证的MySQL服务器上的数据库名称。默认为servermail
  • postfix_dovecot_mysql_user - 用于身份验证的MySQL服务器上,可以查询数据库的用户。默认为usermail
  • postfix_dovecot_mysql_password_scheme - 用于加密数据库密码的密码方案。默认为SHA512-CRYPT
  • postfix_default_domain - Postfix使用的默认域值,特别是在Postfix确定发送者域时发送退回消息。设置/etc/mailname的内容。
  • postfix_inet_protocols - Postfix应该监听的协议。要仅使用IPv4,请将此值设置为ipv4。默认为all
  • postfix_submission_smtpd_client_restrictions - 邮件提交端口(587)上的客户端限制列表。有关更多信息,请访问Postfix文档。默认为permit_sasl_authenticatedreject
  • postfix_smtpd_tls_auth_only - 是否仅允许通过SSL/TLS进行SASL身份验证。默认为yes
  • postfix_smtpd_recipient_restrictions - 收件人限制的列表。有关更多信息,请访问Postfix文档。默认为permit_sasl_authenticatedpermit_mynetworksreject_unauth_destination
  • postfix_smtpd_relay_restrictions - 中继限制的列表。有关更多信息,请访问Postfix文档。默认为permit_mynetworkspermit_sasl_authenticateddefer_unauth_destination
  • postfix_mynetworks - 受信任的SMTP客户端列表。有关更多信息,请访问Postfix文档。默认为127.0.0.0/8[::ffff:127.0.0.0]/104[::1]/128
  • postfix_mydestination - Postfix配置值mydestination的列表。有关信息,请访问Postfix文档。默认为localhost
  • postfix_mysql_alias_query - 用于查找别名目标的查询,当提供源时使用。默认为SELECT destination FROM virtual_aliases WHERE source='%s';
  • postfix_mysql_domains_query - 用于确定域名是否有效的查询。默认为SELECT 1 FROM virtual_domains WHERE name='%s';
  • postfix_mysql_users_query - 用于确定电子邮件地址是否有效的查询。默认为SELECT 1 FROM virtual_users WHERE email='%s';
  • dovecot_mysql_password_query - 用于在MySQL服务器上验证用户的查询。默认为SELECT email as user, password FROM virtual_users WHERE email='%u';
  • postfix_relayhost - 通过上游中继主机发送邮件。有关更多信息,请访问Postfix文档
  • postfix_smtp_tls_security_level - Postfix SMTP服务器(发送)的SMTP TLS安全级别。Debian和Red Hat >= 8的默认值为dane,Red Hat 7的默认值为may。有关更多信息,请访问Postfix文档
  • dovecot_protocols - 要启用的协议列表。默认为lmtpimap。要启用POP3,请将pop3添加到此变量中。(注意:在目标上使用apt install dovecot-pop3d以使用pop3)。
  • dovecot_mail_privileged_group - 拥有dovecot_mail_location中定义的文件夹的组。这使Dovecot的邮件进程能够在该文件夹中写入。默认为mail
  • dovecot_disable_plaintext_auth - 确定是否启用不使用SSL的身份验证。默认为'yes'。
  • dovecot_auth_mechanisms - Dovecot允许的身份验证机制列表。默认为plainlogin。有关更多信息,请阅读Dovecot的身份验证机制文档。
  • dovecot_force_imaps - 确定是否禁用IMAP并强制使用IMAPS。默认为true
  • dovecot_force_pop3s - 确定是否禁用POP3并强制使用POP3S。默认为true。请注意,要启用POP3S,还需将pop3添加到dovecot_protocols列表变量中。
  • dovecot_ssl - 确定是否在所有协议上强制使用SSL。默认为required。有关更多信息,请阅读Dovecot的SSL配置文档。
  • dovecot_listen - Dovecot监听连接的IP或主机地址列表。默认为*(所有IPv4)和'::'(所有IPv6)。
  • dovecot_add_example_users - 设置为true时,向数据库添加示例用户。

要求

  • 此角色必须以sudo/become或root身份运行,否则角色将失败。
  • MySQL服务器需要预先配置,且用户应具有数据库的适当权限(请参见[defaults/main.yml]以获取默认值)。
  • 在Red Hat服务器上,您需要预先安装PyMSQL(python{2,3}-PyMySQL,选择适合您的版本)。

示例剧本

requirements.yml

roles:
  - name: stackfocus.postfix-dovecot

site.yml

- hosts: all
  become: yes
  gather_facts: true
  roles:
    - stackfocus.postfix-dovecot
  vars:
    postfix_dovecot_mysql_db_name: mailserver
    postfix_dovecot_mysql_user: mailuser
    postfix_dovecot_mysql_password: mailpass
    postfix_default_domain: example.com
    dovecot_protocols:
      - imap
      - pop3
      - lmtp
    dovecot_mail_privileged_group: vmail
    dovecot_ssl_cert: /etc/ssl/certs/dovecot.pem
    dovecot_ssl_key: /etc/ssl/private/dovecot.pem
    postfix_ssl_cert: /etc/ssl/certs/postfix.pem
    postfix_ssl_key: /etc/ssl/private/postfix.pem
$ ansible-galaxy install -r requirements.yml
$ ansible-playbook -i inventory site.yml --ask-become-pass

新服务器的扩展示例剧本

在这个例子中,我们使用一些geerlingguy的角色来处理数据库和证书。

requirements.yml

roles:
  - name: stackfocus.postfix-dovecot
  - name: geerlingguy.mysql
  - name: geerlingguy.certbot

剧本为您准备:

  • 数据库及其用户
  • Let's Encrypt证书
  • 邮件传输服务Postfix
  • 邮箱服务Dovecot
---
- name: Setup mail
  hosts: mailserver.tld
  become: true
  vars:
    mail_domain: mycooldomain.com
    mail_database: maildb
    mail_db_pass: 'ultrasafepassword'
  roles:
    - role: geerlingguy.mysql
      mysql_databases:
        - name: '{{ mail_database }}'
          encoding: utf8mb4
          collation: utf8mb4_czech_ci
      mysql_users:
        - name: '{{ mail_database }}'
          host: "localhost"
          password: '{{ mail_db_pass }}'
          priv: "{{ mail_database }}.*:ALL"
    - role: geerlingguy.certbot
      certbot_certs:
        - domains:
            - '{{ mail_domain }}'
            - 'mail.{{ mail_domain }}'
    - role: stackfocus.postfix-dovecot
      postfix_dovecot_mysql_db_name: '{{ mail_database }}'
      postfix_dovecot_mysql_user: '{{ mail_database }}'
      postfix_dovecot_mysql_password: '{{ mail_db_pass }}'
      postfix_default_domain: '{{ mail_domain }}'
      dovecot_protocols:
        - imap
        - pop3
        - lmtp
      dovecot_mail_privileged_group: vmail
      dovecot_ssl_cert: /etc/letsencrypt/live/{{ mail_domain }}/fullchain.pem
      dovecot_ssl_key: /etc/letsencrypt/live/{{ mail_domain }}/privkey.pem
      postfix_ssl_cert: /etc/letsencrypt/live/{{ mail_domain }}/fullchain.pem
      postfix_ssl_key: /etc/letsencrypt/live/{{ mail_domain }}/privkey.pem
      postfix_smtp_tls_security_level: 'dane'
      postfix_mydestination: '{{mail_domain}}'
      postfix_myhostname: 'mail.{{mail_domain}}'
关于项目

automates the installation and configuration of Postfix and Dovecot with SQL authentication

安装
ansible-galaxy install StackFocus.postfix-dovecot
许可证
Unknown
下载
30.7k
拥有者