robertdebock.postfix

Rola Ansible Postfix

Zainstaluj i skonfiguruj Postfix na swoim systemie.

GitHub GitLab Pobierania Wersja
github gitlab downloads Wersja

Przykładowy Playbook

Ten przykład pochodzi z molecule/default/converge.yml i jest testowany przy każdym wypchnięciu zmian, wniosku o pull oraz wydaniu.

---
- name: Zbieżność
  hosts: wszystkie
  become: true
  gather_facts: true

  roles:
    - rola: robertdebock.postfix
      # postfix_relayhost: "[relay.example.com]"
      postfix_myhostname: "smtp.example.com"
      postfix_mydomain: "example.com"
      postfix_myorigin: "example.com"
      postfix_mynetworks:
        - 127.0.0.0/8
        - 192.168.0.0/16
      postfix_aliases:
        - name: root
          destination: [email protected]
      # Ustawienia Ziggo: ("email-address" i "email-password" to miejsca wypełniane)
      postfix_relayhost: "[smtp.ziggo.nl]:587"
      postfix_smtp_sasl_auth_enable: true
      postfix_smtp_sasl_password_map: "/etc/postfix/relay_pass"
      postfix_smtp_sasl_security_options: ""
      postfix_smtp_tls_wrappermode: false
      postfix_smtp_tls_security_level: may
      postfix_smtp_sasl_password_map_content: |
        [smtp.ziggo.nl]:587 email-address:email-password

Maszyna musi być przygotowana. W CI odbywa się to za pomocą molecule/default/prepare.yml:

---
- name: Przygotowanie
  hosts: wszystkie
  become: true
  gather_facts: false

  roles:
    - rola: robertdebock.bootstrap
    - rola: robertdebock.core_dependencies

Zobacz także pełne wyjaśnienie i przykład dotyczące korzystania z tych ról.

Zmienne Roli

Domyślne wartości dla zmiennych są ustawione w defaults/main.yml:

---
# plik domyślny dla postfix

# Te ustawienia są wymagane w Postfix.
postfix_myhostname: "{{ ansible_fqdn }}"
postfix_mydomain: "{{ ansible_domain | default('localdomain', true) }}"
postfix_myorigin: "{{ ansible_domain | default('localdomain', true) }}"

# Aby "nasłuchiwać" na publicznych interfejsach, ustaw inet_interfaces na coś takiego jak
# "all" lub nazwę interfejsu, na przykład "eth0".
postfix_inet_interfaces: "loopback-only"

# Włącz IPv4, a jeśli obsługiwane - także IPv6; jeśli tylko IPV4 ustaw na ipv4
postfix_inet_protocols: all

# Ustaw baner
postfix_banner: "$myhostname ESMTP $mail_name"

# Cel określa, dla jakich wiadomości Postfix powinien je akceptować.
postfix_mydestination: $mydomain, $myhostname, localhost.$mydomain, localhost

# Aby akceptować e-maile z innych maszyn, ustaw mynetworks na coś takiego jak
# "- 192.168.0.0/24".
postfix_mynetworks:
  - 127.0.0.0/8

# Te ustawienia zmieniają rolę serwera Postfix na serwer przekaźnikowy.
# postfix_relay_domains: "$mydestination"

# Jeśli chcesz przekazywać e-maile do innego centralnego serwera przekaźnikowego, ustaw relayhost.
# użyj nawiasów, aby wysłać do rekordu A serwera przekaźnikowego.
# postfix_relayhost: "[relay.example.com]"

# Ustaw ograniczenia dotyczące odbierania e-maili.
postfix_smtpd_recipient_restrictions:
  - permit_mynetworks
  - permit_sasl_authenticated
  - reject_unauth_destination
  - reject_invalid_hostname
  - reject_non_fqdn_hostname
  - reject_non_fqdn_sender
  - reject_non_fqdn_recipient
  - reject_unknown_sender_domain
  - reject_unknown_recipient_domain
  - reject_rbl_client sbl.spamhaus.org
  - reject_rbl_client cbl.abuseat.org
  - reject_rbl_client dul.dnsbl.sorbs.net
  - permit

