ROCK5GmbH.mailserver
Rola Ansible do skonfigurowania serwera pocztowego
Ta rola ansible instaluję serwer pocztowy, jak opisano w tym wpisie blogowym autorstwa Thomasa Leistnera.
SSL
Certyfikaty SSL i klucze powinny znajdować się w /etc/myssl/$FQDN.crt
oraz /etc/myssl/$FQDN.key
na hoście pocztowym
(gdzie $FQDN to pełna nazwa hosta). Można to zmienić, ustawiając zmienną {{ ssl_directory }}
na inny katalog.
Jeśli te pliki nie istnieją, zostanie utworzony certyfikat samopodpisany do początkowego użytku,
jednak nie jest on rekomendowany do zastosowań produkcyjnych. Jeśli potrzebujesz certyfikatu podpisanego przez zaufany CA, sprawdź
Let's Encrypt.
Zmienne
Następujące zmienne musisz ustawić, aby móc korzystać z tej roli:
Zmienna | Opis |
---|---|
dbserver_root_pw | hasło dla użytkownika root w bazie danych |
mailserver_sql_vmail_password | hasło dla użytkownika vmail w bazie danych |
milter_sql_spamass_password | hasło dla użytkownika spamassassin w bazie danych |
mailserver_hostname | nazwa hosta serwera pocztowego (np. mail ) |
mailserver_domain | domena serwera pocztowego (np. example.com ) |
Istnieje wiele innych zmiennych, które można dostosować w instalacji serwera pocztowego. Możesz je znaleźć w pliku defaults/main.yml
tej roli
i jej zależnościach.
Hasła
Zamiast przechowywać hasła w formie tekstu jawnego w vars/vars.yml
, rozważ użycie
ansible vault.
Aby szybko zacząć z vaultem, możesz wykonać ansible-vault create vars/vault.yml
i wypełnić go w ten sposób:
mailserver_sql_vmail_password: foo
milter_sql_spamass_password: bar
dbserver_root_pw: baz
(Zastąp foo, bar i baz bezpiecznymi hasłami)
Teraz, zawsze gdy uruchamiasz playbook z tą rolą, pamiętaj, aby użyć opcji --ask-vault-pass
z ansible-playbook
.
Wdrożenie
Przed wdrożeniem musisz ustawić hasła dla użytkowników bazy danych (patrz powyżej). Ponadto ten playbook zakłada domyślną instalację Ubuntu Server 16.04 i nie był testowany na innych dystrybucjach.
Przykładowy playbook mógłby wyglądać tak:
---
- hosts: all
become: yes
roles:
- ROCK5GmbH.mailserver
vars:
- vault.yml
Aby pobrać tę rolę i wszystkie jej zależności, możesz użyć ansible galaxy:
ansible-galaxy install ROCK5GmbH.mailserver
Aby wdrożyć na jednym hoście, wystarczy wykonać
ansible-playbook --ask-vault-pass -i $HOST, playbook.yml
gdzie $HOST to adres IP lub URL serwera.
Jeśli chcesz wdrożyć na wielu hostach, zaleca się pracę z inwentarzami, aby ustawić zmienne dla każdego hosta, jednocześnie zachowując wspólne zmienne.
Po wdrożeniu serwer pocztowy będzie prawie gotowy do użycia. Wszystko, co pozostało, to dodać rzeczywiste domeny i użytkowników do swojej bazy danych SQL.
Najpierw użyj doveadm pw -s SHA512-CRYPT
, aby wygenerować hash hasła dla użytkownika.
Aby dodać użytkownika, zaloguj się na swoim serwerze, a następnie połącz się z bazą danych za pomocą
mysql -u root -p
i wprowadź hasło roota do bazy danych SQL. Teraz dodaj domenę (np. mysystems.tld) i użytkownika (user1):
use vmail;
insert into domains (domain) values ('mysystems.tld');
insert into accounts (username, domain, password, quota, enabled, sendonly) values ('user1', 'mysystems.tld', '{SHA512-CRYPT}$kgid87hdenss', 2048, true, false);
Dalsza personalizacja
Ta konfiguracja pozwala również na wprowadzenie polityk TLS w bazie danych SQL, co umożliwia ustawienie konkretnych polityk TLS dla konkretnych domen. Możesz dodać politykę za pomocą
insert into tlspolicies (domain, policy, params) values ('gmx.de', 'secure', 'match=.gmx.net');
Różne możliwe polityki są wymienione i wyjaśnione tutaj.
(match=.gmx.net
zapewnia, że postfix sprawdzi certyfikat dla gmx.net
, ponieważ nie mają oni certyfikatu dla gmx.de
)
Możesz również dodać nowy serwer pocztowy do swojego DNS (rekord A(AAA) i MX), a także dodać wpis dla SPF i DKIM.
This role installs a mailserver with Postfix, Dovecot, Spamassassin, Amavis, ClamAV and a database backend.
ansible-galaxy install ROCK5GmbH.mailserver