StackFocus.postfix-dovecot

ansible-role-postfix-dovecot

Rola Ansible, która automatyzuje instalację i konfigurację Postfix oraz Dovecot z autoryzacją MySQL na systemie Ubuntu. Schemat bazy danych MySQL pochodzi z następującego poradnika Digital Ocean. Możesz zobaczyć używany schemat MySQL w pliku schema.sql.

Zmienne roli

Wymagane zmienne

  • dovecot_ssl_cert - ścieżka do certyfikatu SSL używanego przez Dovecot. Jeśli potrzebujesz podać łańcuch certyfikatów, musi być sklejony z certyfikatem w tym samym pliku.
  • dovecot_ssl_key - ścieżka do klucza SSL używanego przez Dovecot.
  • postfix_ssl_cert - ścieżka do certyfikatu SSL używanego przez Postfix. Powinien zawierać również pośredni certyfikat CA, jeśli to możliwe.
  • postfix_ssl_key - ścieżka do klucza SSL używanego przez Postfix.
  • postfix_dovecot_mysql_password - hasło do użytkownika, który ma pozwolenie na zapytania do bazy danych na serwerze SQL używanym do autoryzacji.

Opcjonalne zmienne

  • postfix_dovecot_mysql_host - FQDN lub adres IP serwera MySQL do autoryzacji. Domyślnie ustawione na 127.0.0.1.
  • postfix_dovecot_mysql_db_name - nazwa bazy danych na serwerze MySQL używana do autoryzacji. Domyślnie ustawiona na servermail.
  • postfix_dovecot_mysql_user - użytkownik, który ma pozwolenie na zapytania do bazy danych na serwerze MySQL używanym do autoryzacji. Domyślnie ustawione na usermail.
  • postfix_dovecot_mysql_password_scheme - schemat hasła używany do szyfrowania haseł w bazie danych. Domyślnie SHA512-CRYPT.
  • postfix_default_domain - wartość, która ustala domyślną domenę używaną przez Postfix, szczególnie kiedy Postfix określa domenę nadawcy przy wysyłaniu komunikatów zwrotnych. Ustala zawartość /etc/mailname.
  • postfix_inet_protocols - protokół, na którym Postfix powinien nasłuchiwać. Aby używać tylko IPv4, ustaw tę wartość na ipv4. Domyślnie all.
  • postfix_submission_smtpd_client_restrictions - lista ograniczeń klientów na porcie przesyłania poczty (587). Więcej informacji można znaleźć w dokumentacji Postfix. Domyślnie permit_sasl_authenticated i reject.
  • postfix_smtpd_tls_auth_only - czy zezwolić tylko na autoryzację SASL przez SSL/TLS. Domyślnie yes.
  • postfix_smtpd_recipient_restrictions - lista ograniczeń dla odbiorców przychodzącej poczty e-mail. Więcej informacji można znaleźć w dokumentacji Postfix. Domyślnie permit_sasl_authenticated, permit_mynetworks, i reject_unauth_destination.
  • postfix_smtpd_relay_restrictions - lista ograniczeń relacji. Więcej informacji można znaleźć w dokumentacji Postfix. Domyślnie permit_mynetworks, permit_sasl_authenticated, i defer_unauth_destination.
  • postfix_mynetworks - lista zaufanych klientów SMTP. Więcej informacji można znaleźć w dokumentacji Postfix. Domyślnie 127.0.0.0/8, [::ffff:127.0.0.0]/104, [::1]/128.
  • postfix_mydestination - lista konfiguracji wartości Postfix mydestination. Więcej informacji można znaleźć w dokumentacji Postfix. Domyślnie localhost.
  • postfix_mysql_alias_query - zapytanie używane do znalezienia destynacji aliasu, gdy źródło jest podane. Domyślnie SELECT destination FROM virtual_aliases WHERE source='%s';.
  • postfix_mysql_domains_query - zapytanie używane do sprawdzenia, czy domena jest ważna. Domyślnie SELECT 1 FROM virtual_domains WHERE name='%s';.
  • postfix_mysql_users_query - zapytanie używane do sprawdzenia, czy adres e-mail jest ważny. Domyślnie SELECT 1 FROM virtual_users WHERE email='%s';.
  • dovecot_mysql_password_query - zapytanie używane do autoryzacji użytkownika na serwerze MySQL. Domyślnie SELECT email as user, password FROM virtual_users WHERE email='%u';.
  • postfix_relayhost - wysyła email przez zewnętrzny serwer relay. Więcej informacji można znaleźć w dokumentacji Postfix.
  • postfix_smtp_tls_security_level - poziom bezpieczeństwa TLS SMTP dla serwera SMTP Postfix (wysyłanie). Domyślnie dla Debian i Red Hat >= 8 to dane, dla Red Hat 7 to may. Więcej informacji można znaleźć w dokumentacji Postfix.
  • dovecot_protocols - lista protokołów do włączenia. Domyślnie lmtp i imap. Aby włączyć POP3, dodaj pop3 do tej zmiennej. (Uwaga: apt install dovecot-pop3d na celu użycia POP3).
  • dovecot_mail_privileged_group - grupa, która posiada folder zdefiniowany w dovecot_mail_location. To umożliwia procesowi poczty Dovecot zapis w tym folderze. Domyślnie mail.
  • dovecot_disable_plaintext_auth - określa, czy autoryzacja bez SSL jest włączona. Domyślnie 'yes'.
  • dovecot_auth_mechanisms - lista mechanizmów autoryzacji dozwolonych przez Dovecot. Domyślnie plain i login. Więcej informacji można znaleźć w dokumentacji Dovecot Mechanizmy Autoryzacji.
  • dovecot_force_imaps - określa, czy wyłączyć IMAP i wymusić IMAPS. Domyślnie true.
  • dovecot_force_pop3s - określa, czy wyłączyć POP3 i wymusić POP3S. Domyślnie true. Należy pamiętać, że aby również włączyć POP3S, musisz dodać POP3 do listy zmiennych dovecot_protocols.
  • dovecot_ssl - określa, czy SSL jest wymuszony we wszystkich protokołach. Domyślnie required. Więcej informacji można znaleźć w dokumentacji Dovecot Konfiguracja SSL.
  • dovecot_listen - lista adresów IP lub hostów, na których Dovecot nasłuchuje połączeń. Domyślnie * (wszystkie IPv4) i '::' (wszystkie IPv6).
  • dovecot_add_example_users - gdy ustawiona na true, dodaje przykładowych użytkowników do bazy danych.

Wymagania

  • Ta rola musi być uruchamiana z sudo/become lub jako root, inaczej rola się nie powiedzie.
  • Serwer MySQL musi być wcześniej skonfigurowany, a użytkownik powinien mieć odpowiednie uprawnienia do bazy danych (patrz [defaults/main.yml] dla wartości domyślnych).
  • Na serwerach Red Hat należy wcześniej zainstalować PyMySQL (python{2,3}-PyMySQL, w zależności od twoich potrzeb).

Przykładowy 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

Rozszerzony przykład playbooka dla nowego serwera

W tym przykładzie używamy kilku ról geerlingguy do obsługi bazy danych i certyfikatów certbota.

requirements.yml

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

Playbook przygotowuje dla Ciebie:

  • bazę danych i jej użytkowników
  • certyfikat Let's Encrypt
  • usługę transportu poczty Postfix
  • usługę skrzynki pocztowej Dovecot
---
- name: Konfiguracja poczty
  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}}'
O projekcie

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

Zainstaluj
ansible-galaxy install StackFocus.postfix-dovecot
Licencja
Unknown
Pobrania
30.7k
Właściciel