StackFocus.postfix-dovecot

ansible-role-postfix-dovecot

Ansibleのロールで、UbuntuにPostfixとDovecotをMySQL認証で自動インストール・設定します。MySQLのスキーマは、以下のDigital Oceanチュートリアルから取得されています。 使用されているMySQLのスキーマは schema.sqlで見ることができます。

ロール変数

必要な変数

  • 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サーバーのFQDNまたは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がデフォルトで使用するドメインの値。これはバウンスメッセージ送信時に送信者のドメインを特定する際に使用されます。/etc/mailnameの内容を設定します。
  • postfix_inet_protocols - Postfixがリッスンすべきプロトコル。IPv4のみを許可するには、この値をipv4に設定します。デフォルトはallです。
  • postfix_submission_smtpd_client_restrictions - メール送信ポート(587)のクライアント制限のリスト。詳細はPostfixのドキュメントを参照してください。 デフォルトはpermit_sasl_authenticatedおよびrejectです。
  • 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を追加します。(注:POP3を使用するには、対象でapt install dovecot-pop3dを行う必要があります)
  • dovecot_mail_privileged_group - dovecot_mail_locationで定義されたフォルダを所有するグループ。これにより、Dovecotのメールプロセスがそのフォルダに書き込む能力を持ちます。デフォルトはmailです。
  • dovecot_disable_plaintext_auth - SSLなしでの認証を有効にするかどうかを決定します。デフォルトは'yes'です。
  • dovecot_auth_mechanisms - Dovecotによって許可される認証メカニズムのリスト。デフォルトはplainloginです。詳細はDovecotのAuthentication Mechanismsを読みください。
  • dovecot_force_imaps - IMAPを無効にしてIMAPSを強制するかどうかを決定します。デフォルトはtrueです。
  • dovecot_force_pop3s - POP3を無効にしてPOP3Sを強制するかどうかを決定します。デフォルトはtrueです。 POP3Sを同時に有効にするには、dovecot_protocolsリストにpop3を追加する必要があります。
  • dovecot_ssl - すべてのプロトコルでSSLが強制されるかどうかを決定します。デフォルトはrequiredです。詳細はDovecotのSSL Configurationを読みください。
  • 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、適切な方をインストールする必要があります)を事前にインストールする必要があります。

例のPlaybook

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

新しいサーバーのための拡張例のplaybook

この例では、いくつかのgeerlingguyのロールを使用して、データベースとcertbotの証明書を管理します。

requirements.yml

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

Playbookは次のように準備します:

  • データベースとそのユーザー
  • 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
所有者