postfix_smtpd_sender_restrictions:
  - reject_unknown_sender_domain

# Domyślny poziom bezpieczeństwa SMTP TLS dla klienta Postfix
# Prawidłowe wartości to: dane, encrypt, fingerprint, may, none, secure, verify
postfix_smtp_tls_security_level: none

# Aby włączyć spamassassin, upewnij się, że spamassassin jest zainstalowany,
# (wskazówka: rola: robertdebock.spamassassin) i ustaw te dwie zmienne:
# postfix_spamassassin: enabled
# postfix_spamassassin_user: spamd

# Aby włączyć clamav, upewnij się, że clamav jest zainstalowany,
# (wskazówka: rola: robertdebock.clamav) i ustaw tę zmienną:
# postfix_clamav: enabled

# Możesz skonfigurować aliasy tutaj. Typowo przekierowanie `root` to dobry pomysł.
# postfix_aliases:
#   - name: root
#     destination: [email protected]

# Możesz skonfigurować kontrolę dostępu nadawczo-ciągnącą tutaj.
# postfix_sender_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Możesz skonfigurować kontrolę dostępu dla odbiorców tutaj.
# postfix_recipient_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# Możesz wyłączyć wersje SSL/TLS tutaj.
# postfix_tls_protocols: '!SSLv2, !SSLv3, !TLSv1, !TLSv1.1'

# Możesz dostarczyć szablon transport_maps Jinja2 tutaj
# postfix_transport_maps_template: /path/to/transport.j2

# Możesz dostarczyć szablon header_checks Jinja2 tutaj
# postfix_header_checks_template: /path/to/header_checks.j2

# Czy korzystać z lokalnej usługi biff.
# postfix_biff: true

# W przypadku lokalnie przesyłanej poczty do adresów, które nie mają informacji o ".domain", 
# dodaj ciąg ".$mydomain".
# postfix_append_dot_mydomain: false

# Bazy danych aliasów wykorzystywanych do dostarczania lokalnego(8)
# postfix_alias_maps: "hash:/etc/aliases"

# Prefiks, który agent dostarczający wirtualne(8) dołącza do wszystkich wyników wyszukiwania w tabeli $virtual_mailbox_maps.
# postfix_virtual_mailbox_base: /var/mail

# Opcjonalne tabele wyszukiwania z wszystkimi ważnymi adresami w domenach zgodnych z $virtual_mailbox_domains.
# postfix_virtual_mailbox_maps: mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf

# Postfix jest ostatecznym miejscem przeznaczenia dla określonej listy domen; e-maile są dostarczane za pomocą transportu dostawy $virtual_transport.
# postfix_virtual_mailbox_domains: "$virtual_mailbox_maps"

# Postfix jest ostatecznym miejscem przeznaczenia dla określonej listy wirtualnych domen aliasów, tj. domen, dla których wszystkie adresy są aliasowane do adresów w innych lokalnych lub zdalnych domenach.
# postfix_virtual_alias_domains: "$virtual_alias_maps"

# Opcjonalne tabele wyszukiwania, które aliasują określone adresy e-mail lub domeny do innych lokalnych lub zdalnych adresów.
# postix_virtual_alias_maps: "$virtual_maps"

# Tabele wyszukiwania z identyfikatorem UID dla każdego odbiorcy, które agent dostarczający wirtualne(8) wykorzystuje podczas pisania do skrzynki odbiorczej odbiorcy.
# postfix_virtual_uid_maps: "static:2000"

# Tabele wyszukiwania z identyfikatorem GID dla każdego odbiorcy, dla dostarczania skrzynki wirtualne(8).
# postfix_virtual_gid_maps: "static:2000"

