Postfix "Satellite" Server mit Ansible verwalten
Folgendes Ansible Playbook werde ich verwenden um auf Entwicklungs- und Testservern den SMTP Server Postfix einzurichten. Die Konfiguration soll so erfolgen das alle Mails über einen Google Mail Account gerouted werden. Die Idee habe ich im wesentlichen von hier übernommen. Nur habe ich die Anmeldung mit Mandrill nicht hinbekommen.
Zuerst wird die Software installiert, dann die Kennwörter für Google eingerichet und die notwendigen Konfigurationsänderung vorgenommen.
Hier das Playbook
---
- hosts: dev-server
sudo : yes
tasks:
- name: Installs postfix mail server
apt: pkg=postfix state=installed update_cache=true
notify:
- start postfix
- name: Upload gmail authentication info
copy: src=postfix-gmail-password dest=/etc/postfix/sasl_passwd mode=0600 owner=root group=root
register: gmail
notify:
- postmap sasl_passwd
- name: remove empty mailrelay line
lineinfile: dest=/etc/postfix/main.cf line="relayhost = " state=absent
- name: Append gmail relay config
lineinfile:
dest=/etc/postfix/main.cf
line=""
with_items:
- { line: 'smtp_sasl_auth_enable = yes' }
- { line: 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd' }
- { line: 'smtp_sasl_security_options = noanonymous' }
- { line: 'smtp_use_tls = yes' }
- { line: 'relayhost = [smtp.gmail.com]:587' }
- { line: 'smtp_tls_security_level = may' }
notify:
- restart postfix
handlers:
- name: start postfix
service: name=postfix state=started
- name: make sure postfix user owns postfix dir
command: sudo chown postfix /etc/postfix
- name: postmap sasl_passwd
command: postmap /etc/postfix/sasl_passwd
when: gmail|success
- name: restart postfix
service: name=postfix state=restarted
Das Template für die Anmeldeinformation
vi postfix-gmail-password
[smtp.gmail.com]:587 user@gmail.com:password-for-gmail
Aufgerufen wird das dann einfach mit
ansible-playbook postfix.yml
und schon wird auf allen Entwicklungsservern die gleiche Postfix Konfiguration verteilt.