mailserver
Ansible роль для настройки почтового сервера
Эта ansible роль устанавливает почтовый сервер, как описано в этом блоге Томаса Лейстнера.
SSL
SSL сертификаты и ключи ожидаются по пути /etc/myssl/$FQDN.crt
и /etc/myssl/$FQDN.key
на почтовом хосте
(где $FQDN - это полное доменное имя хоста). Это можно изменить, установив переменную {{ ssl_directory }}
на другой путь.
Если этих файлов не существует, будет создан самоподписанный сертификат для первоначального использования,
но их не рекомендуется использовать в производственной среде. Если вам нужен сертификат, подписанный доверенным центром сертификации, попробуйте
Let's Encrypt.
Переменные
Следующие переменные необходимо установить для использования этой роли:
Переменная | Описание |
---|---|
dbserver_root_pw | пароль для пользователя root базы данных |
mailserver_sql_vmail_password | пароль для пользователя vmail в базе данных |
milter_sql_spamass_password | пароль для пользователя spamassassin в базе данных |
mailserver_hostname | имя хоста почтового сервера (например, mail ) |
mailserver_domain | домен почтового сервера (например, example.com ) |
Существует много других переменных для настройки установки почтового сервера, вы можете найти их в файле defaults/main.yml
этой роли
и её зависимостей.
Пароли
Вместо того чтобы сохранять пароли в текстовом виде в vars/vars.yml
, рассмотрите возможность использования
ansible vault.
Для быстрого начала работы с хранилищем, выполните ansible-vault create vars/vault.yml
и заполните его так:
mailserver_sql_vmail_password: foo
milter_sql_spamass_password: bar
dbserver_root_pw: baz
(Замените foo, bar и baz на безопасные пароли)
Теперь, когда вы запускаете плейбук с этой ролью, не забудьте использовать --ask-vault-pass
с ansible-playbook
.
Развертывание
Перед развертыванием вы должны установить пароли для пользователей базы данных (см. выше). Кроме того, этот плейбук предполагает стандартную установку Ubuntu Server 16.04 и не тестировался на других дистрибутивах.
Пример плейбука может выглядеть следующим образом:
---
- hosts: all
become: yes
roles:
- ROCK5GmbH.mailserver
vars:
- vault.yml
Чтобы получить эту роль и все её зависимости, вы можете использовать ansible galaxy:
ansible-galaxy install ROCK5GmbH.mailserver
Для развертывания на одном хосте достаточно выполнить
ansible-playbook --ask-vault-pass -i $HOST, playbook.yml
где $HOST - это IP-адрес или URL сервера.
Если вы хотите развернуть на нескольких хостах, рекомендуется использовать инвентари, чтобы вы могли устанавливать переменные для каждого хоста, сохраняя при этом общие переменные.
После развертывания почтовый сервер будет почти готов к работе. Всё, что осталось сделать - это добавить реальные домены и пользователей в вашу SQL базу данных.
Сначала используйте doveadm pw -s SHA512-CRYPT
для генерации хеша пароля для пользователя.
Чтобы добавить пользователя, войдите на свой сервер и подключитесь к базе данных через
mysql -u root -p
и введите пароль root для SQL базы данных. Теперь добавьте домен (например: mysystems.tld) и пользователя (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);
Дальнейшая настройка
Эта настройка также позволяет использовать политики TLS в SQL базе данных, позволяя вам устанавливать специфические политики TLS для определённых доменов. Вы можете добавить политику через
insert into tlspolicies (domain, policy, params) values ('gmx.de', 'secure', 'match=.gmx.net');
Различные возможные политики перечислены и объяснены здесь.
(match=.gmx.net
гарантирует, что postfix будет проверять сертификат для gmx.net
, так как у них нет сертификата для gmx.de
)
Вам также может быть нужно добавить ваш новый почтовый сервер в вашу DNS (записи A(AAA) и MX), а также добавить запись для SPF и DKIM.
This role installs a mailserver with Postfix, Dovecot, Spamassassin, Amavis, ClamAV and a database backend.
ansible-galaxy install ROCK5GmbH/ansible-mailserver