# Włącz autoryzację SASL w serwerze SMTP Postfix.
# postfix_smtpd_sasl_auth_enable: true

# Nazwa lokalnego sasla serwera SMTP Postfix.
# postfix_smtpd_sasl_local_domain: $myhostname

# Opcje bezpieczeństwa SASL dla serwera SMTP Postfix; od Postfix 2.3 lista dostępnych funkcji zależy od implementacji serwera SASL, która jest wybrana za pomocą smtpd_sasl_type.
# postfix_smtpd_sasl_security_options: noanonymous

# Zgłoś nazwę użytkownika autoryzowanego przez SASL w nagłówku wiadomości smtpd(8) odebranej.
# postfix_smtpd_sasl_authenticated_header: true

# Włącz interoperacyjność z zdalnymi klientami SMTP, które implementują przestarzałą wersję komendy AUTH (RFC 4954).
# postfix_broken_sasl_auth_clients: false

# Plik zawierający (format PEM) certyfikaty CA zaufane do podpisywania certyfikatów zdalnych klientów SMTP lub certyfikatów pośrednich CA.
# postfix_smtpd_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Plik z certyfikatem RSA serwera SMTP Postfix w formacie PEM.
# postfix_smtpd_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Lokalny plik z certyfikatem RSA serwera SMTP Postfix w formacie PEM, który ma być skopiowany do hosta docelowego.
# postfix_smtpd_tls_cert_file_source: ./certs/cert.pem

# Plik z prywatnym kluczem RSA serwera SMTP Postfix w formacie PEM.
# postfix_smtpd_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Lokalny plik z prywatnym kluczem RSA serwera SMTP Postfix w formacie PEM, który ma być skopiowany do hosta docelowego.
# postfix_smtpd_tls_key_file_source: ./certs/privkey.pem

# Żądaj, aby serwer SMTP Postfix generował nagłówki wiadomości Received:, które zawierają informacje o protokole i użytym szyfrowaniu, a także nazwie ogólnej klienta SMTP zdalnego oraz nazwie ogólnej wydawcy certyfikatów.
# postfix_smtpd_tls_received_header: true

# Domyślny poziom bezpieczeństwa SMTP TLS dla klienta Postfix; gdy określona jest niepusta wartość, nadpisuje to przestarzałe parametry smtp_use_tls, smtp_enforce_tls oraz smtp_tls_enforce_peername.
# postfix_smtpd_tls_security_level: may

# Zapytaj zdalnego klienta SMTP o certyfikat klienta.
# postfix_smtpd_tls_ask_ccert: true

# Włącz dodatkowe logowanie serwera SMTP Postfix dotyczące aktywności TLS.
# postfix_smtpd_tls_loglevel: 1

# Nazwa pliku zawierającego opcjonalną pamięć podręczną sesji TLS serwera SMTP Postfix.
# postfix_smtpd_tls_session_cache_database: btree:/var/lib/postfix/smtpd_tls_session_cache

# Plik zawierający certyfikaty CA zaufane do podpisywania żądanych certyfikatów lub certyfikatów pośrednich zdalnych serwerów SMTP.
# postfix_smtp_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Plik z certyfikatem RSA klienta SMTP Postfix w formacie PEM.
# postfix_smtp_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Plik z prywatnym kluczem RSA klienta SMTP Postfix w formacie PEM.
# postfix_smtp_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# Nazwa pliku zawierającego opcjonalną pamięć podręczną sesji TLS klienta SMTP Postfix.
# postfix_smtp_tls_session_cache_database: btree:/var/lib/postfix/smtp_tls_session_cache

# Zewnętrzne źródło entropii dla generatora liczb pseudolosowych tlsmgr(8) w pamięci.
# postfix_tls_random_source: dev:/dev/urandom

# Protokoły TLS akceptowane przez serwer SMTP Postfix z obowiązkowym szyfrowaniem TLS.
# postfix_smtpd_tls_mandatory_protocols: TLSv1

