postfix-dovecot

ansible-role-postfix-dovecot

Ansible-роль, которая автоматизирует установку и настройку Postfix и Dovecot с аутентификацией MySQL на Ubuntu. Схема MySQL взята из следующего урока Digital Ocean. Вы можете посмотреть схему MySQL в schema.sql.

Переменные роли

Обязательные переменные

  • dovecot_ssl_cert - путь к SSL-сертификату, используемому Dovecot. Обратите внимание, что если вам нужно предоставить цепочку сертификатов, она должна быть объединена с сертификатом в одном файле.
  • dovecot_ssl_key - путь к SSL-ключу, используемому Dovecot.
  • postfix_ssl_cert - путь к SSL-сертификату, используемому Postfix. Если это применимо, также должна включаться промежуточная CA.
  • postfix_ssl_key - путь к SSL-ключу, используемому Postfix.
  • postfix_dovecot_mysql_password - пароль пользователя, который имеет разрешение на запрос к базе данных на сервере SQL, используемом для аутентификации.

Необязательные переменные

  • postfix_dovecot_mysql_host - полное доменное имя (FQDN) или IP-адрес сервера MySQL для аутентификации. По умолчанию используется 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_authenticated и reject.
  • postfix_smtpd_tls_auth_only - позволяет ли только аутентификацию SASL через SSL/TLS. По умолчанию используется yes.
  • postfix_smtpd_recipient_restrictions - список ограничений для получателей входящей почты. Для получения дополнительной информации посетите документацию Postfix. По умолчанию используется permit_sasl_authenticated, permit_mynetworks и reject_unauth_destination.
  • postfix_smtpd_relay_restrictions - список ограничений для реле. Для получения дополнительной информации посетите документацию Postfix. По умолчанию используется permit_mynetworks, permit_sasl_authenticated и defer_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 - уровень безопасности SMTP TLS для SMTP-сервера Postfix (отправка). По умолчанию для Debian и Red Hat >= 8 используется dane, для Red Hat 7 - may. Для получения дополнительной информации посетите документацию Postfix.
  • dovecot_protocols - список протоколов, которые должны быть включены. По умолчанию используются lmtp и imap. Чтобы включить 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. По умолчанию используются plain и login. Для получения дополнительной информации ознакомьтесь с документацией 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 - список IP-адресов или хостов, на которых Dovecot слушает соединения. По умолчанию используется * (все 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 для обработки базы данных и сертификатов certbot.

requirements.yml

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

Плейбук подготавливает для вас:

  • базу данных и ее пользователей
  • сертификат Let's Encrypt
  • службу пересылки почты postfix
  • службу почтового ящика dovecot
---
- name: Настройка почты
  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/ansible-role-postfix-dovecot
Лицензия
Unknown
Загрузки
30682
Владелец