# Protokoły TLS, które klient SMTP Postfix będzie używał z obowiązkowym szyfrowaniem TLS.
# postfix_smtp_tls_mandatory_protocols: TLSv1

# Domyślny transport dostawy mailowej i następny cel dostarczenia do domen wymienionych w $virtual_mailbox_domains.
# postfix_virtual_transport: maildrop1

# Opcjonalna ścieżka do pliku skrzynki pocztowej w odniesieniu do katalogu domowego lokalnego(8) użytkownika.
# postfix_home_mailbox: Maildir/

# Maksymalny rozmiar w bajtach wiadomości, w tym informacje o kopercie.
# postfix_message_size_limit: 10240000

# Wymagaj, aby zdalny klient SMTP przedstawił się jako HELO lub EHLO, zanim wyśle komendę MAIL lub inne komendy wymagające negocjacji EHLO.
# postfix_smtpd_helo_required: false

# Jednostka czasu, w której obliczane są wskaźniki połączeń klientów i inne wskaźniki.
# postfix_anvil_rate_time_unit: 60s

# Maksymalna liczba prób połączenia, jakie może wykonać dowolny klient do tej usługi w danym okresie.
# postfix_smtpd_client_connection_rate_limit: 10

# Jak wiele jednoczesnych połączeń może wykonać dowolny klient do tej usługi.
# postfix_smtpd_client_connection_count_limit: 10

# Uznaj wiadomość odbicia za niedostarczoną, gdy dostarczenie nie powiodło się z tymczasowym błędem, a czas w kolejce osiągnął limit bounce_queue_lifetime.
# postfix_bounce_queue_lifetime: 5d

# Lokalizacja plików README Postfix, które opisują, jak kompilować, konfigurować lub obsługiwać konkretny podsystem lub funkcję Postfix.
# postfix_readme_directory: /usr/share/doc/postfix

# Lokalizacja plików HTML Postfix, które opisują, jak kompilować, konfigurować lub obsługiwać konkretne podsystemy lub funkcje Postfix.
# postfix_html_directory: /usr/share/doc/postfix/html

# Możesz zmienić port, na którym Postfix nasłuchuje.
# Postfix używa `/etc/services` do mapowania nazw usług na numery portów, takie jak `2525`.
# Więc albo określ numer portu, albo nazwę usługi, jak `smtp`.
postfix_smtp_listen_port: smtp

postfix_smtp_sasl_auth_enable: false
postfix_smtp_sasl_password_map: ""
postfix_smtp_sasl_security_options: ""
postfix_smtp_tls_wrappermode: false
postfix_smtp_sasl_password_map_content: ""

Wymagania

Stan używanych ról

Następujące role są używane do przygotowania systemu. Możesz przygotować swój system w inny sposób.

Wymaganie GitHub GitLab
robertdebock.bootstrap Stan budowy GitHub Stan budowy GitLab
robertdebock.core_dependencies Stan budowy GitHub Stan budowy GitLab

Kontekst

Ta rola jest częścią wielu kompatybilnych ról. Sprawdź dokumentację tych ról w celu uzyskania dalszych informacji.

Oto przegląd pokrewnych ról: zależności

Kompatybilność

Ta rola została przetestowana na tych obrazach kontenerowych:

kontener tagi
EL 9
Debian wszystkie
Fedora wszystkie
Ubuntu wszystkie

Minimalna wymagana wersja Ansible to 2.12, testy zostały przeprowadzone na:

  • Poprzedniej wersji.
  • Bieżącej wersji.
  • Wersji deweloperskiej.

Jeśli znajdziesz problemy, zgłoś je na GitHubie.

Licencja

Apache-2.0.

Informacje o autorze

robertdebock

Proszę rozważyć wsparcie finansowe mnie.

O projekcie

Install and configure postfix on your system.

Zainstaluj
ansible-galaxy install robertdebock.postfix
Licencja
apache-2.0
Pobrania
145k
Właściciel
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.